#!/usr/bin/env python2.2 ################################################# # Python script to install a new .desktop files # # Usage: # # - domenu file1 file2 file3 ... # # - domenu dir1 dir2 dir3 ... # # - domenu file1 dir1 ... # ################################################# import sys, os, re try: from xdg.DesktopEntry import * from xdg.Exceptions import * except ImportError: noxdg = True def dodesktop(path): if os.path.isfile(path): if re.search(".desktop$", path): print ">>> domenu: making " + path + " menu entry..." if not noxdg: try: file = DesktopEntry() file.parse(path) file.validate("Errors") os.system("install -m0644 " + path + " " + os.path.join(D, "usr/share/menu/application)")) except ValidationError, e: print e else: os.system("install -m0644 " + path + " " + os.path.join(D, "usr/share/menu/applications")) elif re.search(".menu$", path): print ">>> domenu: installing " + path + " menu file..." os.system("install -m0644 " + path + " " + os.path.join(D, "usr/share/menu/wms")) elif re.search(".tar.gz$", path) or re.search(".tgz$", path): system("cd %s; mkdir menu; cd menu; tar -xzf %s" % (WORKDIR, path)) dodesktop(os.path.join(WORKDIR,"menu")) elif re.search(".tar.bz2$", path) or re.search(".tbz2", path): system("cd %s; mkdir menu; cd menu; tar -xjf %s" % (WORKDIR, path)) dodesktop(os.path.join(WORKDIR,"menu")) elif os.path.isdir(path): ls = os.listdir(path) for i in ls: dodesktop(os.path.join(path, i)) WORKDIR = os.getenv("WORKDIR") D = os.getenv("D") FEATURES = os.getenv("FEATURES") os.system("install -d " + os.path.join(D, "usr/share/menu/applications")) for i in range(1,len(sys.argv)): dodesktop(sys.argv[i]) if re.search("menu", FEATURES) and os.path.exists("/usr/bin/update-menus"): print ">>> updating menus..." os.putenv("SANDBOX_ON", "0") os.system("/usr/bin/update-menus") os.putenv("SANDBOX_ON", "1")