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. --Greg -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]