Well, I’ve finally gotten around to writing this up. I should warn you that my configuration and style preferences are in very stark conrtrast to those presented already under the thread. I know I am in the minority with my tastes, and I don’t care. The following description and links are a direct quote from the FvwmWiki, where this information is also presented. But I thought I’d include it here for completeness’ sake.
Here goes…
- Introduction
This is a very old-style theme. I first encountered Fvwm many years ago when the “cool” things were tcl/tk apps and large blocky borders. Indeed, my reasons for using them then differ no more now that I retain that style – it is what I am used to and like. Because I have very low-spec hardware, I like to shy away from using the more meatier Desktop Managers[1]. Oh, and the other thing to note is that I hate transparency.
When I first used Fvwm, it was under the guise of RedHat’s AnotherLevel config. I still maintain a copy of the original scripts, and many of them went on to form the basis of my own config which I now use, although admittedly I replaced all of the M4 macros with PipeRead to sh, and custom Ruby scripts.
- .fvwm2rc
I like light colours. I must have a very low colour perception, since I find dark colours with text on hard to read. The default colours are Indianred for an active window, and Skyblue3 for an inactive window. These were popular colours from some fvwm1 configs from years past. Along with that, active windows have a white foreground, and inactive windows have a black foreground. The titles of the windows use the helvetica font, of size 11, and the title is centred horizontally.
There are three buttons on all the windows. The left-most button (Button 1) is a single verical line which if single clicked, pulls a menu down of operations that can be performed on that window. A double-click closes the window. Button 4 minimises a window, while Button 2 maximises a window. You can see a complete list of vector styles here.
All windows use a border style of Fvwm, although I alternate back to Mwm a lot.
Essentially, I don’t have anything fancy in my config, and indeed, most of the default functionality that Fvwm gives you with no customisation is what I use. I have a root menu which allows access to some grouped functions. Since I use Debian, I used to use the generated menus from the menus package – but the menus got too big, and had a lot of programs in them that I simply didn’t want to see. Also, the depth of the menus got too great, when finding a common application (such as an entry for rxvt). So to that end, I now maintain my own menus by hand.
Menus emulate MWM functionality in all instances, and use a colour of darkgrey as their background, and black as their foreground (hence text colour, also). Each entry has a keyboard shortcut so that I can access it.
I like to use a combination of the mouse and the keyboard to do my work. I have some keybindings, but again, doing nothing fancy. I have two modifier keys. Alt and the left-menus key Super_L. I have added entries to Xmodmap so that I can define separate keybindings for Alt and Super_L. Typically, I have a few keybindings to launch an rxvt instance, move a window around the screen, shade a window in any given direction, etc. I can also stick and unstick a window easily. Using a combination of ctrl + alt + arrow key allows me to flip between desktop pages with ease.
Other window operations can be performed with the mouse. Double-clicking on a window border will shade the window in that direction. This is governed by the function condition $[func.context]. Single-clicking on a border raises the window to the topmost layer.
That more or less (by way of omitting a lot of otherwise tedious details) completes the basics of my config.
The other “on-screen” presense is FvwmButtons. You can see a screenshot of it here. It consists of seven panels that span almost the entire length of the page. The entire thing is then panelised. The FvwmButtons instance contains the following programs:
[list]
- Xbuffy
- A swallowed instance of rxvt
- A swallowed instance of another FvwmButtons module containing
a means of controlling mpc. - Xlassie
- Xloadtime (for my local workstation)
- Xloadtime (for my server)
- FvwmPager
[/list:u]
The whole thing is sticky, and defaults to a style of StaysOnTop.
Other noteworthy things – I use FvwmEvent to do a number of things. You might have noticed from the buttons bar screenshot that my pager has the title format: Main (xx) where “(xx)” is a number. This number is an indication of all of the windows currently open on my entire desk. I arrange my pager in a 3x3 format (that is, a square, consisting of nine pages per desk.) As it happens, this is more than ample, and so I don’t have any more desks defined.
FvwmEvent just keeps a count of the number of windows. It updates itself as windows are added, and decrements itself when a window is destroyed. The function for it looks like this:
DestroyModuleConfig FvwmEvent-count: *
*FvwmEvent-count: Cmd
*FvwmEvent-count: PassId
*FvwmEvent-count: add_window FvwmCountDestroyWindows
*FvwmEvent-count: destroy_window FvwmCountDestroyWindows
DestroyFunc FvwmCountDestroyWindows
AddToFunc FvwmCountDestroyWindows
+ I SetEnv WinNum 0
+ I All (CurrentDesk !Transient) \
PipeRead 'echo SetEnv WinNum $$$$(($$$$WinNum + 1))'
+ I DesktopName 0 Main ($[WinNum])
And in a similar fashion, I also title my rxvts in this way. They’re titled in the form rxvt_a … rxvt_z so that I can see approximately how many terminal windows are open. I could have used the Style type IndexedWindowName but I didn’t want numbers as the index, and at present there is no option to supply to that style.
I also like Xteddy, and he stays with me all the time while I work.
That’s more or less it. A simple setup with no eye-candy that allows me to get on with my work. You can get my current config file here, along with the icons directory which has the png files for the media FvwmButtons that controls mpc. Other than that, there aren’t any external scripts. You can just take the contents of that location as though it were your own ~/.fvwm/ directory.
You are also freely allowed to modify and use the file as you see fit, although I would be interested to hear from you if you do. I’m in the rare minority of users it seems that still likes the so-called “old school” way of working. Oh, and if anyone has any suggestions about what I can put in the panel immediately below the media buttons on my FvwmButtons bar, do say!
A screenshot is available here.
Enjoy!
– Thomas Adam