I've tried two different full desktop environments under Linux: KDE and GNOME. I used KDE quite a lot up to and including the last 3.5 release. When KDE 4.0 happened I jumped ship and configured myself a nice little Fluxbox environment. I always had one problem with Fluxbox, though, and that was that GTK Emacs rendering was too slow; often when scrolling through a file, the display simply wouldn't update quickly enough to be able to see the contents as it moved. The only solution I had for this was to use GNOME, in which GTK Emacs rendering was fine. This all very well except for all the bloat of GNOME; it takes quite a while to start and provides lots of features that I never use.
Yesterday I realised (can't think why I hadn't thought of it before) it might be Metacity that makes GTK Emacs rendering work and I could just use Metacity by itself without the rest of GNOME. So I found out how to start an X session with just Metacity, fired up Emacs and sure enough, it works beautifully.
So I've now abandoned full desktop environments in favour of simple window managers with a few handy applications.
The main thing I had to learn was how to configure a custom X session. It turned out to be a simple matter of creating an ~/.xinitrc script which starts any programs I want running in my session and then calls exec metacity
. I also symlinked this to ~/.xsession (I'm not sure which actually does the business for GDM). Then from GDM I choose 'Run Xclients script' and I'm logged in to my custom session.
My ~/.xinitrc file looks like this:
#!/bin/bash
xset b off & xset r rate 195 60 & synclient TapButton1=1 &
export OOO_FORCE_DESKTOP=gnome
export LANG="en_GB.UTF-8"
export LC_ALL="en_GB.UTF-8"
export LANGUAGE="en_GB.UTF-8"
export LC_CTYPE="en_GB.UTF-8"
xmodmap ~/.Xmodmap & gnome-settings-daemon &
gdesklets --no-tray-icon start conkeror -daemon &
exec /usr/bin/metacity
Metacity allows me to configure keybindings using gconf and setting the /apps/metacity/global_keybindings
and keybings_commands
keys. So I have bindings for my xterm, for starting the Emacs client, for Conkeror, for gRun (a GTK run dialog to replace the one I lose by not using GNOME), for hibernating, and for logging out (just a script which quits Emacs and kills metacity).
I've also tried using gDesklets just to get a pretty clock and weather report, but I'm not sure these are really necessary.
One step closer to desktop heaven...