[Ecls-list] CLX open-display

Julian Stecklina js at alien8.de
Tue Feb 24 16:48:50 UTC 2009

Juan Jose Garcia-Ripoll
<juanjose.garciaripoll at googlemail.com> writes:

> On Tue, Feb 24, 2009 at 4:09 PM, Julian Stecklina <js at alien8.de> wrote:
>> Filesystem error with pathname "build:clx;module.lisp".
>> Either
>>  1) the file does not exist, or
>>  2) we are not allow to access the file, or
>>  3) the pathname points to a broken symbolic link.
> The CLX directory had to be created before writing to module.lisp,
> which is automatically generated by compile.lsp. I did not notice this
> because this path already existed in my build directory.

It builds and seems to work now. :) One issue remains with stumpwm:
ext:setenv doesn't seem to properly terminate strings. The
code (in stumpwm's wrappers.lisp) looks something like:

(defun getenv (var)
   (ext:getenv (string var)))

(defun (setf getenv) (val var)
   (ext:putenv (string var) (string) val))

(setf (getenv "DISPLAY") (format nil "~a:~d.~d"
                                 (screen-host (current-screen))
                                 (xlib:display-display *display*)
                                 (screen-id (current-screen))))
(format t "Set DISPLAY to ~S~%" (getenv "DISPLAY"))

This gives for example:

Set DISPLAY to ":1.0¸W¸ð	{²'à7¬Q%@ë6ðég/X.HãçÊÀü§ñÚ#"

I was unable to reproduce this from a plain ECL repl, though. :-/ The
complete code is in the ecl branch at git://github.com/blitz/stumpwm.git

To try it out for yourself:
./configure --with-lisp=ecl --with-ppcre=PATH-TO-CL-PPCRE
(ignore messages about failing to build documentation)

Run Xnest or Xephyr on a separate terminal: 
Xnest -ac :1
or Xephyr -ac :1

Switch back to the first terminal and run:
DISPLAY=:1 ./stumpwm

Julian Stecklina

Always code as if the guy who ends up maintaining your code will be a
violent psychopath who knows where you live. - Martin Golding

More information about the ecl-devel mailing list