5
(in-package "XCLCLOCK")
7
(defvar *display* (xlib:open-default-display))
8
(defvar *screen* (xlib:display-default-screen *display*))
9
(defvar *colormap* (xlib:screen-default-colormap *screen*))
11
(defvar *font* (xlib:open-font *display* "fixed"))
14
(multiple-value-bind (width ascent)
15
(xlib:text-extents *font* "XVIIII XXXVIIII XXXVIIII")
18
:parent (xlib:screen-root *screen*)
23
:background (xlib:alloc-color *colormap*
24
(xlib:lookup-color *colormap*
27
(defvar *gcontext* (xlib:create-gcontext
30
:background (xlib:screen-white-pixel *screen*)
31
:foreground (xlib:alloc-color *colormap*
37
(defvar *background* (xlib:create-gcontext
40
:background (xlib:screen-white-pixel *screen*)
41
:foreground (xlib:alloc-color *colormap*
42
(xlib:lookup-color *colormap*
45
(defvar *palette* nil)
46
(defvar *black* (xlib:screen-black-pixel *screen*))
51
(format nil "~@R" arg)))
53
(defun clock-string ()
54
(multiple-value-bind (s m h) (decode-universal-time (get-universal-time))
55
(format nil "~a ~a ~a" (romanize h) (romanize m) (romanize s))))
57
(defun update-clockface ()
58
(let ((string (clock-string)))
59
(let ((string-width (xlib:text-width *gcontext* string)))
60
(xlib:draw-rectangle *win* *background*
62
(xlib:drawable-width *win*)
63
(xlib:drawable-height *win*)
65
(xlib:draw-glyphs *win* *gcontext*
67
(- (xlib:drawable-width *win*) string-width)
70
(- (xlib:drawable-height *win*) 10)
72
(xlib:display-force-output *display*))
75
(xlib:map-window *win*)