diff -r 17e3e6c1ea96 -r 0ab510cb567d .fvwm/xdg2fvwm.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.fvwm/xdg2fvwm.py Tue Aug 14 02:52:27 2012 +0300 @@ -0,0 +1,45 @@ + +import sys +import os + +import xdg.Menu +from xdg.DesktopEntry import * + +sys.stdout = codecs.getwriter('utf-8')(sys.stdout) + +# For testing purpose. Uncomment to run this file without args... +# sys.argv.append('debian-menu') + +if len(sys.argv) >= 2: + sys_menu_name = sys.argv[1] +else: + print("You forget pass NAME which is /etc/xdg/NAME.menu") + exit(1) + +# xdg_config_dirs hold possible paths. We use Debian one. +sys_menu_file = "%s/menus/%s.menu" % ("/etc/xdg", sys_menu_name) + +sys_menu = xdg.Menu.parse(sys_menu_file) + +def parse_menu(menu, name): + ''' Parse menu file. ''' + print 'DestroyMenu recreate %s' % name + for entry in menu.getEntries(): + if isinstance(entry, xdg.Menu.Menu): + icon = entry.getIcon() + subname = name+"-"+str(entry) + print u'AddToMenu "%s" "%s%%folder.png%%" Popup "%s"' % (name, entry.getName(), subname) + parse_menu(entry, subname) + elif isinstance(entry, xdg.Menu.MenuEntry): + desktop = DesktopEntry(entry.DesktopEntry.getFileName()) + icon = desktop.getIcon() + ind = icon.rfind('.') + if ind != -1: + icon = icon[0:ind] + cmd = desktop.getExec().rstrip('%FUfu') + print u'AddToMenu "%s" "%s%%%s.png%%" Exec exec %s' % (name, desktop.getName(), os.path.basename(icon), cmd) + else: + pass + +parse_menu(sys_menu, "Menu-"+sys_menu_name) +