Skip to content

compiz-reloaded/compiz-boxmenu

Repository files navigation

                            Compiz Boxmenu

=== Requirements ===

 * A recent version of GLib 2.x and GTK+ 3.x
 * libwnck (2.20 is probably best, but not strictly required)
 * dbus (you must have a running session bus) and dbus-glib (for dbus version)
 * python-gobject (for the menu editor)

It does not strictly require compiz (but it does need a recent version of the
vpswitch plugin for 'Initiate on Desktop' to work)

=== Install ===

 $ make
 $ sudo make install

Prefix support is currently broken, so it only works correctly if you install
to /usr (will be fixed when it gets a proper buildsystem or perhaps sooner)

=== Usage ===

For the lazy, you can run the provided "autoconfig-compiz.py" script (as your
user, *not* as root!), but here's what it sets:
 + General Options > Commands > Commands > Command line 0 to "compiz-boxmenu"
 + General Options > Commands > Key bindings > Run command 0 to "<Control>space"
 + Viewport Switcher > Desktop-based Viewport Switching > Plugin for initiate
   action to "core"
 + Viewport Switcher > Desktop-based Viewport Switching > Action name for
   initiate to "run_command0_key"

=== Menu Format ===

The default menu lives at /etc/xdg/compiz/boxmenu/menu.xml. You can override
that menu by copying it to ~/.config/compiz/boxmenu/menu.xml (it's XDG
basedir-compliant, so if you're setting those variables, adjust accordingly)

Menus: <menu title="Title"> Menus can contain <item> and more <menu> tags (so
  they're infinitely nestable!). The title attribute is optional and is ignored
  for the toplevel menu. You can also set the icon for a menu by setting the
  icon="/path/or/name/of/icon" attribute

Items: <item type="Type"> There are a few supported item types:
 * launcher: supports the following child elements:
    - <name>: the label to show in the menu
    - <icon>: the icon name to use in the menu.
      This name is looked up by gtk+, so you can toss custom icons in 
      ~/.icons/$YOUR_THEME/$ICON_SIZE/apps/ or ~/.local/share/icons. By setting
      the mode1="file" attribute, you can specify icons located in nonstandard
      locations (like ~/.face for your login icon)
    - <command>: the launcher command line, now can be used as 
        a pipemenu by setting the mode2="pipe" attribute (this was done
        to make up for the removal of pipeitems)
 * separator: a simple GtkSeparatorMenuItem. You can add some more flare by 
   setting the icon="/path/or/name/of/icon" attribute and setting the 
   name="yourcustomname" attribute. You can also set a dynamic name for the
   separator by setting the mode="exec" attribute.
 * windowlist: libwnck-based window list menu. It also supports the following
   child elements:
    - <icon>: just like launcher's <icon>
 * viewportlist: libwnck-based viewport list menu. It also supports the 
   following child elements:
    - <icon>: just like launcher's <icon>
    - <vpicon>: just like icon, except for the viewports
    - <wrap>: specifies whether the viewport list should have wrapped navigation
 * reload: reload button (it actually quits the daemon)
    - <icon>: just like launcher's <icon>
 * documents: access to recent documents list
    - <icon>: just like launcher's <icon>
    - <command>: just like launcher's <command>, except it is used to open files 
      in the document list

=== Implementation ===

It compiles into two binaries, compiz-boxmenu and compiz-boxmenu-daemon.
compiz-boxmenu is a simple dbus client that connects
to org.compiz_fusion.boxmenu and calls the show method. The actual menu is
compiz-boxmenu-daemon, but you shouldn't ever need to manually launch it; the
dbus service file will cause it to be automatically spawned when the name is
requested.

There are also four other binaries that allow you to call up the viewport list,
windowlist, desktop list, and documents list on their own. These are 
compiz-boxmenu-vplist, compiz-boxmenu-wlist, compiz-boxmenu-dplist,
and compiz-boxmenu-dlist.

You can also edit the menu by running compiz-boxmenu-editor

== Credits ==
crdlb for the original
Openbox developers for the pipeitem -> pipemenu idea
Windowmaker developers for the filebrowser idea