7 awesomerc - Configuration file for the 'awesome window manager'
16 <item> [<argument>] { <option> = <value>, ... }
27 The awesomerc file contains configuration informations for *awesome*. It can
28 be used to configure the behaviour and look of awesome in a variety of ways.
30 It is read at startup.
34 awesomerc contains 4 global sections: *screen*, *rules*, *keys* and *mouse* which
39 This is the global section for a physical screen. It must have a title with screen number,
40 starting at 0. It contains several subsections, which are *general*, *tags*, *layouts*, *styles*,
41 *padding* and *statusbar*.
45 General is a section containing some general options for this screen.
48 This section defines the parameters of the windows titlebar.
50 This defines the window borders size in pixel.
52 If this is set to true, new windows will become the master window.
54 If this is set to true, new windows will get focus.
56 If this is set to true, non-focused windows will have this opacity.
57 This requires an external XComposite manager.
59 If this is set to true, resize hints given by the window will be respected.
60 If this is set to false, window size will be forced.
61 If you dislike gaps between windows, you should try to set it to false.
63 If this is set to true, focus will be set to the window under the mouse. If not,
64 you will have to click on a window to set it focused.
66 If this is set to true with sloppy_focus, when a window is focused with the mouse
67 it will be raised on top of the windows stack.
69 Snap windows to the screen border when it is this pixel away only from the border.
71 Select the floating placement algorithm to use when placing window.
75 Tags is a section containing one or more tag sections, which defines a tag.
79 Tag is a section which contains several options defining a tag.
82 Layout is a name of an available layout which will be set by default on this tag.
84 Set the default master width factor for this tag.
86 Set the default number of columns for non-master windows for this tag.
88 Set the default number of windows which will be treated as master for this tag.
92 Layouts is a section containing a layout list, where each layout is a layout section.
96 Layout is a section which define a layout. It has a title which is the algorithm to use.
99 Set the image path used to describe this layouts, useful in layoutinfo widget.
103 Styles is a section containing the style parameters which is composed of a normal, focus and urgent
104 subsection each ones containing:
109 Set the foreground color.
111 Set the background color.
113 Set the window's border color.
115 Set the shadow color.
117 Set the shadow offset in pixel.
121 Padding is a section containing screen padding parameters.
124 Set the top padding in pixel.
126 Set the bottom padding in pixel.
128 Set the left padding in pixel.
130 Set the right padding in pixel.
134 Statusbar are sections containing statusbars parameters. Each statusbar section
135 must have a title which is the statusbar name. Each statusbar can have none or
136 several widgets (see WIDGETS section for more details) each one identified by its
140 Default statusbar position.
142 Statusbar height. By default, is auto computed with font size.
144 Statusbar width. By default, it will be whole screen.
148 Rules is a section containing a rule list to automatically configure windows.
152 Rule are sections containing the auto-configuration options for one window.
155 Set the window name for name matching as a regular expression.
157 Set the name of the XProperty for XProperty matching.
159 Set the regular expression to match against the named XProperty's value.
161 Set the window to be floating. One of auto, true or false. Defaults to auto.
163 Set the window to be the master. One of auto, true or false. Defaults to
166 Set the tags to be assigned to the window as a regular expression.
168 Set the screen the window should show up on.
170 Set the window's icon.
172 Set the window's opacity.
176 Keys is the section to define your keybindings in. It may consist of multiple
177 key and keylist entries.
181 In a key section you define a single keybinding.
184 The keysym you want to bind.
186 Modifiers that need to be pressed for this binding.
188 The *uicb function* to call.
190 The argument to the *uicb function*, if needed.
194 In a keylist you can define multiple very similar keybindings at once. For
195 example you can define <Mod1>-{1..9} to switch the view to tag 1..9
199 The list of keysyms to bind.
201 Modifiers that need to be pressed for these bindings.
203 The *uicb function* to call.
205 The list of arguments to the *uicb function*, if needed. *Must* match the
210 In the mouse section you may define mouse button bindings for the root and
215 Defines a mouse button binding for events on clients.
218 The mouse button you want to bind.
220 Modifiers that need to be pressed for this binding.
222 The *uicb function* to call.
224 The argument to the *uicb function*, if needed.
228 Defines a mouse button binding for events on the root window.
231 The mouse button you want to bind.
233 Modifiers that need to be pressed for this binding.
235 The *uicb function* to call.
237 The argument to the *uicb function*, if needed.
242 In awesome, a lot of *functions* are available. These functions are called
243 uicb (User Interface Call Backs). Each function can be bound to a key shortcut
249 This function quits awesome.
250 *statusbar_toggle* statusbar-identifier::
251 Hide or show statusbar (with no argument, toggle all).
253 Execute an external program.
255 Replace awesome with another window manager (or itself; i.e. reload config).
256 *widget_tell* widget-identifier data::
257 Feed information to your widgets.
262 Closes the focused client.
263 *client_moveresize* x y width height::
264 Dynamically move and resize floating windows.
265 Coordinates can be relative or absolute. Relative values must begin with + or -.
266 E.g: to move a window 10 pixels up: "+0 \+10 +0 +0" To move a window
267 in the upper left corner and increase its width by 10px: "0 0 \+0 +10"
268 *client_settrans* float::
269 Set client transparency, number can be a relative or absolute floating number in percentage.
271 Swap window placement with the next displayed window.
273 Swap window placement with the previous displayed window.
277 Focus previous window.
279 Set window fullscreen. Calling this function another time will reset the window to its previous state.
280 *client_togglehorizontalmax*::
281 Set window's horizontal size to display width. Calling another time will reset the window to its previous state.
282 *client_toggleverticalmax*::
283 Set window's vertical size to display height. Calling another time will reset the window to its previous state.
284 *client_togglefloating*::
285 Set window floating or tiled.
287 Set window as master window.
288 *client_movetoscreen* relative or absolute integer::
289 Move focused window to the nth screen, or next (+1) or previous (-1). If no screen_number is set, move to the next screen.
290 *client_tag* tag number::
291 Tag focused window with this tag.
293 Add or remove tag to focused window.
295 Move client window with mouse.
296 *client_resizemouse*::
297 Resize client window with mouse.
298 *client_setscratch*::
299 Set or unset client as being the scratch window.
300 *client_togglescratch*::
301 Toggle scratch window.
302 *client_toggletitlebar*::
303 Toggle window titlebar.
307 *tag_setlayout* relative or absolute integer::
308 Set layout number; or just switch to the next layout for current tag.
309 *tag_toggleview* tag::
310 Add windows tagged with tag number to current display.
311 *tag_view* tag number::
312 View windows tagged with tag number.
314 Show windows tagged with next tag in list.
316 Show windows tagged with previous tag in list.
317 *tag_prev_selected*::
318 Switch back to the previously displayed set of tags.
319 *tag_setmwfact* relative or absolute float::
320 Set master width factor.
321 *tag_setncol* relative or absolute integer::
322 Set number of columns for non-master windows.
323 *tag_setnmaster* relative or absolute integer::
324 Set number of master windows.
326 Create a new tag with that name.
330 *focus_client_byname* string::
331 Give client focus by its name.
332 *focus_history* negative number::
333 Focus the client that had focused nth focus switch earlier.
337 *screen_focus* relative or absolute integer::
338 Select Screen and focus first window and move mouse.
342 Statusbars can be customized by modifying widgets names, order and options.
346 This widget shows the tag list.
351 Horizontal offset (auto-alignment if not set).
353 Vertical offset (auto-alignment if not set).
359 This widget shows a icon for the selected layout.
364 Horizontal offset (auto-alignment if not set).
366 Vertical offset (auto-alignment if not set).
372 This widget shows a icon for the focused window using NET_WM_ICON or icon file set in rule.
377 Horizontal offset (auto-alignment if not set).
379 Vertical offset (auto-alignment if not set).
385 This widget shows a list of running windows.
390 Style section with normal, focus and urgent subsections.
394 Show applications icons.
396 Show all windows from all tags, tags clients only or focused client.
398 Horizontal offset (auto-alignment if not set).
400 Vertical offset (auto-alignment if not set).
404 This widget shows a text.
411 Style section with <style section>
417 Horizontal offset (auto-alignment if not set).
419 Vertical offset (auto-alignment if not set).
425 This widget shows an icon.
432 Resize icon to fit into statusbar.
434 Horizontal offset (auto-alignment if not set).
436 Vertical offset (auto-alignment if not set).
442 This widget shows one or more progress-bars.
445 Draws a bar for each data section;
446 Options: reverse, fg, fg_center, fg_end, bg, bordercolor.
448 Reverse/mirror the bar.
452 Foreground color in the center of the bar (as gradient).
454 Foreground color at the end of a bar (as gradient).
464 Set height (i.e. 0.9 = 90%)
466 Empty space on both sides.
468 Draw the bar(s) vertically/standing up.
470 Horizontal offset (auto-alignment if not set).
472 Vertical offset (auto-alignment if not set).
478 This widget shows a graph.
481 Defines a data-stream section;
482 Options: max, scale, fg, fg_center, fg_end and draw_style.
484 This value prints a full graph (default = 100).
486 Re-scales when input > max (see below).
490 Foreground color in the center of the bar (as gradient).
492 Foreground color at the end of a bar (as gradient).
494 If true, create a gradient from 0 > full instead of new > old values
496 bottom (fills from bottom to top), top, or line.
502 Set height (i.e. 0.9 = 90%).
504 Empty space on the left.
506 Put new values onto the 'left' or 'right'.
512 Horizontal offset (auto-alignment if not set).
514 Vertical offset (auto-alignment if not set).
520 Here is the global configuration file format, with a list of options
523 ..............................................
524 Note: when there is no whitespace, quotes are optional.
526 <boolean> -> "true" or "false"
527 <color> -> #ff9933 (hexadecimal color notation: #red green blue)
528 <float> -> 0.3, 0,8 (often values between 0 and 1 are useful)
529 <font> -> Pango font: sans 10, sans italic 10, fixed 12, ...
530 <identifier> -> foobar (choose a name/string)
531 <image> -> "/home/awesome/pics/icon.png" (path to image)
532 <integer> -> 1, 10, -3 (positive numbers are required mostly)
533 <key> -> a, 1, F10 (see /usr/include/X11/keysymdef.h w/o XK_ or 'xev')
534 or a keycode beginning with #
535 <mod> -> "Mod1", "Mod4", "Control" (modifiers)
536 <regex> -> regular expression
537 <string> -> "foo bar"
538 <uicb-arg> -> prog, 3... (argument to a uicb function, where required)
539 <uicb-cmd> -> spawn, exec, client_tag... (see UICB FUNCTIONS above)
540 <position> -> list of position: off, top, right, left, bottom, auto
541 <{.., ...}> -> list of available options
542 <style section> -> a section with font, fg, bg, border, shadow and shadow_offset options.
543 { font = <font> fg = <color> bg = <color> border = <color>
544 shadow = <color> shadow_offset = <integer> }
545 <titlebar> -> a section with position and icon position.
546 { position = <position> icon = <position> text_align = <{center,right,left}> }
548 [MULTI] means, you can use an item multiple times.
551 screen <integer> [MULTI]
556 new_become_master = <boolean>
557 new_get_focus = <boolean>
558 opacity_unfocused = <integer>
559 resize_hints = <boolean>
560 sloppy_focus = <boolean>
561 sloppy_focus_raise = <boolean>
563 floating_placement = <{smart,under_mouse}>
564 mwfact_lower_limit = <float>
565 mwfact_upper_limit = <float>
573 tag <identifier> [MULTI]
575 layout = <{dwindle,floating,max,
576 spiral,tile,tileleft,tilebottom,tiletop}>
584 layout <{dwindle,floating,max,
585 spiral,tile,tileleft,
586 tilebottom,tiletop}> { image = <image> } [MULTI]
590 normal { <style section> }
591 focus { <style section> }
592 urgent { <style section> }
601 statusbar <identifier> [MULTI]
603 position = <{top,bottom,left,right,off}>
607 taglist <identifier> [MULTI]
609 x = <integer> y = <integer>
610 align = <{auto,right,left}>
613 button = <integer> modkey = {<mod>, ...}
614 command = <uicb-cmd> arg = <uicb-arg>
617 layoutinfo <identifier>
619 x = <integer> y = <integer>
620 align = <{auto,right,left}>
623 button = <integer> modkey = {<mod>, ...}
624 command = <uicb-cmd> arg = <uicb-arg>
627 focusicon <identifier>
629 x = <integer> y = <integer>
630 align = <{auto,right,left}>
633 button = <integer> modkey = {<mod>, ...}
634 command = <uicb-cmd> arg = <uicb-arg>
637 tasklist <identifier>
641 normal { <style section> }
642 focus { <style section> }
644 show_icons = <boolean>
645 show = <{all,tags,focus}>
646 text_align = <{center,left,right}>
647 x = <integer> y = <integer>
650 command = <uicb-cmd> arg = <uicb-arg>
651 button = <integer> modkey = {<mod>, ...}
654 textbox <identifier> [MULTI]
656 style { <style section> }
659 text_align = <{center,left,right}>
660 x = <integer> y = <integer>
661 align = <{auto,right,left}>
664 button = <integer> modkey = {<mod>, ...}
665 command = <uicb-cmd> arg = <uicb-arg>
668 iconbox <identifier> [MULTI]
672 x = <integer> y = <integer>
673 align = <{auto,right,left}>
676 button = <integer> modkey = {<mod>, ...}
677 command = <uicb-cmd> arg = <uicb-arg>
680 progressbar <identifier> [MULTI]
684 reverse = <boolean> bg = <color> bordercolor = <color>
685 fg = <color> fg_center = <color> fg_end = <color>
692 x = <integer> y = <integer>
693 align = <{auto,right,left}>
696 button = <integer> modkey = {<mod>, ...}
697 command = <uicb-cmd> arg = <uicb-arg>
700 graph <identifier> [MULTI]
704 scale = <boolean> max = <float> draw_style = <{bottom, top, line}>
705 fg = <color> fg_center = <color> fg_end = <color>
706 vertical_gradient = <boolean>
710 padding_left = <integer>
711 grow = <{left, right}>
713 bordercolor = <color>
714 x = <integer> y = <integer>
715 align = <{auto,right,left}>
718 button = <integer> modkey = {<mod>, ...}
719 command = <uicb-cmd> arg = <uicb-arg>
729 xproperty_name = <string>
730 xproperty_value = <regex>
731 float = <{auto,true,false}>
732 master = <{auto,true,false}>
747 key = <key> modkey = {<mod>, ...}
748 command = <uicb-cmd> arg = <uicb-arg>
752 keylist = {<key>, ...}
753 modkey = {<mod>, ...}
755 arglist = {<uicb-arg>, ...}
762 button = <integer> modkey = {<mod>, ...}
763 command = <uicb-cmd> arg = <uicb-arg>
767 button = <integer> modkey = {<mod>, ...}
768 command = <uicb-cmd> arg = <uicb-arg>
771 ..............................................
776 Check awesome's wiki: http://awesome.naquadah.org/wiki/
778 Simple textbox example
779 ~~~~~~~~~~~~~~~~~~~~~~
780 ..............................................
781 1. Add an include directive into ~/.awesomerc
784 include(~/.awesome/bottom-status-bar)
786 2. Create ~/.awesome/bottom-status-bar
794 3. Check the configuration file for errors
797 Configuration file OK.
799 Note: If you see anything other than "Configuration file OK." you have a
802 4. Create ~/bin/awesome-clock
807 echo "0 widget_tell clock text `date`"
808 echo "" # an empty line flushes data inside awesome
810 done | awesome-client
812 Note: What we're saying is "awesome-client, tell widget 'clock' to set
813 it's 'text' property to date's output".
815 5. Make your ~/bin/awesome-clock executable
817 $ chmod a+x ~/bin/awesome-clock
821 ~/bin/awesome-clock &
826 8. If your didn't get what you were expecting, take a look at
827 ~/.xsession-errors or the terminal where X got started.
828 ..............................................
830 Simple progressbar example
831 ~~~~~~~~~~~~~~~~~~~~~~~~~~
832 ..............................................
834 1. Add an include directive into ~/.awesomerc
838 include(~/.awesome/bottom-status-bar)
841 2. Create ~/.awesome/bottom-status-bar
843 progressbar diskusage
847 bordercolor = "#006e96"
850 fg_center = "#daaf0a"
857 3. Check the configuration file for errors
860 Configuration file OK.
862 Note: If you see anything other than "Configuration file OK," you have a
865 4. Create ~/bin/awesome-diskusage
869 usage = `df /dev/sda5 | awk '/\/dev\/sda5/ { print 100-$5 }'`
870 echo "0 widget_tell diskusage data disk ${usage}"
871 echo "" # an empty line flushes data inside awesome
873 done | awesome-client
876 Note: What we're saying is "awesome-client, tell widget 'diskusage' to
877 set it's 'data' property named 'disk' to ${usage}."
879 5. Make ~/bin/awesome-diskusage executable
881 $ chmod a+x ~/bin/awesome-diskusage
885 ~/bin/awesome-diskusage &
890 8. If your didn't get what you were expecting, take a look at
891 ~/.xsession-errors or the terminal where X got started.
892 ..............................................
897 awesome(1) awesome-client(1)
902 This man page was written by Julien Danjou <julien@danjou.info>, Marco Candrian <mac@calmar.ws>
903 and Chris Ciulla <chris.ciulla@gmail.com> (Simple Examples).
907 http://awesome.naquadah.org