[Xmonad] initialization when running xmonad using xnest
Michael Vanier
mvanier at cs.caltech.edu
Fri Aug 3 19:28:23 EDT 2007
Wow! Stefan, you never cease to amaze me.
Mike
Stefan O'Rear wrote:
> On Fri, Aug 03, 2007 at 02:09:00PM -0700, Michael Vanier wrote:
>> Huh, I think I was asking the wrong question then. I don't really want to
>> do all the things that are done in my .xinitrc file. I noticed, though,
>> that (for instance) my .Xresources are ignored inside the xnested xmonad,
>> so I have to do
>>
>> xrdb ~/.Xresources
>>
>> again to get them to work right (presumably because xnest is running X on
>> display 1, not 0). Similarly, I have to do "xsetroot -solid black" again to
>> get a black background. So I put these commands in my startup script like
>> this:
>>
>>
>> #!/bin/sh
>>
>> Xnest :1 -name "xmonad" +kb -ac -geometry 1152x768 2> /dev/null &
>> XNEST_PROC=$!
>> DISPLAY=:1
>>
>> xsetroot -display :1 -solid black
>> xrdb -display :1 $HOME/.Xresources
>>
>> /usr/local/bin/xmonad&
>> XMONAD_PROC=$!
>>
>> wait $XMONAD_PROC
>> kill $XNEST_PROC
>>
>>
>> but the xrdb and xsetroot commands did nothing. However, if I did it like
>> this:
>>
>>
>> #!/bin/sh
>>
>> Xnest :1 -name "xmonad" +kb -ac -geometry 1152x768 2> /dev/null &
>> XNEST_PROC=$!
>> DISPLAY=:1
>>
>> /usr/local/bin/xmonad&
>> XMONAD_PROC=$!
>>
>> xsetroot -display :1 -solid black
>> xrdb -display :1 $HOME/.Xresources
>>
>> wait $XMONAD_PROC
>> kill $XNEST_PROC
>>
>>
>> it works fine. I don't know why this is -- does xmonad have to be running
>> in order for the xsetroot and xrdb commands to take effect? Why should
>> that be?
>
> X11 Protocol Specification, chapter 10, paragraph 3:
>
> A server goes through a cycle of having no connections and having some connections. At every
> transition to the state of having no connections as a result of a connection closing with a Destroy
> close-down mode, the server resets its state as if it had just been started. This starts by destroying
> all lingering resources from clients that have terminated in RetainPermanent or RetainTempo-
> rary mode. It additionally includes deleting all but the predefined atom identifiers, deleting all
> properties on all root windows, resetting all device maps and attributes (key click, bell volume,
> acceleration), resetting the access control list, restoring the standard root tiles and cursors, restor-
> ing the default font path, and restoring the input focus to state PointerRoot.
>
> So after xsetroot exits, the server resets. After xrdb exits, the
> server resets. xmonad starts with a clean setup.
>
> This (mis)feature is not an issue if you use xinit/startx because xinit
> itself counts as a connected client.
>
> Stefan
More information about the Xmonad
mailing list