Running X window programs from PM suspend-resume scripts

Serguei Miridonov mirsev at cicese.mx
Mon Mar 22 21:58:55 UTC 2010


On Monday 22 March 2010, Chris Tyler wrote:
> On Mon, 2010-03-22 at 22:38 +0200, Serguei Miridonov wrote:
> > On Monday 22 March 2010, Chris Tyler wrote:
> > > On Mon, 2010-03-22 at 21:10 +0200, Serguei Miridonov wrote:
> > > > Hello,
> > > > 
> > > > Is there a trick to run X window programs from PM
> > > > suspend-resume hooks? For example, I need to restore
> > > > keyboard mapping after suspend to RAM using
> > > > 
> > > > xkbcomp some_file.xkm :0.0
> > > > 
> > > > Running this in
> > > > 
> > > > #!/bin/bash
> > > > DISPLAY=":0.0"
> > > > export DISPLAY
> > > > case $1 in
> > > > 
> > > >     hibernate | suspend)
> > > > 	
> > > > 	;;
> > > > 	
> > > >     thaw | resume)
> > > >     
> > > >         sleep 2
> > > > 	
> > > > 	chvt 1
> > > > 	sleep 1
> > > > 	xkbcomp /etc/X11/GoodKeyMap.xkm $DISPLAY
> > > > 	;;
> > > > 	
> > > >     *)
> > > >     
> > > >         ;;
> > > > 
> > > > esac
> > > > exit 0
> > > > 
> > > > gives an error: Cannot open display ":0.0"
> > > > 
> > > > Any idea?
> > > 
> > > Sounds like a problem with auth. Try setting the XAUTHORITY
> > > environment variable, perhaps?
> > 
> > OK, I have changed the script adding the line
> > 
> > user=`who | grep -e ' :0' | sed 's/ *:0.*$//'`
> > 
> > and then running the required command as
> > 
> > su - $user -c "xkbcomp /etc/X11/GoodKeyMap.xkm $DISPLAY"
> > 
> > It works now. Is there a something simpler?
> 
> This works because, with a HOME directory specified, the xkbcomp
> command can find the ~/.Xauthority file to get the magic cookie
> for display connection authentication.
> 
> You should be able to set the XAUTHORITY environment variable to
> the absolute path of the .Xauthority file instead of using su (try
> something like: export XAUTHORITY=/home/${user}/.Xauthority)

Yes, this works too. Thanks.

Serguei




More information about the users mailing list