Fink’s xinitrc, GNOME, and KDE

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:

  1. Edit /sw/etc/xinitrc-last-hook as a superuser (again assuming a default Fink path).
  2. Put the following in it:
    #!/bin/sh
    . /usr/X11/lib/X11/xinit/xinitrc.d/98-user.sh

    and save the file.

  3. 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 :

  1. Edit /sw/etc/xinitrc-last-hook as a superuser (again assuming a default Fink path).
  2. 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.

  3. 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

  1. Edit e.g. $HOME/.xinitrc.d/zzz-gnome-session.sh .
  2. Put the following in it (assuming a default Fink setup):
    #!/bin/sh
    . /sw/bin/init.sh
    metacity &
    exec gnome-session

    then save the file.

  3. Run
    chmod a+x $HOME/.xinitrc.d/zzz-gnome-session.sh

    to make the script executable.

Rootless GNOME

  1. Edit e.g. $HOME/.xinitrc.d/zzzz-gnome-panel.sh .
  2. Put the following in it (assuming a default Fink setup):
    #!/bin/sh
    . /sw/bin/init.sh
    metacity &
    exec gnome-panel

    then save the file.

  3. Run
    chmod a+x $HOME/.xinitrc.d/zzzz-gnome-panel.sh

    to make the script executable.

KDE3

  1. Edit e.g. $HOME/.xinitrc.d/zzzzz-kde3.sh .
  2. Put the following in it (assuming a default Fink setup):
    #!/bin/sh
    . /sw/bin/init.sh
    exec startkde

    then save the file.

  3. Run
    chmod a+x $HOME/.xinitrc.d/zzzzz-kde3.sh

    to make the script executable.

KDE4

  1. Edit e.g. $HOME/.xinitrc.d/zzzzzz-kde4.sh .
  2. 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.

  3. Run
    chmod a+x $HOME/.xinitrc.d/zzzzzz-kde4.sh

    to make the script executable.

2 responses to “Fink’s xinitrc, GNOME, and KDE

  1. I’m curious to find out what blog system you are working with? I’m experiencing some minor security issues with my latest site and I’d like to find something more safe. Do you have any suggestions?

  2. Late update here. As of version 1.5-2, the xinitrc package supports running scripts in $HOME/xinitrc.d

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s