doc: Document openbox configuration.

Julien LepillerTue Jun 11 21:30:54+0200 2019

a1494a8

doc: Document openbox configuration.

doc/openbox.md unknown status 1

1+
Openbox
2+
=======
3+
4+
Openbox is a simple window manager that lets you configure the appearance of
5+
windows, menus, shortcuts and autostarted programs. The `(home openbox)` module
6+
provides configuration options for openbox.
7+
8+
Main Configuration
9+
------------------
10+
11+
Openbox is configured by using the `openbox-home` procedure.
12+
13+
**Scheme Procedure**: (openbox-home config)
14+
15+
Generates configuration files for openbox, according to config, an
16+
openbox-configuration object.
17+
18+
**Data Type**: openbox-configuration
19+
20+
Data type that represents the Openbox configuration. This data type has the
21+
following fields:
22+
23+
* **autostart** (default #f): the content of the autostart script. It can be
24+
  #f if no script needs to be run at startup, or a file-like object.
25+
* **environ** (default #f): the content of the environ file. It can be #f if no
26+
  environment variable needs to be loaded at startup, or a file-like object.
27+
* **menus** (default '()): the list of menus that can be added to the root menu.
28+
* **root-elements** (default '()): the list of menu elements that are to be added
29+
  to the root menu.
30+
* **rc** (default #f): the content of the rc file. It can be #f if no specific
31+
  configuration is needed, or a file-like object.
32+
33+
Example Configuration
34+
---------------------
35+
36+
```scheme
37+
(openbox-home
38+
  (openbox-configuration
39+
    (autostart (local-file "files/autostart"))
40+
    (menus
41+
      (list
42+
        (openbox-menu
43+
          (id "apps-game-menu")
44+
          (label "Games")
45+
          (elements
46+
            (list
47+
              (openbox-element-execute
48+
                (label "MineTest")
49+
                (command (file-append minetest "/bin/minetest")))
50+
              (openbox-element-execute
51+
                (label "harmonist")
52+
                (command (file-append harmonist "/bin/harmonist")))
53+
              (openbox-element-execute
54+
                (label "Xonotic")
55+
                (command (file-append xonotic "/bin/xonotic"))))))))
56+
          (root-elements
57+
            (list
58+
              (openbox-element-menu (id "apps-game-menu"))
59+
              (openbox-element-execute
60+
                (label "Terminal")
61+
                (command (file-append xfce4-terminal "/bin/xfce4-terminal")))
62+
              (openbox-element-execute
63+
                (label "Icecat")
64+
                (command (file-append icecat "/bin/icecat -P --no-remote")))
65+
              (openbox-element-execute
66+
                (label "File Manager")
67+
                (command (file-append pcmanfm "/bin/pcmanfm")))))
68+
          (rc (local-files "files/openbox-rc"))))
69+
```
70+
71+
Menu Configuration
72+
------------------
73+
74+
Menus in Openbox can be configured with the following data types:
75+
76+
**Data Type**: openbox-menu
77+
78+
This data type represents the content of a menu. This data type has the following
79+
fields:
80+
81+
* **id**: a unique identifier used to link to that menu in the parent menu
82+
* **label**: a label shown in the parent menu that opens this menu
83+
* *elements**: the elements of the menu
84+
85+
**Data Type**: openbox-element-menu
86+
87+
This data type represents a menu, as an element of another menu. This data type
88+
has the following fields:
89+
90+
* **id**: the id of the menu that is opened by this element
91+
92+
**Data Type**: openbox-element-execute
93+
94+
This data type represents a menu element that is something to execute when the
95+
user clicks on it. This data type has the following fields:
96+
97+
* **label**: a label shown in the parent menu that executes this element
98+
* **command**: the command to execute when the user clicks on this menu element.
99+
  It can be a string or a g-expression, as seen in the first example.
100+
* **notify?** (default #t): whether to use startupnotify
100<
0101<
\ No newline at end of file