aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormathias <mathias>2006-04-22 07:03:58 (GMT)
committermathias <mathias>2006-04-22 07:03:58 (GMT)
commitdc532830606461182f5b9fbac54847a1b3c5b080 (patch)
tree19067747564dca5d1bdabd00c1e0024735187d73
parentedafa987bee64b898ab301263431f97fbd9445e2 (diff)
downloadfluxbox-dc532830606461182f5b9fbac54847a1b3c5b080.zip
fluxbox-dc532830606461182f5b9fbac54847a1b3c5b080.tar.bz2
* cosmetics to Workspace.hh CurrentWindowCmd.cc
* added first draft of new docs in asciidoc format, needs to be converted properly to roff-format, right now its just a temporary "home" * rename of Coding_style to CODESTYLE
-rw-r--r--ChangeLog6
-rw-r--r--doc/CODESTYLE (renamed from doc/Coding_style)0
-rw-r--r--doc/asciidoc/README.txt31
-rw-r--r--doc/asciidoc/fluxbox.txt1572
-rw-r--r--src/CurrentWindowCmd.cc26
-rw-r--r--src/Workspace.hh26
6 files changed, 1635 insertions, 26 deletions
diff --git a/ChangeLog b/ChangeLog
index 46a8c86..fbd6452 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
1(Format: Year/Month/Day) 1(Format: Year/Month/Day)
2Changes for 0.9.16: 2Changes for 0.9.16:
3*06/04/22:
4 * First draft of new docs in docs/asciidoc (Mathias)
5 * Cosmetics to Workspace.hh CurrentWindowCmd.cc
3*06/04/21: 6*06/04/21:
4 * Minor fixes to slit transparency (esp if autohidden) (Simon) 7 * Minor fixes to slit transparency (esp if autohidden) (Simon)
5 Slit.cc 8 Slit.cc
@@ -213,6 +216,7 @@ Changes for 0.9.16:
213 fluxbox.cc Screen.hh/cc Window.hh/cc FbWinFrame.hh/cc Remember.cc 216 fluxbox.cc Screen.hh/cc Window.hh/cc FbWinFrame.hh/cc Remember.cc
214 Container.hh/cc FbTk/XLayer.hh/cc XLayerItem.cc fluxbox-nls.hh 217 Container.hh/cc FbTk/XLayer.hh/cc XLayerItem.cc fluxbox-nls.hh
215 RowSmart/ColSmart/UnderMousePlacement.cc WinButton.cc 218 RowSmart/ColSmart/UnderMousePlacement.cc WinButton.cc
219
216------------------------------------------------------------- 220-------------------------------------------------------------
217Changes for 0.9.15: 221Changes for 0.9.15:
218*06/03/19: 222*06/03/19:
@@ -377,6 +381,8 @@ Changes for 0.9.15:
377 src/ScreenResources.cc 381 src/ScreenResources.cc
378 * Use fbsetroot in Default-Styles (Mathias) 382 * Use fbsetroot in Default-Styles (Mathias)
379 data/styles/* 383 data/styles/*
384
385-------------------------------------------------------------
380Changes for 0.9.14: 386Changes for 0.9.14:
381*05/09/12: 387*05/09/12:
382 * Fixes #1281708, MenuIcon doesnt scale properly (thanx Erik-Jan) 388 * Fixes #1281708, MenuIcon doesnt scale properly (thanx Erik-Jan)
diff --git a/doc/Coding_style b/doc/CODESTYLE
index 47bd173..47bd173 100644
--- a/doc/Coding_style
+++ b/doc/CODESTYLE
diff --git a/doc/asciidoc/README.txt b/doc/asciidoc/README.txt
new file mode 100644
index 0000000..a09eef6
--- /dev/null
+++ b/doc/asciidoc/README.txt
@@ -0,0 +1,31 @@
1whats this? this is the attempt to write the documentation for
2fluxbox in ascii-doc format. how does it work?
3
4well, we just edit fluxbox.txt from this directory. save it.
5then we can produce pretty much any format we like:
6
7man:
8
9 $> asciidoc -b docbook -d manpage fluxbox.txt
10 $> xmlto man fluxbox.xml
11
12pdf:
13
14 $> asciidoc -b docbook -d manpage fluxbox.txt
15 $> docbook2pdf fluxbox.xml
16
17docbook:
18
19 $> asciidoc -b docbook-sgml -d manpage fluxbox.txt
20
21html:
22
23 $> asciidoc -b xhtml -d manpage fluxbox.txt
24
25and many many more ways to do it.
26what do we need? well, at least:
27
28 http://www.methods.co.nz/asciidoc/
29 http://cyberelk.net/tim/xmlto/
30
31and the rest of the docbook-family + maybe pdftex.
diff --git a/doc/asciidoc/fluxbox.txt b/doc/asciidoc/fluxbox.txt
new file mode 100644
index 0000000..a45c432
--- /dev/null
+++ b/doc/asciidoc/fluxbox.txt
@@ -0,0 +1,1572 @@
1fluxbox(1)
2==========
3Henri Kinnunen <fluxgen@fluxbox.org>
4v0.9.15, 18th March 2006
5
6NAME
7----
8fluxbox - A lightweight window manager for the X Windowing System
9
10SYNOPSIS
11--------
12'fluxbox' [-vhi] [-rc rcfile] [-l logfile] [-d display] [-screens scr,scr]
13
14DESCRIPTION
15-----------
16fluxbox(1) provides configurable window decorations, a root menu to launch
17applications and a toolbar that shows the current workspace name, a set of
18application names and the current time. There is also a workspace menu to add
19or remove workspaces. The `slit' can be used to dock small applications, e.g.
20most of the bbtools can use slit.
21
22
23fluxbox(1) can iconify windows to the toolbar, in addition to adding the window
24to the 'Icons' submenu of the workspace menu. One click and they reappear. A
25double-click on the titlebar of the window will 'shade' it, i.e. the window
26will disappear, only the titlebar remains visible.
27
28
29fluxbox(1) uses its own graphics class to render its images on the fly. By using
30style files, you can determine in great detail how your desktop looks.
31fluxbox styles are compatible with those of Blackbox 0.65 or earlier versions,
32so users migrating can still use their current favourite themes.
33
34
35fluxbox(1) supports the majority of the Extended Window Manager Hints (EWMH)
36specification, as well as numerous other Window Hinting standards. This
37allows all compliant window managers to provide a common interface to
38standard features used by applications and desktop utilities.
39
40OPTIONS
41-------
42-d display, -display display::
43 Start fluxbox on the specified display. Programs started by fluxbox
44 will share the DISPLAY environment variable also.
45-h, -help::
46 Display command line options.
47-i, -info::
48 Display useful information concerning the defaults and compiled-in
49 options.
50-l logfile::
51 Starting fluxbox with this option will designate a file in which you
52 want to log events to.
53-rc rcfile::
54 Use a different config file other than the default ~/.fluxbox/init.
55-v, -version::
56 The version of fluxbox installed.
57
58STARTING FLUXBOX
59----------------
60fluxbox(1) comes with a program called startfluxbox(8) usually located wherever
61you installed fluxbox. This script provides you with many options and
62variables that can be set when starting fluxbox. To actually call fluxbox and
63begin using it, you should place "exec startfluxbox" in your ~/.xinitrc or
64~/.xsession (depending on your distributions and/or display manager) as the
65last executed command. This is assuming that the location of fluxbox(1) and
66startfluxbox(8) are in your shell's $PATH. Also note that you may need to
67create the ~/.xinitrc file or your setup may use ~/.xsession instead,
68depending on your X setup. For more information on your shell, please visit
69your shell's manual page.
70
71By using fluxbox -i you'll see the defaults used by fluxbox(1). These are what
72fluxbox looks for upon startup. In the list of `Defaults:' you'll see a menu
73file location, this is where you can provide a system-wide menu file for your
74users.
75
76On exit or restart, fluxbox will save user defaults in the file
77~/.fluxbox/init. Resources in this file can be edited by hand. fluxbox also
78has many tools to edit these, look through the main menu once fluxbox has
79started to find different ways of managing your session.
80
81USING FLUXBOX
82-------------
83When using fluxbox for the first time, users who are more accustomed to
84full desktop environments such as KDE or Gnome may be a little surprised by
85the minimal screen content. fluxbox is designed to be fast and powerful, so it
86may take a bit of getting used to -- however, the rewards are worthwhile.
87user.
88We'll give a quick summary of the common things in this section. However, we
89recommend that you consult the referenced sections of this manual to further
90develop your understanding of what you can do with fluxbox.
91
92Root Window (Main)
93~~~~~~~~~~~~~~~~~~
94Looking at the fluxbox desktop immediately after startup you'll generally
95see only one thing: The toolbar. If you were to right click (mouse button
963) somewhere else blank, you would be able to access the RootMenu, a
97middle click (mouse button 2) on the desktop shows you the WorkspaceMenu.
98
99RootMenu and WorkspaceMenu
100~~~~~~~~~~~~~~~~~~~~~~~~~~~~
101From the RootMenu you can launch applications and configure fluxbox. The
102WorkspaceMenu shows all windows and on which workspaces they are. See
103section MENUS on how to customize thess menus.
104
105Toolbar
106~~~~~~~
107The toolbar contains up to eight fields/tools:
108
109- *Workspace Name*:
110 Name of the current visible workspace
111- *Iconbar*:
112 Show Windows
113- *System Tray*:
114 Area for applets
115- *Clock*:
116 Date and Time
117- *Workspace Arrows*:
118 Previous/Next Workspace
119- *Window Arrows*:
120 Previous/Next Application Window
121
122The contents of the toolbar can be configured in the `init' file, we
123discuss the `init' file at great length in the RESOURCES section.
124
125Slit
126~~~~
127Initially you won't be able to see the slit. It is there, it just isn't
128being utilized yet. The slit confuses some people initially. Think of it
129as a dock where you can place smaller programs. If you've looked at any
130screenshots on the offical fluxbox web site you'll have noticed some small
131programs on the edge of some of the screens. These were more than likely
132those docked programs in the slit. To learn more about the slit, we have
133an entire section below that goes into detail about the options you have.
134
135Layers
136~~~~~~
137fluxbox manages the following layers (from highest to lowest layer):
138
139* Above Dock
140* Dock
141* Top
142* Normal
143* Bottom
144* Desktop
145
146Windows on a higher layer will always appear above those on a lower one. These
147layers can be used on application windows, the slit or the toolbar. You can
148assign applications to a certain layer by specifying it in the `apps' file. We
149discuss the `apps' file in the APPLICATIONS section. We discuss layers in more
150detail in the LAYERS section.
151
152Focus Model
153~~~~~~~~~~~
154The window that has the focus is the one that receives key and mouse
155events. The focus model is selectable via the Configuration menu located
156in the root menu. We'll discuss the different types of focus below in the
157FOCUS MODEL section.
158
159Windows
160~~~~~~~
161A left click (mouse button 1) on any part of the window's border will
162raise it. Dragging then moves the window to another part of the desktop.
163Dragging the resize grips at the left and right bottom corners resizes the
164window. Middle clicking on a border or titlebar will immediately lower the
165window. Right clicking on a border or titlebar pops the Window menu up.
166The commands in this menu alone are discussed in detail in the Window Menu
167section of MENUS.
168
169Tabs
170~~~~
171fluxbox allows windows to be `grouped' by middle clicking and holding on a
172window's title bar and dragging it onto another window. This will `tab'
173the titlebars, allowing you the user to select each window individually.
174This `tabbing' allows you to put multiple applications in one location on
175the desktop, and do several operations (for example, moving or resizing)
176to all windows in the group.
177
178Miscellaneous
179~~~~~~~~~~~~~
180When you want to drag a window, but cannot see either the bottom handle or
181its titlebar you can press (and hold!)
182
183 ALT + Left Mousebutton (mouse button 1)
184
185and move it anywhere in the current workspace. This key combination can
186also be used to raise a partially visible window.
187
188The key combination
189
190 ALT + Right Mousebutton (mouse button 3)
191
192will allow you to resize the window. These can be disabled in the
193resource file with:
194
195 session.session0.useMod1: <boolean>
196
197MENUS
198-----
199fluxbox installs a default menu file in @pkgdatadir@/menu. You
200can also use fluxbox -i to confirm this action. Of course this system-wide
201menu can be customized for all users at once, but it is also possible to
202create an individual menu file for each user. By convention, users create a
203menu file in ~/.fluxbox . Once you've created your own menu file, you'll want
204to make sure that you properly declare this location in your `init' file so
205that fluxbox knows where to look. The value you'll want to add or change is:
206
207 session.session0.menuFile: <menufile>
208
209For this change to take effect, fluxbox must be restarted. Be sure that your
210menu is usable, then choose `Restart' from the default fluxbox root menu.
211This restart is only necessary if you make changes to the `init' file,
212otherwise a `Reload Config' is acceptable. A menu reload can also be
213forced by sending SIGUSR2 signal (see the SIGNALS section).
214
215Root Menu
216~~~~~~~~~
217The root menu is where you can change different aspects of fluxbox by
218simply clicking on a menu item. Most of the changes in this menu can also
219be done in the `init' file. However it makes it very easy to change
220certain options without having to open up an editor and find the resource.
221In the root menu, you usually have a `fluxbox menu' or `Settings' submenu,
222where you will find lots of different options. We'll take a look at most,
223if not all, of those here.
224
225- *Configure*:
226 The next level under this menu is where you can set certain resources and
227 really begin to cus- tomize the look and feel of your desktop.
228
229- *System Styles*:
230 This is where the standard styles are listed. You can select one of these
231 by clicking on it. You may have to `reload' the config or `restart' to get
232 every graphical element to change to the new style. System styles are
233 located in @pkgdatadir@/styles/ upon a default install.
234 Remember that you can confirm this with fluxbox -i.
235
236- *User Styles*:
237 ~/.fluxbox/styles This is the location where you will store new styles
238 that you grab from the Internet. If you create your own styles this is
239 also where you will put yours (provided that you follow the 'standards'
240 described in fluxstyle(1)).
241
242- *Workspace List*:
243 This is a list of the workspaces configured in your `init' file. If there
244 are programs running on any of the workspaces, they will be listed one
245 level down.
246
247- *Tools*:
248 Listed here are different tools that you can use. You can rename your
249 workspace, run programs from a command line or regenerate your menu.
250
251- *Window*:
252 Allows you to switch your window manager. (Only listed if you have other
253 window managers/desktop environments installed.)
254
255- *Lock Screen*:
256 Locks the screen...
257
258- *fluxbox Command*:
259 A little Commandline will popup where you can enter a fluxbox command.
260
261- *Reload Config*:
262 Use this to reload any menu files or style files. Just a basic re-read of
263 the files by a running fluxbox.
264
265- *Restart*:
266 Restart the whole darn thing, this rereads files and redraws all graphical
267 elements.
268
269- *Exit:
270 Exits fluxbox and shuts down the X Window server.
271
272Configuration Menu
273~~~~~~~~~~~~~~~~~~
274This menu offers the opportunity to set up fluxbox. It ca also achieved by
275editing the init file, but this is a easier and faster way to most users.
276
277- *Focus Model*:
278 Please read the FOCUS MODEL section at the end of this manual.
279
280- *Slit*:
281 This Menu can be opend by right clicking the slit (if visible).
282
283- *Placement*:
284 This lets you set the position of the slit.
285
286- *Layer*:
287 Look above for the layer priorities.
288
289- *Auto hide*:
290 If enabled, the slit will disappear after a given amount of time and hide
291 from the view of the user. You can make it appear if you move the mouse to
292 the edge of the desktop where the slit is psitioned.
293
294- *Maximize over*:
295 If this is enabled, all windows, if you maximize them, will stretch
296 over/under the slit. Otherwise the will be limited to the slit's edge.
297
298- *Alpha*:
299 By changing the value the slit (only the decoration not the apps in the
300 slit) will become transparent. 0 (transparent) - 255 (opaque)
301
302- *Slit direction*:
303 Changing the value will set the slit's direction for ordering apps sitting
304 in the slit. There is no effect with only on application.
305
306- *Clients*:
307 This submenu lets you reorder the the applications running in the
308 slit. You are able to hide apps from the slit by unselecting them in
309 the list showing. This will not kill the app. You can make them appear
310 by selecting them in the list. The "Save SlitList" option saves the
311 new order to you slitlist located in ~/.fluxbox (useful if you
312 reordered the apps with the cycle option).
313
314- *Toolbar*:
315 Please take a look at the "Configuration via the Toolbar Menu" part of the
316 TOOLBAR section.
317
318- *Image Dithering*:
319 Enable or disable dithering of images.
320
321- *Opaque Window Moving*:
322 If enabled, you will see the window content while dragging it. Otherwise
323 the window will be shown as a "border".
324
325- *Full Maximization*:
326 Enabling this will override the seperate settings for the slit/toolbar.
327 Windows will always maximize over/under both of them.
328
329- *Focus New Window*:
330 If enabled, a newly opend window will gain focus.
331
332- *Focus Last Window on Workspace*:
333 This focuses the last window if switching back to a worspace if the option
334 is enabled.
335
336- *Windows Warping*:
337 If enabled, you can drag windows from one to another workspace.
338
339- *Desktop MouseWheel Switching*:
340 You will be able to change the workspace with your mousewheel if used on
341 the desktop or over the toolbar if the option is enabled.
342
343- *Decorate Transient Windows*:
344 With this option enabled all temporary windows will have a border and
345 grips.
346
347- *Click Raises*:
348 If enabled a click anywhere on a window area (including the decorations)
349 will raise it. Otherwise you can only raise it by clicking the titlebar.
350
351- *Transparency*:
352 This sets the transparency for an focused, unfocused window and the menu.
353
354Window Menu
355~~~~~~~~~~~
356The Window menu is displayed when you right click on the titlebar or
357border of a window. The options available are:
358
359- *Send To...*:
360 Send window to another workspace. When you select the workspace with
361 a middle click, fluxbox will send you along with the application to
362 the selected workspace.
363
364- *Shade*:
365 Shade the window (display the titlebar only).
366
367- *Iconify*:
368 Iconify window. The `icon' can be found in the Icons submenu of the
369 workspace menu as well as in the toolbar (if a Toolbar mode showing
370 Icons is selected).
371
372- *Maximize*:
373 (Un)Maximize window. Depending on your toolbar and slit
374 configuration, maximize may cover them. You can use the different
375 mouse buttons for different aspects of maximize function.
376
377 * Button 1 (Un)Maximize as normal.
378 * Button 2 (Un)Maximize window vertically.
379 * Button 3 (Un)Maximize window horizontally.
380
381- *Raise*:
382 Raise the window.
383
384- *Lower*:
385 Lower the window.
386
387- *Stick*:
388 (Un)Stick window. A `stuck' window will always be displayed on all
389 workspaces.
390
391- *Next Client*:
392 Activate the next client in this window's group.
393
394- *Prev Client*:
395 Activate the previous client in this window's group.
396
397- *Layer...*:
398 Change the layer of this window.
399
400- *Remember...*:
401 Specify which window settings should be stored in the apps file,
402 covered later on in the APPLICATIONS section.
403
404- *Close*:
405 Close the application softly.
406
407Workspace Menu
408~~~~~~~~~~~~~~
409The workspace menu can be found by middle clicking on the background. A
410menu will popup giving you the option to add or remove a workspace. You
411will also see your workspaces listed there, in a lower menu under these
412the programs that are running on those respective workspaces will be
413displayed. Last but not least you will notice the Icons menu. This is for
414applications which have been `iconified'.
415
416Menu Behavior
417~~~~~~~~~~~~~
418The behavior of the submenus in a menu can be configured in the `init'
419file, with the following entries (default for both is 0):
420
421 session.screen0.menuDelay: <msec>
422 session.screen0.menuDelayClose: <msec>
423
424Menu Syntax
425~~~~~~~~~~~
426There are up to four fields in a menu line. They are of the form:
427
428 [tag] (label|filename) {command|filename} <icon file>
429
430The supported tags are:
431
432[begin] (label);;
433 This tells fluxbox to start parsing the menu file. This tag is
434 required for fluxbox to read your menu file. If it cannot find it, the
435 system default menu is used in it's place.
436
437[end];;
438 This tells fluxbox that it is at the end of a menu. This can either be
439 a submenu or the main root menu. There must be at least one of these
440 tags in your menu to correspond to the required [begin] tag.
441
442[exec] (label) \{command\};;
443 Inserts a command item into the menu. When you select the menu item
444 from the menu, fluxbox runs 'command'.
445
446[exit] (label);;
447 Inserts an item that shuts down and exits fluxbox. Any open windows
448 are reparented to the root window before fluxbox exits.
449
450[include] (file-or-directory-name);;
451 Parses the file specified by filename inline with the current menu.
452 The filename can be the full path to a file or it can begin with ~/,
453 which will be expanded into your home directory. If the path is a
454 directory, then all files in the directory are included.
455
456[nop] (label);;
457 Insert a non-operational item into the current menu. This can be used
458 to help format the menu into blocks or sections if so desired. This
459 tag does support a label, but one is not required in which case a
460 blank item will be used instead.
461
462[separator];;
463 This will create a nice separation line. Useful for splitting up
464 sections in a 'pretty' way.
465
466[style] (label) \{filename\};;
467 This tells fluxbox to insert an item that, when selected, reads style
468 file named filename and apply the new textures, colors and fonts to
469 the current running session.
470
471[stylesmenu] (directory);;
472 Reads all filenames from the specified directory, assuming that they
473 are all valid style files, and creates menu items in the current menu
474 for every filename, that, when selected by the user will apply the
475 selected style file to the current session. The labels that are
476 created in the menu are the filenames of the style files.
477
478[stylesdir] (label) \{directory\};;
479 Creates a submenu entry with label (that is also the title of the new
480 submenu), and inserts in that submenu all filenames in the
481 specified directory, assuming that they are all valid style files
482 (directories are ignored) in the same way as the [stylesdir] command
483 does.
484 Both [stylesdir] and [stylesmenu] commands make it possible to install
485 style files without editing your init file.
486
487[submenu] (label) \{menutitle\};;
488 This tells fluxbox to create and parse a new menu. This menu is
489 inserted as a submenu into the parent menu. These menus are parsed
490 recursively, so there is no limit to the number of levels or nested
491 submenus you can have. The title for the new menu is optional, if none
492 is supplied, the new menu's title is the same as the item label. An
493 [end] tag is required to end the submenu.
494
495[reconfig] (label);;
496 When selected this item re-reads the current style and menu files and
497 applies any changes. This is useful for creating a new style or theme,
498 as you don't have to constantly restart fluxbox every time you save
499 your style. However, fluxbox automagically rereads the menu whenever
500 it changes.
501
502[restart] (label) \{command\};;
503 This tells fluxbox to restart. If command is supplied, it shuts down
504 and runs the command (which is commonly the name of another window
505 manager). If the command is omitted, fluxbox restarts itself.
506
507[config] (label);;
508 Inserts a fluxbox native submenu item, containing numerous
509 configuration options concerning window placement, focus style, window
510 moving style, etc.
511
512[wallpaper] (label);;
513 This allows you to list your backgrounds. This tag is built in to use
514 fbsetbg(1) and allows you to simply click on an image to set your
515 wallpaper. See? fluxbox makes it easy...
516
517[workspaces] (label);;
518 This tells fluxbox to insert a link to the workspaces menu directly
519 into your menu. This is handy for those users who can't access the
520 workspace menu directly (e.g. if you don't have a 3 button mouse, it
521 is rather hard to middle click to show the workspace menu).
522
523Any line that starts with a '#' or '!' is considered a comment and ignored by
524fluxbox. Also, in the label/command/filename fields you can escape any character.
525Using '\' inserts a literal back-slash into the label/command/filename field.
526
527------------------------------------------------------------------
528# fluxbox menu file
529[begin] (fluxbox)
530 [exec] (rxvt) {rxvt -ls} </usr/X11R6/share/icons/terminal.xpm>
531 [exec] (netscape) {netscape -install}
532 [exec] (The GIMP) {gimp}
533 [exec] (XV) {xv}
534 [exec] (Vim) {rxvt -geometry 132x60 -name VIM -e screen vim}
535 [exec] (Mutt) {rxvt -name mutt -e mutt}
536 [submenu] (mozilla)
537 [exec] (browser) {mozilla -browser}
538 [exec] (news) {mozilla -news}
539 [exec] (mail) {mozilla -mail}
540 [exec] (edit) {mozilla -edit}
541 [exec] (compose) {mozilla -compose}
542 [end]
543 [submenu] (Window Manager)
544 [exec] (Edit Menus) {nedit ~/.fluxbox/menu}
545 [submenu] (Style) {Which Style?}
546 [stylesdir] (~/.fluxbox/styles)
547 [stylesmenu] (fluxbox Styles) {@pkgdatadir@/styles}
548 [end]
549 [config] (Config Options)
550 [reconfig] (Reconfigure)
551 [restart] (Restart)
552 [end]
553 [exit] (Log Out)
554[end]
555------------------------------------------------------------------
556
557TOOLBAR
558-------
559The toolbar is a small area to display information by fluxbox like a clock,
560the identifier for the workspaces, a systemtray or a taskbar (iconbar)
561that can contain the running programs. The color, look, font etc. is
562defined in the the style and can't be defined as a global setting.
563
564The parts of the Toolbar can be enabled/disabled in the Init-File with the
565arguments given to the line:
566
567 session.screen0.toolbar.tools
568
569The order and the count of the Tools is freely selectable and has to be
570seperated by a ",". E.g.:
571
572 session.screen0.toolbar.tools: workspacename, systemtray, iconbar, clock
573
574The possible parts (Tools) of the Toolbar are:
575
576- *Clock*:
577 This will show an area to display a clock and the date according to the
578 format specification listed in "man strtftime"
579
580- *Iconbar*:
581 This is the area that contains all windows (all running applications, all
582 minimized windows or maybe no window, all depending on the Toolbar Settings).
583
584- *Systemtray*:
585 The Systemtray can hold Applications that are made to sit in it.
586
587- *WorkspaceName*:
588 This displays the name of the actual name of the Workspace.
589
590- *PrevWorkspace*:
591 This displays an arrow that allows to switch to the next Workspace left of
592 the actual. Same as MouseWheelDown with "Desktop MouseWheel Switching"
593 enabled.
594
595- *NextWorkspace*:
596 This displays an arrow that allows to switch to the next Workspace right
597 of the actual. Same as MouseWheelUp with "Desktop MouseWheel Switching"
598 enabled.
599
600- *PrevWindow*:
601 This displays an arrow that allows to gain focus of the previous visible
602 window on the actual workspace.
603
604- *NextWindow*:
605 This displays an arrow that allows to gain focus of the next visible
606 window on the actual workspace.
607
608
609The Toolbar can be configured in two ways. Either through the Configure-Menu
610for the Toolbar, which is accessable in the Configuration Part of the
611Root-Menu or with a right-click on the Workspace Name/Arrows/Clock in the
612Toolbar, or by editing the Init-File by hand (Check the RESOURCES section for
613more information about that).
614
615
616Configuration via the Toolbar Menu
617~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
618All Changes work on the fly and you can notice them immediately, except for a
619change of the "Toolbar Alpha", that needs a restart to make the change
620visible:
621
622- *Visible*:
623 Sets the toolbar either to visible or invisible (Well, this should be
624 obvious).
625
626 session.screen0.toolbar.visible: <boolean>
627
628- *Auto hide*:
629 If this is enabled the toolbar will disappear after a defined time when
630 the mouse-pointer leaves the area of the toolbar. It will slide in when
631 the cursor hits the remaining edge of the toolbar. The delay-time can be
632 set in init.
633
634 session.screen0.toolbar.autoHide: <boolean>
635 session.autoRaiseDelay: <int>
636
637- *Toolbar width percentage*:
638 Sets the width of the toolbar in percent. Use the left mouse button to
639 decrease and the right mouse-button to increase the value. The value can
640 be from 0-100.
641
642 session.screen0.toolbar.widthPercent: <int>
643
644- *Maximize Over*:
645 Enabling this option will prevent windows from maximizing over the
646 toolbar. With this switched on they will only dock to the edge of the bar.
647 To use this option, "Full Maximazition" from the fluxbox Configuration
648 menu has to be DISABLED. Otherwise this option will not work.
649
650 session.screen0.toolbar.maxOver: <boolean>
651 session.screen0.fullMaximization: <boolean>
652
653- *Layer...*:
654 This sets the layer on which the toolbar is set. With this you can set the
655 toolbar to "Always on top".
656
657 session.screen0.toolbar.layer: <layer>
658
659- *Placement*:
660 Sets the toolbar to either the top or the bottom edge of the screen with a
661 left, right or center alignment
662
663 session.screen0.toolbar.placement: <direction>
664
665- *Alpha*:
666 This sets the alpa value for the toolbar. Use the left mouse-button to
667 decrease and the right mouse-button to increase the value. 0 is invisible,
668 255 is not transparent at all.
669
670 session.screen0.toolbar.alpha: <int>
671
672- *Iconbar Mode*:
673
674 Specifies the mode of the iconbar:
675
676 - *None*:
677 will show not a single window
678 - *Icons*:
679 will only show the windows of all workspaces that are minimzed
680 (iconified)
681 - *NoIcons*:
682 will only show the windows of all workspaces that are not minimzed
683 (iconified)
684 - *WorkspaceIcons*:
685 will only show the windows of the current workspace that are
686 minimzed (iconified)
687 - *WorkspaceNoIcons*:
688 will only show the windows of the current workspace that are not
689 minimzed (iconified)
690 - *Workspace*:
691 will show all windows of the current workspace
692 - *All Windows*:
693 will show all windows of all workspaces
694
695 session.screen0.iconbar.mode: <mode>
696
697- *Alignment*:
698
699 - *Left*:
700 all Icons/Windows will be left aligned according to the width set in
701 init
702 - *Relative*:
703 all Icons/Windows will be averaged so that the iconbar will always be
704 completely filled
705 - *Right*:
706 all Icons/Windows will be left aligned according to the width set in
707 init
708
709 session.screen0.iconbar.alignment: <alignment>
710 session.screen0.iconbar.iconWidth: <int>
711
712
713- *Show Pictures*:
714 If enabled the iconbar will show the Application's Icon (if it is
715 available)
716
717 session.screen0.iconbar.usePixmap: <boolean>
718
719- *Clock*:
720 Lets you switch between the 00:00am - 12:00pm and 00:00-24:00 notation
721
722- *Edit Clock Format*:
723 clicking this entry will pop up a little window in which the clock format
724 according to 'man strftime' can be set.
725
726 session.screen0.strftimeFormat: <format>
727
728
729RESOURCES
730---------
731Usually the ~/.fluxbox/init resource file is created and maintained by fluxbox
732itself. You can use the [config] menu to set most of these options. However,
733we'll cover all of the resource options that are available to the user.
734If you edit this file while fluxbox is running, you must `restart' as to
735reload the resource options.
736
737When running fluxbox in a multiple desktop environment the screen0 key can
738also be screen1, screenN etc. You can customize the behaviour of fluxbox on
739each desktop accordingly. Here is an example, and a favourite of the fluxbox
740documentation manager:
741
742.................................................
743session.screen0.toolbar.onTop: False
744session.screen0.toolbar.autoHide: True
745session.screen0.toolbar.placement: BottomCenter
746session.screen0.toolbar.widthPercent: 42
747session.screen0.slit.onTop: False
748session.screen0.slit.autoHide: True
749session.screen0.slit.placement: TopLeft
750session.screen0.slit.direction: Vertical
751session.screen0.strftimeFormat: %I:%M %p
752session.screen1.toolbar.onTop: True
753session.screen1.slit.autoHide: False
754session.screen1.slit.placement: CenterRight
755session.screen1.slit.direction: Vertical
756session.screen1.strftimeFormat: %a %d %R [%s]
757.................................................
758
759Here are the resources that are currently available:
760
761....................................................................................
762session.screen0.window.focus.alpha: <integer>
763session.screen0.window.unfocus.alpha: <integer>
764 These resources are available to the user to set different lev-
765 els of transparency for different components of fluxbox. Each
766 one accepts a value between 0-255, 255 being opaque and 0 being
767 completely transparent. Default: 255
768
769session.screen0.slit.autoHide: <boolean>
770session.screen0.toolbar.autoHide: <boolean>
771 The autoHide resources allow the user to set the behaviour of
772 the toolbar and slit. This behaviour can be that they disappear
773 when they are not being used actively by the user, or they
774 remain visible at all times. Default: <boolean>
775
776session.screen0.desktopwheeling: <boolean>
777session.screen0.toolbar.wheeling: <boolean>
778 These set the ability to utilize the users mouse scroll wheel.
779 Setting these values to `<boolean>' allows the user to essentially
780 scroll through workspaces or applications on the toolbar.
781 Default: <boolean>
782
783session.screen0.slit.layer: <layer>
784session.screen0.toolbar.layer: <layer>
785 With these two resources, you can set the layer you want the
786 toolbar and the slit to appear on. Please read the LAYER sec-
787 tion for more information. Default: Desktop
788
789session.screen0.slit.onTop: <boolean>
790session.screen0.toolbar.onTop: <boolean>
791 A user can set whether or not the toolbar or slit are always on
792 top of the screen. Setting these resources will put the slit
793 and toolbar above everything visible in the window. Default:
794 False
795
796session.screen0.slit.placement: <placement>
797session.screen0.toolbar.placement: <placement>
798 These allow a user to place the slit and toolbar where ever they
799 like. Possible options are:
800 - BottomCenter
801 - BottomLeft
802 - BottomRight
803 - LeftCenter
804 - RightCenter
805 - TopCenter
806 - TopLeft
807 - TopRight
808
809session.screen0.slit.maxOver: <boolean>
810session.screen0.toolbar.maxOver: <boolean>
811 Setting these to `<boolean>' will allow application windows to maximize
812 over the complete screen. Setting to `<boolean>' allows the slit and
813 toolbar to hold their territory and will always be visible when an
814 application is maximized. Default: <boolean>
815
816session.screen0.toolbar.height: <integer>
817 Set the height of the toolbar. Default: 0
818 If the value is set to 0, the style file will gain control over the
819 toolbar height. It is possible to set a fixed height by changing it in
820 the init to something >0.
821
822session.screen0.toolbar.visible: <boolean>
823 The user can set whether they want to have a toolbar on screen at
824 all. Setting to `<boolean>' removes the toolbar from the screen. This
825 ultimately depends on whether or not the toolbar was compiled into
826 the fluxbox build. The default is that the toolbar will be visible.
827 Default: <boolean>
828
829session.screen0.toolbar.widthPercent: <integer>
830 This resource sets the width of the toolbar on the screen to
831 integer. Default: 100
832
833session.screen0.toolbar.tools: <tools>
834 This resource specifies the tools plugged into the toolbar. Read
835 the TOOLBAR section in this manual for a description of each of
836 these. Possible tools::
837 - clock
838 - iconbar
839 - nextwindow
840 - prevwindow
841 - nextworkspace
842 - prevworkspace
843 - systemtray
844 - workspacename
845
846session.screen0.slit.onhead: <integer>
847session.screen0.toolbar.onhead: <integer>
848 For those that have dual head systems, users can set this value
849 to the number of the screen where they would like to see the
850 slit and toolbar. Default: 0
851
852session.screen0.iconbar.iconWidth: 70
853session.screen0.iconbar.mode: <mode>
854 This value is set in the Iconbar Mode menu. The available
855 options are::
856 - All Windows
857 - Icons
858 - None
859 - Workspace
860 - WorkspaceIcons
861
862session.screen0.iconbar.usePixmap: <boolean>
863 This is also set in the Iconbar Mode menu. When set to `<boolean>'
864 this will show the native icon of applications. Default: <boolean>
865
866session.screen0.iconbar.iconTextPadding: 10l
867session.screen0.iconbar.deiconifyMode: Current
868session.screen0.iconbar.wheelMode: Screen
869session.screen0.iconbar.alignment: <position>
870 This value should be changed in the Iconbar Mode menu. Default:
871 Relative
872
873 Available options:
874 - Left: Fixed width, aligned left
875 - Relative
876 - Right: Fixed width, aligned right
877
878session.screen0.iconbar.clientWidth: <integer>
879 Used to specify the iconbar button width for Left/Right align-
880 ment. Default: 0
881
882session.screen0.overlay.lineWidth: 1
883session.screen0.overlay.lineStyle: LineSolid
884session.screen0.overlay.joinStyle: JoinMiter
885session.screen0.overlay.capStyle: CapNotLast
886session.screen0.slit.direction: Vertical
887session.screen0.strftimeFormat: <date>
888 This adjusts the way the current time is displayed in the tool-
889 bar. The strftime(3) format is used. Default: %I:%M %p
890
891session.screen0.tab.alignment: Left
892session.screen0.tab.height: 16
893session.screen0.tab.placement: Top
894session.screen0.tab.rotatevertical: True
895session.screen0.tab.width: 64
896session.screen0.followModel: Ignore
897session.screen0.rowPlacementDirection: LeftToRight
898session.screen0.colPlacementDirection: TopToBottom
899session.screen0.resizeMode: Bottom
900session.screen0.focusModel: ClickToFocus
901session.screen0.autoRaise: <boolean>
902session.screen0.clickRaises: <boolean>
903session.screen0.workspacewarping: <boolean>
904session.screen0.showwindowposition: <boolean>
905 Setting this resource to `<boolean>' shows the user, in a little window,
906 the exact position of the application window while the user is
907 dragging it. Allows a precise placement of windows on a screen.
908 Default: <boolean>
909
910session.screen0.decorateTransient: <boolean>
911session.screen0.showposinsidewindow: <boolean>
912session.screen0.menuMode: Delay
913session.screen0.focusNewWindows: <boolean>
914session.screen0.workspaceNames: workspace1, workspaceN
915 Here is where the user can name their workspaces. However it is
916 recommended to use the tool available in the Configuration Menu to
917 set these. Default: one, two, three, four
918
919session.screen0.menuDelayClose: 0
920 This value sets the delay (in milli-sec) that you would like the
921 menu to remain visible after you've clicked out of it. Default: 0
922
923session.screen0.edgeSnapThreshold: <integer>
924 When moving a window across your screen, fluxbox is able to have it
925 `snap' to the edges of the screen for easy placement. This variable
926 tells fluxbox the distance (in pixels) at which the window will jump
927 to the edge. Default: 0
928
929session.screen0.windowPlacement: RowSmartPlacement
930
931session.screen0.fullMaximization: <boolean>
932session.screen0.sloppywindowgrouping: <boolean>
933session.screen0.rootCommand: <command>
934 This overrides the styles rootCommand. When this value is set, it
935 will keep your background the same, regardless of what any style
936 would like your background to be. NOTE: Setting this command can be
937 dangerous. Please make sure you know what you are doing when setting
938 this resource to a value other than a desktop wallpaper command.
939
940session.screen0.imageDither: <boolean>
941session.screen0.opaqueMove: <boolean>
942 Sets the visibility level of application windows while being
943 dragged. Default: <boolean>
944
945session.screen0.menuDelay: <msec>
946session.screen0.workspaces: <integer>
947 Set this to the number of workspaces the users wants. Default: 4
948
949session.screen0.focusLastWindow: <boolean>
950session.screen0.windowMenu:
951
952session.appsFile: <location>
953session.groupFile: <location>
954session.keyFile: <location>
955session.menuFile: <location>
956session.slitlistFile: <location>
957session.styleFile: <location>
958 All of these resources require a pathname to their specific
959 requests.This is where you can specify different files. Most of
960 the defaults will be located in the users ~/.fluxbox directory.
961
962session.autoRaiseDelay: <integer>
963 Adjusts the delay (in milli-sec) before focused windows will raise
964 when using the Autoraise option. Default: 250
965
966session.cacheLife: <integer>
967 This tells fluxbox how long (in minutes) unused pixmaps may stay in
968 the X server's memory. Default: 5
969
970session.cacheMax: <integer>
971 This tells fluxbox how much memory (in Kb) it may use to store
972 cached pixmaps on the X server. If your machine runs short of
973 memory, you may lower this value. Default: 200
974
975session.colorsPerChannel: <integer>
976 This tells fluxbox how many colors to take from the X server on
977 pseudo-color displays. A channel would be red, green, or blue.
978 fluxbox will allocate this variable ^ 3 and make them always
979 available. Value must be between 2-6. When you run fluxbox on an
980 8bpp display, you must set this resource to 4. Default: 4
981
982session.doubleClickInterval: <integer>
983 Adjust the delay (in milli-sec) between mouse clicks for fluxbox
984 to consider a double click. Default: 250
985
986session.forcePseudoTransparency: <boolean>
987session.focusTabMinWidth: 0
988session.iconbar: <boolean>
989 Set this value to `<boolean>' or `<boolean>' to enable or disable fluxbox
990 using the toolbar to display iconified windows. Default: <boolean>
991
992session.ignoreBorder: <boolean>
993session.imageDither: <boolean>
994 Set `<boolean>' or `<boolean>', respectively, to enable or disable dithering
995 of images. Only necessary on systems with small colour depths (8bpp
996 or less). Default: <boolean>
997
998session.numLayers: 13
999session.opaqueMove: <boolean>
1000 When moving a window, setting this to `<boolean>' will draw the window
1001 contents as it moves (this is nasty on slow systems). If `<boolean>' it
1002 will only draw an outline of the window border. Default: <boolean>
1003
1004session.tabs: <boolean>
1005session.tabPadding: 0
1006session.tabsAttachArea: Window
1007session.titlebar.left: Stick
1008session.titlebar.right: Minimize Maximize Close
1009session.updateDelayTime: 0
1010session.useMod1: <boolean>
1011....................................................................................
1012
1013
1014KEYS
1015----
1016You can customize fluxbox's key handling through the ~/.fluxbox/keys file. The
1017file takes the format of:
1018
1019 <modifier> <key> :[...] <operation>
1020
1021In the example below, Mod1 is the 'ALT' key on the PC keyboard and Mod4 is one
1022of the three extra keys on a pc104 branded with a familiar company logo.
1023Lines beginning with a '#' or '!' are considered comments and unread by fluxbox.
1024
1025............................
1026# fluxbox keys file.
1027Mod1 Tab :NextWindow
1028Mod1 Shift Tab :PrevWindow
1029Mod1 F1 :Workspace 1
1030Mod1 F2 :Workspace 2
1031Mod1 F3 :Workspace 3
1032Mod1 F4 :Workspace 4
1033Mod1 F5 :Workspace 5
1034Mod1 F6 :Workspace 6
1035Mod1 F7 :Workspace 7
1036Mod1 F8 :Workspace 8
1037Mod1 F9 :Workspace 9
1038Mod4 b :PrevWorkspace
1039Mod4 c :Minimize
1040Mod4 r :ExecCommand rxvt
1041Mod4 v :NextWorkspace
1042Mod4 x :Close
1043Mod4 m :RootMenu
1044Control n Mod1 n :NextTab
1045............................
1046
1047As you can see from the last line, keybindings can be chained in a fashion
1048similar to Emacs keybindings.
1049
1050Some things to know:
1051- Commands are case-insensitive.
1052- Workspace numbering starts at "1".
1053- Some commands have synonyms.
1054- The space between the last key and the :Command is mandatory.
1055
1056Here are fluxbox key commands to use:
1057
1058Window Manager Commands
1059~~~~~~~~~~~~~~~~~~~~~~~
1060- Restart <argument>
1061- Quit
1062- Reconfigure
1063- SetStyle <argument>
1064- ExecCommand <argument>
1065
1066Currently Focused Window Commands
1067~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1068- Minimize
1069- MinimizeWindow
1070- Iconify
1071- Maximize
1072- MaximizeWindow
1073- MaximizeHorizontal
1074- MaximizeVertical
1075- ResizeTo <width> <height>
1076- Resize <delta-width> <delta-height>
1077- ResizeHorizontal <delta-width>
1078- ResizeVertical <delta-height>
1079- MoveTo <x> <y>
1080- Move <delta-x> <delta-y>
1081- MoveRight <delta-x>
1082- MoveLeft <delta-x>
1083- MoveUp <delta-y>
1084- MoveDown <delta-y>
1085- Raise
1086- Lower
1087- Close
1088- Shade
1089- ShadeWindow
1090- Stick
1091- StickWindow
1092- ToggleDecor
1093- SendToWorkspace <number>
1094- SentToWorkspace <number>
1095- KillWindow
1096- NextTab
1097- PrevTab
1098- MoveTabLeft
1099- MoveTabRight
1100- DetachClient
1101
1102Workspace Commands
1103~~~~~~~~~~~~~~~~~~
1104- NextWorkspace
1105- PrevWorkspace
1106- RightWorkspace <by-number>
1107- LeftWorkspace <by-number>
1108- Workspace <number>
1109- NextWindow <bitmask>
1110- PrevWindow <bitmask>
1111- NextGroup <by-number>
1112- PrevGroup <by-number>
1113- ArrangeWindows
1114- ShowDesktop (Iconifies all windows)
1115- RootMenu
1116- WorkspaceMenu
1117- WindowMenu
1118- SetWorkspaceName <name>
1119
1120Special Commands
1121~~~~~~~~~~~~~~~~
1122- MacroCmd
1123- ReloadStyle
1124- SetResourceValue <resourcename> <resource> value
1125- BindKey <key><value>: <action>
1126
1127Couple of things
1128~~~~~~~~~~~~~~~~
1129- SentToWorkspace:
1130 Will send you along with the window to the selected workspace.
1131 SendToWorkspace just sends the window.
1132
1133- PrevWindow/NextWindow parameters take an integer:
1134 0 or unspecified = Default/current behavior - no skipping
1135 1 = Skip lower tabs
1136 2 = Skip stuck windows
1137 3 = Skip lower tabs/stuck windows
1138 4 = Skip shaded windows
1139 5 = Skip lower tabs/shaded windows
1140 6 = Skip stuck windows/shaded windows
1141 7 = Skip lower tabs/stuck windows/shaded windows
1142
1143- Bindkey will append key string and action to your keys file and bind the key.
1144
1145- The 'delta' value means the difference between the current setting and the
1146requested setting. So if you have a window that is 100 pixels wide, you could
1147set
1148
1149...........................
1150Mod1 r :ResizeHorizontal 10
1151............................
1152
1153and when you use that key it would increase the size of your window
1154to 110 pixels. If you had used
1155
1156.............................
1157Mod1 R :ResizeHorizontal -10
1158.............................
1159
1160then it would have decreased the size by 10, setting it to 90 pixels.
1161
1162- Resize commands do not necessarily change the number of pixels. For
1163 instance, many terminals will use the size of a character as the resize
1164 unit. Most applications, however, use pixels.
1165
1166- MacroCmd:
1167
1168......................................
1169Mod1 r MacroCmd: {command1} {command2}
1170......................................
1171
1172 allows you to execute more than one command with one keybinding. The commands
1173 will be executed in serial.
1174
1175LAYERS
1176------
1177Layers affect the way that windows will overlap each other on the screen.
1178Windows on a higher layer will always appear above those on a lower one,
1179whether they are focused or not. By default, fluxbox uses 13 layers,
1180starting from 1 (highest). The number of layers can be changed by
1181using the following resource:
1182
1183 session.numLayers: <integer>
1184
1185There are two ways to assign a window to a different layer. When the window is
1186open, you may select the layer in the `Layer ...' submenu of the window menu.
1187The menu gives six choices for the layer, which fluxbox manages by name. The
1188names are (from highest to lowest layer):
1189
1190* 2 - Above Dock
1191* 4 - Dock
1192* 6 - Top
1193* 8 - Normal
1194* 10 - Bottom
1195* 12 - Desktop
1196
1197The other way to set the layer for a window is through the `apps' file. This
1198method is described in the APPLICATIONS section.
1199
1200
1201FOCUS MODEL
1202-----------
1203The Focus Model defines how windows gain focus (i.e. become the active window,
1204which receives keyboard and mouse events). The focus model can be changed in
1205the configuration menu (usually located under 'fluxbox menu' in the Root Menu.
1206
1207There are two main aspects of the focus model: how windows gain focus and how
1208tabs gain focus. Each of these has two options: focus follows mouse and click
1209to focus. Focus follows mouse means that windows will gain focus when the mouse
1210hovers over them. Click to focus means that windows will gain focus when the
1211mouse clicks on them.
1212
1213Thus, there are four main options when choosing a focus model. You should choose
1214one of the first two and one of the last two. They are:
1215
1216- *Click To Focus*:
1217 click to focus windows
1218- *Mouse Focus*:
1219 window focus follows mouse
1220- *ClickTabFocus*:
1221 click to focus tabs
1222- *MouseTabFocus*:
1223 tab focus follows mouse
1224
1225There is one more option in the focus model menu. It is called AutoRaise. When
1226AutoRaise is enabled, focused windows will appear on top of other windows in
1227the same layer. When AutoRaise is disabled, you must explicitly raise a focused
1228window, using the window menu or keybinding.
1229
1230STYLES
1231------
1232fluxbox enables you to use specialized files that contain X(1) resources to
1233specify colors, textures, pixmaps and fonts, and thus the overall look of your
1234window borders, menus and the toolbar.
1235
1236The default installation of fluxbox provides some of these style files. See
1237fluxstyle(1) to accomodate the growing number of style components.
1238
1239APPLICATIONS
1240------------
1241It is possible to force an application to always have the same dimensions,
1242position, and other settings when it is first launched. This is done using
1243either the window-menu `Remember...' submenu, or by directly using the
1244~/.fluxbox/apps file. Be careful to edit the apps file manually only when
1245fluxbox is not running. Otherwise your changes will be overwritten. Following
1246is a listing of the valid entries for the `apps' file. The `Remember...'
1247submenu has entries for most options that stores the current state in the `apps'
1248file for loading next time.
1249
1250The format of a line in the `apps' file is:
1251
1252....................................
1253[app] (app-name) {count - optional}
1254 [Property1] {value1}
1255 [Property2] {value2}
1256 ...
1257[end]
1258....................................
1259
1260Each app-name can be a string, or a regular expression. By default the name
1261is matched against a windows WM_CLASS property (the first string in it, called
1262the "instance"). You can match against the title, instance name
1263(default), class name, or role (the WM_WINDOW_ROLE property) by explicitly
1264specifying it. You can also specify multiple matches, which must ALL match
1265for the properties to be applied. If a count is supplied in curly brackets at
1266the end of the app line, then the entry will only match at most count at any
1267time (default is to match all matching windows).
1268
1269...................................................................
1270# match a standard xterm
1271[app] (xterm)
1272# match an xterm started like: xterm -name myshell
1273[app] (myshell)
1274# match any one Firefox window (the instance name is "Gecko")
1275[app] (class=Firefox-bin) {1}
1276# match the gaim buddy list window
1277[app] (role=buddy_list)
1278# match an rdesktop window to a particular host
1279[app] (title=rdesktop - hostname.*)
1280...................................................................
1281
1282The following are the properties that can be defined in each [app] entry.
1283Each name must be enclosed in square brackets, and the value is generally in
1284curly brackets:
1285
1286- [Workspace] \{0-N\}:
1287 Forces the application to open on the workspace specified. Workspaces are
1288 set by number, beginning with 0.
1289
1290- [Dimensions] \{Width Height\}:
1291 Open the application with the specified width and height, in pixels.
1292
1293- [Position] (*refspot*)) {X Y}:
1294 Position the application at a particular spot:
1295 +
1296 * WINCENTER
1297 * CENTER
1298 * UPPERLEFT
1299 * UPPERRIGHT
1300 * LOWERLEFT
1301 * LOWERRIGHT
1302 +
1303
1304 You can optionally specify what X and Y are relative to. By default the
1305 upper left corner is placed at screen coordinates (X, Y). If you specify
1306 LOWERRIGHT, then the lower right corner of the window is positioned (X,Y)
1307 pixels from the lower right of the screen. Note that CENTER puts the top
1308 left corner of the window relative to the center of the screen (WINCENTER
1309 acts like the rest - positions the center of the window relative to the
1310 center of the screen).
1311
1312- [Layer] {Layernum}:
1313 Specify the layer to open the window on (by number). Each layer has a
1314 number. The named ones are: 2-AboveDock, 4-Dock, 6-Top, 8-Normal,
1315 10-Bottom, 12-Desktop.
1316
1317- [Shaded] {yes|no}:
1318 The window is started shaded, or not.
1319
1320- [Tab] {yes|no}:
1321 Whether this window can be tabbed with others.
1322
1323- [IconHidden] {yes|no}:
1324 Hides the app from the icon bar
1325
1326- [FocusHidden] {yes|no}:
1327 Hides the app from the window cycling list used Next/PrevWindow key
1328 bindings.
1329
1330- [Hidden] {yes|no}:
1331 is both [IconHidden] plus [FocusHidden]
1332
1333- [Deco] {NONE|NORMAL|TOOL|TINY|BORDER}:
1334 Specify the decoration state. There are several predefined dec-
1335 oration sets:
1336
1337 o NORMAL - standard decorations
1338 o NONE - no decorations
1339 o BORDER - like NONE except keep the X window border
1340 o TINY - titlebar with an iconify button
1341 o TOOL - titlebar only
1342
1343 A bitmask can also be used for fine-grained control. The bits are (from
1344 "1" to 1<<10): titlebar, handle/grips, border, iconify button, maximize
1345 button, close button, menu enabled, sticky button, shade button, tabbing
1346 enabled, focus enabled.
1347
1348- [Sticky] {yes|no}:
1349 Whether the window is initially stuck or not.
1350
1351- [Jump] {yes|no}:
1352 Jump to workspace. This one is only useful if `Workspace' is set too. The
1353 workspace is changed to the workspace containing the application being
1354 launched.
1355
1356- [Close] {yes|no}:
1357 Save settings on close. By default, application settings are not saved
1358 when a window is closed. Set this option if you want previous settings to
1359 be saved when the window is closed.
1360
1361The apps file also allows you to specify applications that should be started
1362on fluxbox startup using [startup] (options) {application} lines. Options
1363could be used to specify the screen, not the workspace, on which the
1364application should be started. Startup is not yet setable by menu.
1365
1366Finally, you can set windows to group together by using the `apps' file. This
1367is achieved with either regular expressions using:
1368
1369 [app] (property=expr) ... {number}
1370
1371Property can be one of the following tags:
1372
1373o name - the name of the window (the first field of WM_CLASS)
1374o class - class of the window (the second field of WM_CLASS)
1375o title - title of the window ( WM_NAME property)
1376o role - role of the window (the WM_WINDOW_ROLE property)
1377
1378If no `property' is specified, the name property is assumed. You can find out
1379the value for these fields for a particular window by running xprop(1).
1380
1381You can also place [group] tag around several [app] tags, with an [end] tag to
1382indicate the end of the group. You can also specify dimensions, positions,
1383etc. for the group as for normal app entries. Here is a short example
1384of an `apps' file:
1385
1386.........................................................
1387 [startup] {xterm}
1388 # match anything ending with term, up to 2 instances
1389 [app] (.*[tT]erm) {2}
1390 # match anything with `gaim' in the title
1391 [app] (title=.*gaim.*)
1392 [app] (kate)
1393 [Dimensions] (WINCENTER) {1022 747}
1394 [Position] {0 0}
1395 [Close] {yes}
1396 [end]
1397 [app] (konqueror)
1398 [Workspace] {1}
1399 [Dimensions] {1006 749}
1400 [Position] {16 0}
1401 [Jump] {yes}
1402 [end]
1403 # start all aterms without decorations
1404 [app] (aterm)
1405 [Deco] {NONE}
1406 [end]
1407 # a group with all windows called "special-term",
1408 # appears on layer 4 (bottom)
1409 [group]
1410 [app] (special-term)
1411 [Layer] {4}
1412 [end]
1413.........................................................
1414
1415Parameters in the `apps' file are case-sensitive. Application names are taken
1416from the first X window WM_CLASS attribute by default (WM_NAME = title,
1417WM_WINDOW_ROLE = role). You can see this attribute by using the xprop
1418command. Transient windows are not affected by application settings. Take care
1419when using regular expressions. If you are not familiar with regular
1420expressions you can disable this feature by specifying --disable-regexp during
1421configure. Plain strings will then be matched.
1422
1423GROUPS
1424------
1425Since version 0.1.11, fluxbox has a feature called autogrouping, that is apps
1426are automatically grouped together if they are in the same group. NOTE: that
1427this feature is deprecated since version 0.9.1 in favor of grouping using the
1428`apps' file, since it is much more powerful.
1429
1430You can create groups simply by editing the ~/.fluxbox/groups file. This file
1431takes the format of:
1432
1433 <app1> <app2> <app3> <...> <appN>
1434
1435where elements can be found with this command:
1436
1437..................
1438$> xprop WM_CLASS
1439..................
1440
1441Just type this command into a terminal and use the mouse to click on the
1442desired app and it will tell you what to write as an element (use the first of
1443the two names returned). Each line forms a different group, e.g.:
1444
1445................
1446Navigator nedit
1447xterm
1448................
1449
1450This will create two groups, one with netscape and nedit, and one with xterm.
1451The new window will only group itself to other windows on the same workspace
1452and to the last window that was focused.
1453
1454THE SLIT
1455--------
1456The slit is a special fluxbox window frame that can contain dockable
1457applicatioins, e.g. 'bbtools' or 'wmapps'.
1458
1459When applications are run in the slit they have no window borders of their
1460own; instead they are framed in the slit, and they are always visible in the
1461current workspace.
1462
1463You can click button 3 on the edge of the slit window to get a menu to
1464determine its position, whether its contained applications should be grouped
1465horizontally or vertically and whether the slit should hide itself when the
1466mouse moves away.
1467
1468Most dockable applications use the -w option to run in the slit. For example,
1469you could put in your ~/.xinitrc:
1470
1471..............
1472bbmail -w &
1473bbpager -w &
1474wmdrawer &
1475exec fluxbox
1476..............
1477
1478NOTE:
1479You can also put all of these in the startfluxbox(8) script. This way you
1480would only need to specify: exec startfluxbox in your ~/.xinitrc.
1481
1482To use the slit you must have it compiled into fluxbox, this is the default
1483action.
1484
1485Slitlist File
1486-------------
1487fluxbox's slitlist file is available for those that use dockapps in the slit.
1488This file helps fluxbox keep track of the *order* of the dockapps that you want
1489started. The file is generally located in ~/.fluxbox/slitlist
1490
1491A simple procedure for getting the slit sequences the way you like it is:
14921. Run fluxbox with no pre-loaded dockapps
14932. Run dockapps individually in the order you want them
14943. Add dockapps to your auto-run script, or better yet your
1495 startfluxbox(8) script.
1496
1497This sequence will be saved by default to ~/.fluxbox/slitlist and will be
1498maintained in future versions of fluxbox.
1499
1500Users are free to manually edit the slitlist file. It is a simple list of
1501window names, one per dockapp. Similar to the init file it should not be
1502edited while fluxbox is running. Otherwise changes may get overwritten.
1503
1504The user also has the option of choosing a different path for the slit list
1505file. The following is the init file component that needs changed:
1506
1507 session.session0.slitlistFile: <filename>
1508
1509ENVIRONMENT
1510-----------
1511HOME::
1512 fluxbox uses HOME to find it's .fluxbox/init file, and to resolve style
1513 file and -directory names.
1514
1515DISPLAY::
1516 When no other display was given on the command line, fluxbox will start on
1517 the display specified by this variable.
1518
1519fluxbox can also take advantage of other environment variables if they are set
1520before fluxbox is started. For example, if $XTERM is set, then fluxbox will
1521allow $XTERM to be used in keys and menu files. So one can do:
1522
1523...........................
1524Mod1 x ExecCommand :$XTERM
1525...........................
1526
1527The way of using this in a clever way are endless.
1528
1529SIGNALS
1530-------
1531fluxbox has the following signals and upon receipt of:
1532
1533- SIGHUP fluxbox loads the configuration.
1534- SIGUSR1 Forces reloading of configuration.
1535- SIGUSR2 Forces reloading of menu file.
1536
1537AUTHOR and CREDITS
1538------------------
1539fluxbox is written and maintained by Henrik Kinnunen <fluxgen at fluxbox org>,
1540Simon Bowden <rathnor at fluxbox org> and Mathias Gumz <akira at fluxbox org>.
1541with contributions and patches merged from many individuals around the world.
1542
1543Blackbox was written and maintained by Brad Hughes <blackbox at alug org> and
1544Jeff Raven <jraven at psu edu>.
1545
1546The Official fluxbox website: http://www.fluxbox.org
1547
1548Many compatible themes:
1549- http://boxwhore.org
1550- http://themes.freshmeat.net/
1551
1552This manpage is the combined work of:
1553
1554- Curt Micol <asenchi at asenchi com> (>fluxbox-0.9.11)
1555
1556- Tobias Klausmann <klausman at users sourceforge net> (<=fluxbox-0.9.11)
1557- Grupert <grubert at users sourceforge net> (fluxbox)
1558
1559- Matthew Hawkins <matt at mh dropbear id au> (blackbox)
1560- Wilbert Berendsen <wbsoft at xs4all nl> (blackbox)
1561
1562- Numerous other languages could be available if someone jumps in.
1563
1564BUGS
1565----
1566If you find any bugs, please visit the #fluxbox irc channel on
1567irc.freenode.net. Or you may subscribe to one of the mailinglists. More
1568information can be found on the official website.
1569
1570SEE ALSO
1571--------
1572bsetroot(1) fbsetbg(1) fbrun(1) fluxstyle(1)
diff --git a/src/CurrentWindowCmd.cc b/src/CurrentWindowCmd.cc
index 7bc7977..de50c60 100644
--- a/src/CurrentWindowCmd.cc
+++ b/src/CurrentWindowCmd.cc
@@ -53,15 +53,15 @@ void SendToWorkspaceCmd::real_execute() {
53} 53}
54 54
55void SendToNextWorkspaceCmd::real_execute() { 55void SendToNextWorkspaceCmd::real_execute() {
56 const int ws_nr = 56 const int ws_nr =
57 ( fbwindow().screen().currentWorkspaceID() + m_workspace_num ) % 57 ( fbwindow().screen().currentWorkspaceID() + m_workspace_num ) %
58 fbwindow().screen().numberOfWorkspaces(); 58 fbwindow().screen().numberOfWorkspaces();
59 fbwindow().screen().sendToWorkspace(ws_nr, &fbwindow(), false); 59 fbwindow().screen().sendToWorkspace(ws_nr, &fbwindow(), false);
60} 60}
61 61
62void SendToPrevWorkspaceCmd::real_execute() { 62void SendToPrevWorkspaceCmd::real_execute() {
63 int ws_nr = fbwindow().screen().currentWorkspaceID() - m_workspace_num; 63 int ws_nr = fbwindow().screen().currentWorkspaceID() - m_workspace_num;
64 if ( ws_nr < 0 ) 64 if ( ws_nr < 0 )
65 ws_nr += fbwindow().screen().numberOfWorkspaces(); 65 ws_nr += fbwindow().screen().numberOfWorkspaces();
66 fbwindow().screen().sendToWorkspace(ws_nr, &fbwindow(), false); 66 fbwindow().screen().sendToWorkspace(ws_nr, &fbwindow(), false);
67} 67}
@@ -71,15 +71,15 @@ void TakeToWorkspaceCmd::real_execute() {
71} 71}
72 72
73void TakeToNextWorkspaceCmd::real_execute() { 73void TakeToNextWorkspaceCmd::real_execute() {
74 unsigned int workspace_num= 74 unsigned int workspace_num=
75 ( fbwindow().screen().currentWorkspaceID() + m_workspace_num ) % 75 ( fbwindow().screen().currentWorkspaceID() + m_workspace_num ) %
76 fbwindow().screen().numberOfWorkspaces(); 76 fbwindow().screen().numberOfWorkspaces();
77 fbwindow().screen().sendToWorkspace(workspace_num, &fbwindow()); 77 fbwindow().screen().sendToWorkspace(workspace_num, &fbwindow());
78} 78}
79 79
80void TakeToPrevWorkspaceCmd::real_execute() { 80void TakeToPrevWorkspaceCmd::real_execute() {
81 int workspace_num= fbwindow().screen().currentWorkspaceID() - m_workspace_num; 81 int workspace_num= fbwindow().screen().currentWorkspaceID() - m_workspace_num;
82 if ( workspace_num < 0 ) 82 if ( workspace_num < 0 )
83 workspace_num += fbwindow().screen().numberOfWorkspaces(); 83 workspace_num += fbwindow().screen().numberOfWorkspaces();
84 fbwindow().screen().sendToWorkspace(workspace_num, &fbwindow()); 84 fbwindow().screen().sendToWorkspace(workspace_num, &fbwindow());
85} 85}
@@ -125,12 +125,12 @@ ResizeCmd::ResizeCmd(const int step_size_x, const int step_size_y) :
125 m_step_size_x(step_size_x), m_step_size_y(step_size_y) { } 125 m_step_size_x(step_size_x), m_step_size_y(step_size_y) { }
126 126
127void ResizeCmd::real_execute() { 127void ResizeCmd::real_execute() {
128 128
129 int w = std::max<int>(static_cast<int>(fbwindow().width() + 129 int w = std::max<int>(static_cast<int>(fbwindow().width() +
130 m_step_size_x * fbwindow().winClient().width_inc), 130 m_step_size_x * fbwindow().winClient().width_inc),
131 fbwindow().frame().titlebarHeight() * 2 + 10); 131 fbwindow().frame().titlebarHeight() * 2 + 10);
132 int h = std::max<int>(static_cast<int>(fbwindow().height() + 132 int h = std::max<int>(static_cast<int>(fbwindow().height() +
133 m_step_size_y * fbwindow().winClient().height_inc), 133 m_step_size_y * fbwindow().winClient().height_inc),
134 fbwindow().frame().titlebarHeight() + 10); 134 fbwindow().frame().titlebarHeight() + 10);
135 fbwindow().resize(w, h); 135 fbwindow().resize(w, h);
136} 136}
@@ -143,7 +143,7 @@ void MoveToCmd::real_execute() {
143 int y = 0; 143 int y = 0;
144 144
145 const int head = fbwindow().screen().getHead(fbwindow().fbWindow()); 145 const int head = fbwindow().screen().getHead(fbwindow().fbWindow());
146 146
147 if (m_refc & MoveToCmd::LOWER) 147 if (m_refc & MoveToCmd::LOWER)
148 y = fbwindow().screen().maxBottom(head) - fbwindow().height() - 2 * fbwindow().frame().window().borderWidth() - m_step_size_y; 148 y = fbwindow().screen().maxBottom(head) - fbwindow().height() - 2 * fbwindow().frame().window().borderWidth() - m_step_size_y;
149 if (m_refc & MoveToCmd::UPPER) 149 if (m_refc & MoveToCmd::UPPER)
@@ -157,7 +157,7 @@ void MoveToCmd::real_execute() {
157 x = fbwindow().x(); 157 x = fbwindow().x();
158 if (m_refc & MoveToCmd::IGNORE_Y) 158 if (m_refc & MoveToCmd::IGNORE_Y)
159 y = fbwindow().y(); 159 y = fbwindow().y();
160 160
161 fbwindow().move(x, y); 161 fbwindow().move(x, y);
162} 162}
163 163
diff --git a/src/Workspace.hh b/src/Workspace.hh
index 3415f47..135ac4d 100644
--- a/src/Workspace.hh
+++ b/src/Workspace.hh
@@ -22,8 +22,8 @@
22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23// DEALINGS IN THE SOFTWARE. 23// DEALINGS IN THE SOFTWARE.
24 24
25#ifndef WORKSPACE_HH 25#ifndef WORKSPACE_HH
26#define WORKSPACE_HH 26#define WORKSPACE_HH
27 27
28 28
29 29
@@ -42,7 +42,7 @@ class FluxboxWindow;
42class WinClient; 42class WinClient;
43 43
44/** 44/**
45 Handles a single workspace 45 Handles a single workspace
46*/ 46*/
47class Workspace:private FbTk::NotCopyable, private FbTk::Observer { 47class Workspace:private FbTk::NotCopyable, private FbTk::Observer {
48public: 48public:
@@ -51,7 +51,7 @@ public:
51 Workspace(BScreen &screen, FbTk::MultLayers &layermanager, const std::string &name, 51 Workspace(BScreen &screen, FbTk::MultLayers &layermanager, const std::string &name,
52 unsigned int workspaceid = 0); 52 unsigned int workspaceid = 0);
53 ~Workspace(); 53 ~Workspace();
54 54
55 void setLastFocusedWindow(FluxboxWindow *w); 55 void setLastFocusedWindow(FluxboxWindow *w);
56 56
57 /// Set workspace name 57 /// Set workspace name
@@ -66,19 +66,19 @@ public:
66 void updateClientmenu(); 66 void updateClientmenu();
67 67
68 BScreen &screen() { return m_screen; } 68 BScreen &screen() { return m_screen; }
69 const BScreen &screen() const { return m_screen; } 69 const BScreen &screen() const { return m_screen; }
70 70
71 FluxboxWindow *lastFocusedWindow() { return m_lastfocus; } 71 FluxboxWindow *lastFocusedWindow() { return m_lastfocus; }
72 const FluxboxWindow *lastFocusedWindow() const { return m_lastfocus; } 72 const FluxboxWindow *lastFocusedWindow() const { return m_lastfocus; }
73 73
74 inline FbTk::Menu &menu() { return m_clientmenu; } 74 FbTk::Menu &menu() { return m_clientmenu; }
75 inline const FbTk::Menu &menu() const { return m_clientmenu; } 75 const FbTk::Menu &menu() const { return m_clientmenu; }
76 /// name of this workspace 76 /// name of this workspace
77 inline const std::string &name() const { return m_name; } 77 const std::string &name() const { return m_name; }
78 /** 78 /**
79 @return the number of this workspace, note: obsolete, should be in BScreen 79 @return the number of this workspace, note: obsolete, should be in BScreen
80 */ 80 */
81 inline unsigned int workspaceID() const { return m_id; } 81 unsigned int workspaceID() const { return m_id; }
82 82
83 const Windows &windowList() const { return m_windowlist; } 83 const Windows &windowList() const { return m_windowlist; }
84 Windows &windowList() { return m_windowlist; } 84 Windows &windowList() { return m_windowlist; }
@@ -98,14 +98,14 @@ private:
98 98
99 typedef std::vector<std::string> Group; 99 typedef std::vector<std::string> Group;
100 typedef std::vector<Group> GroupList; 100 typedef std::vector<Group> GroupList;
101 101
102 static GroupList m_groups; ///< handle auto groupings 102 static GroupList m_groups; ///< handle auto groupings
103 103
104 FbTk::MultLayers &m_layermanager; 104 FbTk::MultLayers &m_layermanager;
105 Windows m_windowlist; 105 Windows m_windowlist;
106 106
107 std::string m_name; ///< name of this workspace 107 std::string m_name; ///< name of this workspace
108 unsigned int m_id; ///< id, obsolete, this should be in BScreen 108 unsigned int m_id; ///< id, obsolete, this should be in BScreen
109 109
110}; 110};
111 111