How I install and use Obmenu Generator
Since I always find any auto-generated menu is too busy, I need obmenu-generator to generate a menu with only items I need and display their associated icons.
obmenu-generator Github: https://github.com/trizen/obmenu-generator.
To install:
Although not in the official repositories, obmenu-generator is so useful that I have to install it.
As instructed here for Debian: https://github.com/trizen/obmenu-generator/blob/master/INSTALL.md
# For Debian 10 run the following as root/ using sudo:
echo 'deb http://download.opensuse.org/repositories/home:/Head_on_a_Stick:/obmenu-generator/Debian_10/ /' > /etc/apt/sources.list.d/home:Head_on_a_Stick:obmenu-generator.list
wget -nv https://download.opensuse.org/repositories/home:Head_on_a_Stick:obmenu-generator/Debian_10/Release.key -O Release.key
apt-key add - < Release.key
apt-get update
apt-get install obmenu-generator
The installation will:
- place the obmenu-generator file inside your PATH
- place the schema.pl file inside ~/.config/obmenu-generator/
Note: if you are new to Linux, PATH “are” the default places where the shell will search for any executable file in your system.
To find where all PATH are:
echo $PATH
# mine are: /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/dat/.rvm/bin
You can find the location of any executable file using the which command:
which obmenu-generator
Mine is at /usr/bin/:
dat@debian:~$ which obmenu-generator
/usr/bin/obmenu-generator
How to use:
Step 1: edit the schema.pl file, it determines how the menu is generated (items, labels, and icons).
sudo nano /home/user/.config/obmenu-generator/schema.pl
Step 2: run this command to generate the menu:
obmenu-generator -i -s -c
# Generate menu include icon (-i), static (-s) and reconfigure openbox automatically (-c)
My own schema.pl file:
Here is the content of my schema.pl file at /home/user/.config/obmenu-generator/schema.pl:
#!/usr/bin/perl
# obmenu-generator - schema file
=for comment
item: add an item inside the menu {item => ["command", "label", "icon"]},
cat: add a category inside the menu {cat => ["name", "label", "icon"]},
sep: horizontal line separator {sep => undef}, {sep => "label"},
pipe: a pipe menu entry {pipe => ["command", "label", "icon"]},
file: include the content of an XML file {file => "/path/to/file.xml"},
raw: any XML data supported by Openbox {raw => q(...)},
beg: begin of a category {beg => ["name", "icon"]},
end: end of a category {end => undef},
obgenmenu: generic menu settings {obgenmenu => ["label", "icon"]},
exit: default "Exit" action {exit => ["label", "icon"]},
=cut
# NOTE:
# * Keys and values are case sensitive. Keep all keys lowercase.
# * ICON can be a either a direct path to an icon or a valid icon name
# * Category names are case insensitive. (X-XFCE and x_xfce are equivalent)
require "$ENV{HOME}/.config/obmenu-generator/config.pl";
## Text editor
my $editor = $CONFIG->{editor};
our $SCHEMA = [
# COMMAND LABEL ICON
{item => ['xdg-open .', 'File Manager', 'system-file-manager']},
{item => ['terminator', 'Terminal', 'utilities-terminal']},
{item => ['xdg-open http://', 'Web Browser', 'web-browser']},
{item => ["transmission-gtk", 'Transmission', 'transmission']},
{item => ["nitrogen ~/Wallpapers", 'Change Wallpaper', 'nitrogen']},
## Custom advanced settings
{sep => undef},
{beg => ['Advanced Settings', 'applications-engineering']},
# Configuration files
{item => ["lxpanelctl restart", 'Restart Lxpanel', 'text-x-generic']},
{item => ["$editor ~/.conkyrc", 'Conky RC', 'text-x-generic']},
{item => ["$editor ~/.config/tint2/tint2rc", 'Tint2 Panel', 'text-x-generic']},
# obmenu-generator category
{beg => ['Obmenu-Generator', 'accessories-text-editor']},
{item => ["$editor ~/.config/obmenu-generator/schema.pl", 'Menu Schema', 'text-x-generic']},
{item => ["$editor ~/.config/obmenu-generator/config.pl", 'Menu Config', 'text-x-generic']},
{sep => undef},
{item => ['obmenu-generator -s -c', 'Generate a static menu', 'accessories-text-editor']},
{item => ['obmenu-generator -s -i -c', 'Generate a static menu with icons', 'accessories-text-editor']},
{sep => undef},
{item => ['obmenu-generator -p', 'Generate a dynamic menu', 'accessories-text-editor']},
{item => ['obmenu-generator -p -i', 'Generate a dynamic menu with icons', 'accessories-text-editor']},
{sep => undef},
{item => ['obmenu-generator -d', 'Refresh cache', 'view-refresh']},
{end => undef},
# Openbox category
{beg => ['Openbox', 'openbox']},
{item => ["$editor ~/.config/openbox/autostart", 'Openbox Autostart', 'text-x-generic']},
{item => ["$editor ~/.config/openbox/rc.xml", 'Openbox RC', 'text-x-generic']},
{item => ["$editor ~/.config/openbox/menu.xml", 'Openbox Menu', 'text-x-generic']},
{item => ['openbox --reconfigure', 'Reconfigure Openbox', 'openbox']},
{end => undef},
{end => undef},
{sep => undef},
## The xscreensaver lock command
{item => ['light-locker-command -l', 'Lock', 'system-lock-screen']},
## This option uses the default Openbox's "Exit" action
{item => ['systemctl poweroff','Shutdown','application-exit']},
]
To change any item, notice the syntax of this line:
{item => ["nitrogen ~/Wallpapers",'Change Wallpaper','nitrogen']},
In the square brackets of each line, it has [‘command’, ‘LABEL:the name appeared on the menu’, ‘ICON:the icon name’].
Play with it to your heart’s content!
Leave a comment