cvsimport
[fvwm-themes.git] / doc / FAQ
blobe07c50f62d565e6a742f11471d9bb8d1043c4ea7
1 FVWM Themes Frequently Asked Questions and Answers.
3 ------------------------------------------------------------------------------
5 1. About FVWM Themes
7   1.1  What is theme, component, variant, option in our terminology?
8   1.2  Does fvwm-themes overwrite my .fvwm2rc? If no, how does it work?
9   1.3  Why theme switching takes some time and it is even increased?!
10   1.4  On my system switching themes crashes FVWM! What to do?
11   1.5  How much configurable is fvwm-themes?
13 2. Configuring themes
15   2.1  The themes are nice, but how can I define my personal contents?
16   2.2  How can I redefine the applications started by clicking on a button?
17   2.3  What are the default bindings?
18   2.4  What is the "Stroke" option and what are the default stroke bindings?
19   2.5  I am screwed. How can I get fvwm config in one file?
20   2.6  Why changes done using X Configuration Scripts are not persistent?
21   2.7  How can I remove all bindings on a given window
23 3. Integration
25   3.1  Can I use fvwm-themes on my multi-headed display system?
26   3.2  Can I use fvwm-themes with a session manager?
27   3.3  Can I use fvwm-themes with GNOME?
28   3.4  I installed more applications, how can I rebuild application menus?
30 4. More info
32   4.1  How can I submit my own theme?
33   4.2  Where can I find a documentation on fvwm-themes and its shell scripts?
35 ==============================================================================
38 ------------------------------------------------------------------------------
39 1.1  What is theme, component, variant, option in our terminology?
41 A: Component is a part of fvwm configurations, more or less separate unit,
42 which can be loaded and unloaded accordingly to its dependences.
43 Theme is nothing more than a set of its components. A theme in fvwm-themes
44 may be partial or full. Themes usually can be categorized as "look" theme,
45 "feel" theme, "content" theme or any combination of these.
47 One of the features of fvwm-themes is the ability to mix together components
48 from different themes if their dependences enable this without conflicts.
49 The theme author is responsible to define exact dependences for each theme's
50 component or defaults will be used if present. Dependences are not fully
51 checked for now, but this may be changed in the future.
53 The definition of theme components is given in theme.cfg file of the theme.
54 If no such file is found, the default/theme.cfg is used for this theme
55 in an intelligent manner, i.e. a list of actual components is automatically
56 built as a subset of all possible defined components (existing files/dirs).
58 All currently used components (probably from different themes) compose
59 the current theme, which is reflected in the Theme Management menu.
61 Any component can come with several variants, with options or sub components
62 all of which allow a good configurability. They can be changed via the the
63 Theme Management menu under the "current" submenu or using the "Property"
64 button of the Themes Center.
65 ==============================================================================
67 ------------------------------------------------------------------------------
68 1.2  Does fvwm-themes overwrite my .fvwm2rc? If no, how does it work?
70 A: No, it does not overwrite your .fvwm2rc. The only files and directories,
71 which fvwm-themes manages are ~/.fvwm/themes* ones, more precisely:
73   ~/.fvwm/themes/ - the user themes as opposed to the site themes
74   ~/.fvwm/themes/current-main/ - the current theme in the main session
75   ~/.fvwm/themes/current - symbolic link to the actual current session theme
76   ~/.fvwm/themes-rc - the .fvwm2rc equivalent
77   ~/.fvwm/themes-rc-2 - additional rc used by themes-rc, symbolic link
78   ~/.fvwm/themes-rc-3 - additional rc used for theme switching
80 The rc files themes-rc and themes-rc-2 are created by fvwm-themes-config.
81 FVWM Themes should be loaded by fvwm-themes-start shell script, which
82 initializes all needed files/directories if needed and starts fvwm as:
84   fvwm -f themes-rc
86 To return to your .fvwm2rc configuration, replace a call to fvwm-themes-start
87 with a call to fvwm executable in .xinitrc or other initialization file.
89 See other questions if you want to extend menus, bindings, styles etc. used
90 in fvwm-themes. You should create and edit files in ~/.fvwm/themes/personal/.
91 ==============================================================================
93 ------------------------------------------------------------------------------
94 1.3  Why theme switching takes some time and it even increases!
96 A: This is because of two things. Currently the entire configuration is
97 reloaded on every single component switch (this will be fixed in the next
98 versions). The second thing is the way fvwm currently stores its styles.
99 Additional loading will increase memory usage, so the more you switch themes,
100 the more memory is used and thus the slower is the switching mechanism.
102 We are trying our best to unload everything, which can be unloaded in all
103 themes to save user's memory. This will be improved.
105 Please execute Restart command if you experience some memory/speed problems,
106 when you switch themes. See also the answer to the next question.
107 ==============================================================================
109 ------------------------------------------------------------------------------
110 1.4  On my system switching themes crashes FVWM! What to do?
112 A: In the past there was a known problem on some systems, FVWM may randomly
113 crash on them when switching themes. You should try a workaround for this
114 problem, which does work on at least one such system.
116 If you define $FT_USE_RESTART environment variable, i.e. if you replace
117 a call to fvwm-themes-start with 'env FT_USE_RESTART=1 fvwm-themes-start',
118 FVWM will be restarted on every theme change. This may solve memory problems.
120 If this does not solve your problem, please report it to fvwm-themes
121 developers - fvwm-themes-devel@lists.sourceforge.org.
122 ==============================================================================
124 ------------------------------------------------------------------------------
125 1.5  How much configurable is fvwm-themes?
127 A: We, authors of fvwm-themes try to make it as configurable as fvwm
128 itself while keeping inter-theme integrity. We understand that in the Free
129 Unix world there will never be only one solution and a choice is a solution.
130 fvwm-themes is very extensible, you may create new components freely.
132 If you want to totally reconfigure fvwm-themes, it is  possible, but to
133 keep an integrity with other themes, you should conform to some rules,
134 which are easy for small configuration changes and need some knowledge
135 of creating new or changing existing components for more complex changes.
136 ==============================================================================
138 ------------------------------------------------------------------------------
139 2.1  The themes are nice, but how can I define my personal contents?
141 A: You can either edit existing theme components (not recommended)
142 or create your own theme 'personal' and put there the components
143 that you like to overwrite or extend.
145 First create ~/.fvwm/themes/personal directory if you don't have it already.
146 If you want you may create other theme directories than personal/ as well.
148 Here are several useful components that you may put into this directory.
150   * startup
152     In this file you may define standard FVWM functions, InitFunction (to
153     start applications on FVWM startup) and StartFunction (to start modules
154     on startup and restart). Use "AddToFunc StartFunction" to do this.
155     You may put other parts of FVWM configuration into this file as well, but
156     this is not supported, use other files in personal/ directory for this.
158   * menus-extra
160     This file may contain a definition of the MenuFvwmPersonal menu, that is
161     shown under the "Personal" submenu of the "Root Menu". For example, see
162     the supplied menus-extra file in the same directory as FAQ that you may
163     just copy and edit.
165   * functions-appbind
167     You may copy this file from themes/default/ directory to your
168     ~/.fvwm/themes/personal/ directory and edit it how ever you like.
170   * functions-appbind-extra
172     But rather than edit the entire functions-appbind file you may just
173     put the changed functions in functions-appbind-extra instead.
174     For example, you may customize functions like FuncFvwmMaximize,
175     FuncFvwmViewManPage in this file.
177   * menus-programs:
179     This file defines application menus, like Shells, Programs, System.
180     You may copy this file from themes/default/ directory to your
181     ~/.fvwm/themes/personal/ directory and edit it how ever you like.
183   * menus-programs-extra:
185     But rather than edit the entire menus-programs file you may redefine
186     or extend only several menus in menus-programs-extra instead.
188   and so on... We suggest to create only *-extra files, but it is up to you.
190 After creating a new personal component, you need to choose:
192   Themes Management -> Refresh -> Refresh with no cache
194 from the menu. And then choose this new personal component:
196   Themes Management -> Personal -> menus-extra (or menus-programs-extra etc.)
198 The "Themes Management" menu may be invoked either by clicking the
199 mouse button 1 on the root window or by pressing Ctrl-Alt-Mouse2.
201 All components mentioned above: 'startup', 'menus-extra', 'functions-bindapp',
202 'functions-appbind-extra', 'menus-extra', 'menus-programs' and so on are
203 standard, so you don't need to define their dependences. In more complex
204 (and poweful) cases you may need to define component dependencies or/and
205 component properties in theme.cfg file of that theme.
207 Please read the doc/creating-themes file or ask on our lists if you need
208 more help than that is answered here.
209 ==============================================================================
211 ------------------------------------------------------------------------------
212 2.2  How can I redefine the applications started by clicking on a button?
214 A: The applications started by clicking on a button are defined in the file
215 themes/default/functions-appbind. You should copy this file into your
216 personal theme directory and edit it (see also the previous question). Say,
217 if your preferred editor is myeditor, then replace emacs with myeditor in:
219 DestroyFunc FuncFvwmEditor
220 AddToFunc   FuncFvwmEditor
221 + I Exec exec emacs
223 Then, a click with mouse button 1 on a button with the editor icon will
224 start myeditor. The functions FuncFvwm2Editor and FuncFvwm3Editor are used
225 for mouse buttons 2 and 3 respectively. Other functions work similarly.
227 Note that these functions are also used in the stroke bindings and more.
228 ==============================================================================
230 ------------------------------------------------------------------------------
231 2.3  What are the default bindings?
233 A: As you can guess they are in themes/default/bindings and
234 themes/SOMETHEME/buttons. The default bindings were chosen to be
235 consistent and functional. Here is a list of some useful global bindings:
237   Alt-Tab               - Window List of all normal applications
238   Shift-Alt-Tab         - Window List of all skipped applications
240   Ctrl-Mouse2 on root   - Transient pager
241   Shift-Ctrl-Mouse2     - Transient desker
243   Alt-F1                - like Mouse1 on root (Root menu)
244   Alt-F2                - like Mouse2 on root (Window List menu)
245   Alt-F3                - like Mouse3 on root (Window Ops menu)
247   Alt-F4 .. F10         - mostly like in mwm; there is an option to add Shift
249   Mouse1 on decorations - Resize, Raise, WindowShadow
250   Mouse2 on decorations - Move, RaiseLower
251   Mouse3 on decorations - Window Ops short menu
253   Alt-Mouse1 in window  - like Mouse1 on root (Root menu)
254   Alt-Mouse2 in window  - like Mouse2 on decorations (Move, RaiseLower)
255   Alt-Mouse3 in window  - like Mouse3 on root (Window Ops menu)
257 Key bindings using numbers (on the left keyboard side and on the key pad):
259   Ctrl-Alt-1 .. 4       - Go to desk 0 to 3
260   Ctrl-Alt-0            - Go to the previous desk and page
261   Shift-Ctrl-1 .. 4     - Move the active window to desk 0 to 3
262   Shift-Ctrl-0          - Move the active window to the previous desk
263   Ctrl-Alt-KP1 .. KP9   - Go to page (like in 3x3 pager, 7 - the first page)
264   Ctrl-Alt-KP0          - Go to the previous page
265   Shift-Ctrl-KP1 .. KP9 - Move the active window to page (like in 3x3 pager)
266   Shift-Ctrl-KP0        - Move the active window to the previous page
267   Ctrl-KP_1 .. KP_9     - Switch to window in this direction (8 - up)
269 Key bindings using arrows:
271   Ctrl-Alt-Left ..      - Go to the page on the left (right, up, down)
272   Shift-Ctrl-Alt-Left ..- Scroll by the 10% of the page to the left ..
273   Shift-Ctrl-Left ..    - reserved
274   Shift-Alt-Left ..     - Move the pointer by 1% of a page to the left ..
276 You can get the description for every title button binding by holding
277 Ctrl-Alt and pressing that button. This should work in all core themes.
279 For guys, which have no mouse button 2, it is sometimes simulated by Ctrl
280 with the mouse button 1.
282 It is possible to switch bindings of mouse buttons 2 and 3 in most of cases
283 by choosing the corresponding option in the default bindings component menu,
284 but this is a bit less consistent (for example, Alt-F2 will be like Mouse 3
285 on the root, not Mouse 2) and a bit less functional (can't move a window
286 with Mouse 3 and use PlacedByButton3 fvwm's style or use stroke inside it).
288 See the previous questions if you want to redefine the bindings component.
289 As usual, you can create 'bindings-extra' to only add/change some bindings.
290 ==============================================================================
292 ------------------------------------------------------------------------------
293 2.4  What is the "Stroke" option and what are the default stroke bindings?
295 A: Stroke allows to bind mouse motion to an action. For example, with the
296 default bindings if you draw a N with your mouse with button 3 pressed, then
297 the function FuncFvwmWWW of themes/default/function-appbind will be executed
298 (which starts netscape by default). You need libstroke installed and fvwm
299 compiled with stroke support. libstroke can be obtained via anonymous ftp at
300 http://www.etla.net/~willey/projects/libstroke/. You need also to enable
301 fvwm-themes stroke option.
303 The stroke bindings are defined in themes/default/settings/stroke/enabled.
304 Mouse button 3 is used (this button must be pressed during the stroke),
305 no modifier are needed when you start your mouse motion on the root
306 window and you must use the Alt modifier if you start your mouse motion
307 in a window (you cannot start your motion in a window title bar or frame).
308 Now the mouses motion:
310   - A | from the top to the bottom executes FuncFvwmTerminal
311   - A / from the top to the bottom executes FuncFvwm2Terminal
312   - A \ from the top to the bottom executes FuncFvwm3Terminal
313   - A | from the bottom to the top executes FuncFvwmEditor
314   - A / from the bottom to the top executes FuncFvwmFileManager
315   - A \ from the bottom to the top executes FuncFvwmDocView
316   - A N from the bottom left       executes FuncFvwmWWW
317   - A - from the right to the left executes FuncFvwm2WWW
318   - A - from the left to the right executes FuncFvwm3WWW
319   - A C from the top               executes FuncFvwmCalculator
320   - A C from the bottom            executes FuncFvwmProcess
321   - A L from the top left          executes FuncFvwmHelp
322   - A L from the bottom right      executes FuncFvwm2Help
323   - A _| from the bottom left      executes FuncFvwmImageView
324   - A |_| from the top left        executes FuncFvwm2ImageView
325   - A _| from the top right        executes FuncFvwmImageEdit
326   - A |_| from the top right       executes FuncFvwm2ImageEdit
327   - A |~| from the bottom left     executes FuncFvwmMail
328   - forth and back from the left   executes FuncFvwmCdPlayer
329   - forth and back from the right  executes FuncFvwmSound
330   - A clockwise box from the top left executes FvwmFuncQuitVerify
332 The mouse motion is drawn for your convention and if the the mouse motion is
333 succeed (i.e., this motion is bound to some action) then the busy cursor is
334 displayed during a fraction of second. See the Stroke and StrokeFunc entries
335 of the fvwm man page for more information.
336 You can add new stroke motions in ~/.fvwm/themes/personal/stroke-extra.
337 Example:
339 # A  forth and back from the top to execute FuncFvwmGame
340 Stroke  N85258          0       R       A       FuncFvwmGame
341 Stroke  N85258          0       W       M       FuncFvwmGame
343 Redefining the existing motion bindings is better be done by redefining the
344 FuncFvwm* functions mentioned above.
346 Q: Can I draw a penguin (using mouse strokes) to compile a kernel?
347 A: Maybe. If you are a perfect painter. :) If not, stick to simple figures
348 - line, 2 lines, triangle, square.
349 ==============================================================================
351 ------------------------------------------------------------------------------
352 2.5  I am screwed. How can I get fvwm config in one file?
354 A: We will release a documentation describing the format of every component.
355 It is not very easy to sit and immediately create complete or partial theme,
356 which is clean and works well with the rest of the framework. You should
357 comply to some standard format and check that everything, which is allocated,
358 is destroyed. It is actually easy if you are familar well with the fvwm,
359 but it can take some time to acquire an experience with the framework.
361 You can always get the fvwm configuration in one file (a-la .fvwm2rc) of
362 the currently used configuration (so called "current" theme) by executing:
364         % fvwm-themes-config --expand-rc >current-fvwmrc
366 You can skip the contents at the start responsible to manipulation of themes.
367 ==============================================================================
369 ------------------------------------------------------------------------------
370 2.6  Why changes done using X Configuration Scripts are not persistent?
372 A: If you want the changes done using X Configuration Scripts (under the
373 Configuration submenu) to have effect your next fvwm sessions, just add
374 the line
376         $HOME/.xinitrc-fvwm
378 in your .xinitrc or .xsession file before running fvwm-themes-start.
379 ==============================================================================
381 ------------------------------------------------------------------------------
382 2.7  How can I remove all bindings on a given window
384 A: Add the following line in your "bindings-extra" personal file:
386     FuncFvwmRemoveBindingsOnWindow xxxx
388 where xxxx is the name, class or ressource of the window for which you want
389 to disable all default bindings. This can be useful for certain applications
390 as a vnc viewer or FvwmTabs.
391 To remove a given binding you can use the following function:
393     FuncFvwmRemoveBinding Key|Mouse "(xxxx)" the_key_or_button modifiers
395 for example
397    FuncFvwmRemoveBinding  Key    "(xxxx)"  F4  A  M
398    FuncFvwmRemoveBinding  Mouse  "(xxxx)"   1  W  M
400 remove the Alt-F4 close binding on windows xxxx and remove Alt-Mouse 1
401 popup menu on windows xxxx.
402 ==============================================================================
404 ------------------------------------------------------------------------------
405 3.1  Can I use fvwm-themes on my multi-headed display system?
407 A: Yes, there are several solutions depending on what you want to get.
409 1) If you want the same theme to be on all your displays, you can simply
410 run fvwm-themes-start as usual. In this case, when you change theme
411 components on one screen the changes are not synchronized on all other
412 screens until you Restart. You can also freely use fvwm-themes sessions.
413 This is a simple and easy solution, you just need to remember that what you
414 see is not always what you will get after Restart or on the next start-up.
416 2) If you want to have completely separated setups on all screens, you can
417 run fvwm-themes like this:
419         env FVWM_USERDIR=$HOME/.fvwm:0.0 fvwm-themes-start -- -s -d :0.0 &
420         env FVWM_USERDIR=$HOME/.fvwm:0.1 fvwm-themes-start -- -s -d :0.1
422 The feature (or misfeature) of this second solution is that user themes
423 and sessions, if there are any, can't be shared on different screens.
424 This can be solved by symlinking some themes and sessions, like:
426         ln -s ../../.fvwm/themes/personal $HOME/.fvwm:0.0/themes/personal
427         ln -s ../../.fvwm/themes/personal $HOME/.fvwm:0.1/themes/personal
429 3) If your X server have the Xinerama extension and FVWM is compiled with
430 Xinerama support (or if you have a "single logical screen" multi-screen
431 implementation) you should run fvwm-themes-start as usual and select the
432 appropriated option in the theme management menu (current -> settings ->
433 Xinerama support -> *). Moreover, you may (must in the single logical screen
434 case) create an xinerama-extra file in your personal theme to define your
435 primary screen (the screen where the modules are started) if it is not
436 screen 0, define FT_XINERAMA_PWIDTH to the width of your primary screen
437 and define your sls layout.
438 Example for Xinerama:
440         # I prefer that my modules start on screen 1:
441         XineramaPimaryScreen 1
442         # The width of this screen is 800
443         SetEnv FT_XINERAMA_PWIDTH 800
445 Example for single logical screen:
447         #                                         __ __
448         # I have two 800x600 screens as follows: |  |  |
449         #                                         -- --
450         XineramaSlsSize 2x1
451         SetEnv FT_XINERAMA_PWIDTH 800
453 If you want a pager or/and a window list module in your "secondary" screen
454 you should define it in your personal modules-extra component.  
455 ==============================================================================
457 ------------------------------------------------------------------------------
458 3.2  Can I use fvwm-themes under a session manager?
460 A: Yes! First, you should start FVWM-Themes in a special way. Put,
461 the following lines at the end of your "start X" file:
463         fvwm-themes-start --session a_name --no-start
464         exec the_sm_executable
466 the --session option is optional, but this allows you to use a different
467 FVWM-Themes configuration when you use a given session manager and
468 when you use FVWM-Themes under a normal FVWM session.
470 Then start a window manager inside your session manager by running
471 fvwm-themes-start or (more correct) by 'fvwm -f themes-rc'.
473 At the present time there is a special support for GNOME and a generic
474 session support (current->settings->Session Manager). If you want/need a
475 special (above the generic) support for a particular session manager, ask
476 the fvwm-themes developers.
477 ==============================================================================
479 ------------------------------------------------------------------------------
480 3.3  Can I use fvwm-themes with GNOME?
482 A: Yes. You should have fvwm compiled with GNOME enabled (this a default)
483 and it is preferable to run fvwm under gnome-session. Start a gnome-session
484 as explained in the previous question (with, say, --session gnome) and use
485 the Control Center to add fvwm-themes in your list of GNOME window manager
486 (Name: FVWM-Themes, Command: fvwm -f themes-rc, fvwm is a session managed
487 window manager). Then, you should select GNOME as Session Manager under
488 (current->settings of the theme management menu). This gives to you the
489 GNOME "button" menus: Shift-Mouse 1/2/3 and a special quit menu.
490 The "--session gnome" optional parameter ensures that this GNOME option will
491 be used only under a fvwm-themes's gnome session. Moreover, this way, you
492 can have a completely different configuration under a GNOME session (like
493 starting different modules to take in account the GNOME panel, using GNOME
494 background and thus disabling the theme backgrounds). In addition there are
495 GNOME-specific fvwm settings (for menus, the panel) that you can change.
497 If you want a stays put panel (i.e., a panel which can cover and be covered
498 by normal windows) enable the "panel stays put" fvwm-themes option and
499 disable any GNOME configuration options concerning such things (you may
500 completely restart X for this panel setting to work fine).
502 You don't need GNOME panel or gnome-session to merely run GNOME applications.
503 Again, FVWM Themes has special components for this: you can get the system,
504 user and "redhat" GNOME menu as well as Icon and MiniIcon Styles for GNOME
505 applications. For GNOME icons to work with fvwm, you need to use the
506 --enable-gnome-icons option to configure when you install fvwm-themes or you
507 may just login later as the same user that ran "make install" and run
508 "fvwm-themes-images --ft-install --gnome".
509 ==============================================================================
511 ------------------------------------------------------------------------------
512 3.4  I installed more applications, how can I rebuild application menus?
514 A: The menus "Shells", "Programs", "System", "Screen Saver" and some others
515 are created at the installation time ("make install") by executing this:
517   fvwm-themes-menuapp --site --build-menus --remove-popup
519 This command is also executed when rpm package is installed.
520 Just reissue this command as the correct user (usually root) to recreate
521 all system-wide menus in the default theme. After that, either use "Restart"
522 or "Refresh the current theme" to see updated menus.
524 If your application is not listed in the menus, grep the system's file
525 default/menus-programs to see if it is there. Write to fvwm-themes-devel and
526 supply some info like the application name (as should be seen in the menus),
527 its full path and starting arguments, and we may add it in the next versions.
529 There is also support for Debian/Mandrake application menus and GNOME/KDE
530 application menus, check out "Theme Management / Current / settings".
532 Some theme components and settings are hidden if no corresponding utilities
533 are found on your system. If you install such utilities (for example you
534 upgrade your KDE or GNOME, or remove them, or install such utilities as
535 esdplay), try "Refresh the current theme", then some more components or their
536 options may appear in the "Theme Management" menus.
537 ==============================================================================
539 ------------------------------------------------------------------------------
540 4.1  How can I submit my own theme?
542 A: First, you should create a very clear theme. Test all possible
543 combinations of your components with components from other themes.
544 Try to make your theme as general as possible, try not to require
545 to run very special applications or use rare fonts.
546 But don't panic, you can also send us an unfinished theme; if we find it
547 interesting, we will finish and clean it up.
549 Finally, send your files to fvwm-themes-devel@lists.sourceforge.org
550 or contact one of the main fvwm-themes developers.
551 ==============================================================================
553 ------------------------------------------------------------------------------
554 4.2  Where can I find documentations on fvwm-themes and its shell scripts?
556 A: All fvwm-themes perl/shell scripts (fvwm-themes-config, fvwm-themes-start,
557 fvwm-themes-root, fvwm-themes-menuapp, fvwm-themes-images, fvwm-themes-com)
558 have manual pages. They are, together with the fvwm manual pages, are
559 accessible from the Help menu.
561 See also other files in the doc/ directory, especially doc/creating-themes.
562 ==============================================================================
564 ------------------------------------------------------------------------------
565 Good luck!
566 ==============================================================================