;;; -*-Scheme-*- ;;; ;;; Display all properties of all windows (with name, type, format, ;;; and data). (require 'xlib) (define (properties) (define (tab obj n) (let* ((s (format #f "~s" obj)) (n (- n (string-length s)))) (display s) (if (positive? n) (do ((i 0 (1+ i))) ((= i n)) (display #\space))))) (define (do-window w prop) (format #t "Window ~s:~%" w) (for-each (lambda (p) (tab (atom-name (window-display w) p) 20) (display "= ") (let ((p (get-property w p #f 0 20 #f))) (tab (atom-name (window-display w) (car p)) 18) (tab (cadr p) 3) (format #t "~s~%" (caddr p)))) (vector->list prop)) (newline)) (define (do-children root) (for-each (lambda (w) (do-window w (list-properties w)) (do-children w)) (vector->list (car (query-tree root))))) (let* ((dpy (open-display)) (root (display-root-window dpy))) (unwind-protect (begin (do-window root (list-properties root)) (do-children root)) (close-display dpy)))) (properties)