summaryrefslogtreecommitdiff
path: root/wm.scm
blob: 06d158122e7daaef82a6ebcda0bb5d3d61627de6 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
(define-module (wm)
  #:use-module (system foreign)
  #:export (wm-init
            wm-set-configure-notify-handler!
            wm-run
            wm-quit))

(define libschewm (dynamic-link "libschewm"))

(define (int-as-bool i)
  (not (eq? 0 i)))

(define (schewm-func return-type name args)
  (pointer->procedure
   return-type
   (dynamic-func name libschewm)
   args))

(define c/wm-init
  (schewm-func int "wm_init" '()))

(define (wm-init)
  (int-as-bool (c/wm-init)))

(define wm-quit
  (schewm-func void "wm_quit" '()))

(define wm-run
  (schewm-func void "wm_run" '()))

(define c/wm-set-configure-notify-handler
  (schewm-func void
               "wm_set_configure_notify_handler"
               (list '*)))

(define (wm-set-configure-notify-handler! handler)
  (c/wm-set-configure-notify-handler
   (procedure->pointer void
                       handler
                       (list int16 int16 uint32 uint32))))