GREETINGS & CONGRATULATIONS
You've navigated to page, where advanced, original and great FVWM configuration may be downloaded.
Why is it Great?
- It is modern and ready to use, so even users of modern desktop environments won't be missing something. It's containing functionality from modern window managers (including its focus policy) and some unique features. Moreover, it's superior by its usability, stability and speed.
- It is lightweight and simple by design, so easily customizable. The whole configuration includes one "icons" directory and three files: "autostart" (sh script with startup applications), "config" (FVWM configuration file) and "exit" (FvwmScript exit dialog). Also, with its relevant and advanced functions, it'll be a great start for a new FVWM user as well.
- It is great by its appearance, light, integrated look and is theme independent. Initially it was intended to use with Vertex GTK theme (as it was posted on couple of forums couple of years ago), but now it's compatible with every bright or dark Qt/GTK theme you want (e.g numix-gtk-theme in package repositories).
Compatible with everything, where FVWM2/3 may be installed. Personally, I recommend to use Devuan and OpenBSD, depending on your hardware and use case. Should work with all not too old FVWM2 versions (tested with 2.6+) and also with FVWM3 as well.
Since new Xlib version was introduced, which is in use in Debian 12 (stable) AKA Devuan Daedalus and newer, annoying bug appeared (in such distros and OS-es with new Xlib): icons of iconified applications may dissapear sometimes randomly and always on FVWM restart. And by the end of 2024 this is not fixed yet in both FVWM 2/3 versions. As a workaround solution, for FVWM 2 version: manually apply xthread_fix.patch — fvwmorg/fvwm3#818 (comment) and siebenmann's patch — fvwmorg/fvwm3#818 (comment) to fvwm2 source code and then build it and install. For FVWM 3 versions it is possible to apply siebenmann's patch too (xthread_fix.patch is not needed).
For FVWM2
- Download fvwm 2.7 source code and extract it.
- Replace <fvwm_source_dir>/fvwm/events.c with patched version.
- Replace <fvwm_source_dir>/libs/FEvent.c with patched version.
- Replace <fvwm_source_dir>/libs/FEvent.h with patched version.
- Install fvwm build dependencies and remove fvwm package:
$ sudo apt build-dep fvwm && sudo apt remove fvwm
. - Then
cd
to <fvwm_source_dir> and build it and install. $ ./autogen.sh && make && sudo make install
.
It'll be installed to /usr/local/ .
For FVWM3
- Download fvwm 3 version 1.1.1 source code and extract it.
- Replace <fvwm_source_dir>/libs/FEvent.c with its patched version.
- Install fvwm3 build dependencies and remove fvwm3 package:
$ sudo apt build-dep fvwm3 && sudo apt remove fvwm3
. - Then
cd
to <fvwm_source_dir> and build it and install. $ ./autogen.sh && ./configure --prefix=/usr/local && make && sudo make install
.
1. Install the fvwm
package, then navigate to your home dir and fetch the configuration
$ git clone https://github.com/111LUX/FVWM.git
2. Remove any old FVWM configuration if exists and rename fetched directory
(FVWM may create empty ~/.fvwm directory with its first launch, so remove it $ rmdir ~/.fvwm
)
$ mv ~/FVWM ~/.fvwm
3. Install the following packages
# apt install xcompmgr stalonetray suckless-tools dzen2
-
dzen2 is an optional dependency, but with this package installed, you'll get nice top screen notifications with current Desk number, when switching it with Super+F1/F2/F3/F4 (to move window to certain Desk use Super+1/2/3/4) or Super+PgUp/PgDown. Also, it may be used to display sound volume notifications too, when changing it with your keyboard/laptop multimedia hotkeys — read bellow.
-
dmenu launcher from "suckless-tools" package will be required, in certain repositories it's packaged simply as
dmenu
. For a command history support, additionally download dmenu_run_history script and save it to your $PATH as executable (e.g# cp dmenu_run_history /usr/local/bin/
and# chmod +x /usr/local/bin/dmenu_run_history
), then configuration file will use it instead of a regular dmenu as a launcher (Alt+F2).
-
stalonetray is used as a tray application. FvwmButtons module is launching it at bottom left screen corner before icons. Alternatively, it is possible to replace
stalonetray
withwmsystemtray
package, to know how — read bellow.
-
xcompmgr compositing manager configured pretty well via its command line options in configuration file, also it's using server-side shadows — -s flag, which is not commonly used. It fits nicely with overall design, look and feel. (Alternatively, use
compton
with this ~/.config/compton.conf and remove "xcompmgr" lines from config/autostart files.)
Few useful additional applications with short description (like fbxkb - tray keyboard layout indicator) are commented in ~/.fvwm/autostart file, install it and uncomment if required. "Files" root menu entry will open your home dir with your default file manager (via xdg-open), I prefer caja (and engrampa as archive manager), but for file operations I'm using drop down terminal mostly.
4. Start or restart FVWM.
Toggle its visibility with Ctrl+F1 hotkey. No additional actions required, it's working with every screen resolution "out of the box", urxvt terminal emulator will be used if installed, or otherwise xterm. It "remembers" its maximized state even when is hidden (maximize/unmaximize it with Super+W hotkey, or using tiling functionality - Super+Up/Down/Left/Right arrows).
To make Xft fonts similar in size among all applications, to enable its hinting (in modern DEs this part is automatically handled by "settings-daemons"), Xft configuration should be added to ~/.Xresources file. Download my .Xresources and save it to your $HOME, while it will be enough to add "Xft" lines, my urxvt and xterm settings are pretty usable too. To apply it, $ xrdb -merge ~/.Xresources
should be executed, no need to add this command to ~/.fvwm/autostart file, as it is already there.
To iconify (minimize) all applications/restore — ShowDesktop function should be used,
it is available via Ctrl+Alt+D, or when pressing dock tray borders (screen bottom left corner click).
Icon middle click will close iconified application, window title middle click will maximize/unmaximize window, close title button middle click will kill application. Some other common keybindings: Super+Q - close, Super+A - iconify, Super+C - deiconify previous, Super+W - maximize, Super+D - lower/raise window. Alt+Tab is working as expected, Super+Tab/Super+Shift+Tab - raise and focus next/prev window. All keybindings may be found under "Keybindings" section of ~/.fvwm/config .
when using laptop/keyboard sound volume media keys, download vol.sh script, save "vol.sh" to your $PATH as executable and restart FVWM. No further configuration required, as these lines are already present in ~/.fvwm/config :
Test (X vol.sh) Key XF86AudioRaiseVolume A A Exec exec vol.sh up
Test (X vol.sh) Key XF86AudioLowerVolume A A Exec exec vol.sh down
Script uses ALSA backend to change volume, to use PulseAudio instead, download download vol.sh_pulse and save it as "vol.sh" to your $PATH as executable, it uses pulsemixer
package to get sound volume, so it is required (on some systems it should be replaced with pamixer
).
Several local FVWM variables are set at top of config file. Such variables store information about default FVWM font, title font, tray application and terminal emulator (only xterm or urxvt are supported, as it's supporting "-name" flag, required for DropDown function to work with terminal). When changing these variables, it will be changed in whole config.
# Store information in local variables
InfoStoreAdd font 'Shadow=1:xft:Sans:size=10'
InfoStoreAdd titlefont 'Shadow=1:xft:Sans:size=10:bold'
InfoStoreAdd tray stalonetray
InfoStoreAdd traycommand 'stalonetray -bg "#333333" --geometry 2x2 --max-geometry 2x2 --scrollbars horizontal --scrollbars-size 3 --dockapp-mode simple --kludges force_icons_size'
Test (X urxvt) InfoStoreAdd terminal urxvt
Test (!X urxvt) InfoStoreAdd terminal xterm
"tray" and "traycommand" variables are setting tray application. By default stalonetray will be launched automatically with FVWM, and when any tray application will be started, its icon will appear in bottom left corner.
just replace "InfoStoreAdd tray" and "InfoStoreAdd traycommand" lines:
InfoStoreAdd tray wmsystemtray
InfoStoreAdd traycommand 'wmsystemtray --non-wmaker'
Then kill stalonetray $ pkill stalonetray
and restart FVWM.
To change FVWM fonts, replace "font" and "titlefont" variables with fonts of your choice, for example:
InfoStoreAdd font 'Shadow=1:xft:Liberation Sans:size=10'
InfoStoreAdd titlefont 'Shadow=1:xft:Liberation Sans:size=11:bold'
To view current time and date in bottom right corner of root window, install conky
, download .conkyrc.clock file and save it as ~/.conkyrc.clock . Uncomment conky -q -c ~/.conkyrc.clock &
line in ~/.fvwm/autostart and it will be automatically started on FVWM startup.
As for example, it's possible to use 3 types of title buttons:
- Vector buttons, using FVWM "Vector" "ButtonStyle" (default).
- Title buttons from Vertex GTK theme.
- Title buttons from A23D textures resource a23d.co - glass/mirror (their permission to use it in this config is granted).
To choose it, comment and uncomment appropriate "title buttons" section in the config:
# Vector title buttons
#ButtonStyle 1 Vector 5 25x40@1 25x60@1 75x60@0 75x40@0 25x40@1 -- Flat
#ButtonStyle 3 Vector 5 40x40@1 60x40@1 60x60@0 40x60@0 40x40@1 -- Flat
#ButtonStyle 5 Vector 5 25x25@1 25x75@1 75x75@0 75x25@0 25x25@1 -- Flat
#ButtonStyle All ActiveDown -- !Flat
# Vertex title buttons
ButtonStyle All Pixmap v_button.png -- Flat
ButtonStyle All Inactive Pixmap v_button_inactive.png -- Flat
ButtonStyle 1 ActiveDown Pixmap v_button_close.png -- Flat
ButtonStyle 3 ActiveDown Pixmap v_button_iconify.png -- Flat
ButtonStyle 5 ActiveDown Pixmap v_button_maximize.png -- Flat
# Mirror title buttons
#ButtonStyle All ActiveUp Pixmap m_button_focus.png -- Flat
#ButtonStyle All ActiveDown Pixmap m_button_press.png -- Flat
#ButtonStyle All Inactive Pixmap m_button_unfocus.png -- Flat
Also, it's possible to changle title bar height (in pixels):
TitleStyle Centered Height 30
Colors may be easily changed using colorsets section of ~/.fvwm/config file.
To achieve similar decorations as on screenshot above, these lines should be added/edited:
Style * BorderWidth 2, HandleWidth 2
TitleStyle Centered Height 28
TitleStyle Active DGradient 999 4 #111111 10 #141414 40 #822CA9 30 #FFC137 20 #FF3D29
# Colorset <number> background, foreground, foreground shadow
Colorset 111 bg #111111, fg white, fgsh black
Colorset 333 bg #333333, fg white, fgsh black
Colorset 666 bg #666666, fg white, fgsh black
Colorset 777 bg #777777, fg #e7e7e7, fgsh black
# Set colorsets
Style * HilightColorset 111, IconBackgroundColorset 666, Colorset 777
Style * HilightBorderColorset 111, BorderColorset 777
MenuStyle * MenuColorset 333, TitleColorset 333, ActiveColorset 111