2009-04-18 02:56:29 -04:00
|
|
|
! Copyright (C) 2005, 2009 Eduardo Cavazos, Slava Pestov.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2009-04-18 03:39:55 -04:00
|
|
|
USING: alien.strings continuations io
|
|
|
|
io.encodings.ascii kernel namespaces x11.xlib x11.io
|
|
|
|
vocabs vocabs.loader ;
|
2010-05-12 21:07:33 -04:00
|
|
|
FROM: alien.c-types => c-bool> ;
|
2009-04-18 02:56:29 -04:00
|
|
|
IN: x11
|
|
|
|
|
|
|
|
SYMBOL: dpy
|
|
|
|
SYMBOL: scr
|
|
|
|
SYMBOL: root
|
|
|
|
|
|
|
|
: init-locale ( -- )
|
|
|
|
LC_ALL "" setlocale [ "setlocale() failed" print flush ] unless
|
2010-05-12 21:07:33 -04:00
|
|
|
XSupportsLocale c-bool> [ "XSupportsLocale() failed" print flush ] unless ;
|
2009-04-18 02:56:29 -04:00
|
|
|
|
|
|
|
: flush-dpy ( -- ) dpy get XFlush drop ;
|
|
|
|
|
|
|
|
: x-atom ( string -- atom ) [ dpy get ] dip 0 XInternAtom ;
|
|
|
|
|
|
|
|
: check-display ( alien -- alien' )
|
|
|
|
[ "Cannot connect to X server - check $DISPLAY" throw ] unless* ;
|
|
|
|
|
|
|
|
: init-x ( display-string -- )
|
|
|
|
init-locale
|
|
|
|
XOpenDisplay check-display dpy set-global
|
|
|
|
dpy get XDefaultScreen scr set-global
|
|
|
|
dpy get scr get XRootWindow root set-global
|
|
|
|
init-x-io ;
|
|
|
|
|
|
|
|
: close-x ( -- ) dpy get XCloseDisplay drop ;
|
|
|
|
|
|
|
|
: with-x ( display-string quot -- )
|
2019-04-22 10:49:05 -04:00
|
|
|
[ init-x ] dip [ close-x ] finally ; inline
|
2009-04-18 02:56:29 -04:00
|
|
|
|
2010-04-18 15:29:24 -04:00
|
|
|
{ "x11" "io.backend.unix" } "x11.io.unix" require-when
|