(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))))