Here's the situation:
You like using different window managers for different things. For example, sometimes you want to use
IceWM, other times
Openbox, etc. This is easy enough to do if you are using
GDM, but there's a small thing that bothers you. All the above WMs will use the same configuration files for GTK settings, but you want to use
different settings for each. For example, in Openbox you may want to use
Tango icons but you like the default Gnome icons better in IceWM.
I describe below a way you can make this happen. It's a tiny bit hackish, but it seems to work just fine. It assumes you are not using gnome-settings-daemon.
GTK settings--the easy way
First of all, make life easy for yourself and install
LXAppearance. It is part of the
LXDE desktop environment, but many distributions let you install it as a standalone package. It is the best tool I know of to adjust GTK appearance settings. You do not need LXAppearance to do what I describe below, but you will love life a little more if you have it.
Different settings per Window Manager
Here's where the fun begins. This should work with any WM that has a startup script (required) and a shutdown script (strongly recommended but not strictly necessary). I used IceWM to test the idea.
GTK settings are stored in the
.gtkrc-2.0 file in your home directory. What we are going to do at startup is redirect this by doing the following:
- create a file .gtkrc-icewm-2.0 to store the GTK settings for icewm
- copy the original .gtkrc-2.0 file to a backup location.
- delete the original .gtkrc-2.0 file
- then create a link from .gtkrc-2.0 to .gtkrc-icewm-2.0
And at session end, we will:
- remove the link, and
- restore the backed up .gtkrc-2.0
There are a few test we should do in the process to make sure we don't mess anything up. Below are experts from my
~/.icewm/startup and
~/.icewm/shutdown files that outline the needed tests.
Excerpt from
~/.icewm/startup:
### This section lets icewm use its own gtk settings ###
# it uses the following files
# .gtkrc-2.0 original gtk settings file
# .gtkrc-icewm-2.0 file where gtk settings for icewm session are stored
# .gtkrc-2.0-orig.BAK file where original .gtkrc-2.0 is stored
#
# if .gtkrc-icewm-2.0 doesn't exist, make it
if [ ! -f ~/.gtkrc-icewm-2.0 ] ; then
if [ -f ~/.gtkrc-2.0 ] ; then
cp ~/.gtkrc-2.0 ~/.gtkrc-icewm-2.0
else
touch ~/.gtkrc-icewm-2.0
fi
fi
# if .gtkrc-2.0 is a regular file, move .gtkrc-2.0 to a backup file,
# then link to .gtkrc-icewm-2.0. (This should be undone in shutdown.)
if [ -f ~/.gtkrc-2.0 ] ; then
cp ~/.gtkrc-2.0 ~/.gtkrc-2.0-orig.BAK
ln -sf ~/.gtkrc-icewm-2.0 ~/.gtkrc-2.0
fi
#
### end gtk settings stuff
Excerpt from
~/.icewm/shutdown:
# if .gtkrc-2.0 is a link then remove link and restore backed up .gtkrc-2.0
if [ -h ~/.gtkrc-2.0 ] ; then
rm ~/.gtkrc-2.0
cp ~/.gtkrc-2.0-orig.BAK ~/.gtkrc-2.0
fi
If you don't do the shutdown bits, then the link to the
.gtkrc-icewm-2.0 file will remain in place when you start a session in a different WM. This means that every WM you use that doesn't use gnome-settings-daemon (and maybe xfce-mcs-manager)
must do a restore on startup if things are not to get really wonky.