ob   Openbox Dynamical Menu Summary   ob

Beginner's Guide
Debian LXDE
Manjaro Linux
After Installing Openbox
Alternatives & Galternative
Arachnophilia HTML
Araneae HTML Editor
FastStone Image Editor
ImageMagick Editor
MyStuff Menu
Openbox Dock
Openbox Dynamical Menu
Dynamical Menu Summary
Openbox Themes
PhotoFiltre Editor
Poor Mans Radio Player
Wallpaper Changer
Wbar Dock
root menu
Advanced Root Menu

The purpose of this section is to give a detailed step-by-step recipe for building the Advanced Root Menu pictured on the right. Links or copies for all pipemenus and submenus will be included, as well as ways to use wget to download pertinent files from this website. Setting up should be no harder than frying water. We assume you have installed and are using a recent Openbox Window Manager with or without an official desktop.

1. Install Obmenu-generator.

There are at least 2 paths to install obmenu-generator. See the top of Openbox Dynamical Menu for the recipe using the github files, or the bottom (Addendum) of this same website for using the special Sparky Linux Repository. To activate the dynamical menu, run the following terminal command:

    obmenu-generator -p -i .

Leave out "-i" if you want an icon-less menu.

Your new menu will be a skeleton version of the Advanced Root Menu. It will include 4 of the 8 items in the second group, with launchers possibly not installed on your operating system. All the Categories except possibly "Wine" will be present, completely functional and be dynamical in nature. An Advanced Settings" with the 3 main Openbox configuration files, the Obmenu files, the Refresh files and 2 or 3 Conky and Tint2 configuration files are present. Finally the "Lock" and "Exit" items will be listed, but may not work. All of this is in the schema.pl file, which can be read at github. If you are happy with this essentially pure category menu, which lists all the linux apps installed (.desktop files) and will automatically add new apps provided .desktop files are generated with their installation, then you can quit now, that is, after configuring "Lock", "Exit" and the individual static items in the second section so that all are compatible with your system. However, if you are interested in the other 35 or so pipe menus, submenus and items in the advanced menu on the right, then read on.

2. Download schema.pl for Advanced Root Menu

The schema.pl for the menu pictured on the right can be downloaded from this website by using wget:

    wget http://lxlinux.com/menu/schema.pl.

Replace the original ~/.config/obmenu-generator/schema.pl with the newly downloaded schema.pl. Make sure it is executable.

Your new menu will look like Advanced Root Menu, but probably missing several icons. If you want a complete set of icons, you will have to download or locate suitable ones already on your computer and enter their location in the appropriate field in schema.pl, which has been configured to first look for icons in the ultra-flat-icons folder. It has also been configured to use the generic alternative bl-text-editor (See the next section.).

3. Activating the Alternatives

Advanced Root Menu is set-up using alternative applications, which are just generic names that perform the services of the real apps that are assigned to their names. This has the advantage that when one of these service apps (for example, thunar for pcmanfm) is changed, the only requirement to configure the menu to the new app (thunar) is to reassign the alternative for that generic group (file-manager group). The following alternatives are used in Advanced Root Menu:

These names have been chosen to match names already used in some Debian-based distros. The first thing you should check is to see which of these alternatives are already installed on your distro, and then install the ones that are not installed. Most Debian-based distros will have x-terminal-emulator and x-www-browser installed, and the recent Bunsen-Labs distro will have all 6. To install a generic alternative you need to pick an actual installed app in the generic group and then run the following command (illustrated for each of the above 6 cases):
Places Home (dir-menu)
The number (90) is a priority number for that app; the computer always chooses the app with the highest priority. See Alternatives & Galternative for more information on adding and removing apps as alternatives, and using the little GUI, galternative.

All that remains to completely activate Advanced Root Menu is to install the pipe menus, sub-menus and special items all formulated in terms of these generic alternatives. We will discuss each of these next. If there is any of these that you do not want on your Root Menu, then just delete its section in the schema.pl, and skip the corresponding section below.

4. Places-Home

Places-Home is generated by a pipe menu found as /usr/bin/cbpp-places-pipemenu in the Crunchbang++ distro. A copy of cbpp-places-pipemenu set-up using generic alternatives can be downloaded from this website:

    wget http://lxlinux.com/menu/cbpp-places-pipemenu.

To install, put cbpp-places-pipemenu in /usr/bin, replacing any cbpp-places-pipemenu already there. Make executable.

5. Places-Comp

Places Comp is generated by a pipe menu generally found as /opt/menu/dir-menu.py in distros that offer it. A copy of dir-menu.py set-up using generic alternatives can be downloaded from this website:

    wget http://lxlinux.com/menu/dir-menu.py.

To install, put dir-menu.py in /opt/menu, replacing any dir-menu.py already there. Make executable. An image of an open Places Comp, labeled as "Directories", can be seen at Openbox Menu.

Item Section of Schema.pl

6. Special Items

An image of the items section of schema.pl is shown on the left. You will need to replace the icons with your own. The Run Program is the standard gexec program: sudo apt-get install gexec, if not already installed. Radio Player is a slightly modified Hakerdefo Poor-Mans-Radio shell script, which can be downloaded from this website:

    wget http://lxlinux.com/menu/pmrp-bl-media-player.

To install, put pmrp-bl-media-player in /usr/local/bin, and make it executable.

Scrot Submenu

7. Scrot & Sox

Scrot and Sox are terminal apps; scrot takes pictures of screen objects (screenshooter) and sox records any sound coming from your computer's sound card and edits audio. To install:

     sudo apt-get install scrot        sudo apt-get install sox

