Desktop environment based on Fvwm


In the following chapters we describe where you find what, how and which files are loaded, how you can debug problems and how you can customize Fvwm-Nightshade.

Structure of Fvwm-Nightshade

Fvwm-Nightshade is splitted in a system and an user part.

The system part is located in /usr/local (default), /usr (distribution related) or if you use the local installation under <chosen_dir>. In the following named as <system>.

The user part is located in ~/.fvwm-nightshade. Following named as <user>.

Location of Files and their Function

<system>/bin ⇒ Executables.


start script.


Python script for stalonetray to build applet list. Used for restoring applets after restart stalonetray.


Perl-SimpleGtk2 script to set CPU frequency governor.


Python script to find the correct icon for iconified apps or for icons used in layouts.


Perl-SimpleGtk2 script to build personal menu.


adapted fvwm-menu-desktop from Fvwm’s CVS to create XDG menu(s).


shell script to start apps from a file list. Used for autostart and starting applets for stalonetray.


<system>/share/fvwm-nightshade/ ⇒ System home of Fvwm-Nightshade.


system wide configuration file.


initial config with the base functions.


template of the base settings. Will be copied into <user> dir.


system wide key bindings.


<system>/share/fvwm-nightshade/artwork/Fvwm-Nightshade icons, splash and wallpapers.

<system>/share/fvwm-nightshade/layouts/ ⇒ System layout files and conky rc-files.

<system>/share/fvwm-nightshade/lib/ ⇒ Fvwm modules written in Perl or C/C++. Directory is in the ModulePath.


Perl module to maximize windows in the largest area of the desktop/page.


Perl module to set true transparency to windows if a composite manager is running.


Perl-SimpleGtk2 module to configure base settings of Fvwm-Nightshade (layouts, themes, compositing, icons on desktop, etc.).


Perl-SimpleGtk2 module to configure window behaviours (focus policies, placement, etc.).


Perl-SimpleGtk2 module to configure composite manager if installed (shadows, translucency, etc).


Perl-SimpleGtk2 module to configure the XDG menu creation. It exchange fvwm-menu-desktop2-config.fpl.


<system>/share/fvwm-nightshade/modules/ ⇒ Pager, pannels and Iconman modules.

<system>/share/fvwm-nightshade/themes/ ⇒ Theme files and icons.

<system>/share/doc/fvwm-nightshade/ ⇒ Html pages, templates, readmes.


/usr/share/fvwm/ ⇒ Scripts which must resides in Fvwm’s directory or if local installation is chosen in the <user> directories - FvwmScripts in the scripts/ sub directory, all others in the <user> root.


File browser based on FvwmScript-FileBrowser


Set time/date based on FvwmScript-Date


Calendar applet


Alarm applet


/etc/xdg/menus/ ⇒ XDG applications menu directory. If local installation is chosen it is located in ~/.config/menus/.

Fvwm-Nightshade’s application menu.


/usr/share/desktop-directories/ ⇒ Directory for XDG directory files. If local installation is chosen it is located in <chosen_dir>/share/desktop-directories/.


Some .directory files for


/usr/share/xsessions/ ⇒ Login manager directory if a display-manager is available.


login script.


/usr/local/lib/perl-site|Perl5 ⇒ Perl directories for 3rd party libraries

a wrapper around Perl-Gtk2 to allow RAD.


~/.fvwm-nightshade/ ⇒ the user home directory (<user>)


optional file with application commands.


config file of Regenerate XDG Menus.


local config file of FvwmTransSet.


link to current layout file.


Fvwm menu file.


Menu file of your personal apps.


settings like layout, theme, font, splash, etc.


stalonetray log file.


internal list of current systray apps.


config file for FNS-WindowsBehaviour and custom user settings.


link to current wallpaper


<user>/wallpapers/ ⇒ default wallpaper directory.

<user>/screenshots/ ⇒ default screenshots directory.

<user>/scripts/ ⇒ Optional user FvwmScripts directory.

<user>/icons/ ⇒ Menu icon directory created by Regenerate XDG Menus.

<user>/layouts/ ⇒ Optional user layout directory.

<user>/lib/ ⇒ Optional user module directory. Is in the ModulPath.

<user>/themes/ ⇒ Optional user themes directory.

<user>/locales/ ⇒ Optional user language directory.

Call Sequence while Startup

The first file which is called while startup is <system>/bin/fvwm-nightshade. It initialize some environment variables, creates ~/.fvwm-nightshade if not available and starts Fvwm. But not with the <user>/config or <system>/config.

First Fvwm starts with a pre config - <system>/share/fvwm-nightshade/fns-init. It contains some important functions which allows Fvwm-Nightshade to handle another directory than ~/.fvwm.

The script calls then the main config via the "Load" function. This function looks first in the <user> dir and then in the <system> dir. It makes it possible to load parts created by the user or the default ones. With that function the user can copy the config or bindings in the <user> dir, alter it and restart Fvwm-Nightshade without changing anything in the process.

This works with themes and layouts, too. If you create under ~/.fvwm-nightshade the directory structures of themes/layouts as in the <system>/share/fvwm-nightshade you can build themes or layouts by your own (see THEME and LAYOUT CREATION).

Autostart of Applications

Fvwm-Nightshade has the possibility to start applications while startup like email daemons or systemtools (e.g. gkrellm). Therefore a file ".autostart" must created in the <user> directory and filled with application commands per line e.g.


Another possibility is to use the function "FuncStartSystrayApplets" in the config file but then you have to copy the system file config into the <user> directory and add your app like

+ I Test (x nm-applet) exec exec nm-applet