<div dir="ltr">That does sound an awful headache for something that otherwise doesn't seem to be using X for anything other than dependency expectations. It seems like there should be a non-X-dependent way to do it.</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Sep 22, 2014 at 9:52 AM, Neil Van Dyke <span dir="ltr"><<a href="mailto:neil@neilvandyke.org" target="_blank">neil@neilvandyke.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Amir Ansari wrote at 09/22/2014 02:28 AM:<span class=""><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Have you tried Xvfb (<a href="http://en.wikipedia.org/wiki/Xvfb" target="_blank">http://en.wikipedia.org/wiki/<u></u>Xvfb</a>), a virtual X server? It runs headlessly, sidesteps the whole issue of having to fork the code...<br>
<br>
</blockquote>
<br></span>
I have no idea whether "xvfb" is the best way without looking closely at a particular case, but I've seen "xvfb" work in the past on production servers.  (Not for Racket, but for some R statistics tool that touched the X server, so that the tool could be used off-the-shelf, rather than maintaining a modified fork of the tool source.)<br>
<br>
If you do this, just be write your startup and shutdown scripts to be resilient and stable (e.g., wrt available ports/sockets at the time, and to shut down cleanly, and so there are no race conditions or conflicts between multiple simultaneous users), and secure (e.g., ensure that it won't accidentally listen on a public network interface, and that an attacker can't synthesize operations to the xvfb to escalate privileges or DoS, and that the xvfb can't be used to leak data between users).<br>
<br>
Neil V.<div class="HOEnZb"><div class="h5"><br>
<br>
____________________<br>
 Racket Users list:<br>
 <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/<u></u>users</a><br>
</div></div></blockquote></div><br></div>