)#shortcut list and programs not found by buildCache_grepExecutablePaths because they are just shellscripts and do not contain /nsm/server/announce.
self.userWhitelist=()#added dynamically to morePrograms. highest priority
self.userBlacklist=()#added dynamically to blacklist. highest priority
self.knownDesktopFiles={#shortcuts to the correct desktop files. Reverse lookup binary->desktop creates false entries, for example ZynAddSubFx and Carla.
"zynaddsubfx":"zynaddsubfx-jack.desktop",#value will later get replaced with the .desktop entry
"carla-jack-multi":"carla.desktop",
#"carla-jack-single" : "carla.desktop", #We CANNOT add them here because both key and value must be unique and hashable. We create a reverse dict from this.
#"carla-jack-patchbay" : "carla.desktop",
#"carla-jack-rack" : "carla.desktop",
"ams":"ams.desktop",
"amsynth":"amsynth.desktop",
}
self._reverseKnownDesktopFiles=dict(zip(self.knownDesktopFiles.values(),self.knownDesktopFiles.keys()))#to lookup the exe by desktoip name
self.programs=[]#list of dicts. guaranteed keys: argodejoExec, name, argodejoFullPath. And probably others, like description and version.
self.nsmExecutables=set()#set of executables for fast membership, if a GUI wants to know if they are available. Needs to be build "manually" with self.programs. no auto-property for a list. at least we don't want to do the work.
#.build needs to be called from the api/GUI.
@ -146,10 +152,10 @@ class SupportedProgramsDatabase(object):