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

Re: howto serialize tasks in .xsession



On Sun, 2004-02-29 at 02:09, Gregory Seidman wrote:
> On Sat, Feb 28, 2004 at 03:50:17PM -0800, 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 &
>   ( sleep 5
> } 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
> [...]
> } 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.
> 
> Note the two added lines above. This is the simplest way to deal with
> that sort of thing. Adjust the length of the sleep to taste. A better
> way is to use a spinlock wrapped around lsof or netstat right after the
> gnome-settings-daemon call (note that calling it without any arguments
> works at least as well):
> 
> #...
> gnome-settings-daemon &
> GSDPID=$!
> while lsof -u$USER | awk 'BEGIN { found = 0; }
> 	($2 == "'$GSDPID'") && ($8 ~ /orbit-'$USER'/) { found = 1; next }
> 	END { exit found }'
> do
> 	sleep 1
> done
> sleep 1
> #...
> 
> This will run lsof once a second until gnome-settings-daemon has set up
> its unix socket, then sleep one extra second for safety, then proceed.
> Note that it uses the pid gnome-settings-daemon started with, so other
> instances of the daemon will be ignored.

Thanks... sometimes it pays to not go the ugly hack route. Nicely done.
-- 
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: