102 lines
7.6 KiB
Plaintext
102 lines
7.6 KiB
Plaintext
obamenu
|
|
|
|
(news and updates can be found at the bottom)
|
|
|
|
obamenu (openbox automenu) is a menu generator for the openbox window manager. Rather than striving for full and complete xdg compliance
|
|
obamenu offers a reasonable basic level of xdg compliance and focuses on low resource usage and pragmatic issues.
|
|
|
|
obamenu consists of a single python file without any exotic imports. It has been developed with Python 2.7 should, however, work fine with
|
|
any Python > 2.5 (possibly even older) and with Python's standard included batteries.
|
|
|
|
Usage:
|
|
|
|
obamenu
|
|
|
|
That's it. No options, no parameters, simple as that. But ...
|
|
|
|
As openbox users are not afraid of editing config files, a decision was taken to make obamenu's configuration powerful yet simple not by
|
|
command line üarameters or a config file but by having a short config section right within obamenu itself.
|
|
|
|
The basic idea
|
|
|
|
It seems reasonable to assume that openbox users are quite different from users of the more common and usually monstrous window managers.
|
|
And while obamenu is perfectly capable to just splash the usual full menu into your .jwmrc the authors needs (and assumptions on other
|
|
openbox users needs) and accordingly obamenu's capabilities are somewhat more refined.
|
|
|
|
First some basics. On pretty much any halfway modern Unixoid OS, there is some directory with ".desktop" files which contain information
|
|
about applications needed by the OS; things like its name, the command, possibly some comment, and so on. On most linuxes and BSD
|
|
this directory is "/usr/share/applications". Of course, as with every standard, there's some idio^H^H^H^H players (like Gnome) who don't
|
|
care that much and dump their .desktop files elsewhere and anywhere.
|
|
Similarly there is also a place for all those nice application (not OS!) icons. Usually they are in "/usr/share/pixmaps".
|
|
Last but not least, there are "Categories" into which applications are grouped in menus. Btw, obamenu does not show empty categories to
|
|
avoid senseless clutter.
|
|
|
|
So, let's have a look at a obamenu's config section and its bits and pieces:
|
|
|
|
# ---- config ---
|
|
applications_dirs = ("/usr/share/applications", )
|
|
image_dir = "/usr/share/pixmaps"
|
|
application_groups = ("Office", "Development", "Graphics", "Internet", "Games", "System", "Multimedia", "Utility", "Settings")
|
|
group_aliases = {"Audio":"Multimedia","AudioVideo":"Multimedia","Game":"Games", "GTK":""}
|
|
ignoreList = ("evince-previewer", "python3.4", "feh","xfce4-power-manager-settings" )
|
|
terminal_string = "svte -e" # your favourites terminal exec string
|
|
# --- End of user config ---
|
|
|
|
The first one, "applications_dirs" is a list of directories in which .desktop files are to be found. The default, which should be fine for most
|
|
users, is where .desktop files are usually put by linux or BSD. Feel free to add more, for instance some subdirectory within your $HOME.
|
|
The next one, "image_dir", is quite similar but is about icon images for applications. A small caveat, though: While most applications are
|
|
nicely putting their .desktop files into the standard directory, the story with icons is quite different. Particularly the wm behemoths like
|
|
Gnome tend to spread icon files all over the place. Often, for instance, icon files are to be found in some obscure subdirectory of
|
|
"/usr/share/icons" buried deep depending in the chosen theme and the icon size. The author of obamenu admits freely to have taken a
|
|
rather deliberate choice in that regard by having image_dir be a simple string rather than a list, which might seem to be a reasonable way
|
|
to some. The author, however, didn't consider it wise to play find and catch with ignorance and idiosyncrasies of some parties. He rather
|
|
chose to use the trusted Unix mechanism of links. In other words: You are advised to soft link all icon files outside the standard icon directory
|
|
to /usr/share/pixmaps or similar. ("find" is your friend, e.g. find /usr/share/icons -name 'foo.*').
|
|
|
|
The next setting, "application_groups" looks innocent enough but has some power with it. Obviously the entries in that list are "menu
|
|
groups" or categories into which xdg menus put the applications depending on some .desktop data. You might want to keep in mind
|
|
that obamenu keeps categories in the the order of this setting, i.e. you will find those categories in the menu in that order, too.
|
|
And then there are buts ...
|
|
The first but is that you almost certaintly don't want more categories than the number of citizens in your home town. Another and more
|
|
interesting but is that, obviously, usage profiles are different. For me as a developer, for instance, a "shows coloured stuff or makes sound"
|
|
category seems sensibly sufficient; some movie editing people though might have quite different views... which brings us to the next
|
|
setting.
|
|
"group_aliases" is a list of string pairs, the first one being what is put as category in the .desktop file(s) and the second one being the
|
|
category it will end up in. In other words: this is your chance to rearrange things the way you want them. The author, for instance, has a
|
|
rather frugal attitude regarding multimedia; accordingly, he simply throws anything audio or video related into one category "multimedia".
|
|
To illustrate, though admittedly somewhat construed, another potentially useful feature, have a look at "GTK" in those string pairs. Its second
|
|
string is empty which comes down to telling obamenu "ignore that stuff. Don't put it into my menu". The reason being that openbox *only*
|
|
creates menus for applications being sorted into a category. No category, no menu entry.
|
|
Hint: This setting may also be used to have translated strings in your menu; simply have the english cat. string aliased to a translated version.
|
|
|
|
The second to last setting, "ignoreList" is what its name suggests. It's a list of .desktop file names (without the ".desktop" part) you wish to
|
|
ignore, i.e. to not have in your menu for whatever reason.
|
|
Finally the last setting, "terminal_string", is telling obamenu how to call your favourite terminal emulator for console applications like "htop".
|
|
(obamenu automagically takes care of having console applications called in a terminal emulator).
|
|
|
|
Note that the auto-generated menu can be put right into the menu section of an openbox menu.xml
|
|
Last but not least you can, of course, also send obamenu's output to a file which can be edited, inserted manually, feed your cat, and all
|
|
the other things Unixoids can do with files.
|
|
|
|
Just to avoid misunderstandings, here's an example (the authors usage) of obamenu in a ob menu.xml file:
|
|
|
|
<menu id="desktop-app-menu" label="Applications" icon="/usr/share/icons/applications.png" execute="~/obamenu" />
|
|
|
|
|
|
License:
|
|
obamenu is under a dual license depending on who you are. If you are using it as a private person (which also means non-commercially)
|
|
it's under a 3 clause BSD license. If you are using it as or in the context of anything not private, for instance, in a business or an agency,
|
|
it's under GPL v.2.
|
|
|
|
Disclaimer: The author uses mainly jwm. While obamenu has been tested to work properly it has been considerably less tested than the authors
|
|
jwmamenu (same thing but for jwm. In fact, obamenu has been derived from jwmamenu).
|
|
|
|
The main motivation behind obamenu was the fact that openbox-menu (probably the most used menu generator for ob) doesn't compile properly on FreeBSD
|
|
and the author saw absolutely no reason why a menu generator couldn't - and shouldn't - be cross platform (e.g. using Python).
|
|
|
|
News & Updates:
|
|
|
|
- ported (from jwmamenu) smarts to get rid of '%x' target specifiers in Exec spec. (used for file managers but disturbing in menus)
|
|
- ported search for category icons in configurable Theme
|
|
- some cleaning up and small enhancements, mainly for speed.
|