Me and windows
No, do not expect me to talk about MS Windows (or at least that it will be the
main topic of this document. I will instead talk of windowing environments
in an historical (or autobiographical) framework.
This is mainly about FVWM, my early configuration,
my recently refurbished new configuration with some related
screenshots (some older one are present elsewhere).
First of all I encountered my first window environment back around 1990, 25 years ago,
when we got our first, and then unique, Sun workstation (namely a Sun 4/110).
It was called Sunview, it was proprietary and ran under the SunOS Unix operating system.
Incidentally, it is also about the time of my first e-mail recorded on the net (should
be November 1989 ... google for EXOSAT at IMISIAM)
Note that at such time PCs were rare, there was not yet MS Windows, but MS-DOS (or
CP/M). PCs weren't used as work stations (with space between the two words). We did real
work on terminals, and mainframes or minis. 3270 terminals with IBM mainframes, or
HP terminals with an HP-1000 mini (that was the standard setup at ESO and ESA).
Later VT terminals with VAXes, which were becoming popular in astronomical observatories.
Terminals were accessed exclusively via the keyboard (while windows went around with
mices), besides normal alphanumeric keys there were some kind of functional keys. HP
terminals had a special row of programmable keys, IBM 3270 had a keypad with 12
functional keys ... I still use those 12 keys in my preferred THE editor remapping
the numeric keypad.
We did image processing on a Ramtek TV set attached to the HP-1000 (that was also
standard with ESO IHAP and the ESA Exosat Observatory). Later observatories used
ESO MIDAS on VAXes (with Ramteks or Gould DeAnzas).
We did text processing with tools like VS Script on the IBM (other sites used runoff
on PDPs, and LaTeX was just starting to be available on VAXes).
Then people started using PCs for text processing, with things like WordPerfect on
IBM PCs, or Wordstar on CP/M machines. More or less at this time I got (not the first
in my institute) an Apple Mac II with MS Word.
Curiously enough this was the only real (and simple) WYSIWYG text processing with nice
looking fonts, and ran on Macs ! The other text processing tools were not full WYSIWYG,
one could see just the justification of the text and some simple highlighting. Apple
printers supported Postscript fonts, while all the other arrangement, even when they
used laser printers like tghe earlier HP Laserjet, used typewriter fonts like Courier
and Elite, which one had to buy and upload ... Postscript came later and one had to
buy and connect hardware attachments !
So the first windowing model on Sun was one where windows were terminal emulators, or
image processing or graphics tools. Windows had individual decorations, plotting was
done in special graphics windows, or in graphics capable terminal emulators.
We also continued doing graphics on real terminals (HP or VT, even a wonderful
Tektronix 4015 with a 4096×4096 display attached to the IBM !).
The windowing model on Mac was rather different, it was essentially a glorified
graphical file manager, where one clicked on file icons to start the application
attached to the filetype. An approach I never liked much, but which was integrated in
a nice and simple way on such early Macs.
Anyhow one of the things I did soon when I got the Mac, was to buy software for
terminal emulation and network protocols (IBM3270, VAX with DECnet, generic with CP-IP),
or even an X11 emulator. This way I could connect to the other machines, and use the
Macs as additional work station (though poorly) and not just as a glorified typewriter.
The workstations (with no space between work and station), i.e. the
Unix workstations, multiplied quite soon. We had got our first Sun mainly to run
NOAO IRAF, then we got more Suns, and some DECstations with Ultrix (other popular
flavours were HP-UX and IBM RISC systems).
We skipped instead the fully proprietary VAXstations and MicroVAXes with VMS and
During this time, ESO MIDAS was ported to Unix under X11, so we had to get acquainted
with it. Luckily enough SunOS was supplanted by Solaris, which included a native
implementation of X11 called OpenWindows. This first could run in alternative with
SunView, and later replaced it. Also the other Unices had native support for X11,
Ultrix had DECwindows, and the DEC successor on Alphastations, Tru64 Unix, had OSF Motif.
So we did not have to play with window managers and alike (just for a very brief
test stage), but just used the default window manager which came along with the
OS-bundled X11, namely olwm under OpenWindows, and mwm on the Alphas.
The change with SunView was marginal, the main thing being that under X11 window
decorations are not individual, but handled by the window manager.
On the other hand the window managers were not terribly different (and doing only
basic useful things), each flavour had its own window-based text editor (textedit
on Suns and dxnotepad on DECs), and terminal emulators (but also xterm was available
on all and actually recommended for some of our applications). We spent some effort
in customizing a standard setup for all users, as similar as possible on the two kind
of workstations we had (Suns and DEC's). Only for the HPs we later got from ESO for
the VIMOS project (being at the time ESO official choice) we used their standard
One of the things I always liked about X11 (other than its programming API) is the
concept of X resources mantained in .Xdefaults and alike files.
More or less at this time the first "desktop environments" came around, and the one
common, or anyhow rather similar, to our sytems was CDE. One good thing was the
possibility of having more virtual desktops. One bad thing was the fact that to
customize the setup one had to use graphical tools ... so it is difficult to remember
what one is doing, or to make one change at a time. Also some stuff like the control
panel were rather baroque, occupied a fair space on the screen, and were not always
nice looking or comfortable.
Around 2004 we abandoned proprietary hardware and "real" Unices, to move to cheaper
PCs as workstations, using Linux. Our choice went to SUSE. The default desktop
environment for SUSE at the time was KDE. I never liked it, too baroque and heavy,
no control on where it stores what, and how to make sure What You Get Is What ou Want.
I cannot remember that well my arrangement on the Alphastations, which were my primary
workplace, but I seem to recall that my mwm did not support multiple workspaces, and
my exposure to CDE was limited to the VIRMOS HPs.
I tested all window managers available with such early release of SUSE (9.2)
and immediately found that fvwm was what I wanted !
I like/d fvwm (which at the time was possibly not yet feline) because it is
configurable via a single, though arbitrarily complex, ASCII file, in which one
can enter commands which allow you to obtain and control in a fully reproducible way
the desired effects.
So I chose an arrangement resembling the (good) simplicity of Motif, combined with
the desired multiple workspaces.
- I was possibly confused by the fvwm concept of workspaces, desktops and pages,
so originally I sticked to two desktops of four pages each. The idea was to
keep a few windows (typically some terminals and editors, or tools like ds9)
related to a short-term activity in a page.
The two desktops were one intended for "real work", and
another for network-related stuff, with one page for e-mail, one page for the
browser, one for remote connections like VNC to a second machine, in some case
Xnest, and later VirtualBox, and a fourth spare one.
- I'd liked to differentiate pages by background colour, or by a label, but never
managed to do it, so instead I keep a little FvwmPager in the top right corner
to know where I am.
- On the other hand, I chose a simple solid rather darkish background (I never
understood how people can work undistracted on complex picture "wallpaper" backgrounds)
- I mimicked the window decoration colour from the Motif one, I vaguely remember I
had blue-gray for inactive, and red for active, and now I use instead gray and
red. And of course I use "focus follows mouse".
- I chose to have a single button in the window title bar, to prevent
accidental closure. This button calls a window menu, which is an hybrid between
standard stuff (move, resize, iconify), fvwm-typical stuff like "shade" or
"window list" or "stick", and customized functions like "move to desktop and page"
- Actually I realize I almost forgot the existence of "shade" (though it is a nice
way to recover space), I never use "window list" from the window menu, but I
call it from the root window with MB2.
- On the other hand I rarely move to desktop and page from the menu, rather I stick
the window, change page and unstick it. Or use the pager to drag and drop the
mini-icon. Or I push and drag the window into or from a nearby page.
- I interact with application preferentially from the command line of terminal
shells, but occasionally from the root menu. The root menu is rather simple with
basic functions and no submenus, but for two where I stored (or hid) the SUSE
standard stuff and the fvwm-specific standard stuff.
- I use the builtin icon box (no fvwm module) to keep occasional iconized applications
in the botton right corner, again in a Motif like manner. I do not keep many
icons, but for the few I like to use a plain double click to open and close them
(and I like the words open and close more than maximize, deiconify or iconify !)
- For terminals I like to have in the title bar the host name, username and
tty numbers; for the editors I like of course the name of the file being edited
(a tradition which I brought forward from the Sun times is that I have four
aliases, edit, edit1, edit2, edit3, to open different files on a different
coloured background, but that is
another story), otherwise I care
little for the title and icon.
- The original choice of fonts was deviating little from default, an exception
is represented by the use of a narrow font for the editors, which is described
- Since I like the traditional configuration by mean of X resources, I was quite
upset at end 2010 when upgrading to SUSE 11, when I discovered that some
(frequently used) applications do not honour them ... because they are GTK.
Namely at the time the issue was that such applications (in absence of KDE or
GNOME) use for their menus a too dark background, which cannot be restored by
setting X resources (and so it is not an fvwm issue).
I found then a simple workaround
The original one
This screen dump corresponds to the original 1280×1024 setup which I used
originally on monitors with a native resolution of 1280×1024, the second last
of which was a 17" Dell monitor.
The screen dump is displayed here in 64% of your browser window, so it will not be
scaled 1:1, clicking on it you should see it alone, and if you retrieve the png file
it will have the full resolution (so you should be able to see it at native resolution
if you have a screen large enough).
For the curious this is the .fvwm2rc
The screen dump has however been taken a posteriori on a nested Xephyr window of
such size on my current monitor (see further below). However it shall faithfully
reproduce the size taken by the various applications, with the original fonts.
One sees from top left ... two xterm's with beige background, my default FvwmPager
(with two desktops of 2×2 pages each), one urxvt (with default font as the
xterm's) with white background, one xthe editor (with azure background and a custom
font), one urxvt with the Alpine e-mail client (the one with black background, which
uses a custom font). Window decorations and root menu should have the original fonts.
Because I always had myopia since I was 9 year old, I always wore glasses to correct
it. A few years ago I started having also presbyopia, so I need a second pair of glasses to
read books and documents, but so far I was able to work at the computer with my
standard "faraway" glasses, at the standard distance from the screen.
Recently I started having difficulties to read the screen ... in part is a matter of
contrast, the Alpine window with coloured characters on a black background is more
legible than the dark-on-light xterm's.
So I provisionally got another Dell 20" monitor with a 4:3 aspect ratio. According
to xrandr it had a physical size of 367mm × 275mm and a native resolution of
1600×1200 pixels. I used it in my original preferred resolution of
1280×1024, which gave a marginally acceptable solution. The look was the same
of the above screen dump, but it occupied a larger screen. However since the resolution
was not native, characters were a bit defocused, and I had to play with brightness and
Getting a larger screen
With the new year (2015) I got a new Samsung 24" monitor (521mm × 293mm), with a
native resolution of 1920×1080. It can be forced to emulate the 1280×1024
resolution, but, having a 16:9 aspect ratio, thing were too distorted ... terminals
were too wide, but, what is worse, astronomical image displays like ds9 displayed square
images as rectangular. So I decided to work at the native 1920×1080 resolution
on the wider screen.
The transient 1920×1080 setup looks like this screen dump (it takes 90% of the browser
window, so it scales correctly with the previous screen dump)
Namely the fonts (which are the same as in the previous screenshot) are generally too
small with too tiny fonts, also the menus and window decorations are hardly legible.
There is too much unused space on the screen.
The only good thing is that I had to apply no changes to the fvwm configuration of
the widgets (clocks and pager) since their position are relative to the corners of
the actual size root window !
The intermediate 1920×1080 setup looks like this screen dump. Essentially I decided
to use larger fonts, also for window decorations I use a different font.
For the curious this is the .fvwm2rc
- For local xterm's I added a class XTermNew to their invocation by fvwm, and use as
default font the 18-point misc fixed bold (whose non-bold variant corresponds
in the app-defaults/XTerm to the "unicode best" size one can select with
xterm's invoked from the command line use the system default.
- For remote login xterm's I mantained the old 13-point semicondensed default
which I used in the past (but control-MB3 allows to go to a larger 18-point
normal). Both (non-bold) are legible as I use well contrasted
gold characters on black background.
- Similarly I mantained the 20-point font in the urxvt where I run Alpine e-mail
client (on dark background). It corresponds to the xterm "huge" font.
- For other urxvt (white background) I found that the resource (which is in
.Xdefaults) was not honoured, but that was easily fixed in .fvwmrc, I simply
forgot to rename the style from rxvt to urxvt when I moved from one to the other
a few years ago.
For the editor (the Xcurses variant of The Hessling Editor, xthe) I was using a
custom font. I scanned with xfontsel for other monospaced font (which are a
must for code editing), and still found none better than the one I chose when
I moved from Tru64 Unix to Linux, which is a scalable 14-point terminal medium narrow.
This is not part of SUSE. In fact I installed the PCF files copied from my old
Alphastation in 2005 in a custom font directory, and use them. I found that all
other monospaced, typewriter like fonts are too wide.
The only change I made to improve legibility was to swap the medium with the
bold font. You can get an idea of its effect looking at the "interim" screen
dump (the second above here). The azure editor has the old normal font, while
the pink editor has already the new bold font.
- For fvwn fonts used for decorations and menus, I just made them a bit larger
(to 12 or 14 points), also I replaced the generic sans-serif with droid sans
and additionally made the title of active windows white on red instead of
black on red.
- For the browser, which is now Pale Moon, I
am still experimenting among two alternatives. One is to tell the browser to
use 18-point as minimum size (which screws up some badly designed sites), and
the other one is to use the NoSquint browser add-on to use as default a 130%
text zoom (this allows to remember the zoom per site, at a possible penalty
of a slight slower loading of the pages)
However there is a problem with the browser, but also with Acrobat and OpenOffice.
Since I already met a similar problem some years ago, I knew more or less where
to look. My old problem was that the background of the menus of Firefox (which I
was then using instead of Pale Moon), Acrobat and OpenOffice was too dark. Since
these are GTK applications, which do not honour standard X11 resources, and I have
no GNOME (nor KDE) in my setting, the fudge was to use a two-line
.gtkrc-2.0 file, forcing a "default theme".
So, for what concerns the menu fonts,
it was easy to add another half-dozen of lines to it (the most difficult thing
is guessing the font names, but I choose a plain Helvetica bold !)
Since I had to play a little bit with the good old stable fvwm configuration, I thought
now was The Right Moment to move to a different configuration, playing with some features
I previously considered fancy, like task bar and button box ... so first of all did a
thorough read of the man pages in the
very nice format provided
on the fvwm web site.
The idea was to renounce to the concept of pages as related to different projects or
activities, and to desktops as a way to collect families of similar pages. Now I
will consider each desktop as I previously considered pages. Potentially I could
make each desktop a single page (as I already did on some fvwm configurations on a
laptop used for presentations), or use pages just as extra space in the given
desktop (specially after I discovered the scrolling feature).
I report here some screenshots (they are reported here half-size of what done above,
but if you click you can have access at them full size). The various cases demonstrate
different features (I took them from different desktops).
- I inserted (from manpage !) Mouse 1 A CM Scroll reverse to allow to drag
across pages in the same desktop (which goes along with the redefinition of
desktop concept) using control-alt-mouse
This command shall be placed last after other mouse bindings.
- I decided to have in the bottom right corner of each desktop (page) a label with
the desktop name/number. This is a FvwmButton with FvwmEvent handling the change
I had to reposition the icon box to avoid icons covering the desktop label.
- I also added on the bottom (left) of all pages a fixed label with a small motto.
The initial one, since all this work is a rewriting of my fvwm configuration
after a decennium, is a quote by Dante (Inferno, XXIV, 106-108). So the F in
FVWM could even stay for Phoenix (Fenix) ...
Cosi' per li gran savi si confessa /
Che la Fenice muore e poi rinasce, /
Quando al cinquecentesimo anno appressa.
Thus the great wise testify /
That the Phoenix dies and is born again, /
When the five-hundredth year gets close.
- I replaced the individual date, clock and pager which I previously stuck on all
destktops with a single control panel FvwmButton.
- The pager is swallowed in a transient panel called from the last button (or what
used to be last).
- My preferred clock, xdaliclock by Jamie Zawinski,
is also easily swallowed in a double-height button
- I had a bit more of trouble with the current date. Before I used rclock (part
of rxvt), which I also use as a basic appointment reminder (when to take a pill,
when to go home, and occasionally when to go to the dentist :-)). Since I do not
like analog clocks, I kept it in a geometry of 150x1 and used just the window
title as a date reminder. However window titles are not swallowed, and my nearly
hidden geometry is not honoured when swallowed. So I replaced the date indicator
with a button initialized to the date. A crontab at midnight calls a 2-line
shell script using FvwmCommand to do a SendToModule which changes the button
- rclock remain as a sort of background appointment reminder, with no icon (it can
be accessed via the task bar)
- On top of the new FvwmButtons I placed a container with two small buttons to
show and hide a FvwmTaskBar (I could have done with one button using MB1 and MB3,
but at the end I thought two buttons were more elegant)
- The FvwmTaskBar is placed on top, so it is like it grows out left from the button.
I prefer to call it on or off, rather than using AutoHide which seems sometimes
- I replaced the Start button with the invocation of my standard root menu
- For the rest the taskbar is a handy way to find at a glance all the windows and
icons in the current desk (or page) and to see which has focus, or to give it to
(and raise or deiconify) a specific one in a crowded desktop
- Contextually I changed the xterm sequence I used to annotate the icons (in order
to have smaller buttons in the task bar). Now I have "pn user@host"
instead of "Host host: user user on terminal pts/n"
- Now, concerning the desktops, I decided to have 7, and to keep them initially
one page each. The first three are intended for e-mail, for the web browser,
and for remote network stuff, like e.g. a VNC viewer, but also a nested Xephyr
server or a VirtualBox virtual machine. The remaining four (provisionally
called A,B,C,D) are for work.
- The 7 desk have a FvwmBacker solid background, which is used also in the
pager, with "dark rainbow" shades. And the label mentioned above.
- I added to the main button box (above the pager) 4 buttons to change the
desktop size from 1 page to 2 horizontal pages, 2 vertical pages, or the old
2×2 arrangement. One can easily swap the various modes according to need.
When one swaps back to a mode with less pages, some windows may remain hidden
and exiled in a disappeared page (they will be listed in the taskbar, but remain
inaccessible until one reverts to the mode they were created and moves them).
I would have liked desktop sizes fractional with respect to the screen (e.g.
150%×150% instead of 2×2) but this is not possible
- I changed the window menu to allow moving a window to a given desktop (and page)
from the menu
as well as sticking and unsticking it
or highlighting it in the task bar
- I can go from one desk or page to another, either than moving windows, in
using control-alt-mouse to scroll pages
using the root menu
using sequences like control-1 to control-7 to go to a given desktop
using a button in the taskbar
- Since I keep FvwmCommandS running, I added a few shell script or aliases to do actions
from the command line (who knows whether I am going to use them, I had already
alternate ways of doing things with menus, accelerators, etc. that sometimes I
forgot and used only one "preferred" method, but it does no harm. Anyhow I added
fvwmDesk n to go to a given desk
fvwmRestart to restart the window manager
fvwmConsole invoke the fvwm console
could dare a fvwmLogout ?
- Finally I did some more cosmetics, so I had more opportunity to play with
panels and even FvwmScript.
- I added to my main FvwmButton "control panel" another button (last) to start
a panel with procmeter3.
Just it happened to be available on my system and looks fine (only it seems to
overestimate the number of processes w.r.t. top or ps !? Apparently this is because
it counts also threads, if one uses H in top to toggle threads the count
seems to match). Graphical configuration
rather easy (only the way to force text only mode was buried deep in the documentation).
The only fvwm-related issue is that the Swallow "hangon string" (is that the name ?)
shall be exactly "procmeter3" otherwise it starts unswallowed at the wrong position).
- I also added, above the button calling the pager and below the container with
the 4 buttons to change DeskTopSize, a little custom widget to monitor our local
network. This is an exercise with FvwmScript.
It contains 7 ItemDraw widgets, which correspond to 7 peculiar hosts, i.e. 4
local servers, the local gateway, the boundary router of the entire building and
the first router at the entrance of the national academic network.
These widgets shall be green if the host is reachable, red if unreachable and
blue while being tested.
The testing is done by a shell script called periodically from the FvwmScript.
The script uses arping for hosts on the LAN, ping for those outside. According
to the return code it does a FvwmCommand SendToModule SendString to send a
message to the right widget to change the colour.
I hope the script does not create too many problems when the entire net goes
down because of NFS requirements (I hope it would be stuck on blue at worst).
Anyhow creating a file .fvwm/NoNetmon will temporarily stop the
periodic updates until the network comes back.
For the curious this is the .fvwm2rc
The first (top left) screenshot presents a "working" desktop (labelled B in the low right
corner), with the pager and meter subpanels of the control panel (top right) closed.
It features a couple of astronomical applications (the image display ds9 and 3 windows
of fv), a local terminal behind an editor, a remote terminal (black) almost
completely hidden,and an iconized editor
The task bar on top is open and shows the focus window (red) as well as an
icon window (blue).
The screenshot below (bottom left) presents the "Mail" desktop (so labelled). Note
the different FvwmBacker background. It features the mail client, a terminal, an editor,
a fvwm console behind it, the root menu and one submenu, plus two icons for a terminal
and an editor.
The control panel shows the procmeter3 panel open. Also my custom network monitor (the
fifth item in the control panel) emulates some hosts as being probed (blue) or off
(red) ... I just sent via fvwm console the appropriate commands.
The next screenshot (top right) presents the "Web" desktop (so labelled), featuring
a browser, a PDF viewer and a word processor, just to show their menu using the same
font (satisfactory to view).
The control panel shows both the procmeter3 and the pager panels open. The pager
overlaps the meter, and hides most of it, so the most interesting items in the meter
were placed at the bottom, in order to be visible.
The last (botttom right) screenshot presents an extreme case of the "Net" desktop.
In this case the control panel on the extreme right shows just the pager open, with
all 7 desktops used and with colours mapping FvwmBacker colorsets.
The case is extreme because it shows nested displays. The gray-background "Net"
desktop with the green xdaliclock is a Xephyr nested X server on display :1. The
purple-background "Primary" desktop with the partially hidden red xdaliclock is a
VNC viewer connected to display :2, and launched by the session on :1.
Both nested X sessions use fvwm as well, with a previous version of the control
panel (no procmeter or network indicator). Their .fvwmrc uses only 3 desktop out
of 7 (so the unused ones are gray in the pager), with a different background shade,
and a different motto :-)
Also one has one page per desktop, and the other a 2×2 page arrangement.
About MS Windows (and not only) user interfaces
From the above one can easily guess there are things which I do not like in
MS Windows (like the concept an icon is a docked application and not an individual
"document", or the fact operations are done via graphics application only where one
never remembers the sequence of keystrokes, instead of commands with arguments given
on the command line - or editing configuration files), nor in Unix/Linux window managers
(and software in general) which try to emulate it ... particularly the behaviour towards
the user for what concerns irreversible updates to the user interface, which take
place without warning, outside of user's control and with no possibility to revert to
the custom interface to which one is accustomed.
One example is truly MS Windows, and is not directly mine.
I recently assisted a disabled friend in reconfiguring
some stuff on his new PC (which was running Windows ME). The old machine had failed, and
somebody gave him a new one with Windows 8.1. Let's forget the tile vs start menu issue.
Let's just concentrate on a plain silly thing like inserting a new row in an Excel
spreadsheet above the current position. The old interface just required to pull down
a menu Insert -> Rows. The new interface has hidden the function in some non-obvious
menu, and moreover has made it such that if one accidentally clicks instead of pulling
down the new submenu it inserts ... a cell instead of a row, screwing up all relative
references in the file, which takes ages to repair. And clicking accidentally is easy
even for one which is not motion-impaired.
The solution was to install LibreOffice which has the good old stable interface.
The other example is mine, and a single word is enough: Australis !
I once accidentally clicked OK on the periodic update request of my Firefox 28
(most of the popup window was offscreen, I thought I was clicking Cancel), and I found
the Australis interface. I could not stand it for more than 5 minutes before reverting
back to version 28. Then, after some time spent comparing alternatives, I decided to
junk Firefox and go to Pale Moon !