diff options
Diffstat (limited to 'data/README.menu')
| -rw-r--r-- | data/README.menu | 369 |
1 files changed, 0 insertions, 369 deletions
diff --git a/data/README.menu b/data/README.menu deleted file mode 100644 index 61882cdf..00000000 --- a/data/README.menu +++ /dev/null @@ -1,369 +0,0 @@ -Creating a user defined menu: ------------------------------ -Creating a menu for Openbox requires a text editor of some sort. Familiarity -with your choice of text editor is assumed, since editor preference differs -as much (if not more than) window manager preference. - -First, we need to decide on a location for our custom menu. Your home -directory is the most logical solution, since you will most likely not have -write access anywhere else. You place the menu file in any directory, and -give it any name you choose, as we will later tell Openbox the path or -location for this file. - -As an example, let's assume that my home directory is `/home/bhughes' (which it -is). I've decided to keep all my Openbox related files in a directory named -`openbox.' After creating the directory, I now have two options for creating -my new menu. I can either copy the system default (usually in -`/usr/local/share/Openbox/menu') to this directory, or I can create a new -one from scratch. Let's do the latter, for the sake of completeness. - -I've decided to name the file `rootmenu.' I fire up my favorite text editor -and now have a clean file. So let's begin. - - -Menu syntax: ------------- -The menu syntax is very simple and very effective. There are upto three -fields in a menu line. They are of the form: - - [tag] (label or filename) {command or filename} - -The supported tags are as follows: - -[begin] (label for root menu) - - This tells Openbox to start parsing the menu file. This tag is - required for Openbox to parse your menu file. If it cannot find it, - the system default menu is used instead. - -[end] - - This tells Openbox that it is at the end of a menu. This can either - be a submenu or the main root menu. There must be at least one - of these tags in your menu to correspond to the required [begin] tag. - -[exec] (label for command) {shell command} - - This tells Openbox to insert a command item into the menu. When you - select the menu item from the menu, Openbox runs `shell command.' - -[exit] (label for exit) - - This tells Openbox to insert an item that shuts down and exits - Openbox. Any open windows are reparented to the root window before - Openbox exits. - -[include] (filename) - - This tells Openbox to parse the file specified by `filename' inline - with the current menu. `filename' can be the full path to a file - (such as /usr/local/share/Openbox/brueghel/stylesmenu) or it can - begin with `~/', which will be expanded into your home directory - (e.g. [include] (~/.openbox/stylesmenu) will include - /home/bhughes/.openbox/stylesmenu in my menu) - -[nop] (label - optional) - - This tells Openbox to insert a non-operational item into the current - menu. This can be used to help format the menu into blocks or sections - if so desired (e.g. you could put all your ssh accounts together, add - a [nop] and then add all your telnet accounts together). [nop] does - accept a label, but it is not required, and a blank item will be used - if none is supplied. - -[style] (label) {filename} - - This tells Openbox to read `filename' and apply the new textures, - colors and fonts to the current running session. The filename is - just like the [include] tag, it can be the full path to the file, - or it can be of the form `~/path/from/home/dir.' Openbox also - re-reads the entire menu structure from disk, incase the menu has - changed. - -[submenu] (label) {title for menu - optional} - - This tells Openbox to create and parse a new menu. This menu is - inserted as a submenu into the parent menu. These menus are parsed - recursively, so there is no limit to the number of levels or nested - submenus you can have. The title for the new menu is optional, if - none is supplied, the new menu's title is the same as the item label. - -[reconfig] (label) - - This tells Openbox to reread the current style and menu files and - apply any changes. This is useful for creating a new style or theme, - as you don't have to constantly restart Openbox every time you save - your style. - -[restart] (label) {shell command - optional} - - This tells Openbox to restart. If `shell command' is supplied, it - shuts down and runs the command (which is commonly the name of another - window manager). If the command is omitted, Openbox restarts itself. - -[workspaces] (label) - - This tells Openbox to insert a "link" to the workspaces menu directly - into your menu. This is handy for those users who can't access the - workspace menu directly (e.g. if you don't have a 3 button mouse, it's - rather hard to middle click to show the workspace menu). This is a - "link" to the systems workspace menu, so multiple [workspaces] tags - will display the same workspace menu, so expect it to move around if - you do so. ;) - -[config] (label) - - This tells Openbox to insert the ConfigMenu into your menu. From - this menu you can configure several options stored in your - ~/.openbox/rc, and the changes take effect immediately. - -Comments may be inserted on any line of the file, as long as the first -character on the line is a `#.' - -Also, in the labels/commands/filenames fields, you can escape any character -like so: - - [exec] (\(my cool\) \{XTERM\}) {\(xterm -T \\\"cool XTERM\\\"\)} - -Using `\\' inserts a literal back-slash into the label/command/filename field. - - -Putting it all together: ------------------------- -Alrighty, so let's see if we can understand the arcane incantation above. It -says we have to have a [begin] and an [end] tag, which create our menu and -give it a title. Let's do that first: - - - [begin] (Example \[Menu\]) - - [end] - -Simple enough. Now let's add some items to the list. We always want to have -access to a terminal emulator, be it a regular xterm or something else. -So we add the item to our menu, and it now looks like this: - -... -[begin] (Example \[Menu\]) -[exec] (xterm) {xterm -ls} -[end] -... - -Great! Now let's add us some items to run an irc client, a web browser and -some other common programs. This gives up this: - -... -[begin] (Example \[Menu\]) -[exec] (xterm) {xterm -ls} -[exec] (efnet irc) {xterm -e irc fnord irc.efnet.net} -[exec] (Mozilla Navigator) {mozilla} -[exec] (XEmacs) {xemacs} -[exec] (The GIMP) {gimp} -[exec] (Video Tune) {xvidtune} -[end] -... - -Whoa, wait a second. This menu file is beginning to look a little cluttered. -Not a problem, just like programmers indent and space their code, we can -do this with our menu file, so let's clean it up a bit: - -... -[begin] (Example \[Menu\]) - [exec] (xterm) {xterm -ls} - [exec] (efnet irc) {xterm -e irc fnord irc.efnet.net} - - [exec] (Mozilla Navigator) {mozilla} - [exec] (XEmacs) {xemacs} - - [exec] (Konqueror) {konqueror} - [exec] (The GIMP) {gimp} - - [exec] (Video Tune) {xvidtune} -[end] -... - -Ahh... now that looks a little better. Now we decide that we kind of like the -spacing in the file, and decide we want to apply it to the menu itself. Now -we take advantage of the [nop] tag: - -... -[begin] (Example \[Menu\]) - [exec] (xterm) {xterm -ls} - [exec] (efnet irc) {xterm -e irc fnord irc.efnet.net} - - [nop] - - [exec] (Mozilla Navigator) {mozilla} - [exec] (XEmacs) {xemacs} - - [nop] - - [exec] (Konqueror) {konqueror} - [exec] (The GIMP) {gimp} - - [nop] - - [exec] (Video Tune) {xvidtune} -[end] -... - -Now, let's create a submenu to put some items to change between all these -themes we downloaded from http://bb.classic.themes.org/. Let's assume we -untarred the themes into the ~/.openbox directory like the documentation on -the themes.org site recommends. - -... -[begin] (Example \[Menu\]) - [exec] (xterm) {xterm -ls} - [exec] (efnet irc) {xterm -e irc fnord irc.efnet.net} - - [nop] - - [exec] (Mozilla Navigator) {mozilla} - [exec] (XEmacs) {xemacs} - - [nop] - - [exec] (Konqueror) {konqueror} - [exec] (The GIMP) {gimp} - - [nop] - - [exec] (Video Tune) {xvidtune} - - [submenu] (Themes) {Themes from bb.classic.themes.org} - [style] (Openbox) {~/.openbox/styles/openbox} - [style] (Openbox II) {~/.openbox/styles/openbox2} - [style] (Hardware) {~/.openbox/styles/hardware} - [style] (Nova) {~/.openbox/styles/nova} - [style] (Orbital) {~/.openbox/styles/orbital} - [style] (Orbital II) {~/.openbox/styles/orbital2} - [style] (Seething) {~/.openbox/styles/seething} - [style] (Zero) {~/.openbox/styles/zero} - [style] (Cold Fusion) {~/.openbox/styles/coldfusion} - [end] -[end] -... - -Even better. Now hold on a second, if we have our themes and styles in -~/.openbox why do we have to have our menu in ~/openbox? Answer: WE DON'T! -This is where the choice comes. Do we keep our stuff in two separate -directories? Do we put it all in one directory? That is up to you to decide. -I personally prefer to keep everything in one directory (but, I use ~/.openbox -and have been for a long, long time; long before bb.classic.themes.org was -even thought of... and again that is *personal* preference, not a hard-fast -rule). - -Now that we've gotten a feel for the menu syntax, we decide to finish off our -menu. In addition to the styles we downloaded, we decide we also want to -keep a submenu for the default styles that came with Openbox. All we need -to do is [include] the styles file from the share directory for Openbox. -After putting everything together, we have: - - -... -# custom menu file for Openbox - -[begin] (Example \[Menu\]) - [exec] (xterm) {xterm -ls} - [exec] (efnet irc) {xterm -e irc fnord irc.efnet.net} - - [nop] - - [exec] (Mozilla Browser) {mozilla} - [exec] (Konqueror) {konqueror} - [exec] (XEmacs) {xemacs} - - [nop] - - [exec] (The GIMP) {gimp} - - [nop] - - [exec] (Video Tune) {xvidtune} - - [nop] (...) - - [submenu] (Themes) {Themes from bb.classic.themes.org} - [style] (Openbox) {~/.openbox/styles/openbox} - [style] (Openbox II) {~/.openbox/styles/openbox2} - [style] (Hardware) {~/.openbox/styles/hardware} - [style] (Nova) {~/.openbox/styles/nova} - [style] (Orbital) {~/.openbox/styles/orbital} - [style] (Orbital II) {~/.openbox/styles/orbital2} - [style] (Seething) {~/.openbox/styles/seething} - [style] (Zero) {~/.openbox/styles/zero} - [style] (Cold Fusion) {~/.openbox/styles/coldfusion} - -# include the default style menu... this is assuming Openbox was installed -# into /usr/local - - [nop] - - [include] (/usr/local/share/Openbox/styles/stylesmenu) - [end] - - [workspaces] (Workspace list) - - [submenu] (Restart) {Restart which?} - [restart] (Openbox) - -# let's also give us access to some other window managers - - [restart] (Window Maker) {wmaker} - [restart] (Enlightenment) {enlightenment} - [restart] (KWM) {kwm} - [restart] (TWM) {twm} - [end] - - [nop] (...) - - [reconfig] (Reconfigure) - [exit] (Quit!) -[end] -... - -And voila! our menu file is finished. Now we need to tell Openbox to read -this menu file. We do this by editing the file ~/.openbox/rc. - -NOTE: your ~/.openbox/rc is auotmatically updated every time Openbox restarts, -reconfigures, changes styles or exits. Changes to dynamic data like workspace -count, names, etc. is lost. About the only thing you can change and have it -preserved is the menu filename, which is what we are about to change. - -The format of ~/.openbox/rc is in the X resource database format (just like -~/.Xdefaults). Since the file is updated automatically, it may be full of -stuff or it may not even exist (especially if this is the first time we've -ran Openbox). Don't worry if you have to create ~/.openbox/rc, Openbox will -see the file the next time it starts. - -What we need to do is change the resource for the menu's filename. This is -done by changing (or adding) the line that looks like so: - -... -session.menuFile: /path/to/some/file -... - -If this resource exists, we change it. If it does not, we add it. Depending -on where we put the menu file, our new resource could look like this: - -... -session.menuFile: /home/bhughes/.openbox/rootmenu -... - -We save ~/.openbox/rc and then restart Openbox (reconfiguring doesn't work, -we need Openbox to completely shutdown and reread ALL of it's configuration -files, not just the ones that control colors/fonts/etc.) - -If we've done everything correctly, Openbox restarts itself and our new menu -is now ready for use. If something doesn't work, read over the above example -again to make sure you didn't forget a step or leave out the necessary tags. - -Now that Openbox has been told where to find it's menu, it does a little more. -Openbox 0.51.x introduced automagic menu updates. As long as you never -change session.menuFile, you will never have to restart or reconfigure Openbox -whenever you change your menu. Openbox watches the timestamps on all the -files it reads to build your menu. If any of them change, they are reread and -your menu updated. This check is done everytime you open the root menu. Like -I said... it is a check, it doesn't reread the menu everytime, it just looks -at the modification time and rereads when it changes. |
