From d541067a668298c610554a407af8c6d10fef943e Mon Sep 17 00:00:00 2001 From: ShadowKyogre Date: Fri, 4 Sep 2015 16:53:04 -0700 Subject: [PATCH] Add support for Compiz Boxmenu --- src/xdgmenumaker | 53 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/src/xdgmenumaker b/src/xdgmenumaker index 9ac99b6..1d4366a 100755 --- a/src/xdgmenumaker +++ b/src/xdgmenumaker @@ -188,6 +188,8 @@ def main(argv): pekwmmenu() elif desktop == "jwm": jwmmenu() + elif desktop == "compizboxmenu": + compizboxmenu() else: usage() sys.exit(2) @@ -235,7 +237,7 @@ def icon_full_path(icon): return icon -def get_entry_info(desktopfile): +def get_entry_info(desktopfile, ico_paths=True): de = dentry.DesktopEntry(filename=desktopfile) # skip processing the rest of the desktop entry if the item is to not be @@ -257,7 +259,8 @@ def get_entry_info(desktopfile): if seticon: # strip the directory and extension from the icon name icon = de.getIcon() - icon = icon_full_path(icon) + if ico_paths: + icon = icon_full_path(icon) else: icon = None @@ -349,11 +352,11 @@ def desktopfilelist(): return filelist -def menu(): +def menu(ico_paths=True): applist = [] for desktopfile in desktopfilelist(): try: - entry = get_entry_info(desktopfile) + entry = get_entry_info(desktopfile, ico_paths=ico_paths) if entry is not None: applist.append(entry) except exc.ParsingError: @@ -593,5 +596,47 @@ def jwmmenu(): print('') print('') +def compizboxmenu(): + if submenu: + spacing = '\t' + if seticon: + app_icon = icon_full_path(applications_icon) + if app_icon is None: + print('') + else: + print('') + else: + print('') + else: + spacing = '' + for menu_category in menu(ico_paths=False): + category = menu_category.category + cat_icon = category_icon(category) + if seticon and cat_icon is not None: + print(spacing + '') + else: + print(spacing + '') + for app in menu_category.applist: + name = app.name + icon = app.icon + command = app.command + path = app.path + if path is not None: + command = 'sh -c \'cd "' + path.replace("'", "'\\''") + '" ; ' + command.replace("'", "'\\''") + '\'' + if seticon and icon is not None: + print(('{}{}' + '{}' + '{}').format(spacing, + name, icon, command)) + else: + print(('{}{}' + '{}').format(spacing, + name, command)) + print(spacing + '') + if submenu: + print('') + if __name__ == "__main__": main(sys.argv[1:])