#!/bin/sh #| -*- scheme -*- exec csi -s "$0" "$@" ; acdwm |# (import (chicken condition) (acdwm util) (acdwm xlib) (acdwm keys) (acdwm events)) ;;; Configuration ;; TODO: this should go in its own file (bind "M-" (lambda (ev dpy) (let ((win (xevent-xkey-subwindow ev))) (when (some? win) (xraisewindow dpy win))))) (bind "M-b1" (lambda (ev dpy) (xraisewindow dpy (xevent-xbutton-subwindow ev)) (initialize-drag 'move ev))) (bind "M-b3" (lambda (ev dpy) (xraisewindow dpy (xevent-xbutton-subwindow ev)) (initialize-drag 'resize ev))) ;;; Main entry point (define (acdwm-setup) (or (get-display) (error "Can't capture display")) (grab-input)) (define (acdwm-cleanup) (dprint "Cleaning up")) (define (main args) (parameterize ((DEBUG #t)) (dprint "acdwm: starting up") (dynamic-wind acdwm-setup (lambda () (call/cc (lambda (k) (with-exception-handler (lambda (exn) (xclosedisplay (get-display)) (k exn)) handle-events)))) acdwm-cleanup)) (xclosedisplay (get-display)) (exit)) (cond-expand ((or chicken-script compiling) (import (chicken process-context)) (main (command-line-arguments))) (else))