diff options
Diffstat (limited to 'wm.scm')
-rw-r--r-- | wm.scm | 85 |
1 files changed, 78 insertions, 7 deletions
@@ -1,6 +1,8 @@ (define-module (wm) + #:use-module (srfi srfi-9) #:use-module (system foreign) #:export (wm-init + make-config make-key make-shift-key wm-grab-keys @@ -9,14 +11,64 @@ wm-set-key-press-handler! wm-focus-prev wm-focus-next + wm-focus-close + wm-pack-left + wm-pack-right + wm-pack-top + wm-pack-bottom + wm-toggle-maximize + wm-toggle-half-left + wm-toggle-half-right + wm-toggle-half-top + wm-toggle-half-bottom + wm-toggle-top-left + wm-toggle-top-right + wm-toggle-bottom-left + wm-toggle-bottom-right + wm-set-workspace + wm-set-client-workspace + wm-client-monitor-prev + wm-client-monitor-next wm-run wm-quit)) -(define libschewm (dynamic-link "libschewm")) - +;; Configuration record +(define-record-type <wm-config> + (make-config + inner-border-width + outer-border-width + magnet-border-width + offset-x + offset-y + offset-width + offset-height + focused-color + unfocused-color + unkillable-color + empty-color + outer-color) + wm-config? + (inner-border-width config-inner-border-width set-config-inner-border-width!) + (outer-border-width config-outer-border-width set-config-outer-border-width!) + (magnet-border-width config-magnet-border-width set-config-magnet-border-width!) + (offset-x config-offset-x set-config-offset-x!) + (offset-y config-offset-y set-config-offset-y!) + (offset-width config-offset-width set-config-offset-width!) + (offset-height config-offset-height set-config-offset-height!) + (focused-color config-focused-color set-config-focused-color!) + (unfocused-color config-unfocused-color set-config-unfocused-color!) + (unkillable-color config-unkillable-color set-config-unkillable-color) + (empty-color config-empty-color set-config-empty-color) + (outer-color config-outer-color set-config-outer-color)) + +;; Misc. utility functions (define (uint8-as-bool i) (not (eq? 0 i))) +;; Link to schewm shared lib +(define libschewm (dynamic-link "libschewm")) + +;; Helper to easily define calls into schewm C code (define (schewm-func return-type name args) (pointer->procedure return-type @@ -35,19 +87,19 @@ (define wm-run (schewm-func void "wm_run" '())) -(define c/key-from-str +(define c/keysym-from-str (schewm-func uint32 "keysym_from_str" (list '*))) -(define (key-from-str s) - (c/key-from-str (string->pointer s))) +(define (string->key s) + (c/keysym-from-str (string->pointer s))) (define (make-key key) - (list #f (key-from-str key))) + (list #f (string->key key))) (define (make-shift-key key) - (list #t (key-from-str key))) + (list #t (string->key key))) (define wm-grab-key-with-mod (schewm-func void "wm_grab_key_with_mod" @@ -88,3 +140,22 @@ handler (list uint16 uint8)))) +;; XXX: Dummy +(define (wm-focus-close) '()) +(define (wm-pack-left) '()) +(define (wm-pack-right) '()) +(define (wm-pack-top) '()) +(define (wm-pack-bottom) '()) +(define (wm-toggle-maximize) '()) +(define (wm-toggle-half-left) '()) +(define (wm-toggle-half-right) '()) +(define (wm-toggle-half-top) '()) +(define (wm-toggle-half-bottom) '()) +(define (wm-toggle-top-left) '()) +(define (wm-toggle-top-right) '()) +(define (wm-toggle-bottom-left) '()) +(define (wm-toggle-bottom-right) '()) +(define (wm-set-workspace) '()) +(define (wm-set-client-workspace) '()) +(define (wm-client-monitor-prev) '()) +(define (wm-client-monitor-next) '()) |