todo-2.6 -- add note for fvwm-menu-desktop (2.6.X release)
[fvwm.git] / modules / FvwmTabs / FvwmTabs.pod
blob6394143b357a971c4b0a8497a32e4c7d308c6e28
1 # Generate this man page with:
3 # pod2man -c "Fvwm Modules" -r "FvwmTabs" FvwmTabs.pod >! FvwmTabs.1
5 # View this man page with:
7 # pod2man -c "Fvwm Modules" -r "FvwmTabs" FvwmTabs.pod | nroff -man | less
9 # Generate a HTML version of the man page with:
11 # pod2html -t "FvwmTabs" FvwmTabs.pod >! FvwmTabs.man.html
14 =head1 NAME
16 B<FvwmTabs> - a generic tabbing module for the fvwm window manager.
18 =head1 SYNOPSIS
20 B<FvwmTabs> is spawned by fvwm, so no command line invocation is possible.
22 =head1 DESCRIPTION
24 The B<FvwmTabs> module is capable of swallowing any fvwm window & treating it as a tab in a I<tab-manager> window. A tab-manager is sometimes called a I<tabber>.
26 Each tab-manager can store any number of windows, each in its own I<tab>. The number of tab-managers is limited only by system resources. Tab-managers can even be nested/swallowed within other tab-managers. (ie. a tab-manager can be added as an individual tab to another tab-manager.)
28 =head1 INVOCATION
30 B<FvwmTabs> can be invoked by inserting the line C<Module FvwmTabs> in your .fvwmrc file. This can be placed on a line by itself, if B<FvwmTabs> is to be spawned during fvwm's initialization, or can be bound to a menu or mouse button or keystroke to invoke it later.
32 =head1 INSTALLING DEPENDENCIES
34 B<FvwmTabs> requires 2 CPAN modules (that are NOT distributed with fvwm) to be installed on your system. They are I<Tk> and I<X11::Protocol>.
36 They are available at: L<http://search.cpan.org/CPAN/authors/id/N/NI/NI-S/Tk-804.027.tar.gz> and L<http://search.cpan.org/~smccam/X11-Protocol-0.56/>.
38 To install either package:
40 tar zxvf $name.tar.gz ; cd $name ; perl Makefile.PL ; make install
42 B<FvwmTabs> will tell you if you do not have these packages installed when you (try to) start it.
44 =head1 CONFIGURATION OPTIONS
46 B<FvwmTabs> reads the same config file as fvwm when it starts up.
48 The following options are recognised by B<FvwmTabs>:
50 =over
52 =item E<42>FvwmTabs: activeFG I<color>
54 The text color of the button for the visible tab. The default color is yellow.
56 =item E<42>FvwmTabs: activeBG I<color>
58 The backgound color of the button for the visible tab. The default color is MidnightBlue.
60 =item E<42>FvwmTabs: inactiveFG I<color>
62 The text color of the buttons for the invisible tabs. The default color is antiquewhite.
64 =item E<42>FvwmTabs: inactiveBG I<color>>
66 The backgound color of the buttons for the invisible tabs. The default color is royalblue.
68 =item E<42>FvwmTabs: titleFG I<color>
70 The text color used in the titlebar. The default color is black.
72 =item E<42>FvwmTabs: titleBG I<color>
74 The background color used in the titlebar. The default color is antiquewhite.
76 =item E<42>FvwmTabs: activeRelief I<style>
78 The relief style to use for active buttons. I<style> can be either I<raised>, I<flat> or I<sunken>. The default style is I<sunken>.
80 =item E<42>FvwmTabs: inactiveRelief I<style>
82 The relief style to use for inactive buttons. I<style> can be either I<raised>, I<flat> or I<sunken>. The default style is I<flat>.
84 =item E<42>FvwmTabs: buttonYPadding I<pixels>
86 How much padding to use around top and bottom of tab buttons. The default value is I<3> pixels.
88 =item E<42>FvwmTabs: pollRate I<ms>
90 Specifies how often to check for X events. I<ms> is time in milliseconds. The default value, I<250>, should be fine for most users. If you are on a very slow machine you may wish to increase this.
92 =item E<42>FvwmTabs: buttonFont I<font>
94 The font to use on the tab buttons. The default font is I<Helvetica -12 bold>.
96 =item E<42>FvwmTabs: titleFont I<font>
98 The font to use on the titlebar. The default font is I<Helvetica -12>.
100 =item E<42>FvwmTabs: menuFont I<font>
102 The font to use on the menus. The default font is I<Helvetica -12>.
104 =item E<42>FvwmTabs: fontSelector I<fontProgram>
106 The external font chooser program to launch when dynamically changing fonts. The default I<fontProgram> is I<gfontsel --print -f "%f">. Anti-gnome users might try I<xfontsel -print -pattern "%f">. If set to I<none>, no font menu options will appear.
108 =item E<42>FvwmTabs: autoSwallowClass I<className> [I<tabManagerId>], ...
110 =item E<42>FvwmTabs: autoSwallowResource I<resourceName> [I<tabManagerId>], ...
112 =item E<42>FvwmTabs: autoSwallowName I<name> [I<tabManagerId>], ...
114 Specify windows to swallow automatically. These are comma-separated lists that specify the class/resource/name of a window & an optional tab-manager id into which the window should be swallowed. By default, the tab-manager id increments from zero - ie. 0 is the first tab-manager created, 1 the second, etc, but it may be overriden by specifying an argument to the I<NewTabber> function. (No whitespace is allowed in tabber ids.) You can alternatively specify 'any' or 'lastFocus' which will put the window in the tab-manager with the least number of tabs or the last focused tab-manager, respectively. If no tab-manager number is specified, an implicit default value of 'any' is used. Note that I<className>/I<resourceName>/I<name> can be a (Perl) regular expression.
116 =item E<42>FvwmTabs: balloonBG I<color>
118 The backgound color of the balloon popups that appear over the tab buttons. The default color is I<#C0C080>.
120 =item E<42>FvwmTabs: balloonFont I<font>
122 The font to use on the balloon popups. The default font is I<Helvetica -12>.
124 =item E<42>FvwmTabs: balloonWait I<ms>
126 How long the mouse cursor must pause (in milliseconds) over a tab button before the balloon pops up. The default value is I<250>.
128 =item E<42>FvwmTabs: balloonMsg I<msg>
130 Message to display in balloon popups. The default value is I<%tabNo:\n%iconText\n%title>.
132 =item E<42>FvwmTabs: autoResize I<bool>
134 I<bool> can be either I<true> or I<false>. If true, windows in the tab-manager automatically resize to the dimensions of the largest window in the tab-manager. The default value is I<false>. If the user performs an explicit resize of a tab-manager window, all windows in the tab-manager are resized to the new window size.
136 =item E<42>FvwmTabs: stateFile I<file>
138 B<FvwmTabs> has the ability to preserve its state (ie. remember the windows it has swallowed as tabs) b/w fvwm restarts. I<file> specifies the name of a temporary file to record the state in, so it can be reconstructed when B<FvwmTabs> restarts. The default file is C<$FVWM_USERDIR/.fvwmtabs.state>.
140 =item E<42>FvwmTabs: fixedSizeTabs I<bool>
142 I<bool> can be either I<true> or I<false>. If true, the tab-manager will ensure each tab-button has the same dimensions. If false, the selected tab is expanded so that it is fully visible. The default value is I<false>.
144 =item E<42>FvwmTabs: showTitlebar I<bool>
146 Show internal titlebar. If set to I<true> a titlebar appears below the row of tab-buttons & displays the title associated with the current window. This titlebar is capable of displaying long or multi-line titles. The default value is I<true>.
148 =item E<42>FvwmTabs: useTMTitlebar I<bool>
150 Add the title associated with the selected tab to the tab-manager titlebar. (ie. the titlebar at the top of the window, distinct from the titlebar below the tab-buttons.) Default value is I<true>.
152 =item E<42>FvwmTabs: dragDropIcon I<imageFile>
154 Specify the icon to display when performing a drag-&-drop operation to reorder the tab-buttons. FvwmTabs will search the ImagePath for this image unless an absolute filename (ie. filename begins with '/') is specified. The default value is I<none>. If I<none> (or an invalid file) is specified a E<42> is used.
156 =item E<42>FvwmTabs: bBuggyFocus I<bool>
158 FvwmTabs tries to work around a limitation in Perl/Tk (there is no way to access the timestamp associated with WM_TAKE_FOCUS events). On some systems this doesn't work and sometimes tab-managers have trouble acquiring the focus. If this happens to you, try setting this option to I<true>. This can lead to focussing race-conditions (tab-managers temporarily "steal" focus in some situations) but this is less annoying than not being able to focus at all.
160 =item E<42>FvwmTabs: enableSwallowDND I<bool>
162 Swallow windows that (are moved to) overlap a tabber.
163 Note: drag-&-drop can be enabled for individual tabbers via the menu.
164 The default value is I<true>.
166 =item E<42>FvwmTabs: swallowDNDTolerance I<tol>
168 Determines how much a window must overlap a tabber
169 for it to be swallowed when drag-&-drop is enabled. If the value has a
170 %-sign appended to it, windows must overlap by the specified percentage
171 of the current size of the tabber. If no %-sign is present, the value
172 is treated in units of pixels.
173 The default value is I<10> (pixels).
175 =item E<42>FvwmTabs: useIconsOnTabs I<bool>
177 Show the mini icon associated with each window on its tab button.
178 Note: mini icons for apps that use EWMH icons look a bit distorted.
179 This is because of the poor image resizing algorithm used in Tk. This
180 should be rectified in the near future.
181 The default value is I<true>.
183 =item E<42>FvwmTabs: killIcon I<image>
185 Image to use on kill toolbar button. Default is I<none>.
187 =item E<42>FvwmTabs: addIcon I<image>
189 Image to use on add toolbar button. Default is I<none>.
191 =item E<42>FvwmTabs: swallowIcon I<image>
193 Image to use on add toolbar button when tabber will swallow next window to popup. Default is I<none>. By using a separate icon to I<addIcon>, this option provides visual feedback on when a tabber will unconditionally swallow the next window to popup.
195 =item E<42>FvwmTabs: releaseIcon I<image>
197 Image to use on release toolbar button. Default is I<none>.
199 =item E<42>FvwmTabs: menuIcon I<image>
201 Image to use on menu toolbar button. Default is I<none>.
203 =back
205 =head1 FVWM FUNCTIONS FOR KEY BINDINGS
207 A number of fvwm functions are available once the B<FvwmTabs> module is started.
209 =over
211 =item NewTabber
213 Create a new tabber. Optional argument is tabber name. No whitespace is allowed in the tabber name. Can also prefix --geometry argument.
215 Example: NewTabber --geometry=+200+400 scottie
217 =item Tabize
219 Add a window (as a tab) to a tabber.
221 =item NextTab
223 Show/select the next tab.
225 =item PrevTab
227 Show/select the previous tab.
229 =item LastTab
231 Show/select the last selected tab (if there was one).
233 =item ReleaseTab
235 Release a tabbed window back to fvwm.
237 =item ReleaseIconifyTab
239 Release a tabbed window back to fvwm & iconify it.
241 =item ReleaseAllTabs
243 Release all windows in a tab-manager back to fvwm.
245 =item ReleaseIconifyAllTabs
247 Release all windows in a tab-manager back to fvwm & iconify them.
249 =item CloseTabber
251 Destroy a tab-manager. All windows in the tab-manager are released back to fvwm.
253 =item AddTab
255 Pick a new window to add to a tab-manager. Selecting this option & clicking on a window will add the selected window to the tab-manager.
257 =item MultiAddTab
259 Pick & add new windows to a tab-manager until ESC is pressed.
261 =item ShowTab I<tabNo>
263 Show/select tab I<tabNo> in the tab-manager. I<tabNo> is zero-based. ie. 0 is the first tab, 1 is the second, etc.
265 =item AddToTabber
267 Add a window (as a tab) to a tab-manager.
269 =item SwapLeft
271 Swap the selected window with the window on its immediate left.
273 =item SwapRight
275 Swap the selected window with the window on its immediate right.
277 =item SelectTabber
279 Select a tab-manager for a new window to be added to.
281 =item EnableDND
283 Swallow windows that (are moved to) overlap a tabber.
285 =back
287 =head1 KEY BINDINGS
289 By default, B<FvwmTabs> reads a default user configuration file F<FvwmTabs-DefaultSetup> which defines several useful key-bindings for B<FvwmTabs>. You can tell B<FvwmTabs> NOT to read this file with C<SetEnv FvwmTabs_NoDefaultSetup> - this environment variable must be set I<before> starting the module.
291 All of the key bindings can be changed using the standard fvwm I<Key> command & making use of the aforementioned fvwm functions. ie.
293 Key (FvwmTabs*) A A CM Function AddTab
295 Then, pressing Ctrl-Alt-a (when the focus is in a tab-manager) will allow you to click on a window to add to the tab-manager.
297 The default key bindings (set in the F<FvwmTabs-DefaultSetup> file) are:
299 =over
301 =item Ctrl-Alt-a
303 AddTab
305 =item Ctrl-Alt-c
307 CloseTabber
309 =item Ctrl-Alt-i
311 ReleaseIconifyTab
313 =item Ctrl-Alt-Shift-I
315 ReleaseIconifyAllTabs
317 =item Ctrl-Alt-l
319 LastTab
321 =item Ctrl-Alt-m
323 MultiAddTab
325 =item Ctrl-Alt-n & Ctrl-Alt-Tab
327 NextTab
329 =item Ctrl-Alt-p
331 PrevTab
333 =item Ctrl-Alt-r
335 ReleaseTab
337 =item Ctrl-Alt-Shift-R
339 ReleaseAllTabs
341 =item Ctrl-Alt-t
343 NewTabber
345 =item Ctrl-Alt-I<num>
347 ShowTab I<num>.
349 =item Ctrl-Alt-Left
351 SwapLeft
353 =item Ctrl-Alt-Right
355 SwapRight
357 =back
359 =head1 MOUSE BINDINGS
361 =head2 Mouse bindings on Tab Buttons
363 I<Mouse-1> on a tab-button displays the window associated with the tab.
365 I<Mouse-2> on a tab-button releases the window associated with the tab back to the window manager as a standalone window.
367 I<Mouse-3> on a tab-button releases the window associated with the tab back to the window manager & iconifies it.
369 The tab-buttons can be reordered with a drag-&-drop operation initiated with I<Ctrl-Mouse-2>. A dragged tab is inserted before the tab-button onto which it is dropped.
371 =head2 Mouse bindings on Toolbar Icons
373 I<Mouse-1> on the "menu" button will bring up a menu of options. See MENU BINDINGS.
375 I<Mouse-1> on the "release" button will release the selected window from the tabber.
377 I<Mouse-2> on the "release" button will release all windows from the tabber, and iconify them.
379 I<Mouse-3> on the "release" button will release all windows from the tabber.
381 I<Mouse-1> on the "add" button will add the next window you click on to the tabber.
383 I<Mouse-2> on the "add" button will add the next window to popup to the tabber.
385 I<Mouse-3> on the "add" button will add every window you click on (until you press Esc) to the tabber.
387 I<Mouse-1> on the "kill" button will I<Close> the selected window.
389 I<Mouse-2> on the "kill" button causes I<FvwmTabs> to try to kill the selected window itself.
391 I<Mouse-3> on the "kill" button will I<Kill> the selected window.
394 =head1 MENU BINDINGS
396 I<Mouse-1> on the "menu" button will bring up a menu of options:
398 I<Release All> will release all tabbed programs back to the window manager as standalone windows.
400 I<Release All (Iconify)> will release all tabbed programs back to the window manager as iconised standalone windows.
402 I<Add> will add the next mouse-clicked window to the tab-manager.
404 I<Add Next> will add the next window that is created to the tab-manager.
406 I<Multi Add> keeps adding mouse-clicked windows to a tab-manager until the escape key is pressed. Useful for adding multiple windows to a tab-manager at once.
408 I<Font> shows a sub-menu enabling you to dynamically configure the button/title/menu fonts, using the external program identified by the I<fontSelector> option.
410 I<Show Titlebar> toggles the display of the titlebar below the tab-buttons.
412 I<Window Tabizer Dialog> will popup a dialog box for specifying windows to swallow. Windows can be specified explicitly (by name) or by using a (Perl) regular expression matcher. (Note: / character is automatically escaped.)
414 The menu options between the separators will display the window/tab associated with the text. (The menu text is actually the title associated with the window. The text on each tab-button is the icon name.)
416 I<About> pops up a dialog with version/developer information.
418 I<Close> will close the B<FvwmTabs> window, invoking Release All in the process.
420 =head1 BUGS
422 =over
424 =item *
425 Tab-managers don't take focus when iconified.
427 =item *
428 FvwmTabs doesn't obey C<ClickToFocus> mode.
430 =item *
431 FvwmTabs has a problem swallowing shaded windows.
433 =item *
434 Using C<Maximise> to resize tab-manager windows prevents dynamic resizing from working.
436 =back
438 Please send bug reports, feature requests & queries about B<FvwmTabs> to the fvwm mailing list: I<fvwm@fvwm.org>. Be sure to include the word "FvwmTabs" somewhere in the subject line.
440 =head1 TODO
442 Features to be added to B<FvwmTabs> in the future (in no particular order):
444 =over
446 =item *
447 Colorset support. (use Colorset tracker from fvwm-perllib)
449 =item *
450 Use Ctrl-Mouse-1 instead of Ctrl-Mouse-2 to reorder (drag-&-drop) windows.
452 =item *
453 option: menu item to sort tabs by name, file extension, etc.
455 =item *
456 For autoSwallow options that specify a tab-manager, create the tab-manager if it doesn't already exist. (default behaviour is not to swallow it)
458 =back
460 =head1 FVWMTABS HOMEPAGE
462 There is some useful information about FvwmTabs, including a short tutorial, on the authors website:
464 L<http://members.optusnet.com.au/~scottsmedley/fvwmtabs/>.
466 =head1 LICENSING
468 B<FvwmTabs> is GPL software.
470 See L<http://www.gnu.org/licenses/gpl.html>
472 =head1 AUTHOR
474 Scott Smedley
475 <ss@aao.gov.au>