Bash scripts launch the 5 screen situations shown in the scrot menu image on the right. They can be downloaded using wget:

wget http://lxlinux.com/menu/scrot-0    wget http://lxlinux.com/menu/scrot-15    wget http://lxlinux.com/menu/scrot-area    wget http://lxlinux.com/menu/scrot-window    wget http://lxlinux.com/menu/scrot-multimon

Each is set up to save the image in /usr/home/me/Pictures/scrots. Edit this path to your destination folder of choice, then move each script to /usr/local/bin and make it executable.

Sox Menu
The 3 entries in the sox menu, shown in the image on the left, are launched by shell scripts which can be downloaded using wget:

wget http://lxlinux.com/menu/sox-record    wget http://lxlinux.com/menu/sox-trim    wget http://lxlinux.com/menu/sox-concatenate

Move each script to /usr/local/bin and make it executable. These scripts require xdotool, so: sudo apt-get install xdotool. Clicking Record will start an indefinte recording of whatever audio is playing, and when stopped will automatically save the recording as /home/me/Music/number.flac, where number is a random number between 1 and 10,000. Edit sox-record to reflect your destination folder of choice and your choice of audio format.
Terminal Submenu

Trim and Concatenate are simply gimmicks to enter in a terminal a skeleton of the often used sox commands that trim an audio file and join multiple audio files in sequence, respectively. Click them after launching a terminal to enter the skeleton command in that terminal. A simple command guide for sox is "How to use sox".

8. External Submenus

Systeminfo Menu
One of the nice features of the Openbox Window Manager is its ability to create menu keybindings. This is the first step in putting external submenus in Advanced Root Menu, which contains four such menus tailored to my own interests and, thus, probabily not interesting to most users.

Pictured on the left is the Terminal Menu, which is simply a cheat sheat for remembering basic terminal commands, not very interesting to a professional but very helpful for beginners. The user opens a terminal, launches the menu and left clicks the desired command, which immediately launches a skeleton of the command in the terminal. The user completes the specifics of the command and launches it without needing to remember every exact word, spelling, etc of the command. The Image Magick Menu is a similar tool for the most-used commands in using it to edit images, and Char Menu prints any special character in the program on any open text document by just left- or right-clicking (capital version) the character. For a picture of the Char Menu and information on downloading the character icons, necessary for seeing the menu, go to Openbox Menu.

Pictured on the right is a Systeminfo Menu based mostly on the information supplied by the lightweight tool, inxi, which can be installed with sudo apt-get install inxi. Other apps used here to display system information are boxinfo, jdiskreport, fly info, screenfetch and geoclue-2.0.

These 4 menus can be downloaded using wget:

wget http://lxlinux.com/menu/char.xml    wget http://lxlinux.com/menu/html.xml    wget http://lxlinux.com/menu/systeminfo.xml    wget http://lxlinux.com/menu/terminal.xml

Move each script to ~/.config/openbox and make it executable. The launch scripts for these 4 menus and an additional script needed to make terminal apps launchable from a menu context can be downloaded using wget:

wget http://lxlinux.com/menu/char-menu    wget http://lxlinux.com/menu/imagemagick-menu    wget http://lxlinux.com/menu/systeminfo-menu    wget http://lxlinux.com/menu/terminal-menu    wget http://lxlinux.com/menu/tlaunch

Move each script to /usr/local/bin, and make it executable. These require that xdotool be installed.

<keybind key="C-A-c">
   <action name="ShowMenu">
<keybind key="C-A-e">
   <action name="ShowMenu">
<keybind key="C-A-i">
   <action name="ShowMenu">
<keybind key="C-A-t">
   <action name="ShowMenu">
Chart 2
Chart 1

To complete the sub-menu installation two edits need to be made in ~/.config/openbox/rc.xml. Copy and paste the yellow-highlited text in Chart 1 on the right into the <menu> section of rc.xml, which is near the bottom. Copy and paste the yellow-highlited text in Chart 2 on the right into the bottom of "keybindings for running applications" section of rc.xml. If you are already using any of these key binding combinations, then pick an unused combination and make the corresponding change in the associated *-menu.

9. Special Pipemenus

The 8 entries below Advanced Settings are special pipe menus of which Dropbox Install, Help and Libre-Office Install are mostly for beginners. The files for these menus and bl-exit can be downloaded using wget:

wget http://lxlinux.com/menu/bl-exit    wget http://lxlinux.com/menu/bl-kb    wget http://lxlinux.com/menu/bl-kb.py    wget http://lxlinux.com/menu/bl-kb-pipemenu    wget http://lxlinux.com/menu/bl-dropbox-pipemenu    wget http://lxlinux.com/menu/bl-help-pipemenu    wget http://lxlinux.com/menu/bl-libreoffice-pipemenu

Move each script to /usr/bin, and make it executable. These files are from the Bunsen-Lab distro.

Pipe Menu Secton of Schema.pl

The remaining 4 pipe menus are from the Sparky Linux distro and are configured in terms of the 6 generic alternatives mentioned above:

wget http://lxlinux.com/menu/obdevicemenu    wget http://lxlinux.com/menu/ob-randr.py    wget http://lxlinux.com/menu/obrecent.sh    wget http://lxlinux.com/menu/gweather3.py

Move each script to /opt/menu, and make it executable. You will need to edit the weather entry in schema.pl (see the pipe menu image on the left) to reflect the code for your area. To find the code for your city, refer to edge3, and use it in place of the "USMT0231". Replace "Fahrenheit" by "Centigrade" to have the report in centigrade units.