[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: howto serialize tasks in .xsession



On Sat, 2004-02-28 at 18:50, Nano Nano wrote:
> I run a hybrid desktop: gnome-control-center is installed, but not 
> metacity.  Fluxbox is my WM; but I remove gnome-session as a Session 
> Manager so I have No Session Manager.  Here is my .xsession:
> 
> #!/bin/sh
> ARGS="--hide-menubar --window-with-profile=Default"
> #gnome-control-center
> gnome-settings-daemon --oaf-activate-iid=OAFIID:GNOME_SettingsDaemon --oaf-ior-fd=21 &
> xscreensaver -nosplash &
> kdeinit &
> gbuffy &
> #xmms &
> gnome-terminal $ARGS --geometry=80x25+1+22 &
> gnome-terminal $ARGS --geometry=95x25+582+22 &
> gnome-terminal $ARGS --geometry=80x40+1+418 &
> gnome-terminal $ARGS --geometry=95x40+582+418 &
> exec fluxbox
> 
> As you can see, I used to run gnome-control-center synchronously, and 
> would double-click the Font applet, which would "wake up" the Gnome 
> settings and make themes and junk work.  But I noticed what it runs is 
> gnome-settings-daemon so I just run that directly.
> 
> The problem is I have to run gnome-settings-daemon, gbuffy, and 
> gnome-terminal all in the background, because only the final task (exec 
> fluxbox) can block.
> 
> The problem is if gbuffy or gnome-terminal starts before 
> gnome-settings-daemon, themes and various gnome-ish things are broken.  
> It's a classic race conditions.
> 
> How can I serialize the tasks?  Remember, none can block.  
> gnome-settings-daemon doesn't return.

Break them out to a script with a sleep statement. That way it'll
non-block. Changes would be something like:

~/.xsession

  #!/bin/sh
  gnome-settings-daemon --oaf-activate-iid=OAFIID:GNOME_SettingsDaemon --oaf-ior-fd=21 &
  xscreensaver -nosplash &
  kdeinit &
  gbuffy &
  ~/bin/xsession-wait &
  exec fluxbox

~/bin/xsession-wait

  #!/bin/sh
  ARGS="--hide-menubar --window-with-profile=Default"
  sleep 10
  gbuffy &
  gnome-terminal $ARGS --geometry=80x25+1+22 &
  gnome-terminal $ARGS --geometry=95x25+582+22 &
  gnome-terminal $ARGS --geometry=80x40+1+418 &
  gnome-terminal $ARGS --geometry=95x40+582+418 &

Should work, since the execution is backgrounded. Adjust delay as
required.
-- 
greg@gregfolkert.net
REMEMBER ED CURRY! http://www.iwethey.org/ed_curry

Novell's Directory Services is a competitive product to Microsoft's
Active Directory in much the same way that the Saturn V is a competitive
product to those dinky little model rockets that kids light off down at
the playfield. -- Thane Walkup

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: