Re: howto serialize tasks in .xsession
From: Gregory Seidman (gss+debian_at_cs.brown.edu)
Date: 02/29/04
- Previous message: MJ Inabnit: "headless firewall application recommendation"
- In reply to: Nano Nano: "howto serialize tasks in .xsession"
- Next in thread: Nano Nano: "Re: howto serialize tasks in .xsession"
- Reply: Nano Nano: "Re: howto serialize tasks in .xsession"
- Reply: Greg Folkert: "Re: howto serialize tasks in .xsession"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Sun, 29 Feb 2004 02:09:17 -0500 To: debian-user@lists.debian.org
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 debian-user-request@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
- Previous message: MJ Inabnit: "headless firewall application recommendation"
- In reply to: Nano Nano: "howto serialize tasks in .xsession"
- Next in thread: Nano Nano: "Re: howto serialize tasks in .xsession"
- Reply: Nano Nano: "Re: howto serialize tasks in .xsession"
- Reply: Greg Folkert: "Re: howto serialize tasks in .xsession"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]