On 10/24/05, Dennis J Perkins <[EMAIL PROTECTED]> wrote:
> I've found that gdm doesn't call .xinitrc for some reason, so
> dbus-launch never runs.

This is true, gdm does not behave the same way as issuing startx from
the console.  But you can get it to do what you want.  I have dbus
running right now from gdm.

This is what I can gather about how gdm starts up, but have a look at
the documentation for a fuller discussion
http://www.gnome.org/projects/gdm/docs/gdm.html.  Almost everything
resides in /etc/gnome/gdm, and the rest resides in
$GNOME_PREFIX/share/gdm and $GNOME_PREFIX/share/xsessions.  The main
difference here between what you want, is that gdm (and xdm I think)
are starting an Xsession.  You can make it do the same thing.

gdm starts up after running the Default script in /etc/gnome/gdm/Init.
 Then the user authenticates.  It runs the Default script in
/etc/gnome/gdm/PreSession.  Then it runs the /etc/gnome/gdm/Xsession
script.  Then it runs /etc/gnome/gdm/PostLogin/Default.  You don't
need to touch any of the Init/Pre/Post scripts, but Xsession is the
crux, and where you do most of the customization.

Xsession initializes /etc/profile, loads system and user Xresources,
keyboard setup, etc.  This is where you put stuff you want to run when
the session is going.  I have beagle, and it has a user run daemon,
beagled.  I kick this off in Xsession and it runs along until I log
out.  You could run an xterm or xclock or whatever.  I just added this
(way more than necessary):
# Run beagled if it's available
beagledaemon="`gdmwhich beagled`"
if [ -n "$beagledaemon" ] && [ -x "$beagledaemon" ]; then
    echo "$0: Starting beagle daemon: $beagledaemon"
    beagled
fi

This has to go before the eval exec $command statement.  That
statement is the main session manager.  $command is parsed from one of
two files on the base installation.  If you selected Default session,
it uses the file
$GNOME_PREFIX/share/gdm/BuiltInSessions/default.desktop.  If you
selected Gnome session, the file is
$GNOME_PREFIX/share/xsessions/gnome.desktop.

$command is what is on the Exec= line in *.desktop.  By default, this
says Exec=gnome-session for gnome.desktop.  To make this use dbus,
change it to Exec=dbus-launch --sh-syntax --exit-with-session
gnome-session.  Now gdm runs the same way that my .xinitrc file does. 
There's also a way to have a Custom session with ~/.xsession, but I
haven't bothered with that yet.

One last thing.  $GNOME_PREFIX/share/xsessions is also where you would
put any other sessions you might want like kde or xfce.  This
directory is SessionDesktopDir in gdm.conf.

Sorry about being long-winded, but I thought it would be most helpful
if I explained the whole process as best as I understand it instead of
just saying "change this line in file blah".

--
Dan
--
http://linuxfromscratch.org/mailman/listinfo/blfs-support
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to