fvwm-crystal(1)
===============
:doctype: manpage
:man source:   fvwm-crystal
:man version:  3.4.0
:man manual:   FVWM-Crystal

NAME
----

fvwm-crystal - an easy to use, eye-candy but also powerful desktop environment for GNU/Linux or other Unix-like operating systems.


SYNOPSIS
--------

None


DESCRIPTION
-----------

*FVWM-Crystal* aims to be an easy to use, eye-candy but also powerful desktop environment based on the F? Virtual Window Manager (FVWM). It uses following programs: FVWM as a window manager and "main core", icons on the desktop with support for more than 10 different file managers and custom commands (with optional Nautilus or ROX-Filer support), different terminal emulators inclusive xterm, aterm, mrxvt or urxvt, different music and medias players inclusive MPD, XMMS2 or MPlayer (there's built-in support for controlling these programs, and several other tools for different functions, like setting a wallpaper or making screen shots. Fvwm-Crystal provide some unique features like the ability to bring in full screen virtually any application, and to flow through the full-screened applications and the desktop. In this document you will find a general description of *FVWM-Crystal*, how to begin with it and how to customize it.

USAGE
-----

First Start
~~~~~~~~~~~
*FVWM-Crystal* checks while your first login if +~/.fvwm-crystal+ exist and if old preferences must be converted to the new Fvwm InfoStore variables. In all cases, it should just start.

*FVWM-Crystal* will also check your locale and create the XDG localized user directories if they don't exist. Those directories are common to most modern OS and are used to store dedicated files. As example +$HOME/Music+, +$HOME/Documents+ and +$HOME/Pictures+.


Initial Media Player Setup
~~~~~~~~~~~~~~~~~~~~~~~~~~
MPlayer is the default media player. A help screen can pop-up and show you how to setup the Media directories preferences, which tell FVWM-Crystal where your music and movie files are. You can do it now or later, but it must be done before to use the play-lists features found in the Music menu (or button).

For that, edit the file +~/.fvwm-crystal/preferences/MediaDirectories+:
----
audio $HOME/Music
video $HOME/Video
cdrom /dev/cdrom0
dvd /dev/cdrom1
----

You can put as many lines you need. Each line have the following format:
----
type path
----
where *type* is one of [+audio+ +video+ +cdrom+ +dvd+]
and *path* is the +full path+ to a directory or a device.
Devices are used only for +cd+ and +dvd+.
Note that all players doesn't support all the provided features. Their respective menus will be adjusted accordingly.

As example, you can have:
----
audio /home/name/Music
video /home/name/Video
audio /mnt/work/Music
video /mnt/usb/Video
dvd /dev/cdrom
----

When you are done, save the file. You can load the control for your preferred player from the preferences menu
----
Crystal -> Music -> Player -> Music player
----
or from the menu on the first music button.

In the same menu, you will find +Recreate the playlists+. This script will scan the paths pointed by the MediaDirectories preference file, and create the play-lists into +$HOME/.fvwm-crystal/Playlists+. They will be separated into an Audio and a Video part. We can call them the Crystal play-lists. Don't edit those files, all your changes will be lost the next time you run +Recreate the playlists+. Instead, 2 other directories will be created: +$HOME/Playlists/Audio+ and +$HOME/Playlists/Video+. They are the User play-lists.

In the same Music menu, the play-lists operation are grouped. You can of course load them into the selected player. +Copy playlist+ will copy the selected play-list from the Crystal play-lists to the User play-lists. +Remove playlist+ will remove the selected play-lists from the User play-lists. Some players provide they own play-lists management system, FVWM-Crystal try to support them as well.

Some supported players must be setup before FVWM-Crystal can use them. For that, please refer to their respective documentation. If you have a DVB card, please refer also to the linuxtv.org V4L-DVB Wiki at <http://linuxtv.org/wiki/index.php/Main_Page>.


Mixer Setup
~~~~~~~~~~~
*FVWM-Crystal* default mixer is *AlsaMixer* (via amixer). It must have dB support for most, if not all, sound cards, which is a must. It is no default setup because the ALSA control names vary from card to card. To setup the mixer, just go into the preferences of the Music menu or via a right click on the second music button.

The amixer control was fully rewritten, and it use the native steps of the ALSA driver for the card in use.

For the other mixers, the dB scale is approximated.


Desktop Organisation
~~~~~~~~~~~~~~~~~~~~
19 different desktop layouts, named recipes, are available.

Some are very simple and provide very few decorations. Others provide many buttons and decorations. A few of them mimic existing OS, like Nebulae which loosely mimic Windows, or Amiga which mimic the Amiga OS.

You can change them via Fvwm-Crystal system menu:
----
Preferences -> Recipes -> System
----

The other preferences apply to all recipes and are independent from each others.
By example, you can choose to have desktop icons showing the XDG user directories and the mounted partitions, and to not show applications icons.

It is 2 menus, the system menu available with *Alt + Win_R* (Meta + Windows Right) and the application menu available with *Alt + Menu* (Meta + a "menu" key). A menu can also be available by holding a *Left click* on the root window (the desktop) if selected in System -> Preferences -> Desktop menu (On by default). The content of that menu depend on the recipe in use.

With FVWM > 2.6.5, a supplementary XDG application menu is available with *Alt + A" if selected in the preferences menu.

Decorations common to all recipes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Not all recipes use all followings decorations called buttons, but they can be used in any recipe, inclusive your own ones.

_The "Crystal" Button_::
+
or "FvwmButtons-MainMenu" is the little button with a diamond.
+
There are some mouse bindings available:
+
* left clicking open the system menu
* middle clicking open the wallpaper menu
* right clicking on some recipes open the applications menu

+
The Amiga recipe is different:
+
* left clicking shift the top bar to a menu bar and back
* middle clicking open the wallpaper menu
* right clicking open the system menu

+
When the button is located at the top left corner:
+
* mouse wheeling will change the screen resolution

_The Media Buttons_::
+
They are 4 grouped media buttons - FvwmButtons-Music - providing controls and menus for the supported media players and mixers. For a description of their bindings, consult *man MouseBindings* and *man KeyboardBindings*, or the html documentation.
+
The same functionalities are provided by the Music menu, which is located in the System menu.
+
The supported media players are +alsaplayer+, +audacious+, +cdcd+, +cmus+, +mocp+, +mpd+, +mplayer+, +mplayer2+, +quodlibet+ and +xmms2+.
+
The supported audio mixers are +alsamixer+ and +aumix+, plus the mixers of the players. +QJackCTL+ is also supported.
+
* left clicking on the first media button will open a menu.

+
In it, +Music player+ is where you choose the player and can start it. +Recreate the playlists+ will scan your music and video files and create the play-lists for you. For that, it will use the preferences file you edited in the section "First Start". It is also a mixer preferences menu where you can choose the mixer and the sound card.
+
Each player have its own features set, and the Music menu and functions will change accordingly.
+
As example, with *cdcd* you have a cd player and you will be able to control it, when with *mplayer*, you have an universal media player, and FVWM-Crystal will even recognize if you have a DVB card and use it. Basic stream capture is enabled and use the standard 'C' MPlayer key binding. See *man mplayer*. This will create a stream dump in $HOME. That file will be usable only with MPEG sources, and it can be edited with applications like +Kino+.

_The Application Panel_::
+
It is an auto generated panel which provide one button for each *FreeDesktop* menu main category. The icon of each button is the icon of the preferred application of that category. The mouse bindings available are:
+
* left clicking open the application menu of the category
* middle clicking on some recipes launch the second preferred application
* right clicking launch the preferred application

+
These menus have full support for the additional FreeDesktop categories, which mean much less modifications will be needed in comparison with many other desktops. And last but not least, your modifications will never been lost. It is why at the first place I begun with Crystal and I will keep it that way. See *man ApplicationDatabase* for how to customize the application menu (the examples are at the end).
+
More: the files in the applications database are scripts. You can put anything you want into them. You will find them into +$prefix/share/fvwm-crystal/fvwm/Applications+ and +$HOME/.fvwm-crystal/Applications+, and can copy them from this first location to the second one. The files in the second path will take the precedence. The same apply for the icons directory.
+
The same database is used to generate the application menu available with the system menu on some recipes, and with the Alt+Menu key binding.
+
The application database provided by +FVWM_Crystal+ contain a large set of menu entries and application icons. You can generate extra database menu entries and icons from the preferences menu:

----
Diamond -> Preferences -> Generate application menu+
----

This will populate +$HOME/.fvwm-crystal/Applications+ and +$HOME/.fvwm-crystal/icons+.
+
The 2 first time you run this script, it will copy 2 preferences files and show help messages.
+
Those files are +$HOME/.fvwm-crystal/preferences/IconDirs+ and +$HOME/.fvwm-crystal/preferences/DesktopDirs+. They must contain the full path to where the icon and desktop files provided by the applications are stored, typically something like +/usr/share/icons+ and +/usr/share/pixmaps+ for the icons, and +/usr/share/applications+ and +/usr/share/applications/kde4+ for the desktop files. The 2 preference files are self explained.


_The Clock_::
+
As its name describe it, a clock.


_The Pager_::
+
It is a miniature illustration of the virtual desktop pages with mini windows. By clicking on each of the segments you can change the page. 
+
For a description of the bindings, see "man MouseBindings".
*
Some recipes provide only a small button. Clicking on it will show or hide the pager.
+
The number of desktop pages can be changed on the fly from the preferences menu, option +Desktop geometry+. If necessary, windows will be moved on the last available desktop page.


_Notification area_::
+
Both stalonetray and trayer are supported. For best support will all recipes, use stalonetray.


_Icon Manager_::
+
A recipe can provide several icon managers, or only one, or not at all. They can show the icons from the running applications on the whole desktop or on the current desktop page. They can be grouped by applications type like terminals or other application types.  The application name can be shown in the icon manager or as a tool-tip when the mouse is over the icon. And different actions are bound to these icons.
+
Some recipes provide an icon manager for the iconic applications. With these recipes, no application icons will be on the desktop, independently of what choice was made in the preferences.


_Desktop Icons_::
+
It is 2 types of icons: application icons and desktop icons.
+
Desktop icons are typically used to launch a file browser at a given path. You can choose in +Preferences -> Desktop manager+ how FVWM-Crystal will manage them:
+
* +None+ will remove the desktop icons
* +FVWM-Crystal+ will let FVWM-Crystal manage these icons
* +ROX_Filer+ will manage these icons
* +Nautilus+ will manage these icons.

+
You can change on the fly between +None+ and +FVWM-Crystal+. The other changes need to logout and restart Xorg and FVWM-Crystal. At that time of writing, the FVWM-Crystal-3.4.0 desktop icon managing is mature enough to considerer that ROX-Filer and Nautilus are provided only as a commodity or for backward compatibility or convenience. (See *man CrystalRoxHOWTO* for rox.)
+
When +FVWM-Crystal+ is selected, it will show all its icons by default. Right clicking on the +Home+ icon will open the +Desktop icons preference menu+. the +Home+ icon is mandatory, both the +XDG user directories+ icons, the +partitions+ icons are optionals and the +User managed directories+ are optionals.
+
In the same menu, you can select the actions for the left and middle clicks. Several file managers have built-in support: +Thunar+, +Worker+ (a very good Directory Opus clone), +Midnight Commander+ (mc in short), +ROX-Filer+, +Nautilus+, +Krusader+, +Xfm+, +4Pane+, +Ranger+ (a Vim like file manager), +PCMan FM+, +gentoo+ (another dopus clone), +Konqueror+, +emelFM2+ (which, like mc, support extfs), +Dolphin+ and +SpaceFM+.
+
A custom command can also be set where both console commands and X commands can be used. A self documented form will be launched, which let you update and save the configuration.
+
If +pmount-gui+ is installed, the contextual menu of the Home icon will show 2 options for mounting and unmounting the removable devices. The contextual menu of the partition's icons will show the mount points of the patitions and an item for umounting the partitions. This options will use +pumount+ if the partition is mounted in /media, +umount+ otherwise.
You will also get menu items to mount the unmounted partitions, if they are present in /etc/fstab with the option user(s).

_Application Icons_::
+
They are the icons of the iconic applications. This will work only with the recipe that doesn't provide an icon manager for them.

In 
----
Preferences -> Type of icons
----
you can choose between:
+
* +None+
* +Thumbnails+
* +Amiga+
* +Mwm+

+
+Amiga+ and +Mwm+ will show the application icons. Simple clicking on the +Amiga+ style icons will restore the application window. Double clicking on the +Mwm+ style icons will do the same.


Full Screen Navigation
----------------------
For what I know, FVWM-Crystal is the only GNU/Linux desktop that provide that feature.

In short, *Full Screen Navigation* is the ability to bring in full screen virtually any application, and to navigate between these full-screened applications, as well than between them and the desktop. 

It can be many useful use cases for it. As example, if you have several browser windows open and want to zap quickly. Or with a file manager like mc which is limited to 2 panels. It is one limitation: the full screened windows must be on the same desktop page. This limitation is a force at the same time, because you can zap the desktop pages too, and you can have full-screened and "normal" windows in any desktop page at the same time.

Try it. Launch  a few applications on the current desktop pages ans put them in full screen with *Alt + KP_\**. When this is done, use *Alt + Shift + KP_** to zap between the full screened windows and the desktop. With *Alt + F<n>*, you can zap the desktop pages.

In fact, this functionality is not new. It was already available with the first Amiga computer in 1985, when Windows was not born and the Mac was boring in black and white. It was called the window stack. With the +Amiga recipe+, simple clicking on the button at the top right corner provide that function too.


PREFERENCES
-----------
Most preferences are applied on the fly. To change from or to the ROX-Filer or Nautilus desktop manager need a restart.

*Select recipe*::
	Select a recipe.

*Desktop geometry*::
	Select the number of desktop pages from 1 to 9.

*Characters fonts*::
	Launch FVWM-Crystal font selector dialog. *Panel font* is used by the buttons, *Tittle font* by the window title bars, and *Menu font* by  menus. FVWM-Crystal support xft fonts and this dialog let you visualize the fonts, save and apply the fonts, as well than edit, save and restore the example string. Restore will restore the example string to its original value. To restore it to its saved value, you have to quit and launch again the font selector.

*Handle width*::
	Set the handle width between 1 to 7 pixels. Handles are used to resize the windows with the mouse. See also *man KeyboardBindings".

*Translucency*::
	Start and stop translucency. Off by default, this setting will not survive a restart. When On, you can use the mouse wheel on the window title bars to set their translucency.

*Bling bling*::
	Start and stop the bling bling. It is an effect that will shift the translucency with the focus. This setting is Off by default and will not survive a restart. Translucency can have a negative impact with some softwares like MPlayer. In the worst case, shift to a primary console with *Ctrl + Alt + F<n>*, login, run *killall mplayer* or *killall -9 mplayer*, and get back to FVWM-Crystal with *Alt + F7*.

*Default terminal*::
	Set the terminal available with *Right click* on the root window. Possible choices: +GNOME-Terminal+, +Multi-GNOME-Terminal+, +XFCE4-Terminal+, +Terminator+, +MRxvt+, URxvt+, +ATerm+, +ETerm+ and +XTerm+.

*Fvwm console terminal*::
	Set FVWM console terminal, *Alt + ;* will show/hide it, and it will be present on all desktop pages. It will only send commands to FVWM. Very useful to try any FVWM command.

*QuakeConsole termianl*::
	Set terminal for the QuakeConsole. *Alt + ' (grave)* will show/hide it, and it will be present on all desktop pages. You can use it for whatever console you want, by example htop. Supported by these 2 last terminal are +MRxvt+, +URxvt+, +ATerm+ and +XTerm+.

*Desktop manager*::
	Select the manager for the desktop icons. See above.

*Icon type*::
	Select the icon type for iconic applications. See above.

*Desktop menu*::
	Set On or Off the menu available with left clicking.
	With FVWM>2.6.5, you can also set On or Off the XDG menu *Alt + A*

*Notification area manager*::
	Select stalonetray or trayer, and let you choose the size of the area between 0 to 20 icons.

*Focus policy*::
	Select the focus policy between
	- +Amiga+ - click to focus without raise
	- +FVWM-Crystal+ -enter to focus without raise
	- +FVWM-Crystal with raise+ - enter to focus with raise
	- +MS Windows+ - click to focus with raise.

With the without raise policies, a click on a title bar will raise the window.

*Privileged terminals*::
	With URxvt and ETerm, set the FPOverrideGrabFocus style. Such terminals will never loose the focus.

*Generate application menu*::
	Generate the databse entries and icons for the applications menu.

*Silent operations*::
	Add "2>/dev/null" at the end of most commands launched by FVWM-Crystal.

*Preferences editor*::
	Launch the Preferences editor which let you set several preference files and variables:
	- +Startup+ - launch applications at startup
	- +ShowDirectories+ - custom directories shown by FVWM_Crystal Desktop Manager
	- +Browser+ - The default browser (BROWSER environmental variable)
	- +Editor+ - The default editor (EDITOR environmental variable)
	- +DesktopDirs+ - The paths for the application type desktop files
	- +IconsDirs+ - The paths for the application icons
	- +MediaDirectories+ - The paths for your media files
	- +FullscreenApps+ - Set the applications you want in full screen by default

*Key binding modifiers editor*::
     	Let you set which key are used as modifiers with the key bindings. This is useful if the key bindings of FVWM-Crystal collide with the key bindings of your prefered application (ardour, emas, whatever...). In most cases, to change *Mod1 Meta* is sufficient. I use *4* for the left windows key for it.


CUSTOMIZATION
-------------
Structure of Fvwm-Crystal
~~~~~~~~~~~~~~~~~~~~~~~~~
*FVWM-Crystal* is split into system-wide files, a system-wide configuration, and an user-wide configuration.

The system part is located in +/usr/local/share/fvwm-crystal/fvwm+ (default) or +/usr/share/fvwm-crystal/fvwm+ (distribution related). We can call it <system>

The system configuration part is located in +/etc/X11/fvwm/fvwm-crystal+. Call it <config>

The user part is located in +~/.fvwm-crystal+. <user>

You can copy any file from the system part (without the /fvwm/) to the 2 other parts. For each file, files in the user part will be used first if they exist. If they don't exist, FVWM-Crystal will use the files in the system configuration part (empty be default), and if they don't exist, it will use the files in the system part. This is true for all files loaded with the *Include* command, which is the case for allmost all FVWM-Crystal files.


Location of some Files and their Function
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*<system>/config* will be the first file loaded by FVWM. It initialize some variables and load the whole FVWM-Crystal configuration, inclusive the recipe in use.

*<system>/components/Standard* is the second file loaded by FVWM. It contain the functions used to load the other files with respect to their priorities part order. After, it load other files with functions used in many places.

The other files in <system> are grouped in directories. Each directory correspond to a group of functions. For example, *<system>/preferences* are for the default preferences, *<system>/apps* are functions to control some main features of FVWM-Crstal like the Desktop Icons, the Screen Saver, or the Fvwm Console.

As a rule, make small modification at a time. And RTFM. FVWM is not so difficult, but it is very complex. This complexity make things harder. So, try to keep focused on one thing at a time.

FVWM documentation is huge, The best place to read it is on the FVWM website where you will find an html version, which ease the navigation. Use the stable 2.6 branch, the unstable 2.7 is outdated and will not work well with FVWM-Crystal.


Autostart of Applications
~~~~~~~~~~~~~~~~~~~~~~~~~
Copy *<system>/preferences/Startup* to *<user>/preferences/Startup* and put your commands here.


Custom FVWM Commands
~~~~~~~~~~~~~~~~~~~~
Create the file *<user>/userconfig* and put your FVWM commands here. It will be the last loaded file.


AUTHORS
-------
This man page was written by Dominique Michel <dominique_libre@users.sourceforge.net> (C) 2013-2015. I am sorry for my bad English, and if you don't like it or can improve it, please considere to contribute.


COPYRIGHT
---------
*FVWM-Crystal* and all the scripts and other files coming with 
the distribution are subject to the GNU General Public License (GPL). 
Please refer to the COPYING file that came with *FVWM-Crystal* for details.


BUGS
----
Bug reports can be sent to the fvwm-crystal-users mailing list at 
<https://mail.gna.org/listinfo/fvwm-crystal-users/>.


SEE ALSO
--------
*KeyboardBindings*(1), *MouseBindings*(1), *FVWMCrystalFAQ*(1), *TIPS*(1), *CrystalRoxHOWTO*(1), *ApplicationDatabase*(1) <http://fvwm-crystal.sourceforge.net/>
