Fink’s xinitrc package provides similar functionality to X11 on 10.4 as is available on 10.5 and 10.6. It provides Fink packages with a straightforward way to have executables run automatically when X11 is started without modifying the system area, instead using scripts in /sw/etc/xinitrc.d (assuming a default fink setup). Moreover, when a package is removed, its script will also be removed. Currently, the following packages use it:
- dbus
- kinput2
- uim
- user-ja
- xfontpath
xinitrc is used by these packages on 10.5 and later as well as 10.4. Since dbus is in the dependency chain for both GNOME and KDE, the behavior of xinitrc is important for users of those desktop environments.
Issues
xinitrc does have a side effect that needs to be taken into account. It is set up, deliberately, to circumvent the default script setup from 10.5 or 10.6′s X11 with its own, similar, setup, cf.:
http://article.gmane.org/gmane.os.macosx.fink.devel/18879
and its default setup doesn’t search $HOME.xinitrc.d for user scripts.
Fortunately, it’s straightforward to do so, and the method provides 10.4 users with the ability to set up scripts in $HOME/.xinitrc.d, too.
Also, if you’re using xinitrc because other Fink packages Depend on it, you may lose some functionality if you need to reinstall X11 (e.g. if you’re using Xquartz on 10.5). If so, then use
fink reinstall xinitrc
to restore it.
10.5 and 10.6
Basically, we just need a way to reactivate the existing handling of $HOME/.xinitrc.d . The xinitrc package provides a couple of system administrator entry points. Let’s use one which gets processed after the script files that are installed by fink packages. We can do this via the following steps:
- Edit /sw/etc/xinitrc-last-hook as a superuser (again assuming a default Fink path).
- Put the following in it:
#!/bin/sh
. /usr/X11/lib/X11/xinit/xinitrc.d/98-user.sh
and save the file.
- That’s it! The next time you start X11, it will process any scripts in $HOME/.xinitrc.d .
10.4
10.4 requires writing the script that processes scripts in $HOME/.xinitrc.d :
- Edit /sw/etc/xinitrc-last-hook as a superuser (again assuming a default Fink path).
- Put the following in it:
#!/bin/sh
if [ -d "${HOME}/.xinitrc.d" ] ; then
for f in "${HOME}"/.xinitrc.d/*.sh ; do
[ -x "$f" ] && . "$f"
done
unset f
fi
and save the file.
- That’s it! The next time you start X11, it will process any scripts in $HOME/.xinitrc.d .
Setting up GNOME or KDE
To make sure that GNOME or KDE get started after any other apps, we will want to give their startup scripts names that get processed after anything else we want, e.g. ‘zzz-gnome.sh’.
Full GNOME Desktop
- Edit e.g. $HOME/.xinitrc.d/zzz-gnome-session.sh .
- Put the following in it (assuming a default Fink setup):
#!/bin/sh
. /sw/bin/init.sh
metacity &
exec gnome-session
then save the file.
- Run
chmod a+x $HOME/.xinitrc.d/zzz-gnome-session.sh
to make the script executable.
Rootless GNOME
- Edit e.g. $HOME/.xinitrc.d/zzzz-gnome-panel.sh .
- Put the following in it (assuming a default Fink setup):
#!/bin/sh
. /sw/bin/init.sh
metacity &
exec gnome-panel
then save the file.
- Run
chmod a+x $HOME/.xinitrc.d/zzzz-gnome-panel.sh
to make the script executable.
KDE3
- Edit e.g. $HOME/.xinitrc.d/zzzzz-kde3.sh .
- Put the following in it (assuming a default Fink setup):
#!/bin/sh
. /sw/bin/init.sh
exec startkde
then save the file.
- Run
chmod a+x $HOME/.xinitrc.d/zzzzz-kde3.sh
to make the script executable.
KDE4
- Edit e.g. $HOME/.xinitrc.d/zzzzzz-kde4.sh .
- Put the following in it (assuming a default Fink setup):
#!/bin/sh
. /sw/bin/init.sh
exec /sw/opt/kde4/x11/bin/startkde
then save the file.
- Run
chmod a+x $HOME/.xinitrc.d/zzzzzz-kde4.sh
to make the script executable.