diff --git a/src/__init__.py b/src/__init__.py index 4d9ea3f..f08b9e8 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -27,8 +27,8 @@ class Main(Context): while True: self.clear() if not self.menuData: - HOME = os.path.expanduser('~') + "/.local/share/applications/" - paths = ["/usr/share/applications/", HOME] + HOME_APPS = os.path.expanduser('~') + "/.local/share/applications/" + paths = ["/opt/", "/usr/share/applications/", HOME_APPS] self.menuData = self.getDesktopFilesInfo(paths) group = self.call_method("mainMenu")["group"] @@ -68,53 +68,66 @@ class Main(Context): } for path in paths: - for f in listdir(path): - fPath = path + f - flags = ["mimeinfo.cache", "defaults.list"] - if not f in flags and isfile(fPath): - xdgObj = DesktopEntry(fPath) - - title = xdgObj.getName() - groups = xdgObj.getCategories() - comment = xdgObj.getComment() - # icon = xdgObj.getIcon() - mainExec = xdgObj.getExec() - tryExec = xdgObj.getTryExec() - - group = "" - if "Accessories" in groups or "Utility" in groups: - group = "Accessories" - elif "Multimedia" in groups or "Video" in groups or "Audio" in groups: - group = "Multimedia" - elif "Development" in groups: - group = "Development" - elif "Game" in groups: - group = "Game" - elif "Internet" in groups or "Network" in groups: - group = "Internet" - elif "Graphics" in groups: - group = "Graphics" - elif "Office" in groups: - group = "Office" - elif "System" in groups: - group = "System" - elif "Settings" in groups: - group = "Settings" - elif "Wine" in groups: - group = "Wine" - else: - group = "Other" - - menuObjs[group].append( {"title": title, "groups": groups, - "comment": comment, "exec": mainExec, - "tryExec": tryExec, "fileName": f - }) + if not "/opt/" in path: + self.listAndUpdateDesktopFiles(path, menuObjs); + else: + for folder in listdir(path): + try: + fPath = path + folder + self.listAndUpdateDesktopFiles(fPath, menuObjs); + except Exception as e: + self.logger.debug(e) return menuObjs + def listAndUpdateDesktopFiles(self, path, menuObjs): + for f in listdir(path): + fPath = path + f + flags = ["mimeinfo.cache", "defaults.list"] + if not f in flags and isfile(fPath): + xdgObj = DesktopEntry(fPath) + + title = xdgObj.getName() + groups = xdgObj.getCategories() + comment = xdgObj.getComment() + # icon = xdgObj.getIcon() + mainExec = xdgObj.getExec() + tryExec = xdgObj.getTryExec() + + group = "" + if "Accessories" in groups or "Utility" in groups: + group = "Accessories" + elif "Multimedia" in groups or "Video" in groups or "Audio" in groups: + group = "Multimedia" + elif "Development" in groups: + group = "Development" + elif "Game" in groups: + group = "Game" + elif "Internet" in groups or "Network" in groups: + group = "Internet" + elif "Graphics" in groups: + group = "Graphics" + elif "Office" in groups: + group = "Office" + elif "System" in groups: + group = "System" + elif "Settings" in groups: + group = "Settings" + elif "Wine" in groups: + group = "Wine" + else: + group = "Other" + + menuObjs[group].append( {"title": title, "groups": groups, + "comment": comment, "exec": mainExec, + "tryExec": tryExec, "fileName": f + }) + + def getSubgroup(self, group, query = ""): """ + # TODO: Need to refactor and pull out the sub logic that is used in both cases... """ desktopObjs = [] @@ -145,6 +158,7 @@ class Main(Context): def executeProgram(self, group, entry): """ + # TODO: Need to refactor and pull out the sub loop that is used in both cases... """ parts = entry.split("||")