|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
#!/usr/bin/python2
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
"""Menu Generator for Fluxbox
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
Generates a menu for Fluxbox using the freedesktop.org standards
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
Usage: fluxbox-fdo-menugen.py [options]
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
Options:
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
-l ..., --lang=... create the menu using a language. Default = $LANG
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
-h, --help show this help
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
-f ..., --file=... output the menu into a file. Default = ~/.fluxbox/menu
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
--with-icons do not put icons for applications in the menu
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
--stdout output the menu to standard output
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
"""
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
__author__ = "Rudolf Kastl , Antonio Gomes"
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
__version__ = "$Revision: 1.0 $"
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
__date__ = "$Date: 2005/04/09 17:46:19 $"
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
__license__ = "GPL"
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
import os,re,sys,glob,getopt
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
import xdg.Menu,xdg.DesktopEntry,xdg.IconTheme
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
def usage():
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
print __doc__
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
def header(wm="fluxbox"):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
return """
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[begin] (Fluxbox)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[exec] (Web Browser) {htmlview}
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[exec] (Email) {evolution}
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[exec] (Terminal) {gnome-terminal}
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[exec] (Irc) {xchat}
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[separator]\n"""
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
def footer(wm="fluxbox"):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
return """
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[submenu] (Fluxbox Menu)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[config] (Configure)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[submenu] (System Styles) {Choose a style...}
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[stylesdir] (/usr/share/fluxbox/styles)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[stylesdir] (/usr/share/commonbox/styles/)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[end]
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[submenu] (User Styles) {Choose a style...}
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[stylesdir] (~/.fluxbox/styles)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[end]
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[workspaces] (Workspace List)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[submenu] (Tools)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[exec] (Window name) {xprop WM_CLASS|cut -d \" -f 2|xmessage -file - -center}
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[exec] (Screenshot - JPG) {import screenshot.jpg && display -resize 50% screenshot.jpg}
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[exec] (Screenshot - PNG) {import screenshot.png && display -resize 50% screenshot.png}
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[exec] (Run) {fbrun }
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[exec] (Regen Menu) {fluxbox-generate_menu --with-icons}
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[end]
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[submenu] (Window)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[restart] (kde) {startkde}
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[restart] (openbox) {openbox}
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[restart] (gnome) {gnome-session}
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[end]
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[exec] (Lock screen) {xscreensaver-command -lock}
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[commanddialog] (Fluxbox Command)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[reconfig] (Reload config)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[restart] (Restart)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[separator]
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[exit] (Exit)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[end]
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
[end]\n"""
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
def checkWm(entry, wm="fluxbox"):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
if entry.DesktopEntry.getOnlyShowIn() != []:
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
entry.Show = False
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
if entry.DesktopEntry.getNotShowIn() != []:
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
if isinstance(entry, xdg.Menu.MenuEntry):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
if wm in entry.DesktopEntry.getNotShowIn():
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
entry.Show = False
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
else:
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
entry.Show = True
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
#def findIcon(icon):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# """Finds the path and filename for the given icon name
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# e.g. gaim --> /usr/share/pixmaps/gaim.png
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# e.g. fart.png --> /usr/share/pixmaps/fart.png
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# """
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# if os.path.isfile(icon): return icon
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# paths = ["~/.icons","/usr/share/pixmaps","/usr/share/icons"]
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# for path in paths:
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# for dirpath , dirnames, filenames in os.walk(os.path.expanduser(path)):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# for filename in filenames:
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# pattern = '^%s\.(png|jpg|gif|xpm)' % icon # matches <filename>.<something>
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# if icon == filename or re.search(pattern, filename):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# return os.path.join(dirpath,filename)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
def findIcon(icon):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
"""Finds the path and filename for the given icon name
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
e.g. gaim --> /usr/share/pixmaps/gaim.png
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
e.g. fart.png --> /usr/share/pixmaps/fart.png
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
"""
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
global paths
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
global locs
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# Case Icon=/path/to/file.extension
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
if os.path.isfile(icon): return icon
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# Case Icon=file.extension
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
if re.search("^\w+.*\.\w{3}$",icon):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
names=[icon]
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# Case Icon=file
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
elif re.search("^\w+.*$",icon):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
names=[icon+".png",icon+".xpm",icon+".jpg"]
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
else:
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
names=[]
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
for path in paths:
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
for name in names:
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
if (os.path.isfile(path+name)):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
locs.append(path)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
return (path+name).encode('utf8')
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
def parseMenu(menu,depth=1):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
global wm
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
global use_icons
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
if use_icons:
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
print "%s[submenu] (%s) <%s> " % ( (depth*"\t"), menu.getName().encode('utf8'), findIcon(menu.getIcon()) )
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
else:
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
print "%s[submenu] (%s) " % ( (depth*"\t"), menu.getName().encode('utf8'), )
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
depth += 1
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
for entry in menu.getEntries():
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
if isinstance(entry, xdg.Menu.Menu):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
parseMenu(entry,depth)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
elif isinstance(entry, xdg.Menu.MenuEntry):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
checkWm(entry,wm)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
if entry.Show == False: continue
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
if use_icons:
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
print "%s[exec] (%s) {%s} <%s> " % ( (depth*"\t"), entry.DesktopEntry.getName().encode("utf8"), entry.DesktopEntry.getExec().split()[0], findIcon(entry.DesktopEntry.getIcon()) )
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
else:
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
print "%s[exec] (%s) {%s} " % ( (depth*"\t"), entry.DesktopEntry.getName().encode("utf8"), entry.DesktopEntry.getExec().split()[0] )
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
elif isinstance(entry,xdg.Menu.Separator):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
print "%s[separator]" % (depth*"\t")
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
elif isinstance(entry.xdg.Menu.Header):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
print "%s%s" % ( (depth*"\t"), entry.Name )
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
depth -= 1
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
print "%s[end]" % (depth*"\t")
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
def main(argv):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# Setting the default values
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
global locs
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
locs=[]
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
global wm
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
wm = "fluxbox"
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
global file
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
file = "~/.fluxbox/menu"
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
global use_icons
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
use_icons = False
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
lang = os.getenv("LANG","C")
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
file = os.path.expanduser("~/.fluxbox/menu")
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
try:
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
opts, args = getopt.getopt(argv, "hf:dl:d", ["help","lang=","file=","with-icons","stdout"])
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
except getopt.GetoptError:
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
usage()
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
sys.exit(2)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
for opt, arg in opts:
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
if opt in ("-h", "--help"):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
usage()
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
sys.exit()
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
elif opt in ("-l", "--lang"):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
lang = arg
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
elif opt in ("-f", "--file"):
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
file = os.path.expanduser(arg)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
elif opt == '--with-icons':
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
use_icons = True
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
global paths
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
locations = \
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
['/usr/share/pixmaps/', \
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
'/usr/share/icons/hicolor/24x24/apps/', \
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
'/usr/share/icons/hicolor/32x32/apps/', \
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
'/usr/share/icons/hicolor/48x48/apps/', \
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
'/usr/share/icons/hicolor/24x24/stock/generic/', \
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
'/usr/share/icons/HighContrastLargePrintInverse/48x48/apps/', \
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
'/usr/share/icons/crystalsvg/16x16/apps/', \
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
'/usr/share/icons/crystalsvg/32x32/apps/', \
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
'/usr/share/icons/crystalsvg/48x48/apps/', \
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
'/usr/share/icons/crystalsvg/48x48/devices/', \
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
'/usr/share/icons/', \
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
'/usr/share/icons/hicolor/32x32/apps/', \
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
'/usr/share/icons/Bluecurve/24x24/stock/', \
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
'/usr/share/icons/Bluecurve/48x48/filesystems/']
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
paths=locations
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# for path in locations:
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# paths+=glob.glob(path+"/*/")+glob.glob(path+"/*/*/")
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# print paths
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
elif opt == '--stdout':
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
file = sys.stdout
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
fsock = open(file,'w')
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
saveout = sys.stdout
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
sys.stdout = fsock
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
menu=xdg.Menu.parse()
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# is done automatically now
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# menu.setLocale(lang)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
print header()
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
parseMenu(menu)
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
print footer()
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
sys.stdout = saveout
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
# print menu
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
if __name__ == "__main__":
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
main(sys.argv[1:])
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
#WindowMaker Reminder
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
#>>> p=re.compile("(\).*),(\s*\))")
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
#>>> p.search("((ola),(ola),)").groups()
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
#('),(ola)', ')')
|
|
![](https://seccdn.libravatar.org/avatar/b9c8135638fdb72250029bcaa4b7706765509c704b22d53d5a42a084de1981fc?s=16&d=retro) |
e372ea5 |
|