Openbox
Openbox is a simple window manager that lets you configure the appearance of
windows, menus, shortcuts and autostarted programs. The (home openbox)
module
provides configuration options for openbox.
Main Configuration
Openbox is configured by using the openbox-home-type
service type.
Scheme Procedure: openbox-home-type
The type of service that generates configuration files for openbox. Its value is an openbox-configuration object.
Data Type: openbox-configuration
Data type that represents the Openbox configuration. This data type has the following fields:
- autostart (default #f): the content of the autostart script. It can be #f if no script needs to be run at startup, or a file-like object.
- environ (default #f): the content of the environ file. It can be #f if no environment variable needs to be loaded at startup, or a file-like object.
- menus (default '()): the list of menus that can be added to the root menu.
- root-elements (default '()): the list of menu elements that are to be added to the root menu.
- rc (default #f): the content of the rc file. It can be #f if no specific configuration is needed, or a file-like object.
Example Configuration
(user-home
openbox-home-type
(openbox-configuration
(autostart (local-file "files/autostart"))
(menus
(list
(openbox-menu
(id "apps-game-menu")
(label "Games")
(elements
(list
(openbox-element-execute
(label "MineTest")
(command (file-append minetest "/bin/minetest")))
(openbox-element-execute
(label "harmonist")
(command (file-append harmonist "/bin/harmonist")))
(openbox-element-execute
(label "Xonotic")
(command (file-append xonotic "/bin/xonotic"))))))))
(root-elements
(list
(openbox-element-menu (id "apps-game-menu"))
(openbox-element-execute
(label "Terminal")
(command (file-append xfce4-terminal "/bin/xfce4-terminal")))
(openbox-element-execute
(label "Icecat")
(command (file-append icecat "/bin/icecat -P --no-remote")))
(openbox-element-execute
(label "File Manager")
(command (file-append pcmanfm "/bin/pcmanfm")))))
(rc (local-files "files/openbox-rc"))))
Menu Configuration
Menus in Openbox can be configured with the following data types:
Data Type: openbox-menu
This data type represents the content of a menu. This data type has the following fields:
- id: a unique identifier used to link to that menu in the parent menu
- label: a label shown in the parent menu that opens this menu
- elements*: the elements of the menu
Data Type: openbox-element-menu
This data type represents a menu, as an element of another menu. This data type has the following fields:
- id: the id of the menu that is opened by this element
Data Type: openbox-element-execute
This data type represents a menu element that is something to execute when the user clicks on it. This data type has the following fields:
- label: a label shown in the parent menu that executes this element
- command: the command to execute when the user clicks on this menu element. It can be a string or a g-expression, as seen in the first example.
- notify? (default #t): whether to use startupnotify