#!/usr/bin/clisp -q -ansi -norc (defconstant +raw+ (let ((stream (ext:run-program "ratpoison" :input nil :output :stream :arguments '("-c" "windows (%s %l %n \"%t\" \"%c\" \"%a\")")))) (loop as l = (read stream nil) while l collect l))) (defstruct window-data precedence number title class app) (defconstant +cooked+ (loop for w in +raw+ collect (make-window-data :precedence (if (eq (car w) '*) (cadr w) (- 0 (cadr w))) :number (third w) :title (fourth w) :class (fifth w) :app (sixth w)))) (defconstant +sorted+ (sort +cooked+ #'< :key #'window-data-precedence)) (run-program "ratmenu" :input nil :output nil :arguments `("-style" "dreary" ,@(loop for w in +sorted+ append (list (format nil "~A (~A)" (window-data-title w) (window-data-class w) (window-data-app w)) (format nil "ratpoison -c \"select ~A\"" (window-data-number w)))))) ;;; Local Variables: ;;; mode: lisp ;;; outline-regexp: ";;\\*\\**" ;;; eval:(outline-minor-mode 1) ;;; End: