From pbrochard at common-lisp.net Tue Feb 1 22:08:03 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Tue, 01 Feb 2011 17:08:03 -0500 Subject: [clfswm-cvs] r397 - in clfswm: . doc src Message-ID: Author: pbrochard Date: Tue Feb 1 17:08:02 2011 New Revision: 397 Log: src/clfswm-util.lisp (run-or-raise): New function (thanks to Desmond O. Chang). Modified: clfswm/ChangeLog clfswm/doc/dot-clfswmrc clfswm/src/clfswm-circulate-mode.lisp clfswm/src/clfswm-internal.lisp clfswm/src/clfswm-util.lisp Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Tue Feb 1 17:08:02 2011 @@ -1,3 +1,10 @@ +2011-02-01 Desmond O. Chang + + * src/clfswm-util.lisp (run-or-raise): New function (thanks to + Desmond O. Chang). + + * src/clfswm-internal.lisp (with-all-*): add a nil block. + 2011-01-28 Desmond O. Chang * src/clfswm-util.lisp (xdg-config-home): XDG_CONFIG_HOME should Modified: clfswm/doc/dot-clfswmrc ============================================================================== --- clfswm/doc/dot-clfswmrc (original) +++ clfswm/doc/dot-clfswmrc Tue Feb 1 17:08:02 2011 @@ -57,11 +57,31 @@ ;;; Binding example: Undefine Control-F1 and define Control-F5 as a ;;; new binding in main mode ;;; -;;; See bindings.lisp, bindings-second-mode.lisp and bindings-pager.lisp -;;; for all default bindings definitions. +;;; See bindings.lisp, bindings-second-mode.lisp for all default bindings definitions. +;; +;;(defun $start-emacs () +;; "Run or raise emacs" +;; (setf *second-mode-leave-function* +;; (lambda () +;; (run-or-raise (lambda (win) (string-equal "emacs" +;; (xlib:get-wm-class win))) +;; (lambda () (do-shell "cd $HOME && exec emacsclient -c"))))) +;; (leave-second-mode)) +;; +;;(defun $start-conkeror () +;; "Run or raise conkeror" +;; (setf *second-mode-leave-function* +;; (lambda () +;; (run-or-raise (lambda (win) (string-equal "Navigator" +;; (xlib:get-wm-class win))) +;; (lambda () (do-shell "cd $HOME && exec conkeror"))))) +;; (leave-second-mode)) +;; ;;(defun binding-example () ;; (undefine-main-key ("F1" :mod-1)) ;; (define-main-key ("F5" :mod-1) 'help-on-clfswm) +;; (define-second-key ("e") '$start-emacs) +;; (define-second-key ("c") '$start-conkeror) ;; ;; Binding example for apwal ;; (define-second-key (#\Space) ;; (defun tpm-apwal () Modified: clfswm/src/clfswm-circulate-mode.lisp ============================================================================== --- clfswm/src/clfswm-circulate-mode.lisp (original) +++ clfswm/src/clfswm-circulate-mode.lisp Tue Feb 1 17:08:02 2011 @@ -76,7 +76,7 @@ (let ((len (length *circulate-orig*))) (when (plusp len) (let ((elem (nth (mod (incf *circulate-hit* direction) len) *circulate-orig*))) - (setf child (nconc (list elem) (child-remove elem *circulate-orig*))))) + (setf child (cons elem (child-remove elem *circulate-orig*))))) (show-all-children) (draw-circulate-mode-window)))) @@ -94,7 +94,7 @@ (when (plusp len) (when (frame-p *circulate-parent*) (let ((elem (nth (mod (incf *circulate-hit* direction) len) *circulate-orig*))) - (setf (frame-child *circulate-parent*) (nconc (list elem) (child-remove elem *circulate-orig*)) + (setf (frame-child *circulate-parent*) (cons elem (child-remove elem *circulate-orig*)) *current-child* (frame-selected-child *circulate-parent*)))) (when frame-is-root? (setf *current-root* *current-child*)))) @@ -111,7 +111,7 @@ (no-focus) (with-slots (child) selected-child (let ((elem (first (last child)))) - (setf child (nconc (list elem) (child-remove elem child))) + (setf child (cons elem (child-remove elem child))) (show-all-children selected-child) (draw-circulate-mode-window))))))) Modified: clfswm/src/clfswm-internal.lisp ============================================================================== --- clfswm/src/clfswm-internal.lisp (original) +++ clfswm/src/clfswm-internal.lisp Tue Feb 1 17:08:02 2011 @@ -260,49 +260,53 @@ (defmacro with-all-children ((root child) &body body) (let ((rec (gensym)) (sub-child (gensym))) - `(labels ((,rec (,child) - , at body - (when (frame-p ,child) - (dolist (,sub-child (reverse (frame-child ,child))) - (,rec ,sub-child))))) - (,rec ,root)))) + `(block nil + (labels ((,rec (,child) + , at body + (when (frame-p ,child) + (dolist (,sub-child (reverse (frame-child ,child))) + (,rec ,sub-child))))) + (,rec ,root))))) ;; (with-all-children (*root-frame* child) (typecase child (xlib:window (print child)) (frame (print (frame-number child))))) (defmacro with-all-children-reversed ((root child) &body body) (let ((rec (gensym)) (sub-child (gensym))) - `(labels ((,rec (,child) - , at body - (when (frame-p ,child) - (dolist (,sub-child (frame-child ,child)) - (,rec ,sub-child))))) - (,rec ,root)))) + `(block nil + (labels ((,rec (,child) + , at body + (when (frame-p ,child) + (dolist (,sub-child (frame-child ,child)) + (,rec ,sub-child))))) + (,rec ,root))))) ;; (with-all-frames (*root-frame* frame) (print (frame-number frame))) (defmacro with-all-frames ((root frame) &body body) (let ((rec (gensym)) (child (gensym))) - `(labels ((,rec (,frame) - (when (frame-p ,frame) - , at body - (dolist (,child (reverse (frame-child ,frame))) - (,rec ,child))))) - (,rec ,root)))) + `(block nil + (labels ((,rec (,frame) + (when (frame-p ,frame) + , at body + (dolist (,child (reverse (frame-child ,frame))) + (,rec ,child))))) + (,rec ,root))))) ;; (with-all-windows (*root-frame* window) (print window)) (defmacro with-all-windows ((root window) &body body) (let ((rec (gensym)) (child (gensym))) - `(labels ((,rec (,window) - (when (xlib:window-p ,window) - , at body) - (when (frame-p ,window) - (dolist (,child (reverse (frame-child ,window))) - (,rec ,child))))) - (,rec ,root)))) + `(block nil + (labels ((,rec (,window) + (when (xlib:window-p ,window) + , at body) + (when (frame-p ,window) + (dolist (,child (reverse (frame-child ,window))) + (,rec ,child))))) + (,rec ,root))))) @@ -310,24 +314,26 @@ (defmacro with-all-windows-frames ((root child) body-window body-frame) (let ((rec (gensym)) (sub-child (gensym))) - `(labels ((,rec (,child) - (typecase ,child - (xlib:window ,body-window) - (frame ,body-frame - (dolist (,sub-child (reverse (frame-child ,child))) - (,rec ,sub-child)))))) - (,rec ,root)))) + `(block nil + (labels ((,rec (,child) + (typecase ,child + (xlib:window ,body-window) + (frame ,body-frame + (dolist (,sub-child (reverse (frame-child ,child))) + (,rec ,sub-child)))))) + (,rec ,root))))) (defmacro with-all-windows-frames-and-parent ((root child parent) body-window body-frame) (let ((rec (gensym)) (sub-child (gensym))) - `(labels ((,rec (,child ,parent) - (typecase ,child - (xlib:window ,body-window) - (frame ,body-frame - (dolist (,sub-child (reverse (frame-child ,child))) - (,rec ,sub-child ,child)))))) - (,rec ,root nil)))) + `(block nil + (labels ((,rec (,child ,parent) + (typecase ,child + (xlib:window ,body-window) + (frame ,body-frame + (dolist (,sub-child (reverse (frame-child ,child))) + (,rec ,sub-child ,child)))))) + (,rec ,root nil))))) @@ -1057,3 +1063,19 @@ (pushnew (xlib:window-id win) id-list)))))) (netwm-set-client-list id-list)) (setf *in-process-existing-windows* nil)) + + +;;; Child order manipulation functions +(defun put-child-on-top (child parent) + "Put the child on top of its parent children" + (when (frame-p parent) + (setf (frame-child parent) (cons child (child-remove child (frame-child parent))) + (frame-selected-pos parent) 0))) + +(defun put-child-on-bottom (child parent) + "Put the child at the bottom of its parent children" + (when (frame-p parent) + (setf (frame-child parent) (append (child-remove child (frame-child parent)) (list child)) + (frame-selected-pos parent) 0))) + + Modified: clfswm/src/clfswm-util.lisp ============================================================================== --- clfswm/src/clfswm-util.lisp (original) +++ clfswm/src/clfswm-util.lisp Tue Feb 1 17:08:02 2011 @@ -1512,3 +1512,22 @@ (open-notify-window '(("Welcome to CLFSWM" "yellow") "Press Alt+F1 for help")) (add-timer *notify-window-delay* #'close-notify-window)) + + +;;; Run or raise functions +(defun run-or-raise (raisep run-fn &key (maximized nil)) + (let ((window (with-all-windows (*root-frame* win) + (when (funcall raisep win) + (return win))))) + (if window + (let ((parent (find-parent-frame window))) + (hide-all-children *current-root*) + (setf *current-child* parent) + (put-child-on-top window parent) + (when maximized + (setf *current-root* parent)) + (focus-all-children window parent) + (show-all-children *current-root*)) + (funcall run-fn)))) + + From pbrochard at common-lisp.net Sat Feb 5 21:07:15 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Sat, 05 Feb 2011 16:07:15 -0500 Subject: [clfswm-cvs] r398 - in clfswm: . src Message-ID: Author: pbrochard Date: Sat Feb 5 16:07:14 2011 New Revision: 398 Log: src/keysyms.lisp: Add extended keysyms from stumpwm. Modified: clfswm/ChangeLog clfswm/src/keysyms.lisp Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Sat Feb 5 16:07:14 2011 @@ -1,3 +1,7 @@ +2011-02-05 Desmond O. Chang + + * src/keysyms.lisp: Add extended keysyms from stumpwm. + 2011-02-01 Desmond O. Chang * src/clfswm-util.lisp (run-or-raise): New function (thanks to Modified: clfswm/src/keysyms.lisp ============================================================================== --- clfswm/src/keysyms.lisp (original) +++ clfswm/src/keysyms.lisp Sat Feb 5 16:07:14 2011 @@ -1757,3 +1757,332 @@ (cl-define-keysym #x1002247 "notapproxeq") ;U+2247 NOT ALMOST EQUAL TO (cl-define-keysym #x1002262 "notidentical") ;U+2262 NOT IDENTICAL TO (cl-define-keysym #x1002263 "stricteq") ;U+2263 STRICTLY EQUIVALENT TO + +;; A bunch of extended keysyms + +(cl-define-keysym #x100000A8 "hpmute_acute") +(cl-define-keysym #x100000A9 "hpmute_grave") +(cl-define-keysym #x100000AA "hpmute_asciicircum") +(cl-define-keysym #x100000AB "hpmute_diaeresis") +(cl-define-keysym #x100000AC "hpmute_asciitilde") +(cl-define-keysym #x100000AF "hplira") +(cl-define-keysym #x100000BE "hpguilder") +(cl-define-keysym #x100000EE "hpYdiaeresis") +(cl-define-keysym #x100000EE "hpIO") +(cl-define-keysym #x100000F6 "hplongminus") +(cl-define-keysym #x100000FC "hpblock") +(cl-define-keysym #x1000FF00 "apLineDel") +(cl-define-keysym #x1000FF01 "apCharDel") +(cl-define-keysym #x1000FF02 "apCopy") +(cl-define-keysym #x1000FF03 "apCut") +(cl-define-keysym #x1000FF04 "apPaste") +(cl-define-keysym #x1000FF05 "apMove") +(cl-define-keysym #x1000FF06 "apGrow") +(cl-define-keysym #x1000FF07 "apCmd") +(cl-define-keysym #x1000FF08 "apShell") +(cl-define-keysym #x1000FF09 "apLeftBar") +(cl-define-keysym #x1000FF0A "apRightBar") +(cl-define-keysym #x1000FF0B "apLeftBox") +(cl-define-keysym #x1000FF0C "apRightBox") +(cl-define-keysym #x1000FF0D "apUpBox") +(cl-define-keysym #x1000FF0E "apDownBox") +(cl-define-keysym #x1000FF0F "apPop") +(cl-define-keysym #x1000FF10 "apRead") +(cl-define-keysym #x1000FF11 "apEdit") +(cl-define-keysym #x1000FF12 "apSave") +(cl-define-keysym #x1000FF13 "apExit") +(cl-define-keysym #x1000FF14 "apRepeat") +(cl-define-keysym #x1000FF48 "hpModelock1") +(cl-define-keysym #x1000FF49 "hpModelock2") +(cl-define-keysym #x1000FF6C "hpReset") +(cl-define-keysym #x1000FF6D "hpSystem") +(cl-define-keysym #x1000FF6E "hpUser") +(cl-define-keysym #x1000FF6F "hpClearLine") +(cl-define-keysym #x1000FF70 "hpInsertLine") +(cl-define-keysym #x1000FF71 "hpDeleteLine") +(cl-define-keysym #x1000FF72 "hpInsertChar") +(cl-define-keysym #x1000FF73 "hpDeleteChar") +(cl-define-keysym #x1000FF74 "hpBackTab") +(cl-define-keysym #x1000FF75 "hpKP_BackTab") +(cl-define-keysym #x1000FFA8 "apKP_parenleft") +(cl-define-keysym #x1000FFA9 "apKP_parenright") +(cl-define-keysym #x10004001 "I2ND_FUNC_L") +(cl-define-keysym #x10004002 "I2ND_FUNC_R") +(cl-define-keysym #x10004003 "IREMOVE") +(cl-define-keysym #x10004004 "IREPEAT") +(cl-define-keysym #x10004101 "IA1") +(cl-define-keysym #x10004102 "IA2") +(cl-define-keysym #x10004103 "IA3") +(cl-define-keysym #x10004104 "IA4") +(cl-define-keysym #x10004105 "IA5") +(cl-define-keysym #x10004106 "IA6") +(cl-define-keysym #x10004107 "IA7") +(cl-define-keysym #x10004108 "IA8") +(cl-define-keysym #x10004109 "IA9") +(cl-define-keysym #x1000410A "IA10") +(cl-define-keysym #x1000410B "IA11") +(cl-define-keysym #x1000410C "IA12") +(cl-define-keysym #x1000410D "IA13") +(cl-define-keysym #x1000410E "IA14") +(cl-define-keysym #x1000410F "IA15") +(cl-define-keysym #x10004201 "IB1") +(cl-define-keysym #x10004202 "IB2") +(cl-define-keysym #x10004203 "IB3") +(cl-define-keysym #x10004204 "IB4") +(cl-define-keysym #x10004205 "IB5") +(cl-define-keysym #x10004206 "IB6") +(cl-define-keysym #x10004207 "IB7") +(cl-define-keysym #x10004208 "IB8") +(cl-define-keysym #x10004209 "IB9") +(cl-define-keysym #x1000420A "IB10") +(cl-define-keysym #x1000420B "IB11") +(cl-define-keysym #x1000420C "IB12") +(cl-define-keysym #x1000420D "IB13") +(cl-define-keysym #x1000420E "IB14") +(cl-define-keysym #x1000420F "IB15") +(cl-define-keysym #x10004210 "IB16") +(cl-define-keysym #x1000FF00 "DRemove") +(cl-define-keysym #x1000FEB0 "Dring_accent") +(cl-define-keysym #x1000FE5E "Dcircumflex_accent") +(cl-define-keysym #x1000FE2C "Dcedilla_accent") +(cl-define-keysym #x1000FE27 "Dacute_accent") +(cl-define-keysym #x1000FE60 "Dgrave_accent") +(cl-define-keysym #x1000FE7E "Dtilde") +(cl-define-keysym #x1000FE22 "Ddiaeresis") +(cl-define-keysym #x1004FF02 "osfCopy") +(cl-define-keysym #x1004FF03 "osfCut") +(cl-define-keysym #x1004FF04 "osfPaste") +(cl-define-keysym #x1004FF07 "osfBackTab") +(cl-define-keysym #x1004FF08 "osfBackSpace") +(cl-define-keysym #x1004FF0B "osfClear") +(cl-define-keysym #x1004FF1B "osfEscape") +(cl-define-keysym #x1004FF31 "osfAddMode") +(cl-define-keysym #x1004FF32 "osfPrimaryPaste") +(cl-define-keysym #x1004FF33 "osfQuickPaste") +(cl-define-keysym #x1004FF40 "osfPageLeft") +(cl-define-keysym #x1004FF41 "osfPageUp") +(cl-define-keysym #x1004FF42 "osfPageDown") +(cl-define-keysym #x1004FF43 "osfPageRight") +(cl-define-keysym #x1004FF44 "osfActivate") +(cl-define-keysym #x1004FF45 "osfMenuBar") +(cl-define-keysym #x1004FF51 "osfLeft") +(cl-define-keysym #x1004FF52 "osfUp") +(cl-define-keysym #x1004FF53 "osfRight") +(cl-define-keysym #x1004FF54 "osfDown") +(cl-define-keysym #x1004FF55 "osfPrior") +(cl-define-keysym #x1004FF56 "osfNext") +(cl-define-keysym #x1004FF57 "osfEndLine") +(cl-define-keysym #x1004FF58 "osfBeginLine") +(cl-define-keysym #x1004FF59 "osfEndData") +(cl-define-keysym #x1004FF5A "osfBeginData") +(cl-define-keysym #x1004FF5B "osfPrevMenu") +(cl-define-keysym #x1004FF5C "osfNextMenu") +(cl-define-keysym #x1004FF5D "osfPrevField") +(cl-define-keysym #x1004FF5E "osfNextField") +(cl-define-keysym #x1004FF60 "osfSelect") +(cl-define-keysym #x1004FF63 "osfInsert") +(cl-define-keysym #x1004FF65 "osfUndo") +(cl-define-keysym #x1004FF67 "osfMenu") +(cl-define-keysym #x1004FF69 "osfCancel") +(cl-define-keysym #x1004FF6A "osfHelp") +(cl-define-keysym #x1004FF71 "osfSelectAll") +(cl-define-keysym #x1004FF72 "osfDeselectAll") +(cl-define-keysym #x1004FF73 "osfReselect") +(cl-define-keysym #x1004FF74 "osfExtend") +(cl-define-keysym #x1004FF78 "osfRestore") +(cl-define-keysym #x1004FF7E "osfSwitchDirection") +(cl-define-keysym #x1004FFF5 "osfPriorMinor") +(cl-define-keysym #x1004FFF6 "osfNextMinor") +(cl-define-keysym #x1004FFF7 "osfRightLine") +(cl-define-keysym #x1004FFF8 "osfLeftLine") +(cl-define-keysym #x1004FFFF "osfDelete") +(cl-define-keysym #x1005FF00 "SunFA_Grave") +(cl-define-keysym #x1005FF01 "SunFA_Circum") +(cl-define-keysym #x1005FF02 "SunFA_Tilde") +(cl-define-keysym #x1005FF03 "SunFA_Acute") +(cl-define-keysym #x1005FF04 "SunFA_Diaeresis") +(cl-define-keysym #x1005FF05 "SunFA_Cedilla") +(cl-define-keysym #x1005FF10 "SunF36") +(cl-define-keysym #x1005FF11 "SunF37") +(cl-define-keysym #x1005FF60 "SunSys_Req") +(cl-define-keysym #x1005FF70 "SunProps") +(cl-define-keysym #x1005FF71 "SunFront") +(cl-define-keysym #x1005FF72 "SunCopy") +(cl-define-keysym #x1005FF73 "SunOpen") +(cl-define-keysym #x1005FF74 "SunPaste") +(cl-define-keysym #x1005FF75 "SunCut") +(cl-define-keysym #x1005FF76 "SunPowerSwitch") +(cl-define-keysym #x1005FF77 "SunAudioLowerVolume") +(cl-define-keysym #x1005FF78 "SunAudioMute") +(cl-define-keysym #x1005FF79 "SunAudioRaiseVolume") +(cl-define-keysym #x1005FF7A "SunVideoDegauss") +(cl-define-keysym #x1005FF7B "SunVideoLowerBrightness") +(cl-define-keysym #x1005FF7C "SunVideoRaiseBrightness") +(cl-define-keysym #x1005FF7D "SunPowerSwitchShift") +(cl-define-keysym #xFF20 "SunCompose") +(cl-define-keysym #xFF55 "SunPageUp") +(cl-define-keysym #xFF56 "SunPageDown") +(cl-define-keysym #xFF61 "SunPrint_Screen") +(cl-define-keysym #xFF65 "SunUndo") +(cl-define-keysym #xFF66 "SunAgain") +(cl-define-keysym #xFF68 "SunFind") +(cl-define-keysym #xFF69 "SunStop") +(cl-define-keysym #xFF7E "SunAltGraph") +(cl-define-keysym #x1006FF00 "WYSetup") +(cl-define-keysym #x1006FF00 "ncdSetup") +(cl-define-keysym #x10070001 "XeroxPointerButton1") +(cl-define-keysym #x10070002 "XeroxPointerButton2") +(cl-define-keysym #x10070003 "XeroxPointerButton3") +(cl-define-keysym #x10070004 "XeroxPointerButton4") +(cl-define-keysym #x10070005 "XeroxPointerButton5") +(cl-define-keysym #x1008FF01 "XF86ModeLock") +(cl-define-keysym #x1008FF10 "XF86Standby") +(cl-define-keysym #x1008FF11 "XF86AudioLowerVolume") +(cl-define-keysym #x1008FF12 "XF86AudioMute") +(cl-define-keysym #x1008FF13 "XF86AudioRaiseVolume") +(cl-define-keysym #x1008FF14 "XF86AudioPlay") +(cl-define-keysym #x1008FF15 "XF86AudioStop") +(cl-define-keysym #x1008FF16 "XF86AudioPrev") +(cl-define-keysym #x1008FF17 "XF86AudioNext") +(cl-define-keysym #x1008FF18 "XF86HomePage") +(cl-define-keysym #x1008FF19 "XF86Mail") +(cl-define-keysym #x1008FF1A "XF86Start") +(cl-define-keysym #x1008FF1B "XF86Search") +(cl-define-keysym #x1008FF1C "XF86AudioRecord") +(cl-define-keysym #x1008FF1D "XF86Calculator") +(cl-define-keysym #x1008FF1E "XF86Memo") +(cl-define-keysym #x1008FF1F "XF86ToDoList") +(cl-define-keysym #x1008FF20 "XF86Calendar") +(cl-define-keysym #x1008FF21 "XF86PowerDown") +(cl-define-keysym #x1008FF22 "XF86ContrastAdjust") +(cl-define-keysym #x1008FF23 "XF86RockerUp") +(cl-define-keysym #x1008FF24 "XF86RockerDown") +(cl-define-keysym #x1008FF25 "XF86RockerEnter") +(cl-define-keysym #x1008FF26 "XF86Back") +(cl-define-keysym #x1008FF27 "XF86Forward") +(cl-define-keysym #x1008FF28 "XF86Stop") +(cl-define-keysym #x1008FF29 "XF86Refresh") +(cl-define-keysym #x1008FF2A "XF86PowerOff") +(cl-define-keysym #x1008FF2B "XF86WakeUp") +(cl-define-keysym #x1008FF2C "XF86Eject") +(cl-define-keysym #x1008FF2D "XF86ScreenSaver") +(cl-define-keysym #x1008FF2E "XF86WWW") +(cl-define-keysym #x1008FF2F "XF86Sleep") +(cl-define-keysym #x1008FF30 "XF86Favorites") +(cl-define-keysym #x1008FF31 "XF86AudioPause") +(cl-define-keysym #x1008FF32 "XF86AudioMedia") +(cl-define-keysym #x1008FF33 "XF86MyComputer") +(cl-define-keysym #x1008FF34 "XF86VendorHome") +(cl-define-keysym #x1008FF35 "XF86LightBulb") +(cl-define-keysym #x1008FF36 "XF86Shop") +(cl-define-keysym #x1008FF37 "XF86History") +(cl-define-keysym #x1008FF38 "XF86OpenURL") +(cl-define-keysym #x1008FF39 "XF86AddFavorite") +(cl-define-keysym #x1008FF3A "XF86HotLinks") +(cl-define-keysym #x1008FF3B "XF86BrightnessAdjust") +(cl-define-keysym #x1008FF3C "XF86Finance") +(cl-define-keysym #x1008FF3D "XF86Community") +(cl-define-keysym #x1008FF3E "XF86AudioRewind") +(cl-define-keysym #x1008FF3F "XF86BackForward") +(cl-define-keysym #x1008FF40 "XF86Launch0") +(cl-define-keysym #x1008FF41 "XF86Launch1") +(cl-define-keysym #x1008FF42 "XF86Launch2") +(cl-define-keysym #x1008FF43 "XF86Launch3") +(cl-define-keysym #x1008FF44 "XF86Launch4") +(cl-define-keysym #x1008FF45 "XF86Launch5") +(cl-define-keysym #x1008FF46 "XF86Launch6") +(cl-define-keysym #x1008FF47 "XF86Launch7") +(cl-define-keysym #x1008FF48 "XF86Launch8") +(cl-define-keysym #x1008FF49 "XF86Launch9") +(cl-define-keysym #x1008FF4A "XF86LaunchA") +(cl-define-keysym #x1008FF4B "XF86LaunchB") +(cl-define-keysym #x1008FF4C "XF86LaunchC") +(cl-define-keysym #x1008FF4D "XF86LaunchD") +(cl-define-keysym #x1008FF4E "XF86LaunchE") +(cl-define-keysym #x1008FF4F "XF86LaunchF") +(cl-define-keysym #x1008FF50 "XF86ApplicationLeft") +(cl-define-keysym #x1008FF51 "XF86ApplicationRight") +(cl-define-keysym #x1008FF52 "XF86Book") +(cl-define-keysym #x1008FF53 "XF86CD") +(cl-define-keysym #x1008FF54 "XF86Calculater") +(cl-define-keysym #x1008FF55 "XF86Clear") +(cl-define-keysym #x1008FF56 "XF86Close") +(cl-define-keysym #x1008FF57 "XF86Copy") +(cl-define-keysym #x1008FF58 "XF86Cut") +(cl-define-keysym #x1008FF59 "XF86Display") +(cl-define-keysym #x1008FF5A "XF86DOS") +(cl-define-keysym #x1008FF5B "XF86Documents") +(cl-define-keysym #x1008FF5C "XF86Excel") +(cl-define-keysym #x1008FF5D "XF86Explorer") +(cl-define-keysym #x1008FF5E "XF86Game") +(cl-define-keysym #x1008FF5F "XF86Go") +(cl-define-keysym #x1008FF60 "XF86iTouch") +(cl-define-keysym #x1008FF61 "XF86LogOff") +(cl-define-keysym #x1008FF62 "XF86Market") +(cl-define-keysym #x1008FF63 "XF86Meeting") +(cl-define-keysym #x1008FF65 "XF86MenuKB") +(cl-define-keysym #x1008FF66 "XF86MenuPB") +(cl-define-keysym #x1008FF67 "XF86MySites") +(cl-define-keysym #x1008FF68 "XF86New") +(cl-define-keysym #x1008FF69 "XF86News") +(cl-define-keysym #x1008FF6A "XF86OfficeHome") +(cl-define-keysym #x1008FF6B "XF86Open") +(cl-define-keysym #x1008FF6C "XF86Option") +(cl-define-keysym #x1008FF6D "XF86Paste") +(cl-define-keysym #x1008FF6E "XF86Phone") +(cl-define-keysym #x1008FF70 "XF86Q") +(cl-define-keysym #x1008FF72 "XF86Reply") +(cl-define-keysym #x1008FF73 "XF86Reload") +(cl-define-keysym #x1008FF74 "XF86RotateWindows") +(cl-define-keysym #x1008FF75 "XF86RotationPB") +(cl-define-keysym #x1008FF76 "XF86RotationKB") +(cl-define-keysym #x1008FF77 "XF86Save") +(cl-define-keysym #x1008FF78 "XF86ScrollUp") +(cl-define-keysym #x1008FF79 "XF86ScrollDown") +(cl-define-keysym #x1008FF7A "XF86ScrollClick") +(cl-define-keysym #x1008FF7B "XF86Send") +(cl-define-keysym #x1008FF7C "XF86Spell") +(cl-define-keysym #x1008FF7D "XF86SplitScreen") +(cl-define-keysym #x1008FF7E "XF86Support") +(cl-define-keysym #x1008FF7F "XF86TaskPane") +(cl-define-keysym #x1008FF80 "XF86Terminal") +(cl-define-keysym #x1008FF81 "XF86Tools") +(cl-define-keysym #x1008FF82 "XF86Travel") +(cl-define-keysym #x1008FF84 "XF86UserPB") +(cl-define-keysym #x1008FF85 "XF86User1KB") +(cl-define-keysym #x1008FF86 "XF86User2KB") +(cl-define-keysym #x1008FF87 "XF86Video") +(cl-define-keysym #x1008FF88 "XF86WheelButton") +(cl-define-keysym #x1008FF89 "XF86Word") +(cl-define-keysym #x1008FF8A "XF86Xfer") +(cl-define-keysym #x1008FF8B "XF86ZoomIn") +(cl-define-keysym #x1008FF8C "XF86ZoomOut") +(cl-define-keysym #x1008FF8D "XF86Away") +(cl-define-keysym #x1008FF8E "XF86Messenger") +(cl-define-keysym #x1008FF8F "XF86WebCam") +(cl-define-keysym #x1008FF90 "XF86MailForward") +(cl-define-keysym #x1008FF91 "XF86Pictures") +(cl-define-keysym #x1008FF92 "XF86Music") +(cl-define-keysym #x1008FE01 "XF86_Switch_VT_1") +(cl-define-keysym #x1008FE02 "XF86_Switch_VT_2") +(cl-define-keysym #x1008FE03 "XF86_Switch_VT_3") +(cl-define-keysym #x1008FE04 "XF86_Switch_VT_4") +(cl-define-keysym #x1008FE05 "XF86_Switch_VT_5") +(cl-define-keysym #x1008FE06 "XF86_Switch_VT_6") +(cl-define-keysym #x1008FE07 "XF86_Switch_VT_7") +(cl-define-keysym #x1008FE08 "XF86_Switch_VT_8") +(cl-define-keysym #x1008FE09 "XF86_Switch_VT_9") +(cl-define-keysym #x1008FE0A "XF86_Switch_VT_10") +(cl-define-keysym #x1008FE0B "XF86_Switch_VT_11") +(cl-define-keysym #x1008FE0C "XF86_Switch_VT_12") +(cl-define-keysym #x1008FE20 "XF86_Ungrab") +(cl-define-keysym #x1008FE21 "XF86_ClearGrab") +(cl-define-keysym #x1008FE22 "XF86_Next_VMode") +(cl-define-keysym #x1008FE23 "XF86_Prev_VMode") +(cl-define-keysym #x100000A8 "usldead_acute") +(cl-define-keysym #x100000A9 "usldead_grave") +(cl-define-keysym #x100000AB "usldead_diaeresis") +(cl-define-keysym #x100000AA "usldead_asciicircum") +(cl-define-keysym #x100000AC "usldead_asciitilde") +(cl-define-keysym #x1000FE2C "usldead_cedilla") +(cl-define-keysym #x1000FEB0 "usldead_ring") From pbrochard at common-lisp.net Sat Feb 5 21:34:18 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Sat, 05 Feb 2011 16:34:18 -0500 Subject: [clfswm-cvs] r399 - in clfswm: . doc Message-ID: Author: pbrochard Date: Sat Feb 5 16:34:18 2011 New Revision: 399 Log: Documentation update Modified: clfswm/doc/menu.html clfswm/doc/menu.txt clfswm/load.lisp Modified: clfswm/doc/menu.html ============================================================================== --- clfswm/doc/menu.html (original) +++ clfswm/doc/menu.html Sat Feb 5 16:34:18 2011 @@ -171,7 +171,10 @@ f: Mousepad - Simple text editor

- g: Xfw - A simple text editor for Xfe + g: PDF Editor +

+

+ h: Xfw - A simple text editor for Xfe


@@ -212,25 +215,28 @@ b: Chromium - Access the Internet

- c: Epiphany - Browse the web + c: Conkeror - Conkeror is a Mozilla-based web browser whose design is inspired by GNU Emacs

- d: Firefox - Safe Mode + d: Epiphany - Browse the web

- e: Firefox + e: Firefox - Safe Mode

- f: IcedTea Web Start - IcedTea Application Launcher + f: Firefox

g: Konqueror

- h: Midori - Lightweight web browser + h: rekonq +

+

+ i: Midori - Lightweight web browser

- i: Opera - A fast and secure web browser and Internet suite + j: Opera - A fast and secure web browser and Internet suite


@@ -252,67 +258,100 @@ e: Brasero - Create and copy CDs and DVDs

- f: Gnome Music Player Client - A gnome frontend for the mpd daemon + f: Cinelerra - Video Editor +

+

+ g: Freevo - Home theatre +

+

+ h: Camelot - Gmerlin webcam application +

+

+ i: Gmerlin KBD - Configure the Gmerlin keyboard daemon +

+

+ j: Gmerlin player - Multiformat mediaplayer +

+

+ k: Gmerlin plugin configurator - Configure gmerlin plugins

- g: Sound Recorder - Record sound clips + l: Gmerlin transcoder - Gmerlin multimedia transcoder

- h: Volume Control - Change sound volume and sound events + m: Gmerlin visualizer - Run visualization plugins

- i: Grip - CD player/ripper + n: Gnome Music Player Client - A gnome frontend for the mpd daemon

- j: gtk-recordMyDesktop - Frontend for recordMyDesktop + o: Sound Recorder - Record sound clips

- k: Hydrogen Drum Machine - Create drum sequences + p: Volume Control - Change sound volume and sound events

- l: Dragon Player + q: Grip - CD player/ripper

- m: JuK + r: gtk-recordMyDesktop - Frontend for recordMyDesktop

- n: K3b - Disk writing program + s: Hydrogen Drum Machine - Create drum sequences

- o: KMix + t: Dragon Player

- p: KsCD + u: JuK

- q: Mixxx - A digital DJ interface + v: K3b - Disk writing program

- r: MPlayer Media Player - Play movies and songs + w: Kdenlive - Nonlinear video editor for KDE

- s: QjackCtl - QjackCtl is a JACK Audio Connection Kit Qt GUI Interface + x: KMix

- t: qt-recordMyDesktop - Frontend for recordMyDesktop + y: KsCD

- u: Sonata - An elegant GTK+ MPD client + z: Mixxx - A digital DJ interface

- v: Audio CD Extractor - Copy music from your CDs + |: MPlayer Media Player - Play movies and songs

- w: VLC media player - Read, capture, broadcast your multimedia streams + |: Open Movie Editor - Video Editor

- x: Mixer - Audio mixer for the Xfce Desktop Environment + |: OpenShot Video Editor - Create and edit videos and movies

- y: XMMS - X Multimedia System + |: QjackCtl - QjackCtl is a JACK Audio Connection Kit Qt GUI Interface

- z: zynaddsubfx - An opensource software synthesizer + |: qt-recordMyDesktop - Frontend for recordMyDesktop +

+

+ |: Sonata - An elegant GTK+ MPD client +

+

+ |: Audio CD Extractor - Copy music from your CDs +

+

+ |: VLC media player - Read, capture, broadcast your multimedia streams +

+

+ |: Mixer - Audio mixer for the Xfce Desktop Environment +

+

+ |: XMMS - X Multimedia System +

+

+ |: zynaddsubfx - An opensource software synthesizer


@@ -340,7 +379,7 @@ g: MPlayer Media Player - Play movies and songs

- h: QjackCtl - QjackCtl is a JACK Audio Connection Kit Qt GUI Interface + h: QjackCtl - QjackCtl is a JACK Audio Connection Kit Qt GUI Interface

i: Audio CD Extractor - Copy music from your CDs @@ -358,6 +397,9 @@

b: MPlayer Media Player - Play movies and songs

+

+ c: OpenShot Video Editor - Create and edit videos and movies +


Development @@ -366,64 +408,76 @@ a: CMake - Cross-platform buildsystem

- b: Qt Assistant + b: Qt Assistant - Shows Qt documentation and examples

c: Data Display Debugger - Graphical debugger frontend

- d: Qt Designer + d: Qt Designer - Design GUIs for Qt applications +

+

+ e: DrRacket - DrRacket is an interactive, integrated, graphical programming environment for the Racket programming languages. +

+

+ f: EAGLE Light Edition +

+

+ g: Eeschema - Design a printed circuit board.

- e: Emacs Text Editor - Edit text + h: Emacs Text Editor - Edit text

- f: Factor - Factor is a general purpose, dynamically typed, stack-based programming language + i: Factor - Factor is a general purpose, dynamically typed, stack-based programming language

- g: OpenJDK Monitoring & Management Console - Monitor and manage OpenJDK applications + j: Java Monitoring and Management Console

- h: Akonadi Console - Akonadi Management and Debugging Console + k: Java VisualVM

- i: Cervisia + l: Akonadi Console - Akonadi Management and Debugging Console

- j: KAppTemplate + m: Cervisia

- k: KBugBuster + n: KAppTemplate

- l: KCachegrind - Visualization of Performance Profiling Data + o: KBugBuster

- m: KDE Source Builder - Builds the KDE Platform and associated software from its source code. A command-line only program. + p: KCachegrind - Visualization of Performance Profiling Data

- n: KImageMapEditor + q: KDE Source Builder - Builds the KDE Platform and associated software from its source code. A command-line only program.

- o: KLinkStatus + r: KImageMapEditor

- p: Kompare + s: KLinkStatus

- q: KUIViewer + t: Kompare

- r: Lokalize + u: KUIViewer

- s: Umbrello + v: Lokalize

- t: Qt Linguist + w: Umbrello

- u: OpenJDK Policy Tool - Manage OpenJDK policy files + x: KiCad - Design a printed circuit board. +

+

+ y: Qt Linguist - Add translations to Qt applications


@@ -433,64 +487,91 @@ a: Avogadro - Advanced molecular editor

- b: Blinken - A memory enhancement game + b: Circle and Ruler - Geometry program +

+

+ c: DrGeo +

+

+ d: DrRacket - DrRacket is an interactive, integrated, graphical programming environment for the Racket programming languages.

- c: Cantor + e: GeoGebra - Create interactive mathematical constructions and applets.

- d: KAlgebra - Math Expression Solver and Plotter + f: geometria

- e: Kalzium - KDE Periodic Table of Elements + g: Blinken - A memory enhancement game

- f: Kanagram - KDE Letter Order Game + h: Cantor

- g: KBruch - Practice exercises with fractions + i: KAlgebra - Math Expression Solver and Plotter

- h: KGeography - A Geography Learning Program + j: Kalzium - KDE Periodic Table of Elements

- i: KHangMan - KDE Hangman Game + k: Kanagram - KDE Letter Order Game

- j: Kig - Explore Geometric Constructions + l: KBruch - Practice exercises with fractions

- k: Kiten - Japanese Reference and Study Tool + m: KGeography - A Geography Learning Program

- l: KLettres - a KDE program to learn the alphabet + n: KHangMan - KDE Hangman Game

- m: KmPlot - Function Plotter + o: Kig - Explore Geometric Constructions

- n: KStars - Desktop Planetarium + p: Kiten - Japanese Reference and Study Tool

- o: KTouch + q: KLettres - a KDE program to learn the alphabet

- p: KTurtle + r: KmPlot - Function Plotter

- q: KWordQuiz - A flashcard and vocabulary learning program + s: KStars - Desktop Planetarium

- r: Marble + t: KTouch

- s: Parley + u: KTurtle

- t: Rocs - Graph Theory Tool for Professors and Students. + v: KWordQuiz - A flashcard and vocabulary learning program

- u: Step - Simulate physics experiments + w: Marble +

+

+ x: Parley +

+

+ y: Rocs - Graph Theory Tool for Professors and Students. +

+

+ z: Step - Simulate physics experiments +

+

+ |: Oregano electrical engineering tool - Schematic capture and simulation of electronic circuits +

+

+ |: Pyromaths - G?n?rateur d'exercices de maths +

+

+ |: QtOctave - GUI for GNU Octave +

+

+ |: wxMaxima - Perform symbolic and numeric calculations using Maxima


@@ -506,73 +587,85 @@ c: AssaultCube

- d: DROD - Simple puzzle game. + d: DreamChess +

+

+ e: DROD - Simple puzzle game. +

+

+ f: eBoard +

+

+ g: Einstein - Einstein puzzle

- e: Flobopuyo - A remake of the famous PuyoPuyo + h: Flobopuyo - A remake of the famous PuyoPuyo

- f: Foobillard - A 3D billiards game using OpenGL + i: Foobillard - A 3D billiards game using OpenGL

- g: Frasse - Frasse and the Peas of Kejick adventure game + j: Frasse - Frasse and the Peas of Kejick adventure game

- h: Frogatto - Old-school 2D platformer + k: Frogatto - Old-school 2D platformer

- i: GGoban - Play go and review game records + l: GGoban - Play go and review game records

- j: Hedgewars - Worms style game + m: glChess

- k: KGoldrunner - A game of action and puzzle-solving + n: Hedgewars - Worms style game

- l: AMOR + o: KGoldrunner - A game of action and puzzle-solving

- m: Blinken - A memory enhancement game + p: AMOR

- n: Bomber + q: Blinken - A memory enhancement game

- o: Bovo + r: Bomber

- p: Granatier + s: Bovo

- q: Kanagram - KDE Letter Order Game + t: Granatier

- r: Kapman - Eat pills escaping ghosts + u: Kanagram - KDE Letter Order Game

- s: KAtomic + v: Kapman - Eat pills escaping ghosts

- t: KBattleship + w: KAtomic

- u: KBlackBox + x: KBattleship

- v: KBlocks + y: KBlackBox

- w: KBounce + z: KBlocks

- x: KBreakOut + |: KBounce

- y: KSnake + |: KBreakOut

- z: KDiamond + |: KSnake +

+

+ |: KDiamond

|: KFourInLine @@ -605,6 +698,9 @@ |: KNetWalk

+ |: Knights +

+

|: Kolf

@@ -659,15 +755,39 @@ |: Palapeli

+ |: KoboDeluxe - An excellent 2D Shootem-up game. +

+

+ |: ManiaDrive - An arcade car game on acrobatic tracks, with a quick and nervous gameplay +

+

+ |: mechtower(failsafe) +

+

+ |: mechtower +

+

|: Neverball - A 3D arcade game with a ball

|: Neverputt - A 3D mini golf game

+ |: Numpty Physics +

+

|: OpenArena - A Quake3-based FPS Game

+ |: OpenTTD +

+

+ |: Pacdefence - Tower defence game. +

+

+ |: pouetChess - Play a game of chess, either against another player or against the AI +

+

|: SolarWolf

@@ -686,6 +806,9 @@ |: Battle for Wesnoth Map Editor - A map editor for Battle for Wesnoth maps

+ |: XBoard - An X Window System graphical chessboard +

+

|: Xmoto

@@ -696,58 +819,58 @@ Graphics

- a: Image Viewer + a: LibreOffice Draw

- b: PostScript Viewer - View PostScript files + b: Image Viewer

- c: GNU Image Manipulation Program - Create images and edit photographs + c: Document Viewer - View multi-page documents

- d: Image Viewer + d: Geeqie - View and manage images

- e: GV + e: PostScript Viewer - View PostScript files

- f: Inkscape - Create and edit Scalable Vector Graphics images + f: GNU Image Manipulation Program - Create images and edit photographs

- g: Gwenview - A simple image viewer + g: Image Viewer

- h: KColorChooser + h: GQview - View and manage images

- i: KolourPaint + i: gThumb - View and organize your images

- j: KRuler + j: gThumb - View and organize your images

- k: KSnapshot + k: GV

- l: Okular + l: Inkscape - Create and edit Scalable Vector Graphics images

- m: Okular + m: digiKam

- n: Okular + n: Gwenview - A simple image viewer

- o: Okular + o: KColorChooser

- p: Okular + p: KolourPaint

- q: Okular + q: KRuler

- r: Okular + r: KSnapshot

s: Okular @@ -777,9 +900,42 @@ |: Okular

+ |: Okular +

+

+ |: Okular +

+

+ |: Okular +

+

+ |: Okular +

+

+ |: Okular +

+

+ |: Okular +

+

+ |: Okular +

+

+ |: showFoto - Manage your photographs like a professional with the power of open source +

+

+ |: MuPDF - PDF file viewer +

+

|: Xfig

+ |: xgps - Display GPS information from a gpsd daemon +

+

+ |: xgpsspeed - Display GPS speed from a gpsd daemon +

+

|: XSane - Scanning - Acquire images from a scanner


@@ -802,72 +958,87 @@ e: Chromium - Access the Internet

- f: Epiphany - Browse the web + f: Conkeror - Conkeror is a Mozilla-based web browser whose design is inspired by GNU Emacs

- g: Minefield - Safe Mode + g: Ekiga Softphone - Talk to people over the Internet

- h: Minefield + h: Epiphany - Browse the web

- i: Firefox - Safe Mode + i: Minefield - Safe Mode

- j: Firefox + j: Minefield

- k: Gnaughty - Porn downloader + k: Firefox - Safe Mode

- l: Gwget Download Manager - Download files from the Internet + l: Firefox

- m: JAP - JAP makes it possible to surf the internet anonymously and unobservably. + m: Gnaughty - Porn downloader

- n: IcedTea Web Start - IcedTea Application Launcher + n: Gwget Download Manager - Download files from the Internet

- o: KMail + o: Iron Web Browser - Browse the World Wide Web

- p: KNode + p: JAP - JAP makes it possible to surf the internet anonymously and unobservably.

- q: KPPP + q: Java Web Start

- r: Akregator - A Feed Reader for KDE + r: KMail

- s: Blogilo + s: KNode

- t: KGet + t: KPPP

- u: KNetAttach + u: Akregator - A Feed Reader for KDE

- v: Konqueror + v: Blogilo

- w: Kopete - Instant Messenger + w: KGet

- x: KPPPLogview + x: KNetAttach

- y: KRDC + y: Konqueror

- z: Krfb + z: Kopete - Instant Messenger +

+

+ |: KPPPLogview +

+

+ |: KRDC +

+

+ |: Krfb +

+

+ |: rekonq

|: Midori - Lightweight web browser

+ |: MLDonkey GUI - multi-protocol P2P program +

+

|: MultiGet

@@ -889,6 +1060,12 @@ |: Tucan Manager - Download and upload manager for hosting sites.

+ |: unison - File synchronisation tool for X11 +

+

+ |: LibreOffice Writer/Web +

+

|: Wicd - Manage Wired/Wireless Networks

@@ -905,22 +1082,22 @@ a: AbiWord

- b: OpenOffice.org 3.2 Base + b: LibreOffice Base

- c: OpenOffice.org 3.2 Calc + c: LibreOffice Calc

- d: OpenOffice.org 3.2 Draw + d: ePDFViewer - Lightweight PDF document viewer

- e: ePDFViewer - Lightweight PDF document viewer + e: Evolution - Manage your email, contacts and schedule

f: GV

- g: OpenOffice.org 3.2 Impress + g: LibreOffice Impress

h: Kontact @@ -956,28 +1133,40 @@ r: LibreOffice 3.3 Writer

- s: OOo4Kids 1.0 Calc + s: Lyx - Latex WYSIWYM Editor +

+

+ t: LibreOffice Extension Manager +

+

+ u: OOo4Kids 1.1 Calc +

+

+ v: OOo4Kids 1.1 Draw

- t: OOo4Kids 1.0 Draw + w: OOo4Kids 1.1 Impress

- u: OOo4Kids 1.0 Impress + x: OOo4Kids 1.1 Math

- v: OOo4Kids 1.0 Math + y: OOo4Kids 1.1

- w: OOo4Kids 1.0 + z: OOo4Kids 1.1 Printer Administration

- x: OOo4Kids 1.0 Printer Administration + |: OOo4Kids 1.1 Writer

- y: OOo4Kids 1.0 Writer + |: LibreOffice Quickstarter

- z: Orage - Desktop calendar + |: LibreOffice +

+

+ |: Orage - Desktop calendar

|: Xpdf - Views Adobe PDF (acrobat) files @@ -996,73 +1185,82 @@ c: Monitors - Change resolution and position of monitors

- d: Preferred Applications + d: Email Settings - Configure email accounts +

+

+ e: Preferred Applications

- e: Keyboard Indicator plugins - Enable/disable installed plugins + f: Keyboard Indicator plugins - Enable/disable installed plugins

- f: Privilege granting - Configure behavior of the privilege-granting tool + g: Privilege granting - Configure behavior of the privilege-granting tool

- g: About Me - Set your personal information + h: About Me - Set your personal information

- h: Appearance - Customize the look of your desktop + i: Appearance - Customize the look of your desktop

- i: Network Proxy - Set your network proxy preferences + j: Network Proxy - Set your network proxy preferences

- j: Screensaver - Change screensaver properties + k: Screensaver - Change screensaver properties

- k: Mouse - Configure pointer device behavior and appearance + l: Mouse - Configure pointer device behavior and appearance

- l: Volume Control - Change sound volume and sound events + m: Volume Control - Change sound volume and sound events

- m: Control Center + n: Control Center

- n: Multimedia Systems Selector - Configure defaults for GStreamer applications + o: Multimedia Systems Selector - Configure defaults for GStreamer applications

- o: Touchpad - Set your touchpad preferences + p: Touchpad - Set your touchpad preferences

- p: Menu Updating Tool + q: Java Control Panel

- q: Change Password + r: Java Policy Settings

- r: Menu Editor + s: Menu Updating Tool

- s: System Settings + t: Change Password

- t: Keyboard Shortcuts - Assign shortcut keys to commands + u: Menu Editor

- u: Keyboard - Edit keyboard settings and application shortcuts + v: System Settings

- v: Preferred Applications + w: Keyboard Shortcuts - Assign shortcut keys to commands

- w: Customize Look and Feel - Customizes look and feel of your desktop and applications + x: Keyboard - Edit keyboard settings and application shortcuts

- x: Monitor Settings - Change screen resolution and configure external monitors + y: Preferred Applications

- y: File Management - Change the behaviour and appearance of file manager windows + z: Customize Look and Feel - Customizes look and feel of your desktop and applications

- z: Pop-Up Notifications - Set your pop-up notification preferences + |: Monitor Settings - Change screen resolution and configure external monitors +

+

+ |: File Management - Change the behaviour and appearance of file manager windows +

+

+ |: Pop-Up Notifications - Set your pop-up notification preferences

|: Opera Widget Manager @@ -1077,6 +1275,9 @@ |: File Manager

+ |: Startup Disk Creator - Create a startup disk using a CD or disc image +

+

|: Windows - Set your window properties

@@ -1210,6 +1411,9 @@ z: KwikDisk

+ |: Yakuake +

+

|: Task Manager - Manage running processes

@@ -1225,6 +1429,12 @@ |: UNetbootin - Tool for creating Live USB drives

+ |: Startup Disk Creator - Create a startup disk using a CD or disc image +

+

+ |: Startup Disk Creator - Create a startup disk using a CD or disc image +

+

|: Oracle VM VirtualBox

@@ -1253,70 +1463,79 @@ d: Thunar File Manager - Browse the filesystem with the file manager

- e: dosbox Emulator - An emulator to run old DOS games + e: Circle and Ruler - Geometry program +

+

+ f: dosbox Emulator - An emulator to run old DOS games +

+

+ g: Root Terminal - Opens a terminal as the root user, using gksu to ask for the password

- f: Root Terminal - Opens a terminal as the root user, using gksu to ask for the password + h: About GNOME - Learn more about GNOME

- g: About GNOME - Learn more about GNOME + i: Panel - Customize the panel settings

- h: Panel - Customize the panel settings + j: Theme Installer - Installs themes packages for various parts of the desktop

- i: Theme Installer - Installs themes packages for various parts of the desktop + k: Image Viewer

- j: Image Viewer + l: GSpiceUI - A GUI to various freely available Spice electronic circuit simulators

- k: Character Map - Insert special characters into documents + m: Character Map - Insert special characters into documents

- l: gVim - GTK2 enhanced vim text editor + n: gVim - GTK2 enhanced vim text editor

- m: HP Device Manager - View device status, ink levels and perform maintenance. + o: HP Device Manager - View device status, ink levels and perform maintenance.

- n: Help - Get help with GNOME + p: K3DSurf - Visualize and manipulate Mathematical models in three, four, five, and six dimensions

- o: Home + q: Help - Get help with GNOME

- p: KCharSelect + r: Home

- q: KFloppy + s: KCharSelect

- r: KJots + t: KFloppy

- s: Akonaditray + u: KJots

- t: Ark + v: Akonaditray

- u: KDE Groupware Wizard + w: Ark

- v: KAlarm + x: KDE Groupware Wizard

- w: Kate + y: KAlarm

- x: KCalc + z: Kate

- y: KFileReplace + |: KCalc

- z: Find Files/Folders + |: KFileReplace +

+

+ |: Find Files/Folders

|: KFontView @@ -1397,6 +1616,12 @@ |: File Manager

+ |: PDF Editor +

+

+ |: PlayOnLinux - PlayOnLinux +

+

|: Scilab - A scientific software package for numerical computations

@@ -1453,6 +1678,9 @@

|: Help - Get help with GNOME

+

+ |: KDE Resources - Configure KDE Resources +


Terminalemulator @@ -1467,13 +1695,16 @@ c: Konsole

- d: LXTerminal - Use the command line + d: Yakuake +

+

+ e: LXTerminal - Use the command line

- e: rxvt-unicode - An Unicode capable rxvt clone + f: rxvt-unicode - An Unicode capable rxvt clone

- f: Tilda + g: Tilda


@@ -2698,40 +2929,40 @@ b: < Notify Window mode group >

- c: < Expose mode group > + c: < Identify key group >

- d: < Hook group > + d: < Expose mode group >

- e: < Main mode group > + e: < Hook group >

- f: < Frame colors group > + f: < Main mode group >

- g: < Identify key group > + g: < Frame colors group >

- h: < Corner group > + h: < Second mode group >

- i: < Circulate mode group > + i: < Corner group >

- j: < Query string group > + j: < Circulate mode group >

- k: < Placement group > + k: < Query string group >

- l: < Miscellaneous group > + l: < Placement group >

- m: < Info mode group > + m: < Miscellaneous group >

- n: < Second mode group > + n: < Info mode group >

o: < Menu group > @@ -2764,6 +2995,22 @@


+ Conf-Identify-Key-Group +

+

+ a: Configure IDENTIFY-FOREGROUND +

+

+ b: Configure IDENTIFY-BACKGROUND +

+

+ c: Configure IDENTIFY-FONT-STRING +

+

+ d: Configure IDENTIFY-BORDER +

+
+

Conf-Expose-Mode-Group

@@ -2834,19 +3081,25 @@


- Conf-Identify-Key-Group + Conf-Second-Mode-Group

- a: Configure IDENTIFY-FOREGROUND + a: Configure SM-FOREGROUND-COLOR +

+

+ b: Configure SM-BACKGROUND-COLOR +

+

+ c: Configure SM-HEIGHT

- b: Configure IDENTIFY-FONT-STRING + d: Configure SM-WIDTH

- c: Configure IDENTIFY-BORDER + e: Configure SM-BORDER-COLOR

- d: Configure IDENTIFY-BACKGROUND + f: Configure SM-FONT-STRING


@@ -2862,19 +3115,19 @@ c: Configure CORNER-SECOND-MODE-LEFT-BUTTON

- d: Configure CORNER-MAIN-MODE-RIGHT-BUTTON + d: Configure CORNER-SECOND-MODE-RIGHT-BUTTON

- e: Configure CORNER-SECOND-MODE-RIGHT-BUTTON + e: Configure CORNER-SIZE

- f: Configure CORNER-SIZE + f: Configure CORNER-MAIN-MODE-RIGHT-BUTTON

- g: Configure CLFSWM-TERMINAL-CMD + g: Configure VIRTUAL-KEYBOARD-CMD

- h: Configure VIRTUAL-KEYBOARD-CMD + h: Configure CLFSWM-TERMINAL-CMD

i: Configure CORNER-MAIN-MODE-MIDDLE-BUTTON @@ -2887,19 +3140,19 @@ Conf-Circulate-Mode-Group

- a: Configure CIRCULATE-TEXT-LIMITE + a: Configure CIRCULATE-BORDER

- b: Configure CIRCULATE-BORDER + b: Configure CIRCULATE-HEIGHT

- c: Configure CIRCULATE-WIDTH + c: Configure CIRCULATE-TEXT-LIMITE

- d: Configure CIRCULATE-HEIGHT + d: Configure CIRCULATE-FONT-STRING

- e: Configure CIRCULATE-FONT-STRING + e: Configure CIRCULATE-WIDTH

f: Configure CIRCULATE-BACKGROUND @@ -2965,28 +3218,28 @@ Conf-Miscellaneous-Group

- a: Configure HAVE-TO-COMPRESS-NOTIFY + a: Configure CREATE-FRAME-ON-ROOT

- b: Configure HIDE-UNMANAGED-WINDOW + b: Configure HAVE-TO-COMPRESS-NOTIFY

c: Configure DEFAULT-WINDOW-WIDTH

- d: Configure CREATE-FRAME-ON-ROOT + d: Configure NEVER-MANAGED-WINDOW-LIST

e: Configure DEFAULT-MANAGED-TYPE

- f: Configure DEFAULT-FRAME-DATA + f: Configure HIDE-UNMANAGED-WINDOW

- g: Configure DEFAULT-MODIFIERS + g: Configure DEFAULT-FRAME-DATA

- h: Configure NEVER-MANAGED-WINDOW-LIST + h: Configure DEFAULT-MODIFIERS

i: Configure DEFAULT-WINDOW-HEIGHT @@ -3039,28 +3292,6 @@


- Conf-Second-Mode-Group -

-

- a: Configure SM-FOREGROUND-COLOR -

-

- b: Configure SM-BACKGROUND-COLOR -

-

- c: Configure SM-HEIGHT -

-

- d: Configure SM-WIDTH -

-

- e: Configure SM-BORDER-COLOR -

-

- f: Configure SM-FONT-STRING -

-
-

Conf-Menu-Group

Modified: clfswm/doc/menu.txt ============================================================================== --- clfswm/doc/menu.txt (original) +++ clfswm/doc/menu.txt Sat Feb 5 16:34:18 2011 @@ -55,7 +55,8 @@ d: Snippets datafile editor e: KWrite f: Mousepad - Simple text editor -g: Xfw - A simple text editor for Xfe +g: PDF Editor +h: Xfw - A simple text editor for Xfe Filemanager a: Open Folder with Thunar - Open the specified folders in Thunar @@ -70,13 +71,14 @@ Webbrowser a: Arora - Browse the World Wide Web b: Chromium - Access the Internet -c: Epiphany - Browse the web -d: Firefox - Safe Mode -e: Firefox -f: IcedTea Web Start - IcedTea Application Launcher +c: Conkeror - Conkeror is a Mozilla-based web browser whose design is inspired by GNU Emacs +d: Epiphany - Browse the web +e: Firefox - Safe Mode +f: Firefox g: Konqueror -h: Midori - Lightweight web browser -i: Opera - A fast and secure web browser and Internet suite +h: rekonq +i: Midori - Lightweight web browser +j: Opera - A fast and secure web browser and Internet suite Audiovideo a: AcidRip DVD Ripper - DVD Ripper @@ -84,27 +86,38 @@ c: Audacity - Record and edit audio files d: Beep Media Player - Play music e: Brasero - Create and copy CDs and DVDs -f: Gnome Music Player Client - A gnome frontend for the mpd daemon -g: Sound Recorder - Record sound clips -h: Volume Control - Change sound volume and sound events -i: Grip - CD player/ripper -j: gtk-recordMyDesktop - Frontend for recordMyDesktop -k: Hydrogen Drum Machine - Create drum sequences -l: Dragon Player -m: JuK -n: K3b - Disk writing program -o: KMix -p: KsCD -q: Mixxx - A digital DJ interface -r: MPlayer Media Player - Play movies and songs -s: QjackCtl - QjackCtl is a JACK Audio Connection Kit Qt GUI Interface -t: qt-recordMyDesktop - Frontend for recordMyDesktop -u: Sonata - An elegant GTK+ MPD client -v: Audio CD Extractor - Copy music from your CDs -w: VLC media player - Read, capture, broadcast your multimedia streams -x: Mixer - Audio mixer for the Xfce Desktop Environment -y: XMMS - X Multimedia System -z: zynaddsubfx - An opensource software synthesizer +f: Cinelerra - Video Editor +g: Freevo - Home theatre +h: Camelot - Gmerlin webcam application +i: Gmerlin KBD - Configure the Gmerlin keyboard daemon +j: Gmerlin player - Multiformat mediaplayer +k: Gmerlin plugin configurator - Configure gmerlin plugins +l: Gmerlin transcoder - Gmerlin multimedia transcoder +m: Gmerlin visualizer - Run visualization plugins +n: Gnome Music Player Client - A gnome frontend for the mpd daemon +o: Sound Recorder - Record sound clips +p: Volume Control - Change sound volume and sound events +q: Grip - CD player/ripper +r: gtk-recordMyDesktop - Frontend for recordMyDesktop +s: Hydrogen Drum Machine - Create drum sequences +t: Dragon Player +u: JuK +v: K3b - Disk writing program +w: Kdenlive - Nonlinear video editor for KDE +x: KMix +y: KsCD +z: Mixxx - A digital DJ interface +|: MPlayer Media Player - Play movies and songs +|: Open Movie Editor - Video Editor +|: OpenShot Video Editor - Create and edit videos and movies +|: QjackCtl - QjackCtl is a JACK Audio Connection Kit Qt GUI Interface +|: qt-recordMyDesktop - Frontend for recordMyDesktop +|: Sonata - An elegant GTK+ MPD client +|: Audio CD Extractor - Copy music from your CDs +|: VLC media player - Read, capture, broadcast your multimedia streams +|: Mixer - Audio mixer for the Xfce Desktop Environment +|: XMMS - X Multimedia System +|: zynaddsubfx - An opensource software synthesizer Audio a: Ardour - Multitrack hard disk recorder @@ -114,87 +127,105 @@ e: KMix f: Mixxx - A digital DJ interface g: MPlayer Media Player - Play movies and songs -h: QjackCtl - QjackCtl is a JACK Audio Connection Kit Qt GUI Interface +h: QjackCtl - QjackCtl is a JACK Audio Connection Kit Qt GUI Interface i: Audio CD Extractor - Copy music from your CDs j: Mixer - Audio mixer for the Xfce Desktop Environment Video a: Ardour - Multitrack hard disk recorder b: MPlayer Media Player - Play movies and songs +c: OpenShot Video Editor - Create and edit videos and movies Development a: CMake - Cross-platform buildsystem -b: Qt Assistant +b: Qt Assistant - Shows Qt documentation and examples c: Data Display Debugger - Graphical debugger frontend -d: Qt Designer -e: Emacs Text Editor - Edit text -f: Factor - Factor is a general purpose, dynamically typed, stack-based programming language -g: OpenJDK Monitoring & Management Console - Monitor and manage OpenJDK applications -h: Akonadi Console - Akonadi Management and Debugging Console -i: Cervisia -j: KAppTemplate -k: KBugBuster -l: KCachegrind - Visualization of Performance Profiling Data -m: KDE Source Builder - Builds the KDE Platform and associated software from its source code. A command-line only program. -n: KImageMapEditor -o: KLinkStatus -p: Kompare -q: KUIViewer -r: Lokalize -s: Umbrello -t: Qt Linguist -u: OpenJDK Policy Tool - Manage OpenJDK policy files +d: Qt Designer - Design GUIs for Qt applications +e: DrRacket - DrRacket is an interactive, integrated, graphical programming environment for the Racket programming languages. +f: EAGLE Light Edition +g: Eeschema - Design a printed circuit board. +h: Emacs Text Editor - Edit text +i: Factor - Factor is a general purpose, dynamically typed, stack-based programming language +j: Java Monitoring and Management Console +k: Java VisualVM +l: Akonadi Console - Akonadi Management and Debugging Console +m: Cervisia +n: KAppTemplate +o: KBugBuster +p: KCachegrind - Visualization of Performance Profiling Data +q: KDE Source Builder - Builds the KDE Platform and associated software from its source code. A command-line only program. +r: KImageMapEditor +s: KLinkStatus +t: Kompare +u: KUIViewer +v: Lokalize +w: Umbrello +x: KiCad - Design a printed circuit board. +y: Qt Linguist - Add translations to Qt applications Education a: Avogadro - Advanced molecular editor -b: Blinken - A memory enhancement game -c: Cantor -d: KAlgebra - Math Expression Solver and Plotter -e: Kalzium - KDE Periodic Table of Elements -f: Kanagram - KDE Letter Order Game -g: KBruch - Practice exercises with fractions -h: KGeography - A Geography Learning Program -i: KHangMan - KDE Hangman Game -j: Kig - Explore Geometric Constructions -k: Kiten - Japanese Reference and Study Tool -l: KLettres - a KDE program to learn the alphabet -m: KmPlot - Function Plotter -n: KStars - Desktop Planetarium -o: KTouch -p: KTurtle -q: KWordQuiz - A flashcard and vocabulary learning program -r: Marble -s: Parley -t: Rocs - Graph Theory Tool for Professors and Students. -u: Step - Simulate physics experiments +b: Circle and Ruler - Geometry program +c: DrGeo +d: DrRacket - DrRacket is an interactive, integrated, graphical programming environment for the Racket programming languages. +e: GeoGebra - Create interactive mathematical constructions and applets. +f: geometria +g: Blinken - A memory enhancement game +h: Cantor +i: KAlgebra - Math Expression Solver and Plotter +j: Kalzium - KDE Periodic Table of Elements +k: Kanagram - KDE Letter Order Game +l: KBruch - Practice exercises with fractions +m: KGeography - A Geography Learning Program +n: KHangMan - KDE Hangman Game +o: Kig - Explore Geometric Constructions +p: Kiten - Japanese Reference and Study Tool +q: KLettres - a KDE program to learn the alphabet +r: KmPlot - Function Plotter +s: KStars - Desktop Planetarium +t: KTouch +u: KTurtle +v: KWordQuiz - A flashcard and vocabulary learning program +w: Marble +x: Parley +y: Rocs - Graph Theory Tool for Professors and Students. +z: Step - Simulate physics experiments +|: Oregano electrical engineering tool - Schematic capture and simulation of electronic circuits +|: Pyromaths - G?n?rateur d'exercices de maths +|: QtOctave - GUI for GNU Octave +|: wxMaxima - Perform symbolic and numeric calculations using Maxima Game a: 0 A.D. Editor b: 0 A.D. c: AssaultCube -d: DROD - Simple puzzle game. -e: Flobopuyo - A remake of the famous PuyoPuyo -f: Foobillard - A 3D billiards game using OpenGL -g: Frasse - Frasse and the Peas of Kejick adventure game -h: Frogatto - Old-school 2D platformer -i: GGoban - Play go and review game records -j: Hedgewars - Worms style game -k: KGoldrunner - A game of action and puzzle-solving -l: AMOR -m: Blinken - A memory enhancement game -n: Bomber -o: Bovo -p: Granatier -q: Kanagram - KDE Letter Order Game -r: Kapman - Eat pills escaping ghosts -s: KAtomic -t: KBattleship -u: KBlackBox -v: KBlocks -w: KBounce -x: KBreakOut -y: KSnake -z: KDiamond +d: DreamChess +e: DROD - Simple puzzle game. +f: eBoard +g: Einstein - Einstein puzzle +h: Flobopuyo - A remake of the famous PuyoPuyo +i: Foobillard - A 3D billiards game using OpenGL +j: Frasse - Frasse and the Peas of Kejick adventure game +k: Frogatto - Old-school 2D platformer +l: GGoban - Play go and review game records +m: glChess +n: Hedgewars - Worms style game +o: KGoldrunner - A game of action and puzzle-solving +p: AMOR +q: Blinken - A memory enhancement game +r: Bomber +s: Bovo +t: Granatier +u: Kanagram - KDE Letter Order Game +v: Kapman - Eat pills escaping ghosts +w: KAtomic +x: KBattleship +y: KBlackBox +z: KBlocks +|: KBounce +|: KBreakOut +|: KSnake +|: KDiamond |: KFourInLine |: KHangMan - KDE Hangman Game |: Kigo @@ -205,6 +236,7 @@ |: KMahjongg |: KMines |: KNetWalk +|: Knights |: Kolf |: Kollision - A simple ball dodging game |: Konquest @@ -223,37 +255,46 @@ |: Kubrick |: LSkat |: Palapeli +|: KoboDeluxe - An excellent 2D Shootem-up game. +|: ManiaDrive - An arcade car game on acrobatic tracks, with a quick and nervous gameplay +|: mechtower(failsafe) +|: mechtower |: Neverball - A 3D arcade game with a ball |: Neverputt - A 3D mini golf game +|: Numpty Physics |: OpenArena - A Quake3-based FPS Game +|: OpenTTD +|: Pacdefence - Tower defence game. +|: pouetChess - Play a game of chess, either against another player or against the AI |: SolarWolf |: Spring - An open source RTS with similar gameplay to TA |: SuperTux 2 - Play a classic 2D platform game |: Trackballs - Simple game similar to the classical game Marble Madness |: Battle for Wesnoth - A fantasy turn-based strategy game |: Battle for Wesnoth Map Editor - A map editor for Battle for Wesnoth maps +|: XBoard - An X Window System graphical chessboard |: Xmoto |: XSpaceWarp - Live long and prosper! Graphics -a: Image Viewer -b: PostScript Viewer - View PostScript files -c: GNU Image Manipulation Program - Create images and edit photographs -d: Image Viewer -e: GV -f: Inkscape - Create and edit Scalable Vector Graphics images -g: Gwenview - A simple image viewer -h: KColorChooser -i: KolourPaint -j: KRuler -k: KSnapshot -l: Okular -m: Okular -n: Okular -o: Okular -p: Okular -q: Okular -r: Okular +a: LibreOffice Draw +b: Image Viewer +c: Document Viewer - View multi-page documents +d: Geeqie - View and manage images +e: PostScript Viewer - View PostScript files +f: GNU Image Manipulation Program - Create images and edit photographs +g: Image Viewer +h: GQview - View and manage images +i: gThumb - View and organize your images +j: gThumb - View and organize your images +k: GV +l: Inkscape - Create and edit Scalable Vector Graphics images +m: digiKam +n: Gwenview - A simple image viewer +o: KColorChooser +p: KolourPaint +q: KRuler +r: KSnapshot s: Okular t: Okular u: Okular @@ -263,7 +304,18 @@ y: Okular z: Okular |: Okular +|: Okular +|: Okular +|: Okular +|: Okular +|: Okular +|: Okular +|: Okular +|: showFoto - Manage your photographs like a professional with the power of open source +|: MuPDF - PDF file viewer |: Xfig +|: xgps - Display GPS information from a gpsd daemon +|: xgpsspeed - Display GPS speed from a gpsd daemon |: XSane - Scanning - Acquire images from a scanner Network @@ -272,28 +324,33 @@ c: Avahi SSH Server Browser - Browse for Zeroconf-enabled SSH Servers d: Avahi VNC Server Browser - Browse for Zeroconf-enabled VNC Servers e: Chromium - Access the Internet -f: Epiphany - Browse the web -g: Minefield - Safe Mode -h: Minefield -i: Firefox - Safe Mode -j: Firefox -k: Gnaughty - Porn downloader -l: Gwget Download Manager - Download files from the Internet -m: JAP - JAP makes it possible to surf the internet anonymously and unobservably. -n: IcedTea Web Start - IcedTea Application Launcher -o: KMail -p: KNode -q: KPPP -r: Akregator - A Feed Reader for KDE -s: Blogilo -t: KGet -u: KNetAttach -v: Konqueror -w: Kopete - Instant Messenger -x: KPPPLogview -y: KRDC -z: Krfb +f: Conkeror - Conkeror is a Mozilla-based web browser whose design is inspired by GNU Emacs +g: Ekiga Softphone - Talk to people over the Internet +h: Epiphany - Browse the web +i: Minefield - Safe Mode +j: Minefield +k: Firefox - Safe Mode +l: Firefox +m: Gnaughty - Porn downloader +n: Gwget Download Manager - Download files from the Internet +o: Iron Web Browser - Browse the World Wide Web +p: JAP - JAP makes it possible to surf the internet anonymously and unobservably. +q: Java Web Start +r: KMail +s: KNode +t: KPPP +u: Akregator - A Feed Reader for KDE +v: Blogilo +w: KGet +x: KNetAttach +y: Konqueror +z: Kopete - Instant Messenger +|: KPPPLogview +|: KRDC +|: Krfb +|: rekonq |: Midori - Lightweight web browser +|: MLDonkey GUI - multi-protocol P2P program |: MultiGet |: OpenArena Server - Run an OpenArena server |: Opera - A fast and secure web browser and Internet suite @@ -301,18 +358,20 @@ |: Thunderbird - Mail & News Reader |: Transmission - Download and share files over BitTorrent |: Tucan Manager - Download and upload manager for hosting sites. +|: unison - File synchronisation tool for X11 +|: LibreOffice Writer/Web |: Wicd - Manage Wired/Wireless Networks |: Zenmap (as root) |: Zenmap Office a: AbiWord -b: OpenOffice.org 3.2 Base -c: OpenOffice.org 3.2 Calc -d: OpenOffice.org 3.2 Draw -e: ePDFViewer - Lightweight PDF document viewer +b: LibreOffice Base +c: LibreOffice Calc +d: ePDFViewer - Lightweight PDF document viewer +e: Evolution - Manage your email, contacts and schedule f: GV -g: OpenOffice.org 3.2 Impress +g: LibreOffice Impress h: Kontact i: KAddressBook j: KOrganizer - Calendar and Scheduling Program @@ -324,47 +383,55 @@ p: LibreOffice 3.3 Printer Administration q: LibreOffice 3.3 r: LibreOffice 3.3 Writer -s: OOo4Kids 1.0 Calc -t: OOo4Kids 1.0 Draw -u: OOo4Kids 1.0 Impress -v: OOo4Kids 1.0 Math -w: OOo4Kids 1.0 -x: OOo4Kids 1.0 Printer Administration -y: OOo4Kids 1.0 Writer -z: Orage - Desktop calendar +s: Lyx - Latex WYSIWYM Editor +t: LibreOffice Extension Manager +u: OOo4Kids 1.1 Calc +v: OOo4Kids 1.1 Draw +w: OOo4Kids 1.1 Impress +x: OOo4Kids 1.1 Math +y: OOo4Kids 1.1 +z: OOo4Kids 1.1 Printer Administration +|: OOo4Kids 1.1 Writer +|: LibreOffice Quickstarter +|: LibreOffice +|: Orage - Desktop calendar |: Xpdf - Views Adobe PDF (acrobat) files Settings a: Assistive Technologies - Choose which accessibility features to enable when you log in b: Preferred Applications c: Monitors - Change resolution and position of monitors -d: Preferred Applications -e: Keyboard Indicator plugins - Enable/disable installed plugins -f: Privilege granting - Configure behavior of the privilege-granting tool -g: About Me - Set your personal information -h: Appearance - Customize the look of your desktop -i: Network Proxy - Set your network proxy preferences -j: Screensaver - Change screensaver properties -k: Mouse - Configure pointer device behavior and appearance -l: Volume Control - Change sound volume and sound events -m: Control Center -n: Multimedia Systems Selector - Configure defaults for GStreamer applications -o: Touchpad - Set your touchpad preferences -p: Menu Updating Tool -q: Change Password -r: Menu Editor -s: System Settings -t: Keyboard Shortcuts - Assign shortcut keys to commands -u: Keyboard - Edit keyboard settings and application shortcuts -v: Preferred Applications -w: Customize Look and Feel - Customizes look and feel of your desktop and applications -x: Monitor Settings - Change screen resolution and configure external monitors -y: File Management - Change the behaviour and appearance of file manager windows -z: Pop-Up Notifications - Set your pop-up notification preferences +d: Email Settings - Configure email accounts +e: Preferred Applications +f: Keyboard Indicator plugins - Enable/disable installed plugins +g: Privilege granting - Configure behavior of the privilege-granting tool +h: About Me - Set your personal information +i: Appearance - Customize the look of your desktop +j: Network Proxy - Set your network proxy preferences +k: Screensaver - Change screensaver properties +l: Mouse - Configure pointer device behavior and appearance +m: Volume Control - Change sound volume and sound events +n: Control Center +o: Multimedia Systems Selector - Configure defaults for GStreamer applications +p: Touchpad - Set your touchpad preferences +q: Java Control Panel +r: Java Policy Settings +s: Menu Updating Tool +t: Change Password +u: Menu Editor +v: System Settings +w: Keyboard Shortcuts - Assign shortcut keys to commands +x: Keyboard - Edit keyboard settings and application shortcuts +y: Preferred Applications +z: Customize Look and Feel - Customizes look and feel of your desktop and applications +|: Monitor Settings - Change screen resolution and configure external monitors +|: File Management - Change the behaviour and appearance of file manager windows +|: Pop-Up Notifications - Set your pop-up notification preferences |: Opera Widget Manager |: Qt Config - Configure Qt behavior, styles, fonts |: Startup Applications - Choose what applications to start when you log in |: File Manager +|: Startup Disk Creator - Create a startup disk using a CD or disc image |: Windows - Set your window properties |: Desktop - Set desktop background and menu and icon behaviour |: Display - Configure screen settings and layout @@ -410,11 +477,14 @@ x: KUser y: KWalletManager z: KwikDisk +|: Yakuake |: Task Manager - Manage running processes |: File Browser - Browse the file system with the file manager |: Disk Utility - Manage Drives and Media |: rxvt-unicode - An Unicode capable rxvt clone |: UNetbootin - Tool for creating Live USB drives +|: Startup Disk Creator - Create a startup disk using a CD or disc image +|: Startup Disk Creator - Create a startup disk using a CD or disc image |: Oracle VM VirtualBox |: Wireshark - Network traffic analyzer |: Xfe - A lightweight file manager for X Window @@ -425,28 +495,31 @@ b: Bulk Rename - Rename Multiple Files c: Open Folder with Thunar - Open the specified folders in Thunar d: Thunar File Manager - Browse the filesystem with the file manager -e: dosbox Emulator - An emulator to run old DOS games -f: Root Terminal - Opens a terminal as the root user, using gksu to ask for the password -g: About GNOME - Learn more about GNOME -h: Panel - Customize the panel settings -i: Theme Installer - Installs themes packages for various parts of the desktop -j: Image Viewer -k: Character Map - Insert special characters into documents -l: gVim - GTK2 enhanced vim text editor -m: HP Device Manager - View device status, ink levels and perform maintenance. -n: Help - Get help with GNOME -o: Home -p: KCharSelect -q: KFloppy -r: KJots -s: Akonaditray -t: Ark -u: KDE Groupware Wizard -v: KAlarm -w: Kate -x: KCalc -y: KFileReplace -z: Find Files/Folders +e: Circle and Ruler - Geometry program +f: dosbox Emulator - An emulator to run old DOS games +g: Root Terminal - Opens a terminal as the root user, using gksu to ask for the password +h: About GNOME - Learn more about GNOME +i: Panel - Customize the panel settings +j: Theme Installer - Installs themes packages for various parts of the desktop +k: Image Viewer +l: GSpiceUI - A GUI to various freely available Spice electronic circuit simulators +m: Character Map - Insert special characters into documents +n: gVim - GTK2 enhanced vim text editor +o: HP Device Manager - View device status, ink levels and perform maintenance. +p: K3DSurf - Visualize and manipulate Mathematical models in three, four, five, and six dimensions +q: Help - Get help with GNOME +r: Home +s: KCharSelect +t: KFloppy +u: KJots +v: Akonaditray +w: Ark +x: KDE Groupware Wizard +y: KAlarm +z: Kate +|: KCalc +|: KFileReplace +|: Find Files/Folders |: KFontView |: KGpg - A GnuPG frontend |: Kleopatra @@ -473,6 +546,8 @@ |: Home Folder - Open your personal folder |: Network - Browse bookmarked and local network locations |: File Manager +|: PDF Editor +|: PlayOnLinux - PlayOnLinux |: Scilab - A scientific software package for numerical computations |: Tilda |: Worker - File manager for X. @@ -492,14 +567,16 @@ |: Xfw - A simple text editor for Xfe |: XNC - Graphical File manager, X Northern Captain |: Help - Get help with GNOME +|: KDE Resources - Configure KDE Resources Terminalemulator a: Terminal b: Root Terminal - Opens a terminal as the root user, using gksu to ask for the password c: Konsole -d: LXTerminal - Use the command line -e: rxvt-unicode - An Unicode capable rxvt clone -f: Tilda +d: Yakuake +e: LXTerminal - Use the command line +f: rxvt-unicode - An Unicode capable rxvt clone +g: Tilda Archlinux a: AUR - Archlinux AUR @@ -926,18 +1003,18 @@ Configuration-Menu a: < Notify Window group > b: < Notify Window mode group > -c: < Expose mode group > -d: < Hook group > -e: < Main mode group > -f: < Frame colors group > -g: < Identify key group > -h: < Corner group > -i: < Circulate mode group > -j: < Query string group > -k: < Placement group > -l: < Miscellaneous group > -m: < Info mode group > -n: < Second mode group > +c: < Identify key group > +d: < Expose mode group > +e: < Hook group > +f: < Main mode group > +g: < Frame colors group > +h: < Second mode group > +i: < Corner group > +j: < Circulate mode group > +k: < Query string group > +l: < Placement group > +m: < Miscellaneous group > +n: < Info mode group > o: < Menu group > F2: Save all configuration variables in clfswmrc @@ -950,6 +1027,12 @@ Conf-Notify-Window-Mode-Group a: Configure NOTIFY-WINDOW-FONT-STRING +Conf-Identify-Key-Group +a: Configure IDENTIFY-FOREGROUND +b: Configure IDENTIFY-BACKGROUND +c: Configure IDENTIFY-FONT-STRING +d: Configure IDENTIFY-BORDER + Conf-Expose-Mode-Group a: Configure EXPOSE-FOREGROUND b: Configure EXPOSE-SHOW-WINDOW-TITLE @@ -976,30 +1059,32 @@ c: Configure FRAME-FOREGROUND-HIDDEN d: Configure FRAME-BACKGROUND -Conf-Identify-Key-Group -a: Configure IDENTIFY-FOREGROUND -b: Configure IDENTIFY-FONT-STRING -c: Configure IDENTIFY-BORDER -d: Configure IDENTIFY-BACKGROUND +Conf-Second-Mode-Group +a: Configure SM-FOREGROUND-COLOR +b: Configure SM-BACKGROUND-COLOR +c: Configure SM-HEIGHT +d: Configure SM-WIDTH +e: Configure SM-BORDER-COLOR +f: Configure SM-FONT-STRING Conf-Corner-Group a: Configure CORNER-MAIN-MODE-LEFT-BUTTON b: Configure CORNER-SECOND-MODE-MIDDLE-BUTTON c: Configure CORNER-SECOND-MODE-LEFT-BUTTON -d: Configure CORNER-MAIN-MODE-RIGHT-BUTTON -e: Configure CORNER-SECOND-MODE-RIGHT-BUTTON -f: Configure CORNER-SIZE -g: Configure CLFSWM-TERMINAL-CMD -h: Configure VIRTUAL-KEYBOARD-CMD +d: Configure CORNER-SECOND-MODE-RIGHT-BUTTON +e: Configure CORNER-SIZE +f: Configure CORNER-MAIN-MODE-RIGHT-BUTTON +g: Configure VIRTUAL-KEYBOARD-CMD +h: Configure CLFSWM-TERMINAL-CMD i: Configure CORNER-MAIN-MODE-MIDDLE-BUTTON j: Configure CLFSWM-TERMINAL-NAME Conf-Circulate-Mode-Group -a: Configure CIRCULATE-TEXT-LIMITE -b: Configure CIRCULATE-BORDER -c: Configure CIRCULATE-WIDTH -d: Configure CIRCULATE-HEIGHT -e: Configure CIRCULATE-FONT-STRING +a: Configure CIRCULATE-BORDER +b: Configure CIRCULATE-HEIGHT +c: Configure CIRCULATE-TEXT-LIMITE +d: Configure CIRCULATE-FONT-STRING +e: Configure CIRCULATE-WIDTH f: Configure CIRCULATE-BACKGROUND g: Configure CIRCULATE-FOREGROUND @@ -1023,14 +1108,14 @@ g: Configure SECOND-MODE-PLACEMENT Conf-Miscellaneous-Group -a: Configure HAVE-TO-COMPRESS-NOTIFY -b: Configure HIDE-UNMANAGED-WINDOW +a: Configure CREATE-FRAME-ON-ROOT +b: Configure HAVE-TO-COMPRESS-NOTIFY c: Configure DEFAULT-WINDOW-WIDTH -d: Configure CREATE-FRAME-ON-ROOT +d: Configure NEVER-MANAGED-WINDOW-LIST e: Configure DEFAULT-MANAGED-TYPE -f: Configure DEFAULT-FRAME-DATA -g: Configure DEFAULT-MODIFIERS -h: Configure NEVER-MANAGED-WINDOW-LIST +f: Configure HIDE-UNMANAGED-WINDOW +g: Configure DEFAULT-FRAME-DATA +h: Configure DEFAULT-MODIFIERS i: Configure DEFAULT-WINDOW-HEIGHT j: Configure DEFAULT-FONT-STRING k: Configure DEFAULT-FOCUS-POLICY @@ -1049,14 +1134,6 @@ j: Configure INFO-COLOR-TITLE k: Configure INFO-COLOR-SECOND -Conf-Second-Mode-Group -a: Configure SM-FOREGROUND-COLOR -b: Configure SM-BACKGROUND-COLOR -c: Configure SM-HEIGHT -d: Configure SM-WIDTH -e: Configure SM-BORDER-COLOR -f: Configure SM-FONT-STRING - Conf-Menu-Group a: Configure MENU-COLOR-COMMENT b: Configure MENU-COLOR-KEY Modified: clfswm/load.lisp ============================================================================== --- clfswm/load.lisp (original) +++ clfswm/load.lisp Sat Feb 5 16:34:18 2011 @@ -57,14 +57,14 @@ (in-package :clfswm) -(ignore-errors - (main :read-conf-file-p t)) +;;(ignore-errors +;; (main :read-conf-file-p t)) ;;;; Uncomment lines above to save the default documentation. -;;(ignore-errors -;; (main :read-conf-file-p nil)) -;;(produce-all-docs) +(ignore-errors + (main :read-conf-file-p nil)) +(produce-all-docs) ;;; For debuging: start another sever (for example: 'startx -- :1'), Xnest From pbrochard at common-lisp.net Sun Feb 6 20:50:09 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Sun, 06 Feb 2011 15:50:09 -0500 Subject: [clfswm-cvs] r400 - clfswm Message-ID: Author: pbrochard Date: Sun Feb 6 15:50:09 2011 New Revision: 400 Log: Fix a README spelling error Modified: clfswm/ChangeLog clfswm/README Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Sun Feb 6 15:50:09 2011 @@ -1,3 +1,7 @@ +2011-02-05 Philippe Brochard + + * *: **** Release 1102 **** + 2011-02-05 Desmond O. Chang * src/keysyms.lisp: Add extended keysyms from stumpwm. @@ -497,6 +501,8 @@ 2009-06-29 Philippe Brochard + * *: **** Release 0906 **** + * contrib/cd-player.lisp: New file to handle the CD player. * contrib/xmms.lisp: New file to handle the xmms player. @@ -754,6 +760,7 @@ deleted child. 2008-09-23 Philippe Brochard + * *: **** Release 0809 **** 2008-09-23 Philippe Brochard Modified: clfswm/README ============================================================================== --- clfswm/README (original) +++ clfswm/README Sun Feb 6 15:50:09 2011 @@ -14,19 +14,19 @@ frames are created/deleted on the fly. A window can be in more than one frame, so it can have multiple views of the same windows. - Using CLFSWM is like walking throw a tree of frames and windows. + Using CLFSWM is like walking through a tree of frames and windows. Enter in a child to make it the current root and make it fullscreen maximized. Leave it to make its parent the current root. - Here is the default key binding to navigate throw this tree: + Here is the default key binding to navigate through this tree: - * Alt-Tab: circulate throw children of the current child. + * Alt-Tab: circulate through children of the current child. * Alt-Left/Right: circulate through brother children (ie: this is like workspaces for a more conventional window manager) * Alt-Up: select the first child of the current frame. * Alt-Down: select the parent of the current child. * Alt-Enter: Make the current selected child the current root (ie - maximize it) + maximize it) * Alt+Shift-Enter: Make the parent of the current root the current root (ie unmaximize the current root). @@ -36,7 +36,7 @@ A main mode with minimal keys and mouse grabbing to avoid conflicts with others applications. And a second mode with more keys and mouse actions. - For details of its usage, have a look at the files doc/keys.txt or + For details of its usage, have a look at the files doc/keys.txt or doc/keys.html A lot of functions to manage CLFSWM can be found in the second mode menu. See the file menu-def.lisp for an overview. From pbrochard at common-lisp.net Sun Feb 6 22:28:15 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Sun, 06 Feb 2011 17:28:15 -0500 Subject: [clfswm-cvs] r401 - in clfswm: . doc Message-ID: Author: pbrochard Date: Sun Feb 6 17:28:14 2011 New Revision: 401 Log: Put load.lisp in normal mode and not documentation mode Modified: clfswm/doc/menu.html clfswm/doc/menu.txt clfswm/load.lisp Modified: clfswm/doc/menu.html ============================================================================== --- clfswm/doc/menu.html (original) +++ clfswm/doc/menu.html Sun Feb 6 17:28:14 2011 @@ -1094,67 +1094,70 @@ e: Evolution - Manage your email, contacts and schedule

- f: GV + f: Gnumeric - Calculation, Analysis, and Visualization of Information

- g: LibreOffice Impress + g: GV

- h: Kontact + h: LibreOffice Impress

- i: KAddressBook + i: Kontact

- j: KOrganizer - Calendar and Scheduling Program + j: KAddressBook

- k: KTimeTracker + k: KOrganizer - Calendar and Scheduling Program

- l: KWord - Write text documents + l: KTimeTracker

- m: Lokalize + m: KWord - Write text documents

- n: Okular + n: Lokalize

- o: LibreOffice 3.3 Math + o: Okular

- p: LibreOffice 3.3 Printer Administration + p: LibreOffice 3.3 Math

- q: LibreOffice 3.3 + q: LibreOffice 3.3 Printer Administration

- r: LibreOffice 3.3 Writer + r: LibreOffice 3.3

- s: Lyx - Latex WYSIWYM Editor + s: LibreOffice 3.3 Writer

- t: LibreOffice Extension Manager + t: Lyx - Latex WYSIWYM Editor

- u: OOo4Kids 1.1 Calc + u: LibreOffice Extension Manager

- v: OOo4Kids 1.1 Draw + v: OOo4Kids 1.1 Calc

- w: OOo4Kids 1.1 Impress + w: OOo4Kids 1.1 Draw

- x: OOo4Kids 1.1 Math + x: OOo4Kids 1.1 Impress

- y: OOo4Kids 1.1 + y: OOo4Kids 1.1 Math

- z: OOo4Kids 1.1 Printer Administration + z: OOo4Kids 1.1 +

+

+ |: OOo4Kids 1.1 Printer Administration

|: OOo4Kids 1.1 Writer @@ -2929,40 +2932,40 @@ b: < Notify Window mode group >

- c: < Identify key group > + c: < Expose mode group >

- d: < Expose mode group > + d: < Hook group >

- e: < Hook group > + e: < Main mode group >

- f: < Main mode group > + f: < Frame colors group >

- g: < Frame colors group > + g: < Identify key group >

- h: < Second mode group > + h: < Corner group >

- i: < Corner group > + i: < Circulate mode group >

- j: < Circulate mode group > + j: < Query string group >

- k: < Query string group > + k: < Placement group >

- l: < Placement group > + l: < Miscellaneous group >

- m: < Miscellaneous group > + m: < Info mode group >

- n: < Info mode group > + n: < Second mode group >

o: < Menu group > @@ -2995,22 +2998,6 @@


- Conf-Identify-Key-Group -

-

- a: Configure IDENTIFY-FOREGROUND -

-

- b: Configure IDENTIFY-BACKGROUND -

-

- c: Configure IDENTIFY-FONT-STRING -

-

- d: Configure IDENTIFY-BORDER -

-
-

Conf-Expose-Mode-Group

@@ -3081,25 +3068,19 @@


- Conf-Second-Mode-Group + Conf-Identify-Key-Group

- a: Configure SM-FOREGROUND-COLOR -

-

- b: Configure SM-BACKGROUND-COLOR -

-

- c: Configure SM-HEIGHT + a: Configure IDENTIFY-FOREGROUND

- d: Configure SM-WIDTH + b: Configure IDENTIFY-FONT-STRING

- e: Configure SM-BORDER-COLOR + c: Configure IDENTIFY-BORDER

- f: Configure SM-FONT-STRING + d: Configure IDENTIFY-BACKGROUND


@@ -3115,19 +3096,19 @@ c: Configure CORNER-SECOND-MODE-LEFT-BUTTON

- d: Configure CORNER-SECOND-MODE-RIGHT-BUTTON + d: Configure CORNER-MAIN-MODE-RIGHT-BUTTON

- e: Configure CORNER-SIZE + e: Configure CORNER-SECOND-MODE-RIGHT-BUTTON

- f: Configure CORNER-MAIN-MODE-RIGHT-BUTTON + f: Configure CORNER-SIZE

- g: Configure VIRTUAL-KEYBOARD-CMD + g: Configure CLFSWM-TERMINAL-CMD

- h: Configure CLFSWM-TERMINAL-CMD + h: Configure VIRTUAL-KEYBOARD-CMD

i: Configure CORNER-MAIN-MODE-MIDDLE-BUTTON @@ -3143,16 +3124,16 @@ a: Configure CIRCULATE-BORDER

- b: Configure CIRCULATE-HEIGHT + b: Configure CIRCULATE-WIDTH

- c: Configure CIRCULATE-TEXT-LIMITE + c: Configure CIRCULATE-HEIGHT

- d: Configure CIRCULATE-FONT-STRING + d: Configure CIRCULATE-TEXT-LIMITE

- e: Configure CIRCULATE-WIDTH + e: Configure CIRCULATE-FONT-STRING

f: Configure CIRCULATE-BACKGROUND @@ -3218,28 +3199,28 @@ Conf-Miscellaneous-Group

- a: Configure CREATE-FRAME-ON-ROOT + a: Configure HAVE-TO-COMPRESS-NOTIFY

- b: Configure HAVE-TO-COMPRESS-NOTIFY + b: Configure HIDE-UNMANAGED-WINDOW

c: Configure DEFAULT-WINDOW-WIDTH

- d: Configure NEVER-MANAGED-WINDOW-LIST + d: Configure CREATE-FRAME-ON-ROOT

e: Configure DEFAULT-MANAGED-TYPE

- f: Configure HIDE-UNMANAGED-WINDOW + f: Configure DEFAULT-FRAME-DATA

- g: Configure DEFAULT-FRAME-DATA + g: Configure DEFAULT-MODIFIERS

- h: Configure DEFAULT-MODIFIERS + h: Configure NEVER-MANAGED-WINDOW-LIST

i: Configure DEFAULT-WINDOW-HEIGHT @@ -3292,6 +3273,28 @@


+ Conf-Second-Mode-Group +

+

+ a: Configure SM-FOREGROUND-COLOR +

+

+ b: Configure SM-BACKGROUND-COLOR +

+

+ c: Configure SM-HEIGHT +

+

+ d: Configure SM-WIDTH +

+

+ e: Configure SM-BORDER-COLOR +

+

+ f: Configure SM-FONT-STRING +

+
+

Conf-Menu-Group

Modified: clfswm/doc/menu.txt ============================================================================== --- clfswm/doc/menu.txt (original) +++ clfswm/doc/menu.txt Sun Feb 6 17:28:14 2011 @@ -370,27 +370,28 @@ c: LibreOffice Calc d: ePDFViewer - Lightweight PDF document viewer e: Evolution - Manage your email, contacts and schedule -f: GV -g: LibreOffice Impress -h: Kontact -i: KAddressBook -j: KOrganizer - Calendar and Scheduling Program -k: KTimeTracker -l: KWord - Write text documents -m: Lokalize -n: Okular -o: LibreOffice 3.3 Math -p: LibreOffice 3.3 Printer Administration -q: LibreOffice 3.3 -r: LibreOffice 3.3 Writer -s: Lyx - Latex WYSIWYM Editor -t: LibreOffice Extension Manager -u: OOo4Kids 1.1 Calc -v: OOo4Kids 1.1 Draw -w: OOo4Kids 1.1 Impress -x: OOo4Kids 1.1 Math -y: OOo4Kids 1.1 -z: OOo4Kids 1.1 Printer Administration +f: Gnumeric - Calculation, Analysis, and Visualization of Information +g: GV +h: LibreOffice Impress +i: Kontact +j: KAddressBook +k: KOrganizer - Calendar and Scheduling Program +l: KTimeTracker +m: KWord - Write text documents +n: Lokalize +o: Okular +p: LibreOffice 3.3 Math +q: LibreOffice 3.3 Printer Administration +r: LibreOffice 3.3 +s: LibreOffice 3.3 Writer +t: Lyx - Latex WYSIWYM Editor +u: LibreOffice Extension Manager +v: OOo4Kids 1.1 Calc +w: OOo4Kids 1.1 Draw +x: OOo4Kids 1.1 Impress +y: OOo4Kids 1.1 Math +z: OOo4Kids 1.1 +|: OOo4Kids 1.1 Printer Administration |: OOo4Kids 1.1 Writer |: LibreOffice Quickstarter |: LibreOffice @@ -1003,18 +1004,18 @@ Configuration-Menu a: < Notify Window group > b: < Notify Window mode group > -c: < Identify key group > -d: < Expose mode group > -e: < Hook group > -f: < Main mode group > -g: < Frame colors group > -h: < Second mode group > -i: < Corner group > -j: < Circulate mode group > -k: < Query string group > -l: < Placement group > -m: < Miscellaneous group > -n: < Info mode group > +c: < Expose mode group > +d: < Hook group > +e: < Main mode group > +f: < Frame colors group > +g: < Identify key group > +h: < Corner group > +i: < Circulate mode group > +j: < Query string group > +k: < Placement group > +l: < Miscellaneous group > +m: < Info mode group > +n: < Second mode group > o: < Menu group > F2: Save all configuration variables in clfswmrc @@ -1027,12 +1028,6 @@ Conf-Notify-Window-Mode-Group a: Configure NOTIFY-WINDOW-FONT-STRING -Conf-Identify-Key-Group -a: Configure IDENTIFY-FOREGROUND -b: Configure IDENTIFY-BACKGROUND -c: Configure IDENTIFY-FONT-STRING -d: Configure IDENTIFY-BORDER - Conf-Expose-Mode-Group a: Configure EXPOSE-FOREGROUND b: Configure EXPOSE-SHOW-WINDOW-TITLE @@ -1059,32 +1054,30 @@ c: Configure FRAME-FOREGROUND-HIDDEN d: Configure FRAME-BACKGROUND -Conf-Second-Mode-Group -a: Configure SM-FOREGROUND-COLOR -b: Configure SM-BACKGROUND-COLOR -c: Configure SM-HEIGHT -d: Configure SM-WIDTH -e: Configure SM-BORDER-COLOR -f: Configure SM-FONT-STRING +Conf-Identify-Key-Group +a: Configure IDENTIFY-FOREGROUND +b: Configure IDENTIFY-FONT-STRING +c: Configure IDENTIFY-BORDER +d: Configure IDENTIFY-BACKGROUND Conf-Corner-Group a: Configure CORNER-MAIN-MODE-LEFT-BUTTON b: Configure CORNER-SECOND-MODE-MIDDLE-BUTTON c: Configure CORNER-SECOND-MODE-LEFT-BUTTON -d: Configure CORNER-SECOND-MODE-RIGHT-BUTTON -e: Configure CORNER-SIZE -f: Configure CORNER-MAIN-MODE-RIGHT-BUTTON -g: Configure VIRTUAL-KEYBOARD-CMD -h: Configure CLFSWM-TERMINAL-CMD +d: Configure CORNER-MAIN-MODE-RIGHT-BUTTON +e: Configure CORNER-SECOND-MODE-RIGHT-BUTTON +f: Configure CORNER-SIZE +g: Configure CLFSWM-TERMINAL-CMD +h: Configure VIRTUAL-KEYBOARD-CMD i: Configure CORNER-MAIN-MODE-MIDDLE-BUTTON j: Configure CLFSWM-TERMINAL-NAME Conf-Circulate-Mode-Group a: Configure CIRCULATE-BORDER -b: Configure CIRCULATE-HEIGHT -c: Configure CIRCULATE-TEXT-LIMITE -d: Configure CIRCULATE-FONT-STRING -e: Configure CIRCULATE-WIDTH +b: Configure CIRCULATE-WIDTH +c: Configure CIRCULATE-HEIGHT +d: Configure CIRCULATE-TEXT-LIMITE +e: Configure CIRCULATE-FONT-STRING f: Configure CIRCULATE-BACKGROUND g: Configure CIRCULATE-FOREGROUND @@ -1108,14 +1101,14 @@ g: Configure SECOND-MODE-PLACEMENT Conf-Miscellaneous-Group -a: Configure CREATE-FRAME-ON-ROOT -b: Configure HAVE-TO-COMPRESS-NOTIFY +a: Configure HAVE-TO-COMPRESS-NOTIFY +b: Configure HIDE-UNMANAGED-WINDOW c: Configure DEFAULT-WINDOW-WIDTH -d: Configure NEVER-MANAGED-WINDOW-LIST +d: Configure CREATE-FRAME-ON-ROOT e: Configure DEFAULT-MANAGED-TYPE -f: Configure HIDE-UNMANAGED-WINDOW -g: Configure DEFAULT-FRAME-DATA -h: Configure DEFAULT-MODIFIERS +f: Configure DEFAULT-FRAME-DATA +g: Configure DEFAULT-MODIFIERS +h: Configure NEVER-MANAGED-WINDOW-LIST i: Configure DEFAULT-WINDOW-HEIGHT j: Configure DEFAULT-FONT-STRING k: Configure DEFAULT-FOCUS-POLICY @@ -1134,6 +1127,14 @@ j: Configure INFO-COLOR-TITLE k: Configure INFO-COLOR-SECOND +Conf-Second-Mode-Group +a: Configure SM-FOREGROUND-COLOR +b: Configure SM-BACKGROUND-COLOR +c: Configure SM-HEIGHT +d: Configure SM-WIDTH +e: Configure SM-BORDER-COLOR +f: Configure SM-FONT-STRING + Conf-Menu-Group a: Configure MENU-COLOR-COMMENT b: Configure MENU-COLOR-KEY Modified: clfswm/load.lisp ============================================================================== --- clfswm/load.lisp (original) +++ clfswm/load.lisp Sun Feb 6 17:28:14 2011 @@ -57,14 +57,14 @@ (in-package :clfswm) -;;(ignore-errors -;; (main :read-conf-file-p t)) +(ignore-errors + (main :read-conf-file-p t)) -;;;; Uncomment lines above to save the default documentation. -(ignore-errors - (main :read-conf-file-p nil)) -(produce-all-docs) +;;;;;; Uncomment lines above to save the default documentation. +;;(ignore-errors +;; (main :read-conf-file-p nil)) +;;(produce-all-docs) ;;; For debuging: start another sever (for example: 'startx -- :1'), Xnest From pbrochard at common-lisp.net Tue Feb 8 22:35:03 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Tue, 08 Feb 2011 17:35:03 -0500 Subject: [clfswm-cvs] r402 - in clfswm: . src Message-ID: Author: pbrochard Date: Tue Feb 8 17:35:03 2011 New Revision: 402 Log: src/clfswm.lisp (main-mode): Raise or not unmanaged windows following request in *never-managed-window-list*. Modified: clfswm/ChangeLog clfswm/src/clfswm-corner.lisp clfswm/src/clfswm-internal.lisp clfswm/src/clfswm-util.lisp clfswm/src/clfswm.lisp clfswm/src/config.lisp Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Tue Feb 8 17:35:03 2011 @@ -1,3 +1,8 @@ +2011-02-08 Philippe Brochard + + * src/clfswm.lisp (main-mode): Raise or not unmanaged windows + following request in *never-managed-window-list*. + 2011-02-05 Philippe Brochard * *: **** Release 1102 **** Modified: clfswm/src/clfswm-corner.lisp ============================================================================== --- clfswm/src/clfswm-corner.lisp (original) +++ clfswm/src/clfswm-corner.lisp Tue Feb 8 17:35:03 2011 @@ -91,7 +91,8 @@ (do-shell cmd) (setf win (wait-window-in-query-tree wait-test)) (hide-window win)) - (cond ((window-hidden-p win) (unhide-window win) + (cond ((window-hidden-p win) + (unhide-window win) (when focus-p (focus-window win)) (raise-window win)) Modified: clfswm/src/clfswm-internal.lisp ============================================================================== --- clfswm/src/clfswm-internal.lisp (original) +++ clfswm/src/clfswm-internal.lisp Tue Feb 8 17:35:03 2011 @@ -157,12 +157,9 @@ (defun never-managed-window-p (window) (dolist (type *never-managed-window-list*) - (destructuring-bind (test predicate result) type + (destructuring-bind (test predicate result raise) type (when (funcall test (funcall predicate window) result) - (return t))))) - ;;(when (string-equal (funcall (first type) window) (second type)) - ;; (return t)))) - + (return (values t raise)))))) (defgeneric child-name (child)) Modified: clfswm/src/clfswm-util.lisp ============================================================================== --- clfswm/src/clfswm-util.lisp (original) +++ clfswm/src/clfswm-util.lisp Tue Feb 8 17:35:03 2011 @@ -1464,7 +1464,7 @@ (defun close-notify-window () (erase-timer :refresh-notify-window) (setf *never-managed-window-list* - (remove (list #'equal #'is-notify-window-p t) *never-managed-window-list* :test #'equal)) + (remove (list #'equal #'is-notify-window-p t t) *never-managed-window-list* :test #'equal)) (when gc (xlib:free-gcontext gc)) (when window @@ -1502,7 +1502,7 @@ :line-style :solid)) (when (frame-p *current-child*) (setf current-child *current-child*) - (push (list #'equal #'is-notify-window-p t) *never-managed-window-list*)) + (push (list #'equal #'is-notify-window-p t t) *never-managed-window-list*)) (map-window window) (refresh-notify-window) (xlib:display-finish-output *display*)))))) Modified: clfswm/src/clfswm.lisp ============================================================================== --- clfswm/src/clfswm.lisp (original) +++ clfswm/src/clfswm.lisp Tue Feb 8 17:35:03 2011 @@ -84,7 +84,11 @@ (process-new-window window) (map-window window) (unless (null-size-window-p window) - (show-all-children)))) + (multiple-value-bind (never-managed raise) + (never-managed-window-p window) + (unless (and never-managed raise) + (show-all-children)))))) + (define-handler main-mode :unmap-notify (send-event-p event-window window) (unless (and (not send-event-p) Modified: clfswm/src/config.lisp ============================================================================== --- clfswm/src/config.lisp (original) +++ clfswm/src/config.lisp Tue Feb 8 17:35:03 2011 @@ -47,11 +47,11 @@ ;;; CONFIG - Never managed window list (defparameter *never-managed-window-list* - '((string-equal xlib:get-wm-class "ROX-Pinboard") - (string-equal xlib:get-wm-class "xvkbd") - (string-equal xlib:wm-name "clfswm-terminal")) + '((string-equal xlib:get-wm-class "ROX-Pinboard" nil) + (string-equal xlib:get-wm-class "xvkbd" t) + (string-equal xlib:wm-name "clfswm-terminal" t)) "Config(): CLFSWM will never manage windows of this type. -A list of (predicate-function-on-window expected-string)") +A list of (predicate-function-on-window expected-string raise-p)") (defparameter *hide-unmanaged-window* t From pbrochard at common-lisp.net Wed Feb 9 21:59:59 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Wed, 09 Feb 2011 16:59:59 -0500 Subject: [clfswm-cvs] r403 - in clfswm: . src Message-ID: Author: pbrochard Date: Wed Feb 9 16:59:58 2011 New Revision: 403 Log: src/clfswm-util.lisp (mouse-focus-move/resize-generic): Take care of never managed windows to move or resize them if the raise parameter is true. Modified: clfswm/ChangeLog clfswm/src/clfswm-corner.lisp clfswm/src/clfswm-internal.lisp clfswm/src/clfswm-util.lisp clfswm/src/config.lisp Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Wed Feb 9 16:59:58 2011 @@ -1,3 +1,12 @@ +2011-02-09 Philippe Brochard + + * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Take + care of never managed windows to move or resize them if the raise + parameter is true. + + * src/clfswm-internal.lisp (in-frame, in-window, in-child): New + functions. + 2011-02-08 Philippe Brochard * src/clfswm.lisp (main-mode): Raise or not unmanaged windows Modified: clfswm/src/clfswm-corner.lisp ============================================================================== --- clfswm/src/clfswm-corner.lisp (original) +++ clfswm/src/clfswm-corner.lisp Wed Feb 9 16:59:58 2011 @@ -122,3 +122,4 @@ t)) t)) + Modified: clfswm/src/clfswm-internal.lisp ============================================================================== --- clfswm/src/clfswm-internal.lisp (original) +++ clfswm/src/clfswm-internal.lisp Wed Feb 9 16:59:58 2011 @@ -64,7 +64,6 @@ - (defgeneric frame-p (frame)) (defmethod frame-p ((frame frame)) (declare (ignore frame)) @@ -75,6 +74,28 @@ +;;; in-*: Find if point (x,y) is in frame, window or child +(defun in-frame (frame x y) + (and (frame-p frame) + (<= (frame-rx frame) x (+ (frame-rx frame) (frame-rw frame))) + (<= (frame-ry frame) y (+ (frame-ry frame) (frame-rh frame))))) + +(defun in-window (window x y) + (and (xlib:window-p window) + (<= (xlib:drawable-x window) x (+ (xlib:drawable-x window) (xlib:drawable-width window))) + (<= (xlib:drawable-y window) y (+ (xlib:drawable-y window) (xlib:drawable-height window))))) + +(defgeneric in-child (child x y)) + +(defmethod in-child ((child frame) x y) + (in-frame child x y)) +(defmethod in-child ((child xlib:window) x y) + (in-window child x y)) +(defmethod in-child (child x y) + (declare (ignore child x y)) + nil) + + (defun frame-selected-child (frame) @@ -156,10 +177,11 @@ (defun never-managed-window-p (window) - (dolist (type *never-managed-window-list*) - (destructuring-bind (test predicate result raise) type - (when (funcall test (funcall predicate window) result) - (return (values t raise)))))) + (when (xlib:window-p window) + (dolist (type *never-managed-window-list*) + (destructuring-bind (test predicate result raise) type + (when (funcall test (funcall predicate window) result) + (return (values t raise))))))) (defgeneric child-name (child)) Modified: clfswm/src/clfswm-util.lisp ============================================================================== --- clfswm/src/clfswm-util.lisp (original) +++ clfswm/src/clfswm-util.lisp Wed Feb 9 16:59:58 2011 @@ -149,34 +149,48 @@ (let ((win *root*)) (with-all-windows-frames-and-parent (*current-root* child parent) (when (and (or (managed-window-p child parent) (child-equal-p parent *current-child*)) - (<= (xlib:drawable-x child) x (+ (xlib:drawable-x child) (xlib:drawable-width child))) - (<= (xlib:drawable-y child) y (+ (xlib:drawable-y child) (xlib:drawable-height child)))) + (in-window child x y)) (setf win child)) - (when (and (<= (frame-rx child) x (+ (frame-rx child) (frame-rw child))) - (<= (frame-ry child) y (+ (frame-ry child) (frame-rh child)))) + (when (in-frame child x y) (setf win (frame-window child)))) win)) -(defun find-child-under-mouse (x y &optional first-foundp) + + +(defun find-child-under-mouse-in-never-managed-windows (x y) + "Return the child under mouse from never managed windows" + (dolist (win (xlib:query-tree *root*)) + (unless (window-hidden-p win) + (multiple-value-bind (managed raise) + (never-managed-window-p win) + (when (and managed raise (in-window win x y)) + (return-from find-child-under-mouse-in-never-managed-windows win)))))) + + +(defun find-child-under-mouse-in-child-tree (x y &optional first-foundp) "Return the child under the mouse" (let ((ret nil)) (with-all-windows-frames-and-parent (*current-root* child parent) (when (and (not (window-hidden-p child)) (or (managed-window-p child parent) (child-equal-p parent *current-child*)) - (<= (xlib:drawable-x child) x (+ (xlib:drawable-x child) (xlib:drawable-width child))) - (<= (xlib:drawable-y child) y (+ (xlib:drawable-y child) (xlib:drawable-height child)))) + (in-window child x y)) (if first-foundp - (return-from find-child-under-mouse child) + (return-from find-child-under-mouse-in-child-tree child) (setf ret child))) - (when (and (<= (frame-rx child) x (+ (frame-rx child) (frame-rw child))) - (<= (frame-ry child) y (+ (frame-ry child) (frame-rh child)))) + (when (in-frame child x y) (if first-foundp - (return-from find-child-under-mouse child) + (return-from find-child-under-mouse-in-child-tree child) (setf ret child)))) ret)) +(defun find-child-under-mouse (x y &optional first-foundp also-never-managed) + "Return the child under the mouse" + (or (and also-never-managed + (find-child-under-mouse-in-never-managed-windows x y)) + (find-child-under-mouse-in-child-tree x y first-foundp))) + @@ -596,26 +610,39 @@ mouse-fun is #'move-frame or #'resize-frame. Focus child and its parents - For window: set current child to window or its parent according to window-parent" - (let* ((child (find-child-under-mouse root-x root-y)) - (parent (find-parent-frame child))) - (when (and (child-equal-p child *current-root*) - (frame-p *current-root*)) - (setf child (create-frame) - parent *current-root* - mouse-fn #'resize-frame) - (place-frame child parent root-x root-y 10 10) - (map-window (frame-window child)) - (pushnew child (frame-child *current-root*))) - (typecase child - (xlib:window - (if (managed-window-p child parent) - (funcall mouse-fn parent (find-parent-frame parent) root-x root-y) - (funcall(cond ((eql mouse-fn #'move-frame) #'move-window) - ((eql mouse-fn #'resize-frame) #'resize-window)) - child root-x root-y))) - (frame (funcall mouse-fn child parent root-x root-y))) - (focus-all-children child parent window-parent) - (show-all-children *current-root*))) + (labels ((move/resize-managed (child) + (let ((parent (find-parent-frame child))) + (when (and (child-equal-p child *current-root*) + (frame-p *current-root*)) + (setf child (create-frame) + parent *current-root* + mouse-fn #'resize-frame) + (place-frame child parent root-x root-y 10 10) + (map-window (frame-window child)) + (pushnew child (frame-child *current-root*))) + (typecase child + (xlib:window + (if (managed-window-p child parent) + (funcall mouse-fn parent (find-parent-frame parent) root-x root-y) + (funcall (cond ((eql mouse-fn #'move-frame) #'move-window) + ((eql mouse-fn #'resize-frame) #'resize-window)) + child root-x root-y))) + (frame (funcall mouse-fn child parent root-x root-y))) + (focus-all-children child parent window-parent) + (show-all-children *current-root*))) + (move/resize-never-managed (child) + (raise-window child) + (funcall (cond ((eql mouse-fn #'move-frame) #'move-window) + ((eql mouse-fn #'resize-frame) #'resize-window)) + child root-x root-y) + (focus-window child))) + (let ((child (find-child-under-mouse root-x root-y nil t))) + (multiple-value-bind (never-managed raise) + (never-managed-window-p child) + (if (and (xlib:window-p child) never-managed raise) + (move/resize-never-managed child) + (move/resize-managed child)))))) + Modified: clfswm/src/config.lisp ============================================================================== --- clfswm/src/config.lisp (original) +++ clfswm/src/config.lisp Wed Feb 9 16:59:58 2011 @@ -48,7 +48,7 @@ ;;; CONFIG - Never managed window list (defparameter *never-managed-window-list* '((string-equal xlib:get-wm-class "ROX-Pinboard" nil) - (string-equal xlib:get-wm-class "xvkbd" t) + (string-equal xlib:get-wm-class "xvkbd" t) (string-equal xlib:wm-name "clfswm-terminal" t)) "Config(): CLFSWM will never manage windows of this type. A list of (predicate-function-on-window expected-string raise-p)") @@ -129,6 +129,7 @@ (defparameter *clfswm-terminal-name* "clfswm-terminal" "Config(Corner group): The clfswm terminal name") ;;(defparameter *clfswm-terminal-cmd* (format nil "xterm -T ~A -e /bin/bash --noprofile --norc" *clfswm-terminal-name*) +;;(defparameter *clfswm-terminal-cmd* (format nil "urxvt -name ~A" *clfswm-terminal-name*) (defparameter *clfswm-terminal-cmd* (format nil "xterm -T ~A" *clfswm-terminal-name*) "Config(Corner group): The clfswm terminal command. This command must set the window title to *clfswm-terminal-name*") From pbrochard at common-lisp.net Wed Feb 9 22:09:55 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Wed, 09 Feb 2011 17:09:55 -0500 Subject: [clfswm-cvs] r404 - clfswm/src Message-ID: Author: pbrochard Date: Wed Feb 9 17:09:55 2011 New Revision: 404 Log: mouse-focus-move/resize-generic: do not focus a never managed window Modified: clfswm/src/clfswm-util.lisp Modified: clfswm/src/clfswm-util.lisp ============================================================================== --- clfswm/src/clfswm-util.lisp (original) +++ clfswm/src/clfswm-util.lisp Wed Feb 9 17:09:55 2011 @@ -634,8 +634,7 @@ (raise-window child) (funcall (cond ((eql mouse-fn #'move-frame) #'move-window) ((eql mouse-fn #'resize-frame) #'resize-window)) - child root-x root-y) - (focus-window child))) + child root-x root-y))) (let ((child (find-child-under-mouse root-x root-y nil t))) (multiple-value-bind (never-managed raise) (never-managed-window-p child) From pbrochard at common-lisp.net Sat Feb 12 22:43:02 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Sat, 12 Feb 2011 17:43:02 -0500 Subject: [clfswm-cvs] r405 - in clfswm: . src Message-ID: Author: pbrochard Date: Sat Feb 12 17:43:02 2011 New Revision: 405 Log: *never-managed-window-list*: Structure change to be more flexible. Let the choice to focus, raise and do nothing on never managed windows. Modified: clfswm/ChangeLog clfswm/src/clfswm-internal.lisp clfswm/src/clfswm-util.lisp clfswm/src/config.lisp clfswm/src/xlib-util.lisp Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Sat Feb 12 17:43:02 2011 @@ -1,3 +1,14 @@ +2011-02-12 Philippe Brochard + + * src/xlib-util.lisp (equal-wm-class-fun, equal-wm-name-fun) + (raise-window-fun, raise-and-focus-window-fun): New functions. + + * src/config.lisp (*clfswm-terminal-cmd*): Switch from xterm to + urxvt. + (*never-managed-window-list*): Structure change to be more + flexible. Let the choice to focus, raise and do nothing on never + managed windows. + 2011-02-09 Philippe Brochard * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Take Modified: clfswm/src/clfswm-internal.lisp ============================================================================== --- clfswm/src/clfswm-internal.lisp (original) +++ clfswm/src/clfswm-internal.lisp Sat Feb 12 17:43:02 2011 @@ -179,9 +179,9 @@ (defun never-managed-window-p (window) (when (xlib:window-p window) (dolist (type *never-managed-window-list*) - (destructuring-bind (test predicate result raise) type - (when (funcall test (funcall predicate window) result) - (return (values t raise))))))) + (when (funcall (first type) window) + (return (values t (second type))))))) + (defgeneric child-name (child)) Modified: clfswm/src/clfswm-util.lisp ============================================================================== --- clfswm/src/clfswm-util.lisp (original) +++ clfswm/src/clfswm-util.lisp Sat Feb 12 17:43:02 2011 @@ -160,12 +160,14 @@ (defun find-child-under-mouse-in-never-managed-windows (x y) "Return the child under mouse from never managed windows" - (dolist (win (xlib:query-tree *root*)) - (unless (window-hidden-p win) - (multiple-value-bind (managed raise) - (never-managed-window-p win) - (when (and managed raise (in-window win x y)) - (return-from find-child-under-mouse-in-never-managed-windows win)))))) + (let ((ret nil)) + (dolist (win (xlib:query-tree *root*)) + (unless (window-hidden-p win) + (multiple-value-bind (never-managed raise) + (never-managed-window-p win) + (when (and never-managed raise (in-window win x y)) + (setf ret win))))) + ret)) (defun find-child-under-mouse-in-child-tree (x y &optional first-foundp) @@ -630,16 +632,16 @@ (frame (funcall mouse-fn child parent root-x root-y))) (focus-all-children child parent window-parent) (show-all-children *current-root*))) - (move/resize-never-managed (child) - (raise-window child) + (move/resize-never-managed (child raise-fun) + (funcall raise-fun child) (funcall (cond ((eql mouse-fn #'move-frame) #'move-window) ((eql mouse-fn #'resize-frame) #'resize-window)) child root-x root-y))) (let ((child (find-child-under-mouse root-x root-y nil t))) - (multiple-value-bind (never-managed raise) + (multiple-value-bind (never-managed raise-fun) (never-managed-window-p child) - (if (and (xlib:window-p child) never-managed raise) - (move/resize-never-managed child) + (if (and (xlib:window-p child) never-managed raise-fun) + (move/resize-never-managed child raise-fun) (move/resize-managed child)))))) @@ -1473,7 +1475,8 @@ (cons (second tx)) (t *notify-window-foreground*))))) (defun is-notify-window-p (win) - (xlib:window-equal win window)) + (when (and (xlib:window-p win) (xlib:window-p window)) + (xlib:window-equal win window))) (defun refresh-notify-window () (add-timer 0.1 #'refresh-notify-window :refresh-notify-window) @@ -1490,7 +1493,8 @@ (defun close-notify-window () (erase-timer :refresh-notify-window) (setf *never-managed-window-list* - (remove (list #'equal #'is-notify-window-p t t) *never-managed-window-list* :test #'equal)) + (remove (list #'is-notify-window-p (raise-window-fun)) + *never-managed-window-list* :test #'equal)) (when gc (xlib:free-gcontext gc)) (when window @@ -1528,7 +1532,7 @@ :line-style :solid)) (when (frame-p *current-child*) (setf current-child *current-child*) - (push (list #'equal #'is-notify-window-p t t) *never-managed-window-list*)) + (push (list #'is-notify-window-p (raise-window-fun)) *never-managed-window-list*)) (map-window window) (refresh-notify-window) (xlib:display-finish-output *display*)))))) Modified: clfswm/src/config.lisp ============================================================================== --- clfswm/src/config.lisp (original) +++ clfswm/src/config.lisp Sat Feb 12 17:43:02 2011 @@ -47,11 +47,12 @@ ;;; CONFIG - Never managed window list (defparameter *never-managed-window-list* - '((string-equal xlib:get-wm-class "ROX-Pinboard" nil) - (string-equal xlib:get-wm-class "xvkbd" t) - (string-equal xlib:wm-name "clfswm-terminal" t)) + (list (list (equal-wm-class-fun "ROX-Pinboard") nil) + (list (equal-wm-class-fun "xvkbd") (raise-window-fun)) + (list (equal-wm-name-fun "clfswm-terminal") (raise-and-focus-window-fun))) "Config(): CLFSWM will never manage windows of this type. -A list of (predicate-function-on-window expected-string raise-p)") +A list of (list match-function handle-function)") + (defparameter *hide-unmanaged-window* t @@ -129,8 +130,8 @@ (defparameter *clfswm-terminal-name* "clfswm-terminal" "Config(Corner group): The clfswm terminal name") ;;(defparameter *clfswm-terminal-cmd* (format nil "xterm -T ~A -e /bin/bash --noprofile --norc" *clfswm-terminal-name*) -;;(defparameter *clfswm-terminal-cmd* (format nil "urxvt -name ~A" *clfswm-terminal-name*) -(defparameter *clfswm-terminal-cmd* (format nil "xterm -T ~A" *clfswm-terminal-name*) +(defparameter *clfswm-terminal-cmd* (format nil "urxvt -name ~A" *clfswm-terminal-name*) +;;(defparameter *clfswm-terminal-cmd* (format nil "xterm -T ~A" *clfswm-terminal-name*) "Config(Corner group): The clfswm terminal command. This command must set the window title to *clfswm-terminal-name*") Modified: clfswm/src/xlib-util.lisp ============================================================================== --- clfswm/src/xlib-util.lisp (original) +++ clfswm/src/xlib-util.lisp Sat Feb 12 17:43:02 2011 @@ -393,14 +393,14 @@ (defun raise-window (window) "Map the window if needed and bring it to the top of the stack. Does not affect focus." - (when window + (when (xlib:window-p window) (when (window-hidden-p window) (unhide-window window)) (setf (xlib:window-priority window) :top-if))) (defun focus-window (window) "Give the window focus." - (when window + (when (xlib:window-p window) (xlib:set-input-focus *display* window :parent))) @@ -797,3 +797,23 @@ when (plusp k) return t)) +;;; Windows wm class and name tests +(defun equal-wm-class-fun (class) + (lambda (win) + (when (xlib:window-p win) + (string-equal (xlib:get-wm-class win) class)))) + +(defun equal-wm-name-fun (name) + (lambda (win) + (when (xlib:window-p win) + (string-equal (xlib:wm-name win) name)))) + +(defun raise-window-fun () + (lambda (win) + (raise-window win))) + +(defun raise-and-focus-window-fun () + (lambda (win) + (raise-window win) + (focus-window win))) + From pbrochard at common-lisp.net Sun Feb 13 20:43:28 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Sun, 13 Feb 2011 15:43:28 -0500 Subject: [clfswm-cvs] r406 - clfswm/src Message-ID: Author: pbrochard Date: Sun Feb 13 15:43:28 2011 New Revision: 406 Log: No need to create the functions every time. Modified: clfswm/src/clfswm-util.lisp clfswm/src/config.lisp clfswm/src/xlib-util.lisp Modified: clfswm/src/clfswm-util.lisp ============================================================================== --- clfswm/src/clfswm-util.lisp (original) +++ clfswm/src/clfswm-util.lisp Sun Feb 13 15:43:28 2011 @@ -1493,7 +1493,7 @@ (defun close-notify-window () (erase-timer :refresh-notify-window) (setf *never-managed-window-list* - (remove (list #'is-notify-window-p (raise-window-fun)) + (remove (list #'is-notify-window-p 'raise-window) *never-managed-window-list* :test #'equal)) (when gc (xlib:free-gcontext gc)) @@ -1532,7 +1532,7 @@ :line-style :solid)) (when (frame-p *current-child*) (setf current-child *current-child*) - (push (list #'is-notify-window-p (raise-window-fun)) *never-managed-window-list*)) + (push (list #'is-notify-window-p 'raise-window) *never-managed-window-list*)) (map-window window) (refresh-notify-window) (xlib:display-finish-output *display*)))))) Modified: clfswm/src/config.lisp ============================================================================== --- clfswm/src/config.lisp (original) +++ clfswm/src/config.lisp Sun Feb 13 15:43:28 2011 @@ -48,8 +48,8 @@ ;;; CONFIG - Never managed window list (defparameter *never-managed-window-list* (list (list (equal-wm-class-fun "ROX-Pinboard") nil) - (list (equal-wm-class-fun "xvkbd") (raise-window-fun)) - (list (equal-wm-name-fun "clfswm-terminal") (raise-and-focus-window-fun))) + (list (equal-wm-class-fun "xvkbd") 'raise-window) + (list (equal-wm-name-fun "clfswm-terminal") 'raise-and-focus-window)) "Config(): CLFSWM will never manage windows of this type. A list of (list match-function handle-function)") Modified: clfswm/src/xlib-util.lisp ============================================================================== --- clfswm/src/xlib-util.lisp (original) +++ clfswm/src/xlib-util.lisp Sun Feb 13 15:43:28 2011 @@ -403,6 +403,10 @@ (when (xlib:window-p window) (xlib:set-input-focus *display* window :parent))) +(defun raise-and-focus-window (window) + "Raise and focus." + (raise-window window) + (focus-window window)) (defun no-focus () "don't focus any window but still read keyboard events." @@ -807,13 +811,3 @@ (lambda (win) (when (xlib:window-p win) (string-equal (xlib:wm-name win) name)))) - -(defun raise-window-fun () - (lambda (win) - (raise-window win))) - -(defun raise-and-focus-window-fun () - (lambda (win) - (raise-window win) - (focus-window win))) - From pbrochard at common-lisp.net Sun Feb 13 22:23:28 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Sun, 13 Feb 2011 17:23:28 -0500 Subject: [clfswm-cvs] r407 - clfswm/src Message-ID: Author: pbrochard Date: Sun Feb 13 17:23:28 2011 New Revision: 407 Log: Better clfswm terminal identification Modified: clfswm/src/clfswm-corner.lisp clfswm/src/config.lisp clfswm/src/xlib-util.lisp Modified: clfswm/src/clfswm-corner.lisp ============================================================================== --- clfswm/src/clfswm-corner.lisp (original) +++ clfswm/src/clfswm-corner.lisp Sun Feb 13 17:23:28 2011 @@ -90,6 +90,7 @@ (unless (find-window-in-query-tree win) (do-shell cmd) (setf win (wait-window-in-query-tree wait-test)) + (grab-all-buttons win) (hide-window win)) (cond ((window-hidden-p win) (unhide-window win) @@ -113,6 +114,9 @@ (let (win) + (defun equal-clfswm-terminal-id (window) + (when win + (equal (xlib:window-id window) (xlib:window-id win)))) (defun present-clfswm-terminal () "Hide/Unhide a terminal" (setf win (generic-present-body *clfswm-terminal-cmd* Modified: clfswm/src/config.lisp ============================================================================== --- clfswm/src/config.lisp (original) +++ clfswm/src/config.lisp Sun Feb 13 17:23:28 2011 @@ -49,7 +49,7 @@ (defparameter *never-managed-window-list* (list (list (equal-wm-class-fun "ROX-Pinboard") nil) (list (equal-wm-class-fun "xvkbd") 'raise-window) - (list (equal-wm-name-fun "clfswm-terminal") 'raise-and-focus-window)) + (list 'equal-clfswm-terminal-id 'raise-and-focus-window)) "Config(): CLFSWM will never manage windows of this type. A list of (list match-function handle-function)") @@ -130,8 +130,8 @@ (defparameter *clfswm-terminal-name* "clfswm-terminal" "Config(Corner group): The clfswm terminal name") ;;(defparameter *clfswm-terminal-cmd* (format nil "xterm -T ~A -e /bin/bash --noprofile --norc" *clfswm-terminal-name*) -(defparameter *clfswm-terminal-cmd* (format nil "urxvt -name ~A" *clfswm-terminal-name*) -;;(defparameter *clfswm-terminal-cmd* (format nil "xterm -T ~A" *clfswm-terminal-name*) +;;(defparameter *clfswm-terminal-cmd* (format nil "urxvt -name ~A" *clfswm-terminal-name*) +(defparameter *clfswm-terminal-cmd* (format nil "xterm -T ~A" *clfswm-terminal-name*) "Config(Corner group): The clfswm terminal command. This command must set the window title to *clfswm-terminal-name*") Modified: clfswm/src/xlib-util.lisp ============================================================================== --- clfswm/src/xlib-util.lisp (original) +++ clfswm/src/xlib-util.lisp Sun Feb 13 17:23:28 2011 @@ -396,7 +396,7 @@ (when (xlib:window-p window) (when (window-hidden-p window) (unhide-window window)) - (setf (xlib:window-priority window) :top-if))) + (setf (xlib:window-priority window) :above))) (defun focus-window (window) "Give the window focus." From pbrochard at common-lisp.net Mon Feb 14 23:34:19 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Mon, 14 Feb 2011 18:34:19 -0500 Subject: [clfswm-cvs] r408 - in clfswm: . contrib src Message-ID: Author: pbrochard Date: Mon Feb 14 18:34:19 2011 New Revision: 408 Log: src/clfswm.lisp (main-unprotected): Destroy the notify window before closing the display. Tis fix a bug when resetting/reloading clfswm. Modified: clfswm/ChangeLog clfswm/contrib/clfswm clfswm/src/clfswm.lisp Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Mon Feb 14 18:34:19 2011 @@ -1,3 +1,9 @@ +2011-02-15 Philippe Brochard + + * src/clfswm.lisp (main-unprotected): Destroy the notify window + before closing the display. This fix a bug when resetting/reloading + clfswm. + 2011-02-12 Philippe Brochard * src/xlib-util.lisp (equal-wm-class-fun, equal-wm-name-fun) Modified: clfswm/contrib/clfswm ============================================================================== --- clfswm/contrib/clfswm (original) +++ clfswm/contrib/clfswm Mon Feb 14 18:34:19 2011 @@ -72,7 +72,8 @@ build_sbcl() { - sbcl $lisp_opt --disable-debugger --eval "(require :asdf)" \ + sbcl $lisp_opt --disable-debugger --eval "(require :asdf)" \ + --eval "(require :sb-posix)" \ --eval "(load \"$clfswm_asd_path/clfswm.asd\")" \ --eval "(require :clfswm)" \ --eval "(save-lisp-and-die \"$dump_image\" :toplevel 'clfswm:main)" Modified: clfswm/src/clfswm.lisp ============================================================================== --- clfswm/src/clfswm.lisp (original) +++ clfswm/src/clfswm.lisp Mon Feb 14 18:34:19 2011 @@ -215,7 +215,6 @@ - (defun read-conf-file () (let* ((conf (conf-file-name))) (if conf @@ -276,6 +275,7 @@ (ungrab-main-keys) (xlib:destroy-window *no-focus-window*) (xlib:free-pixmap *pixmap-buffer*) + (close-notify-window) (xlib:close-display *display*) #+:event-debug (format t "~2&Unhandled events: ~A~%" *unhandled-events*)))) From pbrochard at common-lisp.net Wed Feb 16 10:47:43 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Wed, 16 Feb 2011 05:47:43 -0500 Subject: [clfswm-cvs] r409 - in clfswm: . src Message-ID: Author: pbrochard Date: Wed Feb 16 05:47:42 2011 New Revision: 409 Log: src/clfswm.lisp (main-unprotected): Add a close hook. And close the notify window, the virtual keyboard and the clfswm terminal by default. Modified: clfswm/ChangeLog clfswm/src/clfswm-corner.lisp clfswm/src/clfswm.lisp clfswm/src/config.lisp Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Wed Feb 16 05:47:42 2011 @@ -1,3 +1,9 @@ +2011-02-16 Philippe Brochard + + * src/clfswm.lisp (main-unprotected): Add a close hook. And close + the notify window, the virtual keyboard and the clfswm terminal by + default. + 2011-02-15 Philippe Brochard * src/clfswm.lisp (main-unprotected): Destroy the notify window Modified: clfswm/src/clfswm-corner.lisp ============================================================================== --- clfswm/src/clfswm-corner.lisp (original) +++ clfswm/src/clfswm-corner.lisp Wed Feb 16 05:47:42 2011 @@ -104,6 +104,11 @@ (let (win) + (defun close-virtual-keyboard () + (when win + (xlib:destroy-window win) + (xlib:display-finish-output *display*) + (setf win nil))) (defun present-virtual-keyboard () "Present a virtual keyboard" (setf win (generic-present-body *virtual-keyboard-cmd* @@ -117,6 +122,11 @@ (defun equal-clfswm-terminal-id (window) (when win (equal (xlib:window-id window) (xlib:window-id win)))) + (defun close-clfswm-terminal () + (when win + (xlib:destroy-window win) + (xlib:display-finish-output *display*) + (setf win nil))) (defun present-clfswm-terminal () "Hide/Unhide a terminal" (setf win (generic-present-body *clfswm-terminal-cmd* Modified: clfswm/src/clfswm.lisp ============================================================================== --- clfswm/src/clfswm.lisp (original) +++ clfswm/src/clfswm.lisp Wed Feb 16 05:47:42 2011 @@ -275,7 +275,7 @@ (ungrab-main-keys) (xlib:destroy-window *no-focus-window*) (xlib:free-pixmap *pixmap-buffer*) - (close-notify-window) + (call-hook *close-hook*) (xlib:close-display *display*) #+:event-debug (format t "~2&Unhandled events: ~A~%" *unhandled-events*)))) Modified: clfswm/src/config.lisp ============================================================================== --- clfswm/src/config.lisp (original) +++ clfswm/src/config.lisp Wed Feb 16 05:47:42 2011 @@ -151,6 +151,9 @@ (defparameter *init-hook* '(default-init-hook display-hello-window) "Config(Hook group): Init hook. This hook is run just after the first root frame is created") +(defparameter *close-hook* '(close-notify-window close-clfswm-terminal close-virtual-keyboard) + "Config(Hook group): Close hook. This hook is run just before closing the display") + (defparameter *default-nw-hook* 'default-frame-nw-hook "Config(Hook group): Default action to do on newly created windows") From pbrochard at common-lisp.net Tue Feb 22 12:11:44 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Tue, 22 Feb 2011 07:11:44 -0500 Subject: [clfswm-cvs] r410 - in clfswm: . contrib/server src Message-ID: Author: pbrochard Date: Tue Feb 22 07:11:42 2011 New Revision: 410 Log: src/clfswm.lisp (main): Use ASDF:SYSTEM-SOURCE-DIRECTORY instead of *LOAD-TRUENAME*. *LOAD-TRUENAME* is only bound during a call to LOAD. If one eval CLFSWM:MAIN in repl, BASE-DIR will be an empty string. Use ASDF:SYSTEM-SOURCE-DIRECTORY to fix it. Modified: clfswm/ChangeLog clfswm/contrib/server/server.lisp clfswm/src/clfswm-util.lisp clfswm/src/clfswm.lisp Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Tue Feb 22 07:11:42 2011 @@ -1,3 +1,10 @@ +2011-02-22 Desmond O. Chang + + * src/clfswm.lisp (main): Use ASDF:SYSTEM-SOURCE-DIRECTORY instead + of *LOAD-TRUENAME*. *LOAD-TRUENAME* is only bound during a call to + LOAD. If one eval CLFSWM:MAIN in repl, BASE-DIR will be an empty + string. Use ASDF:SYSTEM-SOURCE-DIRECTORY to fix it. + 2011-02-16 Philippe Brochard * src/clfswm.lisp (main-unprotected): Add a close hook. And close Modified: clfswm/contrib/server/server.lisp ============================================================================== --- clfswm/contrib/server/server.lisp (original) +++ clfswm/contrib/server/server.lisp Tue Feb 22 07:11:42 2011 @@ -35,7 +35,7 @@ (format t "Loading the clfswm server code... ") -(pushnew (truename (concatenate 'string *contrib-dir* "contrib/" "server/")) asdf:*central-registry*) +(pushnew (truename (merge-pathnames "server/" *contrib-dir*)) asdf:*central-registry*) (dbg asdf:*central-registry*) Modified: clfswm/src/clfswm-util.lisp ============================================================================== --- clfswm/src/clfswm-util.lisp (original) +++ clfswm/src/clfswm-util.lisp Tue Feb 22 07:11:42 2011 @@ -50,7 +50,7 @@ (defun load-contrib (file) "Load a file in the contrib directory" - (let ((truename (concatenate 'string *contrib-dir* "contrib/" file))) + (let ((truename (merge-pathnames file *contrib-dir*))) (format t "Loading contribution file: ~A~%" truename) (when (probe-file truename) (load truename :verbose nil)))) Modified: clfswm/src/clfswm.lisp ============================================================================== --- clfswm/src/clfswm.lisp (original) +++ clfswm/src/clfswm.lisp Tue Feb 22 07:11:42 2011 @@ -244,10 +244,10 @@ (defun main-unprotected (&key (display (or (getenv "DISPLAY") ":0")) protocol - (base-dir (directory-namestring (or *load-truename* ""))) + (base-dir (asdf:system-source-directory :clfswm)) (read-conf-file-p t) (alternate-conf nil) error-msg) - (setf *contrib-dir* base-dir) + (setf *contrib-dir* (merge-pathnames "contrib/" base-dir)) (conf-file-name alternate-conf) (when read-conf-file-p (read-conf-file)) @@ -283,7 +283,7 @@ (defun main (&key (display (or (getenv "DISPLAY") ":0")) protocol - (base-dir (directory-namestring (or *load-truename* ""))) + (base-dir (asdf:system-source-directory :clfswm)) (read-conf-file-p t) (alternate-conf nil)) (let (error-msg) From pbrochard at common-lisp.net Tue Feb 22 14:16:08 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Tue, 22 Feb 2011 09:16:08 -0500 Subject: [clfswm-cvs] r411 - in clfswm: . contrib src Message-ID: Author: pbrochard Date: Tue Feb 22 09:16:08 2011 New Revision: 411 Log: contrib/volume-mode.lisp: Add a volume mode inspired by the emms volume package. and its alsa mixer interface Added: clfswm/contrib/amixer.lisp clfswm/contrib/volume-mode.lisp Modified: clfswm/ChangeLog clfswm/src/clfswm-configuration.lisp clfswm/src/clfswm-menu.lisp clfswm/src/tools.lisp Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Tue Feb 22 09:16:08 2011 @@ -1,3 +1,11 @@ +2011-02-22 Desmond O. Chang + + * contrib/amixer.lisp: Add a volume mode inspired by the emms + volume package. Alsa mixer interface. + + * contrib/volume-mode.lisp: Add a volume mode inspired by the emms + volume package. + 2011-02-22 Desmond O. Chang * src/clfswm.lisp (main): Use ASDF:SYSTEM-SOURCE-DIRECTORY instead Added: clfswm/contrib/amixer.lisp ============================================================================== --- (empty file) +++ clfswm/contrib/amixer.lisp Tue Feb 22 09:16:08 2011 @@ -0,0 +1,103 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Volume mode +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2011 Desmond O. Chang +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +;;; +;;; Documentation: A volume mode. +;;; If you want to use this file, just add this line in +;;; your configuration file: +;;; +;;; (load-contrib "volume-mode.lisp") +;;; And with the alsa mixer: +;;; (load-contrib "amixer.lisp") +;;; +;;; This mode is inspired by the emms volume package. When you change the +;;; volume in main mode or second mode, clfswm will enter volume mode and +;;; set a timer to leave this mode. Changing volume in volume mode will +;;; reset the timer. You can also leave volume mode manually by return, +;;; escape or control-g. +;;; +;;; Special variable *VOLUME-MODE-TIMEOUT* controls the timeout in +;;; seconds. If it's positive, volume mode will exit when timeout occurs; +;;; if it's 0, volume mode will exit right now; if it's negative, volume +;;; will not exit even if timeout occurs. Default timeout is 3 seconds. +;;; +;;; Volume mode uses three special variables to control the mixer: +;;; *VOLUME-MUTE-FUNCTION*, *VOLUME-LOWER-FUNCTION* and +;;; *VOLUME-RAISE-FUNCTION*. Their values are functions which must accept +;;; no arguments and return two values indicating the mixer state. The +;;; first value is the volume ratio whose type must be (real 0 1). If the +;;; mixer is mute, the second value should be true, otherwise it should be +;;; false. If volume controller cannot get the mixer state, it must +;;; return NIL. +;;; +;;; Volume mode shows a mute sign, a percentage and a ratio bar on the +;;; screen. A plus sign '+' means it's unmute and a minus sign '-' means +;;; it's mute now. If volume mode doesn't know the mixer state, a message +;;; "unknown" will be shown. +;;; +;;; contrib/amixer.lisp shows how to use volume mode with alsa. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + +(defvar *amixer-scontrol* "Master" + "Default control for amixer commands.") + +(defun amixer-cmd (cmd scontrol &rest parameters) + (let* ((sed "sed 's/^.*\\[\\([[:digit:]]\\+\\)%\\].*\\[\\(on\\|off\\)\\].*$/\\1%\\2/'") + (fmt "amixer ~A ~A~{ ~A~} 2>/dev/null | tail -1 | ~A") + (shell (format nil fmt cmd scontrol parameters sed)) + (line (read-line (do-shell shell) nil nil))) + (when line + (let* ((ratio (parse-integer line :junk-allowed t)) + (%-pos (position #\% line))) + (values (and ratio (/ ratio 100)) + (equal "off" (and %-pos (subseq line (1+ %-pos))))))))) + +(defun amixer-sset (&rest parameters) + (apply 'amixer-cmd "sset" *amixer-scontrol* parameters)) + +(defparameter *volume-mute-function* + (lambda () (amixer-sset "toggle"))) + +(defparameter *volume-lower-function* + (lambda () (amixer-sset "5%-"))) + +(defparameter *volume-raise-function* + (lambda () (amixer-sset "5%+"))) + +(defun amixer-lower-1% () + "Lower 1% volume." + (volume-set (lambda () (amixer-sset "1%-")))) + +(defun amixer-raise-1% () + "Raise 1% volume." + (volume-set (lambda () (amixer-sset "1%+")))) + +(defun amixer-volume-bind () + (define-volume-key ("less") 'amixer-lower-1%) + (define-volume-key ("greater") 'amixer-raise-1%) + (define-second-key ("less") 'amixer-lower-1%) + (define-second-key ("greater") 'amixer-raise-1%)) + +(add-hook *binding-hook* 'amixer-volume-bind) Added: clfswm/contrib/volume-mode.lisp ============================================================================== --- (empty file) +++ clfswm/contrib/volume-mode.lisp Tue Feb 22 09:16:08 2011 @@ -0,0 +1,260 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Volume mode +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2011 Desmond O. Chang +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +;;; +;;; Documentation: A volume mode. +;;; If you want to use this file, just add this line in +;;; your configuration file: +;;; +;;; (load-contrib "volume-mode.lisp") +;;; And with the alsa mixer: +;;; (load-contrib "amixer.lisp") +;;; +;;; This mode is inspired by the emms volume package. When you change the +;;; volume in main mode or second mode, clfswm will enter volume mode and +;;; set a timer to leave this mode. Changing volume in volume mode will +;;; reset the timer. You can also leave volume mode manually by return, +;;; escape or control-g. +;;; +;;; Special variable *VOLUME-MODE-TIMEOUT* controls the timeout in +;;; seconds. If it's positive, volume mode will exit when timeout occurs; +;;; if it's 0, volume mode will exit right now; if it's negative, volume +;;; will not exit even if timeout occurs. Default timeout is 3 seconds. +;;; +;;; Volume mode uses three special variables to control the mixer: +;;; *VOLUME-MUTE-FUNCTION*, *VOLUME-LOWER-FUNCTION* and +;;; *VOLUME-RAISE-FUNCTION*. Their values are functions which must accept +;;; no arguments and return two values indicating the mixer state. The +;;; first value is the volume ratio whose type must be (real 0 1). If the +;;; mixer is mute, the second value should be true, otherwise it should be +;;; false. If volume controller cannot get the mixer state, it must +;;; return NIL. +;;; +;;; Volume mode shows a mute sign, a percentage and a ratio bar on the +;;; screen. A plus sign '+' means it's unmute and a minus sign '-' means +;;; it's mute now. If volume mode doesn't know the mixer state, a message +;;; "unknown" will be shown. +;;; +;;; contrib/amixer.lisp shows how to use volume mode with alsa. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + + +(defparameter *volume-keys* nil) +(defparameter *volume-mode-placement* 'bottom-middle-placement + "Config(Placement group): Volume mode window placement") + + +(defvar *volume-window* nil) +(defvar *volume-font* nil) +(defvar *volume-gc* nil) +(defvar *in-volume-mode* nil) +(defvar *leave-volume-mode* nil) + +(defvar *volume-ratio* nil) +(defvar *volume-mute* nil) + +(defvar *volume-mode-timeout* 3 + "Volume mode timeout in seconds: +> 0 means volume mode will exit when timeout occurs; += 0 means exit right now; +< 0 means exit manually.") + + +;;; CONFIG - Volume mode +(defparameter *volume-font-string* *default-font-string* + "Config(Volume mode group): Volume string window font string") +(defparameter *volume-background* "black" + "Config(Volume mode group): Volume string window background color") +(defparameter *volume-foreground* "green" + "Config(Volume mode group): Volume string window foreground color") +(defparameter *volume-border* "red" + "Config(Volume mode group): Volume string window border color") +(defparameter *volume-width* 400 + "Config(Volume mode group): Volume mode window width") +(defparameter *volume-height* 15 + "Config(Volume mode group): Volume mode window height") +(defparameter *volume-text-limit* 30 + "Config(Volume mode group): Maximum text limit in the volume window") +(defparameter *volume-external-mixer-cmd* "/usr/bin/gnome-alsamixer" + "Config(Volume mode group): Command to start an external mixer program") + +(create-configuration-menu :clear t) + +(define-init-hash-table-key *volume-keys* "Volume mode keys") +(define-define-key "volume" *volume-keys*) + +(add-hook *binding-hook* 'init-*volume-keys*) + +(defun set-default-volume-keys () + (define-volume-key ("XF86AudioMute") 'volume-mute) + (define-volume-key ("XF86AudioLowerVolume") 'volume-lower) + (define-volume-key ("XF86AudioRaiseVolume") 'volume-raise) + (define-volume-key (#\/) 'volume-mute) + (define-volume-key (#\,) 'volume-lower) + (define-volume-key (#\.) 'volume-raise) + (define-volume-key ("m") 'volume-mute) + (define-volume-key ("l") 'volume-lower) + (define-volume-key ("r") 'volume-raise) + (define-volume-key ("Return") 'leave-volume-mode) + (define-volume-key ("Escape") 'leave-volume-mode) + (define-volume-key ("g" :control) 'leave-volume-mode) + (define-volume-key ("e") 'run-external-volume-mixer) + ;;; Main mode + (define-main-key ("XF86AudioMute") 'volume-mute) + (define-main-key ("XF86AudioLowerVolume") 'volume-lower) + (define-main-key ("XF86AudioRaiseVolume") 'volume-raise) + ;;; Second mode + (define-second-key ("XF86AudioMute") 'volume-mute) + (define-second-key ("XF86AudioLowerVolume") 'volume-lower) + (define-second-key ("XF86AudioRaiseVolume") 'volume-raise)) + +(add-hook *binding-hook* 'set-default-volume-keys) + +(defun volume-mode-window-message (width) + (if *volume-ratio* + (let* ((mute (if *volume-mute* #\- #\+)) + (percentage (round (* 100 *volume-ratio*))) + (n (round (* width *volume-ratio*)))) + (format nil "[~A] ~3 at A% ~A~A" mute percentage + (repeat-chars n #\#) (repeat-chars (- width n) #\.))) + "unknown")) + +(defun draw-volume-mode-window () + (raise-window *volume-window*) + (clear-pixmap-buffer *volume-window* *volume-gc*) + (let* ((text (limit-length (volume-mode-window-message 20) *volume-text-limit*)) + (len (length text))) + (xlib:draw-glyphs *pixmap-buffer* *volume-gc* + (truncate (/ (- *volume-width* (* (xlib:max-char-width *volume-font*) len)) 2)) + (truncate (/ (+ *volume-height* (- (xlib:font-ascent *volume-font*) (xlib:font-descent *volume-font*))) 2)) + text)) + (copy-pixmap-buffer *volume-window* *volume-gc*)) + +(defun leave-volume-mode () + "Leave the volume mode" + (throw 'exit-volume-loop nil)) + +(defun update-volume-mode () + (draw-volume-mode-window) + (cond ((plusp *volume-mode-timeout*) + (erase-timer :volume-mode-timer) + (with-timer (*volume-mode-timeout* :volume-mode-timer) + (setf *leave-volume-mode* t))) + ((zerop *volume-mode-timeout*) + (erase-timer :volume-mode-timer) + (setf *leave-volume-mode* t)) + ((minusp *volume-mode-timeout*) + (erase-timer :volume-mode-timer)))) + +(defun volume-enter-function () + (with-placement (*volume-mode-placement* x y *volume-width* *volume-height*) + (setf *volume-font* (xlib:open-font *display* *volume-font-string*) + *volume-window* (xlib:create-window :parent *root* + :x x + :y y + :width *volume-width* + :height *volume-height* + :background (get-color *volume-background*) + :border-width 1 + :border (get-color *volume-border*) + :colormap (xlib:screen-default-colormap *screen*) + :event-mask '(:exposure :key-press)) + *volume-gc* (xlib:create-gcontext :drawable *volume-window* + :foreground (get-color *volume-foreground*) + :background (get-color *volume-background*) + :font *volume-font* + :line-style :solid)) + (map-window *volume-window*)) + (setf *in-volume-mode* t + *leave-volume-mode* nil) + (update-volume-mode)) + +(defun volume-loop-function () + (when *leave-volume-mode* + (leave-volume-mode))) + +(defun volume-leave-function () + (when *volume-gc* + (xlib:free-gcontext *volume-gc*)) + (when *volume-window* + (xlib:destroy-window *volume-window*)) + (when *volume-font* + (xlib:close-font *volume-font*)) + (xlib:display-finish-output *display*) + (erase-timer :volume-mode-timer) + (setf *volume-window* nil + *volume-gc* nil + *volume-font* nil + *in-volume-mode* nil + *leave-volume-mode* nil)) + +(define-handler volume-mode :key-press (code state) + (funcall-key-from-code *volume-keys* code state)) + +(defun volume-mode () + (let ((grab-keyboard-p (xgrab-keyboard-p)) + (grab-pointer-p (xgrab-pointer-p))) + (xgrab-pointer *root* 92 93) + (unless grab-keyboard-p + (ungrab-main-keys) + (xgrab-keyboard *root*)) + (generic-mode 'volume-mode 'exit-volume-loop + :enter-function 'volume-enter-function + :loop-function 'volume-loop-function + :leave-function 'volume-leave-function + :original-mode '(main-mode)) + (unless grab-keyboard-p + (xungrab-keyboard) + (grab-main-keys)) + (if grab-pointer-p + (xgrab-pointer *root* 66 67) + (xungrab-pointer)))) + +(defun volume-set (fn) + (when fn + (setf (values *volume-ratio* *volume-mute*) (funcall fn)) + (if *in-volume-mode* + (update-volume-mode) + (volume-mode)))) + +(defvar *volume-mute-function* nil) +(defvar *volume-lower-function* nil) +(defvar *volume-raise-function* nil) + +(defun volume-mute () + "Toggle mute." + (volume-set *volume-mute-function*)) + +(defun volume-lower () + "Lower volume." + (volume-set *volume-lower-function*)) + +(defun volume-raise () + "Raise volume." + (volume-set *volume-raise-function*)) + +(defun run-external-volume-mixer () + "Start an external volume mixer" + (do-shell *volume-external-mixer-cmd*)) Modified: clfswm/src/clfswm-configuration.lisp ============================================================================== --- clfswm/src/clfswm-configuration.lisp (original) +++ clfswm/src/clfswm-configuration.lisp Tue Feb 22 09:16:08 2011 @@ -156,8 +156,10 @@ symbol)) -(defun create-configuration-menu () +(defun create-configuration-menu (&key clear) "Configuration menu" + (when clear + (clear-sub-menu 'main 'configuration-menu)) (multiple-value-bind (all-groups all-variables) (find-configuration-variables) (loop for group in all-groups Modified: clfswm/src/clfswm-menu.lisp ============================================================================== --- clfswm/src/clfswm-menu.lisp (original) +++ clfswm/src/clfswm-menu.lisp Tue Feb 22 09:16:08 2011 @@ -114,6 +114,8 @@ (defun del-sub-menu (menu-name sub-menu-name &optional (root *menu*)) (del-item-by-value (find-menu sub-menu-name) (find-menu menu-name root))) +(defun clear-sub-menu (menu-name sub-menu-name &optional (root *menu*)) + (setf (menu-item (find-menu sub-menu-name (find-menu menu-name root))) nil)) (defun add-menu-comment (menu-name &optional (comment "---") (root *menu*)) Modified: clfswm/src/tools.lisp ============================================================================== --- clfswm/src/tools.lisp (original) +++ clfswm/src/tools.lisp Tue Feb 22 09:16:08 2011 @@ -60,6 +60,7 @@ :create-symbol :number->char :simple-type-of + :repeat-chars :nth-insert :split-string :append-newline-space @@ -427,6 +428,11 @@ (t type)))) +(defun repeat-chars (n char) + "Return a string containing N CHARs." + (make-string n :initial-element char)) + + (defun nth-insert (n elem list) "Insert elem in (nth n list)" From pbrochard at common-lisp.net Wed Feb 23 21:25:51 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Wed, 23 Feb 2011 16:25:51 -0500 Subject: [clfswm-cvs] r412 - in clfswm: . contrib src Message-ID: Author: pbrochard Date: Wed Feb 23 16:25:51 2011 New Revision: 412 Log: src/clfswm.lisp (main-unprotected): Create the configuration menu only once at startup. Modified: clfswm/ChangeLog clfswm/contrib/amixer.lisp clfswm/contrib/volume-mode.lisp clfswm/src/clfswm.lisp clfswm/src/menu-def.lisp Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Wed Feb 23 16:25:51 2011 @@ -1,3 +1,8 @@ +2011-02-23 Philippe Brochard + + * src/clfswm.lisp (main-unprotected): Create the configuration + menu only once at startup. + 2011-02-22 Desmond O. Chang * contrib/amixer.lisp: Add a volume mode inspired by the emms Modified: clfswm/contrib/amixer.lisp ============================================================================== --- clfswm/contrib/amixer.lisp (original) +++ clfswm/contrib/amixer.lisp Wed Feb 23 16:25:51 2011 @@ -60,6 +60,8 @@ (in-package :clfswm) +(format t "Loading amixer code... ") + (defvar *amixer-scontrol* "Master" "Default control for amixer commands.") @@ -101,3 +103,5 @@ (define-second-key ("greater") 'amixer-raise-1%)) (add-hook *binding-hook* 'amixer-volume-bind) + +(format t "done~%") Modified: clfswm/contrib/volume-mode.lisp ============================================================================== --- clfswm/contrib/volume-mode.lisp (original) +++ clfswm/contrib/volume-mode.lisp Wed Feb 23 16:25:51 2011 @@ -60,6 +60,7 @@ (in-package :clfswm) +(format t "Loading Volume mode code... ") (defparameter *volume-keys* nil) (defparameter *volume-mode-placement* 'bottom-middle-placement @@ -100,8 +101,6 @@ (defparameter *volume-external-mixer-cmd* "/usr/bin/gnome-alsamixer" "Config(Volume mode group): Command to start an external mixer program") -(create-configuration-menu :clear t) - (define-init-hash-table-key *volume-keys* "Volume mode keys") (define-define-key "volume" *volume-keys*) @@ -258,3 +257,5 @@ (defun run-external-volume-mixer () "Start an external volume mixer" (do-shell *volume-external-mixer-cmd*)) + +(format t "done~%") Modified: clfswm/src/clfswm.lisp ============================================================================== --- clfswm/src/clfswm.lisp (original) +++ clfswm/src/clfswm.lisp Wed Feb 23 16:25:51 2011 @@ -251,6 +251,7 @@ (conf-file-name alternate-conf) (when read-conf-file-p (read-conf-file)) + (create-configuration-menu :clear t) (call-hook *main-entrance-hook*) (handler-case (open-display display protocol) Modified: clfswm/src/menu-def.lisp ============================================================================== --- clfswm/src/menu-def.lisp (original) +++ clfswm/src/menu-def.lisp Wed Feb 23 16:25:51 2011 @@ -62,8 +62,6 @@ (update-menus (find-menu 'standard-menu)) -(create-configuration-menu) - (add-menu-key 'help-menu "a" 'show-first-aid-kit) (add-menu-key 'help-menu "h" 'show-global-key-binding) (add-menu-key 'help-menu "b" 'show-main-mode-key-binding) From pbrochard at common-lisp.net Sat Feb 26 16:53:23 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Sat, 26 Feb 2011 11:53:23 -0500 Subject: [clfswm-cvs] r413 - in clfswm: . src Message-ID: Author: pbrochard Date: Sat Feb 26 11:53:22 2011 New Revision: 413 Log: src/clfswm-configuration.lisp (add-all-configuration-default-value): Add a default value to configurable variables. Modified: clfswm/ChangeLog clfswm/src/clfswm-configuration.lisp clfswm/src/clfswm.lisp Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Sat Feb 26 11:53:22 2011 @@ -1,3 +1,9 @@ +2011-02-26 Philippe Brochard + + * src/clfswm-configuration.lisp + (add-all-configuration-default-value): Add a default value to + configurable variables. + 2011-02-23 Philippe Brochard * src/clfswm.lisp (main-unprotected): Create the configuration Modified: clfswm/src/clfswm-configuration.lisp ============================================================================== --- clfswm/src/clfswm-configuration.lisp (original) +++ clfswm/src/clfswm-configuration.lisp Sat Feb 26 11:53:22 2011 @@ -51,6 +51,12 @@ (format nil "(->color #x~X)" (color->rgb value))) (t (format nil "~S" value))))) +(defun remove-config-group (documentation) + (let ((pos (position #\: documentation))) + (if pos + (string-trim " " (subseq documentation (1+ pos))) + documentation))) + ;;; Configuration variables save @@ -125,7 +131,7 @@ (format nil "conf-~A" (substitute #\- #\Space group))) :clfswm)) -(defun query-conf-value (string original) +(defun query-conf-value (var string original) (labels ((warn-wrong-type (result original) (if (equal (simple-type-of result) (simple-type-of original)) result @@ -138,7 +144,9 @@ result original)))) (multiple-value-bind (result return) - (query-string (format nil "Configure ~A" string) original) + (query-string (format nil "Configure ~A - ~A" string + (remove-config-group (documentation var 'variable))) + original) (let ((result-val (ignore-errors (eval (read-from-string result)))) (original-val (ignore-errors (eval (read-from-string original))))) (if (equal return :Return) @@ -150,7 +158,7 @@ (let* ((string (remove #\* (format nil "~A" var))) (symbol (intern (format nil "CONFIGURE-~A" string) :clfswm))) (setf (symbol-function symbol) (lambda () - (setf (symbol-value var) (query-conf-value string (escape-conf-value var))) + (setf (symbol-value var) (query-conf-value var string (escape-conf-value var))) (open-menu (find-menu 'configuration-menu))) (documentation symbol 'function) (format nil "Configure ~A" string)) symbol)) @@ -175,6 +183,27 @@ +;;; Default documentation string utility +(defun remove-configuration-default-value (symbol) + (let* ((doc (documentation symbol 'variable)) + (length (length doc))) + (when (and (plusp length) (char= (char doc (1- length)) #\))) + (let ((pos (position #\( doc :from-end t))) + (when pos + (setf (documentation symbol 'variable) + (string-trim " " (subseq doc 0 pos)))))))) + +(defun change-configuration-default-value (symbol) + (remove-configuration-default-value symbol) + (setf (documentation symbol 'variable) + (format nil "~A (~A)" (documentation symbol 'variable) + (escape-conf-value symbol)))) + +(defun add-all-configuration-default-value () + (with-all-internal-symbols (symbol :clfswm) + (when (is-config-p symbol) + (change-configuration-default-value symbol)))) + Modified: clfswm/src/clfswm.lisp ============================================================================== --- clfswm/src/clfswm.lisp (original) +++ clfswm/src/clfswm.lisp Sat Feb 26 11:53:22 2011 @@ -252,6 +252,7 @@ (when read-conf-file-p (read-conf-file)) (create-configuration-menu :clear t) + (add-all-configuration-default-value) (call-hook *main-entrance-hook*) (handler-case (open-display display protocol) From pbrochard at common-lisp.net Sun Feb 27 17:20:36 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Sun, 27 Feb 2011 12:20:36 -0500 Subject: [clfswm-cvs] r414 - in clfswm: . src Message-ID: Author: pbrochard Date: Sun Feb 27 12:20:36 2011 New Revision: 414 Log: src/clfswm-configuration.lisp (reset-all-config-variables): New function and menu entry. Modified: clfswm/ChangeLog clfswm/src/clfswm-configuration.lisp clfswm/src/clfswm.lisp Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Sun Feb 27 12:20:36 2011 @@ -1,3 +1,8 @@ +2011-02-27 Philippe Brochard + + * src/clfswm-configuration.lisp (reset-all-config-variables): New + function and menu entry. + 2011-02-26 Philippe Brochard * src/clfswm-configuration.lisp Modified: clfswm/src/clfswm-configuration.lisp ============================================================================== --- clfswm/src/clfswm-configuration.lisp (original) +++ clfswm/src/clfswm-configuration.lisp Sun Feb 27 12:20:36 2011 @@ -57,6 +57,8 @@ (string-trim " " (subseq documentation (1+ pos))) documentation))) +(defun get-config-value (value) + (ignore-errors (eval (read-from-string value)))) ;;; Configuration variables save @@ -137,9 +139,9 @@ result (if (string-equal (query-string - (format nil "~S and ~S are not of the same type (~A and ~A). Do you really want to use this value? (yes/no)" + (format nil "~S and ~S are not of the same type (~A and ~A). Do you really want to use this value?" result original (type-of result) (type-of original)) - "no") + "" '("yes" "no")) "yes") result original)))) @@ -147,8 +149,8 @@ (query-string (format nil "Configure ~A - ~A" string (remove-config-group (documentation var 'variable))) original) - (let ((result-val (ignore-errors (eval (read-from-string result)))) - (original-val (ignore-errors (eval (read-from-string original))))) + (let ((result-val (get-config-value result)) + (original-val (get-config-value original))) (if (equal return :Return) (warn-wrong-type result-val original-val) original-val))))) @@ -179,31 +181,58 @@ do (when (equal (second var) group) (add-menu-key menu (number->char (incf j)) (create-conf-function (first var)))))))) - (add-menu-key 'configuration-menu "F2" 'save-configuration-variables)) + (add-menu-key 'configuration-menu "F2" 'save-configuration-variables) + (add-menu-key 'configuration-menu "F3" 'reset-all-config-variables)) ;;; Default documentation string utility -(defun remove-configuration-default-value (symbol) - (let* ((doc (documentation symbol 'variable)) - (length (length doc))) - (when (and (plusp length) (char= (char doc (1- length)) #\))) - (let ((pos (position #\( doc :from-end t))) - (when pos - (setf (documentation symbol 'variable) - (string-trim " " (subseq doc 0 pos)))))))) +(defmacro with-config-default-value-position ((symbol doc pos1 pos2) &body body) + `(let* ((,doc (documentation ,symbol 'variable)) + (length (length ,doc)) + (,pos2 (and (plusp length) (1- length)))) + (when (and ,pos2 (char= (char ,doc ,pos2) #\))) + (let ((,pos1 (awhen (search "(Default: " ,doc :from-end t) + (+ it (length "(Default: "))))) + (when ,pos1 + , at body))))) + +(defun remove-config-default-value (symbol) + (with-config-default-value-position (symbol doc pos1 pos2) + (setf (documentation symbol 'variable) + (string-trim " " (subseq doc 0 pos1))))) + +(defun extract-config-default-value (symbol) + (with-config-default-value-position (symbol doc pos1 pos2) + (string-trim " " (subseq doc pos1 pos2)))) -(defun change-configuration-default-value (symbol) - (remove-configuration-default-value symbol) + +(defun change-config-default-value (symbol) + (remove-config-default-value symbol) (setf (documentation symbol 'variable) - (format nil "~A (~A)" (documentation symbol 'variable) + (format nil "~A (Default: ~A)" (documentation symbol 'variable) (escape-conf-value symbol)))) -(defun add-all-configuration-default-value () +(defun reset-config-to-default-value (symbol) + (let ((default (extract-config-default-value symbol))) + (setf (symbol-value symbol) (get-config-value default)))) + + +(defun add-all-config-default-value () (with-all-internal-symbols (symbol :clfswm) (when (is-config-p symbol) - (change-configuration-default-value symbol)))) - + (change-config-default-value symbol)))) +(defun reset-all-config-variables () + "Reset all configuration variables to there default values" + (when (string-equal + (query-string + (format nil "Do you really want to reset all values to there default?") + "" '("yes" "no")) + "yes") + (with-all-internal-symbols (symbol :clfswm) + (when (is-config-p symbol) + (reset-config-to-default-value symbol)))) + (open-menu (find-menu 'configuration-menu))) Modified: clfswm/src/clfswm.lisp ============================================================================== --- clfswm/src/clfswm.lisp (original) +++ clfswm/src/clfswm.lisp Sun Feb 27 12:20:36 2011 @@ -252,7 +252,7 @@ (when read-conf-file-p (read-conf-file)) (create-configuration-menu :clear t) - (add-all-configuration-default-value) + (add-all-config-default-value) (call-hook *main-entrance-hook*) (handler-case (open-display display protocol) From pbrochard at common-lisp.net Sun Feb 27 21:59:18 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Sun, 27 Feb 2011 16:59:18 -0500 Subject: [clfswm-cvs] r415 - in clfswm: . src Message-ID: Author: pbrochard Date: Sun Feb 27 16:59:18 2011 New Revision: 415 Log: src/clfswm-configuration.lisp (query-conf-value): Add the ability to leave the field blank to reset the variable to its default value. Modified: clfswm/ChangeLog clfswm/load.lisp clfswm/src/clfswm-configuration.lisp Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Sun Feb 27 16:59:18 2011 @@ -2,6 +2,8 @@ * src/clfswm-configuration.lisp (reset-all-config-variables): New function and menu entry. + (query-conf-value): Add the ability to leave the field blank to + reset the variable to its default value. 2011-02-26 Philippe Brochard Modified: clfswm/load.lisp ============================================================================== --- clfswm/load.lisp (original) +++ clfswm/load.lisp Sun Feb 27 16:59:18 2011 @@ -32,8 +32,8 @@ #+SBCL (require :asdf) -;;#+SBCL -;;(require :sb-posix) +#+SBCL +(require :sb-posix) ;;#+SBCL ;; (require :clx) Modified: clfswm/src/clfswm-configuration.lisp ============================================================================== --- clfswm/src/clfswm-configuration.lisp (original) +++ clfswm/src/clfswm-configuration.lisp Sun Feb 27 16:59:18 2011 @@ -144,16 +144,26 @@ "" '("yes" "no")) "yes") result - original)))) - (multiple-value-bind (result return) - (query-string (format nil "Configure ~A - ~A" string - (remove-config-group (documentation var 'variable))) - original) - (let ((result-val (get-config-value result)) - (original-val (get-config-value original))) - (if (equal return :Return) - (warn-wrong-type result-val original-val) - original-val))))) + original))) + (ask-set-default-value (original-val) + (let ((default (extract-config-default-value var))) + (if (string-equal + (query-string (format nil "Reset ~A from ~A to ~A?" var original default) + "" '("yes" "no")) + "yes") + (get-config-value default) + original-val)))) + (multiple-value-bind (result return) + (query-string (format nil "Configure ~A - ~A" string + (remove-config-group (documentation var 'variable))) + original) + (let ((original-val (get-config-value original))) + (if (equal return :Return) + (if (string= result "") + (ask-set-default-value original-val) + (let ((result-val (get-config-value result))) + (warn-wrong-type result-val original-val))) + original-val))))) (defun create-conf-function (var) @@ -187,13 +197,15 @@ ;;; Default documentation string utility +(defparameter *config-default-string* "(blank=Default: ") + (defmacro with-config-default-value-position ((symbol doc pos1 pos2) &body body) `(let* ((,doc (documentation ,symbol 'variable)) (length (length ,doc)) (,pos2 (and (plusp length) (1- length)))) (when (and ,pos2 (char= (char ,doc ,pos2) #\))) - (let ((,pos1 (awhen (search "(Default: " ,doc :from-end t) - (+ it (length "(Default: "))))) + (let ((,pos1 (awhen (search *config-default-string* ,doc :from-end t) + (+ it (length *config-default-string*))))) (when ,pos1 , at body))))) @@ -210,7 +222,8 @@ (defun change-config-default-value (symbol) (remove-config-default-value symbol) (setf (documentation symbol 'variable) - (format nil "~A (Default: ~A)" (documentation symbol 'variable) + (format nil "~A ~A~A)" (documentation symbol 'variable) + *config-default-string* (escape-conf-value symbol)))) (defun reset-config-to-default-value (symbol) @@ -228,7 +241,7 @@ "Reset all configuration variables to there default values" (when (string-equal (query-string - (format nil "Do you really want to reset all values to there default?") + "Do you really want to reset all values to there default?" "" '("yes" "no")) "yes") (with-all-internal-symbols (symbol :clfswm) From pbrochard at common-lisp.net Sun Feb 27 22:13:46 2011 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Sun, 27 Feb 2011 17:13:46 -0500 Subject: [clfswm-cvs] r416 - in clfswm: . src Message-ID: Author: pbrochard Date: Sun Feb 27 17:13:46 2011 New Revision: 416 Log: src/clfswm-util.lisp (query-yes-or-no): New function. Modified: clfswm/ChangeLog clfswm/src/clfswm-configuration.lisp clfswm/src/clfswm-layout.lisp clfswm/src/clfswm-util.lisp Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Sun Feb 27 17:13:46 2011 @@ -1,5 +1,7 @@ 2011-02-27 Philippe Brochard + * src/clfswm-util.lisp (query-yes-or-no): New function. + * src/clfswm-configuration.lisp (reset-all-config-variables): New function and menu entry. (query-conf-value): Add the ability to leave the field blank to Modified: clfswm/src/clfswm-configuration.lisp ============================================================================== --- clfswm/src/clfswm-configuration.lisp (original) +++ clfswm/src/clfswm-configuration.lisp Sun Feb 27 17:13:46 2011 @@ -137,20 +137,13 @@ (labels ((warn-wrong-type (result original) (if (equal (simple-type-of result) (simple-type-of original)) result - (if (string-equal - (query-string - (format nil "~S and ~S are not of the same type (~A and ~A). Do you really want to use this value?" - result original (type-of result) (type-of original)) - "" '("yes" "no")) - "yes") + (if (query-yes-or-no "~S and ~S are not of the same type (~A and ~A). Do you really want to use this value?" + result original (type-of result) (type-of original)) result original))) (ask-set-default-value (original-val) (let ((default (extract-config-default-value var))) - (if (string-equal - (query-string (format nil "Reset ~A from ~A to ~A?" var original default) - "" '("yes" "no")) - "yes") + (if (query-yes-or-no "Reset ~A from ~A to ~A?" var original default) (get-config-value default) original-val)))) (multiple-value-bind (result return) @@ -239,11 +232,7 @@ (defun reset-all-config-variables () "Reset all configuration variables to there default values" - (when (string-equal - (query-string - "Do you really want to reset all values to there default?" - "" '("yes" "no")) - "yes") + (when (query-yes-or-no "Do you really want to reset all values to there default?") (with-all-internal-symbols (symbol :clfswm) (when (is-config-p symbol) (reset-config-to-default-value symbol)))) Modified: clfswm/src/clfswm-layout.lisp ============================================================================== --- clfswm/src/clfswm-layout.lisp (original) +++ clfswm/src/clfswm-layout.lisp Sun Feb 27 17:13:46 2011 @@ -188,12 +188,9 @@ ;;; Tile layout (defun tile-layout-ask-keep-position () (when (frame-p *current-child*) - (let ((keep-position (query-string "Keep frame children positions?" "" '("yes" "no")))) - (if (or (string= keep-position "") - (char= (char keep-position 0) #\y) - (char= (char keep-position 0) #\Y)) - (setf (frame-data-slot *current-child* :tile-layout-keep-positiion) :yes) - (remove-frame-data-slot *current-child* :tile-layout-keep-positiion))))) + (if (query-yes-or-no "Keep frame children positions?") + (setf (frame-data-slot *current-child* :tile-layout-keep-positiion) :yes) + (remove-frame-data-slot *current-child* :tile-layout-keep-positiion)))) (defun set-layout-managed-children () Modified: clfswm/src/clfswm-util.lisp ============================================================================== --- clfswm/src/clfswm-util.lisp (original) +++ clfswm/src/clfswm-util.lisp Sun Feb 27 17:13:46 2011 @@ -64,6 +64,14 @@ +(defun query-yes-or-no (formatter &rest args) + (let ((rep (query-string (apply #'format nil formatter args) "" '("yes" "no")))) + (or (string= rep "") + (char= (char rep 0) #\y) + (char= (char rep 0) #\Y)))) + + + (defun rename-current-child () "Rename the current child"