This is by design, to my understanding. The old window is deleted and replaced with the new, beginning at line 673 in xenocara/app/xconsole/xconsole.c.

The OpenBSD implementation adds privilege separation to the xconsole application -- you will note there are two running processes -- however the single window (and single instance of xconsole use) is from the upstream design, as this same code can be found in the upstream source code.

Thanks for clearing that up. It was driving me nuts not knowing whether I was at fault or not. And I do have to admit, I'm not that good at code reading myself. I'd probably have searched for sth. like 'close' and then given up after a cursory glance without being any wiser...

If you'd like to watch as the code functions, which is often easier than reading the source directly, you can step through the code line by line with gdb(1).

For applications included with X, which use the OpenBSD-specific "Xenocara" build framework, you first need to obtain the source code, then create the object file structures. You don't need to build all of X.

Guidance for obtaining the Xenocara source, and for creating the object directories can be found in the release(8) man page. If you are running -release, you can download and unpack xenocara.tar.gz from your nearby mirror. Source code for -stable or -current require the use of cvs(1).

For clarity, after placing source in /usr/xenocara/:

Code:

# cd /usr/xenocara
# make bootstrap
# make obj

/usr/xenocara/README has guidance for building Xenocara source code with debugging symbols. To build xconsole:

And then you can load the unstripped binary in gdb(1) and step through the code starting with its main() function. For ease of use, after issuing the gdb step command, you can press the Enter key alone to proceed line by line.