From pbrochard at common-lisp.net Fri Dec 21 21:44:04 2007 From: pbrochard at common-lisp.net (pbrochard) Date: Fri, 21 Dec 2007 16:44:04 -0500 (EST) Subject: [clfswm-cvs] CVS clfswm Message-ID: <20071221214404.6CE683702A@common-lisp.net> Update of /project/clfswm/cvsroot/clfswm In directory clnet:/tmp/cvs-serv20679 Modified Files: clfswm-info.lisp clfswm.asd package.lisp Added Files: config.lisp Log Message: Group all basic configuration in config.lisp --- /project/clfswm/cvsroot/clfswm/clfswm-info.lisp 2007/05/15 19:49:49 1.1 +++ /project/clfswm/cvsroot/clfswm/clfswm-info.lisp 2007/12/21 21:44:04 1.2 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 1 12:40:15 2007 +;;; #Date#: Fri Dec 21 22:17:08 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Info function (see the end of this file for user definition @@ -27,16 +27,6 @@ (in-package :clfswm) -;;; CONFIG - Info mode - -(defparameter *info-background* "blue") -(defparameter *info-foreground* "yellow") -(defparameter *info-border* "red") - -(defparameter *info-line-cursor* "white") - -(defparameter *info-font-string* "9x15bold") - (defstruct info window gc font list ilw ilh x y) --- /project/clfswm/cvsroot/clfswm/clfswm.asd 2007/05/15 19:49:51 1.1 +++ /project/clfswm/cvsroot/clfswm/clfswm.asd 2007/12/21 21:44:04 1.2 @@ -2,7 +2,7 @@ ;;;; Author: Philippe Brochard ;;;; ASDF System Definition ;;; -;;; #date#: Sun Apr 29 17:21:59 2007 +;;; #date#: Fri Dec 21 22:08:23 2007 (in-package #:asdf) @@ -13,39 +13,41 @@ :licence "GNU Public License (GPL)" :components ((:file "tools") (:file "my-html" - :depends-on ("tools")) + :depends-on ("tools")) (:file "package" - :depends-on ("my-html" "tools")) + :depends-on ("my-html" "tools")) + (:file "config" + :depends-on ("package")) (:file "xlib-util" - :depends-on ("package")) + :depends-on ("package")) (:file "netwm-util" - :depends-on ("package" "xlib-util")) + :depends-on ("package" "xlib-util")) (:file "keysyms" - :depends-on ("package")) + :depends-on ("package")) (:file "clfswm-keys" - :depends-on ("package" "xlib-util" "keysyms")) + :depends-on ("package" "xlib-util" "keysyms")) (:file "clfswm-internal" - :depends-on ("xlib-util" "clfswm-keys" "netwm-util")) + :depends-on ("xlib-util" "clfswm-keys" "netwm-util")) (:file "clfswm-second-mode" - :depends-on ("package" "clfswm-internal")) + :depends-on ("package" "clfswm-internal")) (:file "clfswm" - :depends-on ("xlib-util" "netwm-util" "clfswm-keys" - "clfswm-internal" "clfswm-second-mode")) + :depends-on ("xlib-util" "netwm-util" "clfswm-keys" + "clfswm-internal" "clfswm-second-mode")) (:file "clfswm-util" - :depends-on ("clfswm" "keysyms")) + :depends-on ("clfswm" "keysyms")) (:file "clfswm-pack" - :depends-on ("clfswm" "clfswm-util")) + :depends-on ("clfswm" "clfswm-util")) (:file "clfswm-pager" - :depends-on ("clfswm" "clfswm-util" "clfswm-pack")) + :depends-on ("clfswm" "clfswm-util" "clfswm-pack")) (:file "clfswm-info" - :depends-on ("clfswm" "clfswm-pager")) + :depends-on ("clfswm" "clfswm-pager")) (:file "bindings" - :depends-on ("clfswm" "clfswm-util" "clfswm-pack" "clfswm-info")) + :depends-on ("clfswm" "clfswm-util" "clfswm-pack" "clfswm-info")) (:file "bindings-second-mode" - :depends-on ("clfswm" "clfswm-util" "clfswm-pack" "clfswm-info")) + :depends-on ("clfswm" "clfswm-util" "clfswm-pack" "clfswm-info")) (:file "bindings-pager" - :depends-on ("clfswm" "clfswm-util" "clfswm-pack" "clfswm-pager" - "clfswm-info" "bindings")))) + :depends-on ("clfswm" "clfswm-util" "clfswm-pack" "clfswm-pager" + "clfswm-info" "bindings")))) --- /project/clfswm/cvsroot/clfswm/package.lisp 2007/05/16 20:41:37 1.3 +++ /project/clfswm/cvsroot/clfswm/package.lisp 2007/12/21 21:44:04 1.4 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Wed May 16 22:40:53 2007 +;;; #Date#: Fri Dec 21 21:49:57 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Package definition @@ -45,67 +45,65 @@ (defparameter *root-gc* nil) -;;; CONFIG - Screen size -;;(defparameter *fullscreen* '(0 0 1024 600)) -(defparameter *fullscreen* '(0 0 1024 768)) -;;(defparameter *fullscreen* '(0 0 1280 960)) -;;(defparameter *fullscreen* '(100 0 1180 960)) -;;(defparameter *fullscreen* '(0 0 800 600)) - - -;;; CONFIG: Main mode colors -(defparameter *color-selected* "Red") -(defparameter *color-unselected* "Yellow") - -;;; CONFIG: Second mode colors and fonts -(defparameter *sm-border-color* "Green") -(defparameter *sm-background-color* "Black") -(defparameter *sm-foreground-color* "Red") -(defparameter *sm-font-string* "9x15bold") -(defparameter *sm-width* 300) -(defparameter *sm-height* 25) - - -;;; CONFIG - Pager mode colors and fonts -(defparameter *pager-background* "grey55") -(defparameter *pager-workspace-border* "blue") -(defparameter *pager-workspace-background* "grey70") -(defparameter *pager-group-border* "yellow") -(defparameter *pager-group-border-selected* "red") -(defparameter *pager-group-background* "grey60") - -(defparameter *pager-window-selected* "Red") -(defparameter *pager-window-deselected* "Yellow") -(defparameter *pager-window-hidden* "Black") -(defparameter *pager-window-hidden-1* "Red") - -(defparameter *pager-window-separator* "blue") - -(defparameter *pager-workspace-cursor* "white") -(defparameter *pager-line-cursor* "white") -(defparameter *pager-group-cursor* "white") -(defparameter *pager-group-background-cursor* "red") - - -(defparameter *pager-font-string* "9x15bold") - -(defparameter *pager-workspace-height* 200) - - - -;;; CONFIG - Identify key colors -(defparameter *identify-font-string* "9x15bold") -(defparameter *identify-background* "blue") -(defparameter *identify-foreground* "yellow") -(defparameter *identify-border* "red") - -;;; CONFIG - Query string colors -(defparameter *query-font-string* "9x15") -(defparameter *query-background* "blue") -(defparameter *query-foreground* "yellow") -(defparameter *query-border* "red") - - +;;;;; CONFIG - Screen size +;;;;(defparameter *fullscreen* '(0 0 1024 600)) +;;(defparameter *fullscreen* '(0 0 1024 768)) +;;;;(defparameter *fullscreen* '(0 0 1280 960)) +;;;;(defparameter *fullscreen* '(100 0 1180 960)) +;;;;(defparameter *fullscreen* '(0 0 800 600)) +;; +;; +;;;;; CONFIG: Main mode colors +;;(defparameter *color-selected* "Red") +;;(defparameter *color-unselected* "Yellow") +;; +;;;;; CONFIG: Second mode colors and fonts +;;(defparameter *sm-border-color* "Green") +;;(defparameter *sm-background-color* "Black") +;;(defparameter *sm-foreground-color* "Red") +;;(defparameter *sm-font-string* "9x15bold") +;;(defparameter *sm-width* 300) +;;(defparameter *sm-height* 25) +;; +;; +;;;;; CONFIG - Pager mode colors and fonts +;;(defparameter *pager-background* "black") +;;(defparameter *pager-workspace-border* "blue") +;;(defparameter *pager-workspace-background* "black") +;;(defparameter *pager-group-border* "yellow") +;;(defparameter *pager-group-border-selected* "red") +;;(defparameter *pager-group-background* "grey10") +;; +;;(defparameter *pager-window-selected* "Green") +;;(defparameter *pager-window-deselected* "Yellow") +;;(defparameter *pager-window-hidden* "Green") +;;(defparameter *pager-window-hidden-1* "Red") +;; +;;(defparameter *pager-window-separator* "blue") +;; +;;(defparameter *pager-workspace-cursor* "black") +;;(defparameter *pager-line-cursor* "blue") +;;(defparameter *pager-group-cursor* "white") +;;(defparameter *pager-group-background-cursor* "darkgreen") +;; +;; +;;(defparameter *pager-font-string* "9x15bold") +;; +;;(defparameter *pager-workspace-height* 200) +;; +;; +;; +;;;;; CONFIG - Identify key colors +;;(defparameter *identify-font-string* "9x15bold") +;;(defparameter *identify-background* "black") +;;(defparameter *identify-foreground* "green") +;;(defparameter *identify-border* "red") +;; +;;;;; CONFIG - Query string colors +;;(defparameter *query-font-string* "9x15") +;;(defparameter *query-background* "blue") +;;(defparameter *query-foreground* "yellow") +;;(defparameter *query-border* "red") (defparameter *default-group* nil) @@ -138,9 +136,9 @@ "Arrow action in the pager mode") -;;; Tiling to side parameters -(defparameter *tile-workspace-function* 'tile-workspace-top) -(defparameter *tile-border-size* 200) +;;;;; Tiling to side parameters +;;(defparameter *tile-workspace-function* 'tile-workspace-top) +;;(defparameter *tile-border-size* 200) ;;; Hook definitions @@ -202,7 +200,7 @@ ;; For debug - redefine defun ;;(shadow :defun) - +;; ;;(defmacro defun (name args &body body) ;; `(progn ;; (format t "defun: ~A ~A~%" ',name ',args) --- /project/clfswm/cvsroot/clfswm/config.lisp 2007/12/21 21:44:04 NONE +++ /project/clfswm/cvsroot/clfswm/config.lisp 2007/12/21 21:44:04 1.1 ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; ;;; #Date#: Fri Dec 21 22:21:37 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Configuration file ;;; ;;; Change this file to your own needs or update some of this variables in ;;; your ~/.clfswmrc ;;; Some simple hack can be done in the code begining with the word CONFIG ;;; (you can do a 'grep CONFIG *.lisp' to see what you can configure) ;;; -------------------------------------------------------------------------- ;;; ;;; (C) 2005 Philippe Brochard ;;; ;;; 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 2 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. ;;; ;;; -------------------------------------------------------------------------- (in-package :clfswm) ;;; CONFIG - Screen size ;;(defparameter *fullscreen* '(0 0 1024 600)) (defparameter *fullscreen* '(0 0 1024 768)) ;;(defparameter *fullscreen* '(0 0 1280 960)) ;;(defparameter *fullscreen* '(100 0 1180 960)) ;;(defparameter *fullscreen* '(0 0 800 600)) ;;; CONFIG: Main mode colors (defparameter *color-selected* "Red") (defparameter *color-unselected* "Yellow") ;;; CONFIG: Second mode colors and fonts (defparameter *sm-border-color* "Green") (defparameter *sm-background-color* "Black") (defparameter *sm-foreground-color* "Red") (defparameter *sm-font-string* "9x15bold") (defparameter *sm-width* 300) (defparameter *sm-height* 25) ;;; CONFIG - Pager mode colors and fonts (defparameter *pager-background* "black") (defparameter *pager-workspace-border* "blue") (defparameter *pager-workspace-background* "black") (defparameter *pager-group-border* "yellow") (defparameter *pager-group-border-selected* "red") (defparameter *pager-group-background* "grey10") (defparameter *pager-window-selected* "Green") (defparameter *pager-window-deselected* "Yellow") (defparameter *pager-window-hidden* "Green") (defparameter *pager-window-hidden-1* "Red") (defparameter *pager-window-separator* "blue") (defparameter *pager-workspace-cursor* "black") (defparameter *pager-line-cursor* "blue") (defparameter *pager-group-cursor* "white") (defparameter *pager-group-background-cursor* "darkgreen") (defparameter *pager-font-string* "9x15bold") (defparameter *pager-workspace-height* 200) ;;; CONFIG - Identify key colors (defparameter *identify-font-string* "9x15bold") (defparameter *identify-background* "black") (defparameter *identify-foreground* "green") (defparameter *identify-border* "red") ;;; CONFIG - Query string colors (defparameter *query-font-string* "9x15") (defparameter *query-background* "black") (defparameter *query-foreground* "green") (defparameter *query-border* "red") ;;; CONFIG - Info mode (defparameter *info-background* "black") (defparameter *info-foreground* "green") (defparameter *info-border* "red") (defparameter *info-line-cursor* "white") (defparameter *info-font-string* "9x15bold") ;;; Tiling to side parameters (defparameter *tile-workspace-function* 'tile-workspace-top) (defparameter *tile-border-size* 200) From pbrochard at common-lisp.net Fri Dec 21 21:47:12 2007 From: pbrochard at common-lisp.net (pbrochard) Date: Fri, 21 Dec 2007 16:47:12 -0500 (EST) Subject: [clfswm-cvs] CVS clfswm Message-ID: <20071221214712.EB6563702A@common-lisp.net> Update of /project/clfswm/cvsroot/clfswm In directory clnet:/tmp/cvs-serv21053 Modified Files: config.lisp package.lisp Log Message: Group all basic configuration in config.lisp --- /project/clfswm/cvsroot/clfswm/config.lisp 2007/12/21 21:44:04 1.1 +++ /project/clfswm/cvsroot/clfswm/config.lisp 2007/12/21 21:47:12 1.2 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 22:21:37 2007 +;;; #Date#: Fri Dec 21 22:45:00 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Configuration file @@ -37,7 +37,7 @@ ;;(defparameter *fullscreen* '(0 0 1024 600)) (defparameter *fullscreen* '(0 0 1024 768)) ;;(defparameter *fullscreen* '(0 0 1280 960)) -;;(defparameter *fullscreen* '(100 0 1180 960)) +;;(defparameter *fullscreen* '(100 0 1180 960)) ;; Example with a space on left. ;;(defparameter *fullscreen* '(0 0 800 600)) --- /project/clfswm/cvsroot/clfswm/package.lisp 2007/12/21 21:44:04 1.4 +++ /project/clfswm/cvsroot/clfswm/package.lisp 2007/12/21 21:47:12 1.5 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 21:49:57 2007 +;;; #Date#: Fri Dec 21 22:46:22 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Package definition @@ -45,66 +45,6 @@ (defparameter *root-gc* nil) -;;;;; CONFIG - Screen size -;;;;(defparameter *fullscreen* '(0 0 1024 600)) -;;(defparameter *fullscreen* '(0 0 1024 768)) -;;;;(defparameter *fullscreen* '(0 0 1280 960)) -;;;;(defparameter *fullscreen* '(100 0 1180 960)) -;;;;(defparameter *fullscreen* '(0 0 800 600)) -;; -;; -;;;;; CONFIG: Main mode colors -;;(defparameter *color-selected* "Red") -;;(defparameter *color-unselected* "Yellow") -;; -;;;;; CONFIG: Second mode colors and fonts -;;(defparameter *sm-border-color* "Green") -;;(defparameter *sm-background-color* "Black") -;;(defparameter *sm-foreground-color* "Red") -;;(defparameter *sm-font-string* "9x15bold") -;;(defparameter *sm-width* 300) -;;(defparameter *sm-height* 25) -;; -;; -;;;;; CONFIG - Pager mode colors and fonts -;;(defparameter *pager-background* "black") -;;(defparameter *pager-workspace-border* "blue") -;;(defparameter *pager-workspace-background* "black") -;;(defparameter *pager-group-border* "yellow") -;;(defparameter *pager-group-border-selected* "red") -;;(defparameter *pager-group-background* "grey10") -;; -;;(defparameter *pager-window-selected* "Green") -;;(defparameter *pager-window-deselected* "Yellow") -;;(defparameter *pager-window-hidden* "Green") -;;(defparameter *pager-window-hidden-1* "Red") -;; -;;(defparameter *pager-window-separator* "blue") -;; -;;(defparameter *pager-workspace-cursor* "black") -;;(defparameter *pager-line-cursor* "blue") -;;(defparameter *pager-group-cursor* "white") -;;(defparameter *pager-group-background-cursor* "darkgreen") -;; -;; -;;(defparameter *pager-font-string* "9x15bold") -;; -;;(defparameter *pager-workspace-height* 200) -;; -;; -;; -;;;;; CONFIG - Identify key colors -;;(defparameter *identify-font-string* "9x15bold") -;;(defparameter *identify-background* "black") -;;(defparameter *identify-foreground* "green") -;;(defparameter *identify-border* "red") -;; -;;;;; CONFIG - Query string colors -;;(defparameter *query-font-string* "9x15") -;;(defparameter *query-background* "blue") -;;(defparameter *query-foreground* "yellow") -;;(defparameter *query-border* "red") - (defparameter *default-group* nil) @@ -136,10 +76,6 @@ "Arrow action in the pager mode") -;;;;; Tiling to side parameters -;;(defparameter *tile-workspace-function* 'tile-workspace-top) -;;(defparameter *tile-border-size* 200) - ;;; Hook definitions ;;; From pbrochard at common-lisp.net Fri Dec 21 21:59:26 2007 From: pbrochard at common-lisp.net (pbrochard) Date: Fri, 21 Dec 2007 16:59:26 -0500 (EST) Subject: [clfswm-cvs] CVS clfswm Message-ID: <20071221215926.ED0F573238@common-lisp.net> Update of /project/clfswm/cvsroot/clfswm In directory clnet:/tmp/cvs-serv22068 Modified Files: COPYING bindings-pager.lisp bindings-second-mode.lisp bindings.lisp clfswm-info.lisp clfswm-internal.lisp clfswm-keys.lisp clfswm-pack.lisp clfswm-pager.lisp clfswm-second-mode.lisp clfswm-util.lisp clfswm.lisp config.lisp load.lisp my-html.lisp netwm-util.lisp package.lisp tools.lisp xlib-util.lisp Log Message: licence change to GPL V3 --- /project/clfswm/cvsroot/clfswm/COPYING 2007/05/15 19:49:49 1.1 +++ /project/clfswm/cvsroot/clfswm/COPYING 2007/12/21 21:59:24 1.2 @@ -1,284 +1,625 @@ GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + Version 3, 29 June 2007 - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA + Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + [558 lines skipped] --- /project/clfswm/cvsroot/clfswm/bindings-pager.lisp 2007/05/15 19:49:49 1.1 +++ /project/clfswm/cvsroot/clfswm/bindings-pager.lisp 2007/12/21 21:59:24 1.2 @@ -11,7 +11,7 @@ ;;; ;;; 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 2 of the License, or +;;; 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, --- /project/clfswm/cvsroot/clfswm/bindings-second-mode.lisp 2007/05/15 19:49:49 1.1 +++ /project/clfswm/cvsroot/clfswm/bindings-second-mode.lisp 2007/12/21 21:59:24 1.2 @@ -13,7 +13,7 @@ ;;; ;;; 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 2 of the License, or +;;; 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, --- /project/clfswm/cvsroot/clfswm/bindings.lisp 2007/05/15 19:49:49 1.1 +++ /project/clfswm/cvsroot/clfswm/bindings.lisp 2007/12/21 21:59:24 1.2 @@ -13,7 +13,7 @@ ;;; ;;; 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 2 of the License, or +;;; 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, --- /project/clfswm/cvsroot/clfswm/clfswm-info.lisp 2007/12/21 21:44:04 1.2 +++ /project/clfswm/cvsroot/clfswm/clfswm-info.lisp 2007/12/21 21:59:24 1.3 @@ -11,7 +11,7 @@ ;;; ;;; 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 2 of the License, or +;;; 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, --- /project/clfswm/cvsroot/clfswm/clfswm-internal.lisp 2007/08/26 21:08:16 1.2 +++ /project/clfswm/cvsroot/clfswm/clfswm-internal.lisp 2007/12/21 21:59:24 1.3 @@ -11,7 +11,7 @@ ;;; ;;; 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 2 of the License, or +;;; 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, --- /project/clfswm/cvsroot/clfswm/clfswm-keys.lisp 2007/05/15 19:49:49 1.1 +++ /project/clfswm/cvsroot/clfswm/clfswm-keys.lisp 2007/12/21 21:59:24 1.2 @@ -11,7 +11,7 @@ ;;; ;;; 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 2 of the License, or +;;; 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, --- /project/clfswm/cvsroot/clfswm/clfswm-pack.lisp 2007/05/15 19:49:51 1.1 +++ /project/clfswm/cvsroot/clfswm/clfswm-pack.lisp 2007/12/21 21:59:26 1.2 @@ -11,7 +11,7 @@ ;;; ;;; 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 2 of the License, or +;;; 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, --- /project/clfswm/cvsroot/clfswm/clfswm-pager.lisp 2007/05/15 19:49:51 1.1 +++ /project/clfswm/cvsroot/clfswm/clfswm-pager.lisp 2007/12/21 21:59:26 1.2 @@ -11,7 +11,7 @@ ;;; ;;; 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 2 of the License, or +;;; 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, --- /project/clfswm/cvsroot/clfswm/clfswm-second-mode.lisp 2007/05/16 20:41:37 1.2 +++ /project/clfswm/cvsroot/clfswm/clfswm-second-mode.lisp 2007/12/21 21:59:26 1.3 @@ -11,7 +11,7 @@ ;;; ;;; 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 2 of the License, or +;;; 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, --- /project/clfswm/cvsroot/clfswm/clfswm-util.lisp 2007/05/15 19:49:51 1.1 +++ /project/clfswm/cvsroot/clfswm/clfswm-util.lisp 2007/12/21 21:59:26 1.2 @@ -11,7 +11,7 @@ ;;; ;;; 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 2 of the License, or +;;; 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, --- /project/clfswm/cvsroot/clfswm/clfswm.lisp 2007/05/15 19:49:51 1.1 +++ /project/clfswm/cvsroot/clfswm/clfswm.lisp 2007/12/21 21:59:26 1.2 @@ -11,7 +11,7 @@ ;;; ;;; 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 2 of the License, or +;;; 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, --- /project/clfswm/cvsroot/clfswm/config.lisp 2007/12/21 21:47:12 1.2 +++ /project/clfswm/cvsroot/clfswm/config.lisp 2007/12/21 21:59:26 1.3 @@ -16,7 +16,7 @@ ;;; ;;; 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 2 of the License, or +;;; 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, --- /project/clfswm/cvsroot/clfswm/load.lisp 2007/05/15 19:49:51 1.1 +++ /project/clfswm/cvsroot/clfswm/load.lisp 2007/12/21 21:59:26 1.2 @@ -11,7 +11,7 @@ ;;; ;;; 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 2 of the License, or +;;; 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, --- /project/clfswm/cvsroot/clfswm/my-html.lisp 2007/05/15 19:49:51 1.1 +++ /project/clfswm/cvsroot/clfswm/my-html.lisp 2007/12/21 21:59:26 1.2 @@ -11,7 +11,7 @@ ;;; ;;; 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 2 of the License, or +;;; 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, --- /project/clfswm/cvsroot/clfswm/netwm-util.lisp 2007/05/15 19:49:51 1.1 +++ /project/clfswm/cvsroot/clfswm/netwm-util.lisp 2007/12/21 21:59:26 1.2 @@ -12,7 +12,7 @@ ;;; ;;; 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 2 of the License, or +;;; 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, --- /project/clfswm/cvsroot/clfswm/package.lisp 2007/12/21 21:47:12 1.5 +++ /project/clfswm/cvsroot/clfswm/package.lisp 2007/12/21 21:59:26 1.6 @@ -11,7 +11,7 @@ ;;; ;;; 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 2 of the License, or +;;; 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, --- /project/clfswm/cvsroot/clfswm/tools.lisp 2007/05/15 19:49:51 1.1 +++ /project/clfswm/cvsroot/clfswm/tools.lisp 2007/12/21 21:59:26 1.2 @@ -11,7 +11,7 @@ ;;; ;;; 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 2 of the License, or +;;; 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, --- /project/clfswm/cvsroot/clfswm/xlib-util.lisp 2007/08/26 21:08:16 1.2 +++ /project/clfswm/cvsroot/clfswm/xlib-util.lisp 2007/12/21 21:59:26 1.3 @@ -11,7 +11,7 @@ ;;; ;;; 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 2 of the License, or +;;; 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, From pbrochard at common-lisp.net Fri Dec 21 22:01:14 2007 From: pbrochard at common-lisp.net (pbrochard) Date: Fri, 21 Dec 2007 17:01:14 -0500 (EST) Subject: [clfswm-cvs] CVS clfswm Message-ID: <20071221220114.79F177324D@common-lisp.net> Update of /project/clfswm/cvsroot/clfswm In directory clnet:/tmp/cvs-serv24261 Modified Files: bindings-pager.lisp bindings-second-mode.lisp bindings.lisp clfswm-info.lisp clfswm-internal.lisp clfswm-keys.lisp clfswm-pack.lisp clfswm-pager.lisp clfswm-second-mode.lisp clfswm-util.lisp clfswm.lisp config.lisp load.lisp my-html.lisp netwm-util.lisp package.lisp tools.lisp xlib-util.lisp Log Message: license change to GPL V3 --- /project/clfswm/cvsroot/clfswm/bindings-pager.lisp 2007/12/21 21:59:24 1.2 +++ /project/clfswm/cvsroot/clfswm/bindings-pager.lisp 2007/12/21 22:01:14 1.3 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sun May 13 16:17:27 2007 +;;; #Date#: Fri Dec 21 22:59:56 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse for pager mode --- /project/clfswm/cvsroot/clfswm/bindings-second-mode.lisp 2007/12/21 21:59:24 1.2 +++ /project/clfswm/cvsroot/clfswm/bindings-second-mode.lisp 2007/12/21 22:01:14 1.3 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue May 15 21:43:18 2007 +;;; #Date#: Fri Dec 21 22:59:59 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse for second mode --- /project/clfswm/cvsroot/clfswm/bindings.lisp 2007/12/21 21:59:24 1.2 +++ /project/clfswm/cvsroot/clfswm/bindings.lisp 2007/12/21 22:01:14 1.3 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Apr 28 18:11:08 2007 +;;; #Date#: Fri Dec 21 23:00:01 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse --- /project/clfswm/cvsroot/clfswm/clfswm-info.lisp 2007/12/21 21:59:24 1.3 +++ /project/clfswm/cvsroot/clfswm/clfswm-info.lisp 2007/12/21 22:01:14 1.4 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 22:17:08 2007 +;;; #Date#: Fri Dec 21 23:00:04 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Info function (see the end of this file for user definition --- /project/clfswm/cvsroot/clfswm/clfswm-internal.lisp 2007/12/21 21:59:24 1.3 +++ /project/clfswm/cvsroot/clfswm/clfswm-internal.lisp 2007/12/21 22:01:14 1.4 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri May 18 23:25:21 2007 +;;; #Date#: Fri Dec 21 23:00:08 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions --- /project/clfswm/cvsroot/clfswm/clfswm-keys.lisp 2007/12/21 21:59:24 1.2 +++ /project/clfswm/cvsroot/clfswm/clfswm-keys.lisp 2007/12/21 22:01:14 1.3 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue May 15 21:42:17 2007 +;;; #Date#: Fri Dec 21 23:00:11 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Keys functions definition --- /project/clfswm/cvsroot/clfswm/clfswm-pack.lisp 2007/12/21 21:59:26 1.2 +++ /project/clfswm/cvsroot/clfswm/clfswm-pack.lisp 2007/12/21 22:01:14 1.3 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Mon May 14 22:41:15 2007 +;;; #Date#: Fri Dec 21 23:00:13 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Tile, pack and fill functions --- /project/clfswm/cvsroot/clfswm/clfswm-pager.lisp 2007/12/21 21:59:26 1.2 +++ /project/clfswm/cvsroot/clfswm/clfswm-pager.lisp 2007/12/21 22:01:14 1.3 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sun May 13 16:15:57 2007 +;;; #Date#: Fri Dec 21 23:00:16 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions --- /project/clfswm/cvsroot/clfswm/clfswm-second-mode.lisp 2007/12/21 21:59:26 1.3 +++ /project/clfswm/cvsroot/clfswm/clfswm-second-mode.lisp 2007/12/21 22:01:14 1.4 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Wed May 16 22:40:35 2007 +;;; #Date#: Fri Dec 21 23:00:19 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Second mode functions --- /project/clfswm/cvsroot/clfswm/clfswm-util.lisp 2007/12/21 21:59:26 1.2 +++ /project/clfswm/cvsroot/clfswm/clfswm-util.lisp 2007/12/21 22:01:14 1.3 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue May 15 21:44:48 2007 +;;; #Date#: Fri Dec 21 23:00:22 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility --- /project/clfswm/cvsroot/clfswm/clfswm.lisp 2007/12/21 21:59:26 1.2 +++ /project/clfswm/cvsroot/clfswm/clfswm.lisp 2007/12/21 22:01:14 1.3 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Mon May 14 16:44:31 2007 +;;; #Date#: Fri Dec 21 23:00:25 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions --- /project/clfswm/cvsroot/clfswm/config.lisp 2007/12/21 21:59:26 1.3 +++ /project/clfswm/cvsroot/clfswm/config.lisp 2007/12/21 22:01:14 1.4 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 22:45:00 2007 +;;; #Date#: Fri Dec 21 23:00:27 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Configuration file --- /project/clfswm/cvsroot/clfswm/load.lisp 2007/12/21 21:59:26 1.2 +++ /project/clfswm/cvsroot/clfswm/load.lisp 2007/12/21 22:01:14 1.3 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Oct 17 23:40:49 2006 +;;; #Date#: Fri Dec 21 23:00:32 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: System loading functions --- /project/clfswm/cvsroot/clfswm/my-html.lisp 2007/12/21 21:59:26 1.2 +++ /project/clfswm/cvsroot/clfswm/my-html.lisp 2007/12/21 22:01:14 1.3 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Wed Sep 27 22:59:54 2006 +;;; #Date#: Fri Dec 21 23:00:35 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Html generator helper --- /project/clfswm/cvsroot/clfswm/netwm-util.lisp 2007/12/21 21:59:26 1.2 +++ /project/clfswm/cvsroot/clfswm/netwm-util.lisp 2007/12/21 22:01:14 1.3 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue May 15 21:28:03 2007 +;;; #Date#: Fri Dec 21 23:00:38 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: NetWM functions --- /project/clfswm/cvsroot/clfswm/package.lisp 2007/12/21 21:59:26 1.6 +++ /project/clfswm/cvsroot/clfswm/package.lisp 2007/12/21 22:01:14 1.7 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 22:46:22 2007 +;;; #Date#: Fri Dec 21 23:00:40 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Package definition --- /project/clfswm/cvsroot/clfswm/tools.lisp 2007/12/21 21:59:26 1.2 +++ /project/clfswm/cvsroot/clfswm/tools.lisp 2007/12/21 22:01:14 1.3 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat May 12 15:29:25 2007 +;;; #Date#: Fri Dec 21 23:00:43 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: General tools --- /project/clfswm/cvsroot/clfswm/xlib-util.lisp 2007/12/21 21:59:26 1.3 +++ /project/clfswm/cvsroot/clfswm/xlib-util.lisp 2007/12/21 22:01:14 1.4 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sun Aug 26 23:03:55 2007 +;;; #Date#: Fri Dec 21 23:00:46 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility functions From pbrochard at common-lisp.net Fri Dec 21 22:38:14 2007 From: pbrochard at common-lisp.net (pbrochard) Date: Fri, 21 Dec 2007 17:38:14 -0500 (EST) Subject: [clfswm-cvs] CVS clfswm Message-ID: <20071221223814.7359F12084@common-lisp.net> Update of /project/clfswm/cvsroot/clfswm In directory clnet:/tmp/cvs-serv30069 Modified Files: README clfswm-second-mode.lisp clfswm.asd clfswm.lisp Log Message: readme update --- /project/clfswm/cvsroot/clfswm/README 2007/05/15 19:49:49 1.1 +++ /project/clfswm/cvsroot/clfswm/README 2007/12/21 22:38:14 1.2 @@ -28,11 +28,21 @@ To use CLFSWM, load the load.lisp file. It loads the ASDF package, build the system and start the main loop. +Another way is to do something like this: +$ cd /in/the/directory/of/clfswm/ +$ clisp/cmucl/sbcl/... # start a lisp + > (load "asdf.lisp") ; asdf for clisp or cmucl +or> (require :asdf) ; asdf for sbcl + > (require :clx) ; clx for cmucl + > (asdf:oos 'asdf:load-op :clfswm) ; compile and load the system + > (in-package :clfswm) ; go in the clfswm package + > (clfswm:main) ; start the main loop + Tweaking -To change the default keybinding, have a look at the bindings.lisp -file and at the package.lisp file for global variables. +To change the default keybinding, have a look at the bindings*.lisp +files and at the config.lisp file for global variables. If you want to add workspaces or groups at startup, tell this to clfswm in the init-display function in clfswm.lisp (there is already a default workspace and a default group created). @@ -45,23 +55,11 @@ startup. There is an example in the clfswm source (dot-clfswmrc). -Development note - -As I think that there is as many CLFSWM as users, I propose a fork -based development. CLFSWM has no configuration file in this -respect. If you don't like something in clfswm use something else or -learn Common Lisp (if not already done) and hack what you want on -it. When you'll have done your hack, publish your code (if you want) -and tell me its URL to link it from the clfswm web site. This way, -everybody can share its ideas and have only what he wants in its -window manager. - - License CLFSWM is under the GNU General Public License - GPL license. - You can find more information in the files [3]COPYING. or on the - [4]Free Software Foundation site. + You can find more information in the files COPYING. or on the + [3]Free Software Foundation site. Philippe Brochard . @@ -70,5 +68,4 @@ 1. http://incise.org/index.cgi/TinyWM 2. http://www.nongnu.org/stumpwm/ - 3. file://localhost/other-home/lisp/clfswm/web/COPYING - 4. http://www.gnu.org/ + 3. http://www.gnu.org/ --- /project/clfswm/cvsroot/clfswm/clfswm-second-mode.lisp 2007/12/21 22:01:14 1.4 +++ /project/clfswm/cvsroot/clfswm/clfswm-second-mode.lisp 2007/12/21 22:38:14 1.5 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 23:00:19 2007 +;;; #Date#: Fri Dec 21 23:04:46 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Second mode functions @@ -190,3 +190,232 @@ (focus-window (current-window)) (show-all-group (current-workspace)) (wait-no-key-or-button-press)) + + + + + + +;;;;; Alternative - Second mode with dashed screen +;;(let ((num 5) +;; (line-color "Green")) +;; (defun draw-second-mode-window (window gc) +;; (show-all-windows-in-workspace (current-workspace)) +;; (sleep 0.1) +;; (display-finish-output *display*) +;; (raise-window window) +;; (setf (gcontext-foreground gc) (get-color line-color) +;; (gcontext-line-style gc) :dash) +;; (let ((dx (/ (drawable-width window) num)) +;; (dy (/ (drawable-height window) num))) +;; (loop for i from 1 below num do +;; (draw-line window gc (truncate (* i dx)) 0 0 (truncate (* i dy))) +;; (draw-line window gc (truncate (* i dx)) (drawable-height window) (drawable-width window) (truncate (* i dy))) +;; (draw-line window gc (truncate (* i dx)) 0 (drawable-width window) (truncate (* (- num i) dy))) +;; (draw-line window gc (truncate (* (- num i) dx)) (drawable-height window) 0 (truncate (* i dy))))) +;; (draw-line window gc 0 (drawable-height window) (drawable-width window) 0) +;; (draw-line window gc 0 0 (drawable-width window) (drawable-height window)) +;; (setf (gcontext-line-style gc) :solid) +;; (show-all-group (current-workspace) window gc) +;; (no-focus))) +;; +;;(defmacro with-draw-second-mode-window ((hide show) &body body) +;; (cond ((and hide show) `(progn +;; (hide-window sm-window) +;; , at body +;; (draw-second-mode-window sm-window sm-gc) +;; (display-force-output *display*))) +;; (hide `(progn +;; (hide-window sm-window) +;; , at body +;; (display-force-output *display*))) +;; (show `(progn +;; , at body +;; (draw-second-mode-window sm-window sm-gc) +;; (display-force-output *display*))) +;; (t `(progn +;; , at body +;; (display-force-output *display*))))) +;; +;; +;;(defun second-key-mode () +;; "Switch to editing mode" +;; (let* ((sm-window (create-window :parent *root* :x 0 :y 0 +;; :width (screen-width *screen*) :height (screen-height *screen*) +;; :colormap (screen-default-colormap *screen*) +;; :event-mask '())) +;; (sm-gc (create-gcontext :drawable sm-window +;; :foreground (get-color "Red") +;; :background (get-color "Black") +;; :line-style :solid))) +;; (labels ((handle-key-press (&rest event-slots &key root code state &allow-other-keys) +;; (declare (ignore event-slots root)) +;; (funcall-key-from-code *second-keys* code state)) +;; (sm-handle-enter-notify (&rest event-slots &key window root-x root-y &allow-other-keys) +;; (declare (ignore event-slots)) +;; (unless (or (window-equal sm-window window) +;; (window-equal window *root*)) +;; (with-draw-second-mode-window (t t) +;; (focus-group-under-mouse root-x root-y)))) +;; (handle-motion-notify (&rest event-slots &key root-x root-y &allow-other-keys) +;; (declare (ignore event-slots)) +;; (unless (event-case (*display* :discard-p nil :peek-p t :timeout 0) +;; (:motion-notify () t)) +;; (funcall-button-from-code *mouse-action* 'motion 0 root-x root-y #'first) +;; (show-all-group (current-workspace) sm-window sm-gc) +;; (no-focus))) +;; (handle-button-press (&rest event-slots &key root-x root-y code state &allow-other-keys) +;; (declare (ignore event-slots)) +;; (funcall-button-from-code *mouse-action* code state root-x root-y #'first)) +;; (handle-button-release (&rest event-slots &key root-x root-y code state &allow-other-keys) +;; (declare (ignore event-slots)) +;; (funcall-button-from-code *mouse-action* code state root-x root-y #'third)) +;; (sm-handle-configure-request (&rest event-slots &key window &allow-other-keys) +;; (unless (window-equal sm-window window) +;; (with-draw-second-mode-window (t t) +;; (apply #'handle-configure-request event-slots)))) +;; (sm-handle-map-request (&rest event-slots &key window &allow-other-keys) +;; (unless (window-equal sm-window window) +;; (with-draw-second-mode-window (t t) +;; (apply #'handle-map-request event-slots)))) +;; (sm-handle-unmap-notify (&rest event-slots &key window &allow-other-keys) +;; (unless (window-equal sm-window window) +;; (with-draw-second-mode-window (t t) +;; (apply #'handle-unmap-notify event-slots)))) +;; (sm-handle-destroy-notify (&rest event-slots &key window &allow-other-keys) +;; (unless (window-equal sm-window window) +;; (with-draw-second-mode-window (t t) +;; (apply #'handle-destroy-notify event-slots)))) +;; (handle-event (&rest event-slots &key display event-key &allow-other-keys) +;; (declare (ignore display)) +;; (handler-case +;; (case event-key +;; (:key-press (with-draw-second-mode-window (t t) +;; (apply #'handle-key-press event-slots))) +;; (:enter-notify nil) +;; (:motion-notify (apply #'handle-motion-notify event-slots)) +;; (:button-press (with-draw-second-mode-window (t nil) +;; (apply #'handle-button-press event-slots))) +;; (:button-release (with-draw-second-mode-window (nil t) +;; (apply #'handle-button-release event-slots))) +;; (:configure-request (apply #'sm-handle-configure-request event-slots)) +;; (:map-request (apply #'sm-handle-map-request event-slots)) +;; (:unmap-notify (apply #'sm-handle-unmap-notify event-slots)) +;; (:destroy-notify (apply #'sm-handle-destroy-notify event-slots)) +;; (:mapping-notify nil) +;; (:property-notify nil) +;; (:create-notify nil)) +;; ((or drawable-error window-error) (c) +;; (declare (ignore c)))) +;; t)) +;; ;;(dbg "Second key ignore" c))))) +;; (minimize-group (current-group)) +;; (map-window sm-window) +;; (raise-window sm-window) +;; (draw-second-mode-window sm-window sm-gc) +;; (no-focus) +;; (ungrab-main-keys) +;; (xgrab-keyboard *root*) +;; (xgrab-pointer *root* 66 67) +;; (unwind-protect +;; (catch 'exit-second-loop +;; (loop +;; (process-event *display* :handler #'handle-event) +;; (display-finish-output *display*))) +;; (free-gcontext sm-gc) +;; (destroy-window sm-window) +;; (xungrab-keyboard) +;; (xungrab-pointer) +;; (grab-main-keys)) +;; (adapt-window-to-group (current-window) (current-group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace)) +;; (wait-no-key-or-button-press)))) + + + +;;;;; Alternative - Second mode with big screen border +;;(let ((border-size 5) +;; (border-color "Green")) +;; (defun second-key-mode () +;; "Switch to editing mode" +;; (let* ((windows (list (create-window :parent *root* :x 0 :y 0 +;; :width (screen-width *screen*) :height border-size +;; :background (get-color border-color) +;; :colormap (screen-default-colormap *screen*)) +;; (create-window :parent *root* :x 0 :y (- (screen-height *screen*) border-size) +;; :width (screen-width *screen*) :height border-size +;; :background (get-color border-color) +;; :colormap (screen-default-colormap *screen*)) +;; (create-window :parent *root* :x 0 :y border-size +;; :width border-size :height (- (screen-height *screen*) (* border-size 2)) +;; :background (get-color border-color) +;; :colormap (screen-default-colormap *screen*)) +;; (create-window :parent *root* :x (- (screen-width *screen*) border-size) +;; :y border-size +;; :width border-size :height (- (screen-height *screen*) (* border-size 2)) +;; :background (get-color border-color) +;; :colormap (screen-default-colormap *screen*))))) +;; (labels ((draw-second-mode-window () +;; (dolist (win windows) +;; (raise-window win))) +;; (handle-key-press (&rest event-slots &key root code state &allow-other-keys) +;; (declare (ignore event-slots root)) +;; (funcall-key-from-code *second-keys* code state)) +;; (handle-enter-notify (&rest event-slots &key root-x root-y &allow-other-keys) +;; (declare (ignore event-slots)) +;; (focus-group-under-mouse root-x root-y)) +;; (handle-motion-notify (&rest event-slots &key root-x root-y &allow-other-keys) +;; (declare (ignore event-slots)) +;; (unless (event-case (*display* :discard-p nil :peek-p t :timeout 0) +;; (:motion-notify () t)) +;; (funcall-button-from-code *mouse-action* 'motion 0 root-x root-y #'first))) +;; (handle-button-press (&rest event-slots &key root-x root-y code state &allow-other-keys) +;; (declare (ignore event-slots)) +;; (funcall-button-from-code *mouse-action* code state root-x root-y #'first)) +;; (handle-button-release (&rest event-slots &key root-x root-y code state &allow-other-keys) +;; (declare (ignore event-slots)) +;; (funcall-button-from-code *mouse-action* code state root-x root-y #'third)) +;; (handle-event (&rest event-slots &key display event-key &allow-other-keys) +;; (declare (ignore display)) +;; (handler-case +;; (case event-key +;; (:key-press (apply #'handle-key-press event-slots)) +;; (:enter-notify (apply #'handle-enter-notify event-slots)) +;; (:motion-notify (apply #'handle-motion-notify event-slots)) +;; (:button-press (apply #'handle-button-press event-slots)) +;; (:button-release (apply #'handle-button-release event-slots)) +;; (:configure-request (apply #'handle-configure-request event-slots)) +;; (:map-request (apply #'handle-map-request event-slots)) +;; (:unmap-notify (apply #'handle-unmap-notify event-slots)) +;; (:destroy-notify (apply #'handle-destroy-notify event-slots)) +;; (:mapping-notify nil) +;; (:property-notify nil) +;; (:create-notify nil)) +;; ((or drawable-error window-error) (c) +;; (declare (ignore c)))) +;; (draw-second-mode-window) +;; t)) +;; ;;(dbg "Second key ignore" c))))) +;; (minimize-group (current-group)) +;; (dolist (win windows) +;; (map-window win)) +;; (draw-second-mode-window) +;; (no-focus) +;; (ungrab-main-keys) +;; (xgrab-keyboard *root*) +;; (xgrab-pointer *root* 66 67) +;; (unwind-protect +;; (catch 'exit-second-loop +;; (loop +;; (process-event *display* :handler #'handle-event) +;; (display-finish-output *display*))) +;; (dolist (win windows) +;; (destroy-window win)) +;; (xungrab-keyboard) +;; (xungrab-pointer) +;; (grab-main-keys)) +;; (adapt-window-to-group (current-window) (current-group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace)) +;; (wait-no-key-or-button-press))))) --- /project/clfswm/cvsroot/clfswm/clfswm.asd 2007/12/21 21:44:04 1.2 +++ /project/clfswm/cvsroot/clfswm/clfswm.asd 2007/12/21 22:38:14 1.3 @@ -2,7 +2,7 @@ ;;;; Author: Philippe Brochard ;;;; ASDF System Definition ;;; -;;; #date#: Fri Dec 21 22:08:23 2007 +;;; #date#: Fri Dec 21 23:30:21 2007 (in-package #:asdf) @@ -32,7 +32,7 @@ :depends-on ("package" "clfswm-internal")) (:file "clfswm" :depends-on ("xlib-util" "netwm-util" "clfswm-keys" - "clfswm-internal" "clfswm-second-mode")) + "clfswm-internal" "clfswm-second-mode" "tools")) (:file "clfswm-util" :depends-on ("clfswm" "keysyms")) (:file "clfswm-pack" --- /project/clfswm/cvsroot/clfswm/clfswm.lisp 2007/12/21 22:01:14 1.3 +++ /project/clfswm/cvsroot/clfswm/clfswm.lisp 2007/12/21 22:38:14 1.4 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 23:00:25 2007 +;;; #Date#: Fri Dec 21 23:04:39 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -270,227 +270,3 @@ - -;;;;; Alternative - Second mode with dashed screen -;;(let ((num 5) -;; (line-color "Green")) -;; (defun draw-second-mode-window (window gc) -;; (show-all-windows-in-workspace (current-workspace)) -;; (sleep 0.1) -;; (display-finish-output *display*) -;; (raise-window window) -;; (setf (gcontext-foreground gc) (get-color line-color) -;; (gcontext-line-style gc) :dash) -;; (let ((dx (/ (drawable-width window) num)) -;; (dy (/ (drawable-height window) num))) -;; (loop for i from 1 below num do -;; (draw-line window gc (truncate (* i dx)) 0 0 (truncate (* i dy))) -;; (draw-line window gc (truncate (* i dx)) (drawable-height window) (drawable-width window) (truncate (* i dy))) -;; (draw-line window gc (truncate (* i dx)) 0 (drawable-width window) (truncate (* (- num i) dy))) -;; (draw-line window gc (truncate (* (- num i) dx)) (drawable-height window) 0 (truncate (* i dy))))) -;; (draw-line window gc 0 (drawable-height window) (drawable-width window) 0) -;; (draw-line window gc 0 0 (drawable-width window) (drawable-height window)) -;; (setf (gcontext-line-style gc) :solid) -;; (show-all-group (current-workspace) window gc) -;; (no-focus))) -;; -;;(defmacro with-draw-second-mode-window ((hide show) &body body) -;; (cond ((and hide show) `(progn -;; (hide-window sm-window) -;; , at body -;; (draw-second-mode-window sm-window sm-gc) -;; (display-force-output *display*))) -;; (hide `(progn -;; (hide-window sm-window) -;; , at body -;; (display-force-output *display*))) -;; (show `(progn -;; , at body -;; (draw-second-mode-window sm-window sm-gc) -;; (display-force-output *display*))) -;; (t `(progn -;; , at body -;; (display-force-output *display*))))) -;; -;; -;;(defun second-key-mode () -;; "Switch to editing mode" -;; (let* ((sm-window (create-window :parent *root* :x 0 :y 0 -;; :width (screen-width *screen*) :height (screen-height *screen*) -;; :colormap (screen-default-colormap *screen*) -;; :event-mask '())) -;; (sm-gc (create-gcontext :drawable sm-window -;; :foreground (get-color "Red") -;; :background (get-color "Black") -;; :line-style :solid))) -;; (labels ((handle-key-press (&rest event-slots &key root code state &allow-other-keys) -;; (declare (ignore event-slots root)) -;; (funcall-key-from-code *second-keys* code state)) -;; (sm-handle-enter-notify (&rest event-slots &key window root-x root-y &allow-other-keys) -;; (declare (ignore event-slots)) -;; (unless (or (window-equal sm-window window) -;; (window-equal window *root*)) -;; (with-draw-second-mode-window (t t) -;; (focus-group-under-mouse root-x root-y)))) -;; (handle-motion-notify (&rest event-slots &key root-x root-y &allow-other-keys) -;; (declare (ignore event-slots)) -;; (unless (event-case (*display* :discard-p nil :peek-p t :timeout 0) -;; (:motion-notify () t)) -;; (funcall-button-from-code *mouse-action* 'motion 0 root-x root-y #'first) -;; (show-all-group (current-workspace) sm-window sm-gc) -;; (no-focus))) -;; (handle-button-press (&rest event-slots &key root-x root-y code state &allow-other-keys) -;; (declare (ignore event-slots)) -;; (funcall-button-from-code *mouse-action* code state root-x root-y #'first)) -;; (handle-button-release (&rest event-slots &key root-x root-y code state &allow-other-keys) -;; (declare (ignore event-slots)) -;; (funcall-button-from-code *mouse-action* code state root-x root-y #'third)) -;; (sm-handle-configure-request (&rest event-slots &key window &allow-other-keys) -;; (unless (window-equal sm-window window) -;; (with-draw-second-mode-window (t t) -;; (apply #'handle-configure-request event-slots)))) -;; (sm-handle-map-request (&rest event-slots &key window &allow-other-keys) -;; (unless (window-equal sm-window window) -;; (with-draw-second-mode-window (t t) -;; (apply #'handle-map-request event-slots)))) -;; (sm-handle-unmap-notify (&rest event-slots &key window &allow-other-keys) -;; (unless (window-equal sm-window window) -;; (with-draw-second-mode-window (t t) -;; (apply #'handle-unmap-notify event-slots)))) -;; (sm-handle-destroy-notify (&rest event-slots &key window &allow-other-keys) -;; (unless (window-equal sm-window window) -;; (with-draw-second-mode-window (t t) -;; (apply #'handle-destroy-notify event-slots)))) -;; (handle-event (&rest event-slots &key display event-key &allow-other-keys) -;; (declare (ignore display)) -;; (handler-case -;; (case event-key -;; (:key-press (with-draw-second-mode-window (t t) -;; (apply #'handle-key-press event-slots))) -;; (:enter-notify nil) -;; (:motion-notify (apply #'handle-motion-notify event-slots)) -;; (:button-press (with-draw-second-mode-window (t nil) -;; (apply #'handle-button-press event-slots))) -;; (:button-release (with-draw-second-mode-window (nil t) -;; (apply #'handle-button-release event-slots))) -;; (:configure-request (apply #'sm-handle-configure-request event-slots)) -;; (:map-request (apply #'sm-handle-map-request event-slots)) -;; (:unmap-notify (apply #'sm-handle-unmap-notify event-slots)) -;; (:destroy-notify (apply #'sm-handle-destroy-notify event-slots)) -;; (:mapping-notify nil) -;; (:property-notify nil) -;; (:create-notify nil)) -;; ((or drawable-error window-error) (c) -;; (declare (ignore c)))) -;; t)) -;; ;;(dbg "Second key ignore" c))))) -;; (minimize-group (current-group)) -;; (map-window sm-window) -;; (raise-window sm-window) -;; (draw-second-mode-window sm-window sm-gc) -;; (no-focus) -;; (ungrab-main-keys) -;; (xgrab-keyboard *root*) -;; (xgrab-pointer *root* 66 67) -;; (unwind-protect -;; (catch 'exit-second-loop -;; (loop -;; (process-event *display* :handler #'handle-event) -;; (display-finish-output *display*))) -;; (free-gcontext sm-gc) -;; (destroy-window sm-window) -;; (xungrab-keyboard) -;; (xungrab-pointer) -;; (grab-main-keys)) -;; (adapt-window-to-group (current-window) (current-group)) -;; (focus-window (current-window)) -;; (show-all-group (current-workspace)) -;; (wait-no-key-or-button-press)))) - - - -;;;;; Alternative - Second mode with big screen border -;;(let ((border-size 5) -;; (border-color "Green")) -;; (defun second-key-mode () -;; "Switch to editing mode" -;; (let* ((windows (list (create-window :parent *root* :x 0 :y 0 -;; :width (screen-width *screen*) :height border-size -;; :background (get-color border-color) -;; :colormap (screen-default-colormap *screen*)) -;; (create-window :parent *root* :x 0 :y (- (screen-height *screen*) border-size) -;; :width (screen-width *screen*) :height border-size -;; :background (get-color border-color) -;; :colormap (screen-default-colormap *screen*)) -;; (create-window :parent *root* :x 0 :y border-size -;; :width border-size :height (- (screen-height *screen*) (* border-size 2)) -;; :background (get-color border-color) -;; :colormap (screen-default-colormap *screen*)) -;; (create-window :parent *root* :x (- (screen-width *screen*) border-size) -;; :y border-size -;; :width border-size :height (- (screen-height *screen*) (* border-size 2)) -;; :background (get-color border-color) -;; :colormap (screen-default-colormap *screen*))))) -;; (labels ((draw-second-mode-window () -;; (dolist (win windows) -;; (raise-window win))) -;; (handle-key-press (&rest event-slots &key root code state &allow-other-keys) -;; (declare (ignore event-slots root)) -;; (funcall-key-from-code *second-keys* code state)) -;; (handle-enter-notify (&rest event-slots &key root-x root-y &allow-other-keys) -;; (declare (ignore event-slots)) -;; (focus-group-under-mouse root-x root-y)) -;; (handle-motion-notify (&rest event-slots &key root-x root-y &allow-other-keys) -;; (declare (ignore event-slots)) -;; (unless (event-case (*display* :discard-p nil :peek-p t :timeout 0) -;; (:motion-notify () t)) -;; (funcall-button-from-code *mouse-action* 'motion 0 root-x root-y #'first))) -;; (handle-button-press (&rest event-slots &key root-x root-y code state &allow-other-keys) -;; (declare (ignore event-slots)) -;; (funcall-button-from-code *mouse-action* code state root-x root-y #'first)) -;; (handle-button-release (&rest event-slots &key root-x root-y code state &allow-other-keys) -;; (declare (ignore event-slots)) -;; (funcall-button-from-code *mouse-action* code state root-x root-y #'third)) -;; (handle-event (&rest event-slots &key display event-key &allow-other-keys) -;; (declare (ignore display)) -;; (handler-case -;; (case event-key -;; (:key-press (apply #'handle-key-press event-slots)) -;; (:enter-notify (apply #'handle-enter-notify event-slots)) -;; (:motion-notify (apply #'handle-motion-notify event-slots)) -;; (:button-press (apply #'handle-button-press event-slots)) -;; (:button-release (apply #'handle-button-release event-slots)) -;; (:configure-request (apply #'handle-configure-request event-slots)) -;; (:map-request (apply #'handle-map-request event-slots)) -;; (:unmap-notify (apply #'handle-unmap-notify event-slots)) -;; (:destroy-notify (apply #'handle-destroy-notify event-slots)) -;; (:mapping-notify nil) -;; (:property-notify nil) -;; (:create-notify nil)) -;; ((or drawable-error window-error) (c) -;; (declare (ignore c)))) -;; (draw-second-mode-window) -;; t)) -;; ;;(dbg "Second key ignore" c))))) -;; (minimize-group (current-group)) -;; (dolist (win windows) -;; (map-window win)) -;; (draw-second-mode-window) -;; (no-focus) -;; (ungrab-main-keys) -;; (xgrab-keyboard *root*) -;; (xgrab-pointer *root* 66 67) -;; (unwind-protect -;; (catch 'exit-second-loop -;; (loop -;; (process-event *display* :handler #'handle-event) -;; (display-finish-output *display*))) -;; (dolist (win windows) -;; (destroy-window win)) -;; (xungrab-keyboard) -;; (xungrab-pointer) -;; (grab-main-keys)) -;; (adapt-window-to-group (current-window) (current-group)) -;; (focus-window (current-window)) -;; (show-all-group (current-workspace)) -;; (wait-no-key-or-button-press))))) From pbrochard at common-lisp.net Fri Dec 21 23:45:56 2007 From: pbrochard at common-lisp.net (pbrochard) Date: Fri, 21 Dec 2007 18:45:56 -0500 (EST) Subject: [clfswm-cvs] CVS clfswm Message-ID: <20071221234556.0167A830A8@common-lisp.net> Update of /project/clfswm/cvsroot/clfswm In directory clnet:/tmp/cvs-serv12455 Modified Files: bindings-pager.lisp bindings-second-mode.lisp bindings.lisp config.lisp dot-clfswmrc Log Message: Switch to qwerty keyboard and define azerty keyboard in dot-clswmrc --- /project/clfswm/cvsroot/clfswm/bindings-pager.lisp 2007/12/21 22:01:14 1.3 +++ /project/clfswm/cvsroot/clfswm/bindings-pager.lisp 2007/12/21 23:45:56 1.4 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 22:59:56 2007 +;;; #Date#: Sat Dec 22 00:35:03 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse for pager mode @@ -46,7 +46,7 @@ (define-pager-key (#\Return) 'leave-pager-mode) (define-pager-key ("Escape") 'leave-pager-mode) -(define-pager-key ("twosuperior") 'banish-pointer) +(define-pager-key (#\b) 'banish-pointer) (define-pager-key ("Home") 'pager-select-first-workspace) (define-pager-key ("End") 'pager-select-last-workspace) @@ -260,19 +260,19 @@ (pager-select-workspace-by-number ,number)))) -(define-pager-focus-workspace-by-number ("ampersand" :mod-1) 1) -(define-pager-focus-workspace-by-number ("eacute" :mod-1) 2) -(define-pager-focus-workspace-by-number ("quotedbl" :mod-1) 3) -(define-pager-focus-workspace-by-number ("quoteright" :mod-1) 4) -(define-pager-focus-workspace-by-number ("parenleft" :mod-1) 5) -(define-pager-focus-workspace-by-number ("minus" :mod-1) 6) -(define-pager-focus-workspace-by-number ("egrave" :mod-1) 7) -(define-pager-focus-workspace-by-number ("underscore" :mod-1) 8) -(define-pager-focus-workspace-by-number ("ccedilla" :mod-1) 9) -(define-pager-focus-workspace-by-number ("agrave" :mod-1) 10) +(define-pager-focus-workspace-by-number ("1" :mod-1) 1) +(define-pager-focus-workspace-by-number ("2" :mod-1) 2) +(define-pager-focus-workspace-by-number ("3" :mod-1) 3) +(define-pager-focus-workspace-by-number ("4" :mod-1) 4) +(define-pager-focus-workspace-by-number ("5" :mod-1) 5) +(define-pager-focus-workspace-by-number ("6" :mod-1) 6) +(define-pager-focus-workspace-by-number ("7" :mod-1) 7) +(define-pager-focus-workspace-by-number ("8" :mod-1) 8) +(define-pager-focus-workspace-by-number ("9" :mod-1) 9) +(define-pager-focus-workspace-by-number ("0" :mod-1) 10) -(define-pager-key ("ampersand" :control :mod-1) 'pager-renumber-workspaces) -(define-pager-key ("eacute" :control :mod-1) 'pager-sort-workspaces) +(define-pager-key ("1" :control :mod-1) 'pager-renumber-workspaces) +(define-pager-key ("2" :control :mod-1) 'pager-sort-workspaces) --- /project/clfswm/cvsroot/clfswm/bindings-second-mode.lisp 2007/12/21 22:01:14 1.3 +++ /project/clfswm/cvsroot/clfswm/bindings-second-mode.lisp 2007/12/21 23:45:56 1.4 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 22:59:59 2007 +;;; #Date#: Sat Dec 22 00:31:08 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse for second mode @@ -67,7 +67,7 @@ (define-second-key (#\!) 'run-program-from-query-string) -(define-second-key (#\<) 'leave-second-mode-maximize) +(define-second-key (#\t) 'leave-second-mode-maximize) (define-second-key (#\Return) 'leave-second-mode-maximize) (define-second-key ("Escape") 'leave-second-mode) @@ -113,19 +113,19 @@ ,(format nil "Focus workspace ~A" number) (circulate-workspace-by-number ,number)))) -(define-second-focus-workspace-by-number ("ampersand" :mod-1) 1) -(define-second-focus-workspace-by-number ("eacute" :mod-1) 2) -(define-second-focus-workspace-by-number ("quotedbl" :mod-1) 3) -(define-second-focus-workspace-by-number ("quoteright" :mod-1) 4) -(define-second-focus-workspace-by-number ("parenleft" :mod-1) 5) -(define-second-focus-workspace-by-number ("minus" :mod-1) 6) -(define-second-focus-workspace-by-number ("egrave" :mod-1) 7) -(define-second-focus-workspace-by-number ("underscore" :mod-1) 8) -(define-second-focus-workspace-by-number ("ccedilla" :mod-1) 9) -(define-second-focus-workspace-by-number ("agrave" :mod-1) 10) +(define-second-focus-workspace-by-number ("1" :mod-1) 1) +(define-second-focus-workspace-by-number ("2" :mod-1) 2) +(define-second-focus-workspace-by-number ("3" :mod-1) 3) +(define-second-focus-workspace-by-number ("4" :mod-1) 4) +(define-second-focus-workspace-by-number ("5" :mod-1) 5) +(define-second-focus-workspace-by-number ("6" :mod-1) 6) +(define-second-focus-workspace-by-number ("7" :mod-1) 7) +(define-second-focus-workspace-by-number ("8" :mod-1) 8) +(define-second-focus-workspace-by-number ("9" :mod-1) 9) +(define-second-focus-workspace-by-number ("0" :mod-1) 10) -(define-second-key ("ampersand" :control :mod-1) 'renumber-workspaces) -(define-second-key ("eacute" :control :mod-1) 'sort-workspaces) +(define-second-key ("1" :control :mod-1) 'renumber-workspaces) +(define-second-key ("2" :control :mod-1) 'sort-workspaces) @@ -134,9 +134,9 @@ (define-second-key (#\Tab :mod-1) 'rotate-window-up) (define-second-key (#\Tab :mod-1 :shift) 'rotate-window-down) -(define-second-key ("twosuperior") 'banish-pointer) +(define-second-key (#\b) 'banish-pointer) -(define-second-key ("twosuperior" :mod-1) 'toggle-maximize-current-group) +(define-second-key (#\b :mod-1) 'toggle-maximize-current-group) (define-second-key (#\x) 'pager-mode) @@ -208,8 +208,8 @@ (dbg *screen*) (dbg (query-tree *root*)))) -(define-second-key (#\t) 'tile-current-workspace-vertically) -(define-second-key (#\t :shift) 'tile-current-workspace-horizontally) +(define-second-key (#\t :control) 'tile-current-workspace-vertically) +(define-second-key (#\t :shift :control) 'tile-current-workspace-horizontally) (define-second-key (#\y) 'tile-current-workspace-to) (define-second-key (#\y :mod-1) 'reconfigure-tile-workspace) --- /project/clfswm/cvsroot/clfswm/bindings.lisp 2007/12/21 22:01:14 1.3 +++ /project/clfswm/cvsroot/clfswm/bindings.lisp 2007/12/21 23:45:56 1.4 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 23:00:01 2007 +;;; #Date#: Fri Dec 21 23:52:03 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse @@ -43,30 +43,13 @@ (define-main-key ("Home" :mod-1 :control :shift) 'quit-clfswm) -;;(defun reload-clfswm () -;; "Reload clfswm" -;; (format t "RELOADING... ") -;; (ungrab-main-keys) -;; (setf *main-keys* (make-hash-table :test 'equal)) -;; (asdf:oos 'asdf:load-op :clfswm) -;; (grab-main-keys) -;; (format t "Done!~%")) -;; -;; -;;(define-main-key ("F2" :mod-1) 'reload-clfswm) - -;;(define-main-key ("F3" :mod-1) (lambda () -;; (do-shell "rxvt"))) - - -(define-main-key (#\< :control) 'second-key-mode) +(define-main-key (#\t :mod-1) 'second-key-mode) (define-main-key (#\Tab :mod-1) 'rotate-window-up) (define-main-key (#\Tab :mod-1 :shift) 'rotate-window-down) -(define-main-key ("twosuperior") 'banish-pointer) - -(define-main-key ("twosuperior" :mod-1) 'toggle-maximize-current-group) +(define-main-key (#\b :mod-1) 'banish-pointer) +(define-main-key (#\b :mod-1 :control) 'toggle-maximize-current-group) ;; Escape (define-main-key ("Escape" :control :shift) 'delete-current-window) @@ -107,14 +90,14 @@ ,(format nil "Focus workspace ~A" number) (circulate-workspace-by-number ,number)))) -(define-main-focus-workspace-by-number ("ampersand" :mod-1) 1) -(define-main-focus-workspace-by-number ("eacute" :mod-1) 2) -(define-main-focus-workspace-by-number ("quotedbl" :mod-1) 3) -(define-main-focus-workspace-by-number ("quoteright" :mod-1) 4) -(define-main-focus-workspace-by-number ("parenleft" :mod-1) 5) -(define-main-focus-workspace-by-number ("minus" :mod-1) 6) -(define-main-focus-workspace-by-number ("egrave" :mod-1) 7) -(define-main-focus-workspace-by-number ("underscore" :mod-1) 8) -(define-main-focus-workspace-by-number ("ccedilla" :mod-1) 9) -(define-main-focus-workspace-by-number ("agrave" :mod-1) 10) +(define-main-focus-workspace-by-number ("1" :mod-1) 1) +(define-main-focus-workspace-by-number ("2" :mod-1) 2) +(define-main-focus-workspace-by-number ("3" :mod-1) 3) +(define-main-focus-workspace-by-number ("4" :mod-1) 4) +(define-main-focus-workspace-by-number ("5" :mod-1) 5) +(define-main-focus-workspace-by-number ("6" :mod-1) 6) +(define-main-focus-workspace-by-number ("7" :mod-1) 7) +(define-main-focus-workspace-by-number ("8" :mod-1) 8) +(define-main-focus-workspace-by-number ("9" :mod-1) 9) +(define-main-focus-workspace-by-number ("0" :mod-1) 10) --- /project/clfswm/cvsroot/clfswm/config.lisp 2007/12/21 22:01:14 1.4 +++ /project/clfswm/cvsroot/clfswm/config.lisp 2007/12/21 23:45:56 1.5 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 23:00:27 2007 +;;; #Date#: Sat Dec 22 00:40:23 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Configuration file @@ -72,7 +72,7 @@ (defparameter *pager-workspace-cursor* "black") (defparameter *pager-line-cursor* "blue") (defparameter *pager-group-cursor* "white") -(defparameter *pager-group-background-cursor* "darkgreen") +(defparameter *pager-group-background-cursor* "grey35") (defparameter *pager-font-string* "9x15bold") --- /project/clfswm/cvsroot/clfswm/dot-clfswmrc 2007/05/15 20:51:41 1.2 +++ /project/clfswm/cvsroot/clfswm/dot-clfswmrc 2007/12/21 23:45:56 1.3 @@ -10,7 +10,7 @@ ;;; Color configuration example ;;; ;;; See in package.lisp for all variables -(setf *color-unselected* "Blue") +;;(setf *color-unselected* "Blue") ;;; Binding example: Undefine Control-F1 and define Control-F5 as a @@ -18,8 +18,26 @@ ;;; ;;; See bindings.lisp, bindings-second-mode.lisp and bindings-pager.lisp ;;; for all default bindings definitions. -(undefine-main-key ("F1" :mod-1)) -(define-main-key ("F5" :mod-1) 'help-on-clfswm) +;;(undefine-main-key ("F1" :mod-1)) +;;(define-main-key ("F5" :mod-1) 'help-on-clfswm) + + + +;;;; Reloading example +;;(defun reload-clfswm () +;; "Reload clfswm" +;; (format t "RELOADING... ") +;; (ungrab-main-keys) +;; (setf *main-keys* (make-hash-table :test 'equal)) +;; (asdf:oos 'asdf:load-op :clfswm) +;; (grab-main-keys) +;; (format t "Done!~%")) +;; +;; +;;(define-main-key ("F2" :mod-1) 'reload-clfswm) + +;;(define-main-key ("F3" :mod-1) (lambda () +;; (do-shell "rxvt"))) @@ -27,14 +45,14 @@ ;;; ;;; See in package.lisp and clfswm.lisp, clfswm-second-mode.lisp ;;; or clfswm-pager.lisp for hook examples -(setf *key-press-hook* (list (lambda (&rest args) ; function 1 - (format t "Keyp press (before): ~A~%" args) - (force-output)) - #'handle-key-press ; function 2 (default) - (lambda (&rest args) ; function 3 - (declare (ignore args)) - (format t "Keyp press (after)~%") - (force-output)))) +;;(setf *key-press-hook* (list (lambda (&rest args) ; function 1 +;; (format t "Keyp press (before): ~A~%" args) +;; (force-output)) +;; #'handle-key-press ; function 2 (default) +;; (lambda (&rest args) ; function 3 +;; (declare (ignore args)) +;; (format t "Keyp press (after)~%") +;; (force-output)))) ;;;; Uncomment the lines below if you want to enable the larswm, ;;;; dwm, wmii... cycling style. @@ -65,3 +83,113 @@ +;;;;;; Azerty keyboard configuration (first remove keys, then rebind) +;;;; Main mode +;;(undefine-main-key (#\t :mod-1)) +;;(undefine-main-key (#\b :mod-1)) +;;(undefine-main-key (#\b :mod-1 :control)) +;;(undefine-main-key ("1" :mod-1)) +;;(undefine-main-key ("2" :mod-1)) +;;(undefine-main-key ("3" :mod-1)) +;;(undefine-main-key ("4" :mod-1)) +;;(undefine-main-key ("5" :mod-1)) +;;(undefine-main-key ("6" :mod-1)) +;;(undefine-main-key ("7" :mod-1)) +;;(undefine-main-key ("8" :mod-1)) +;;(undefine-main-key ("9" :mod-1)) +;;(undefine-main-key ("0" :mod-1)) +;; +;; +;;(define-main-key (#\< :control) 'second-key-mode) +;; +;;(define-main-key ("twosuperior") 'banish-pointer) +;;(define-main-key ("twosuperior" :mod-1) 'toggle-maximize-current-group) +;; +;;(define-main-key ("ampersand" :mod-1) 'b-main-focus-workspace-1) +;;(define-main-key ("eacute" :mod-1) 'b-main-focus-workspace-2) +;;(define-main-key ("quotedbl" :mod-1) 'b-main-focus-workspace-3) +;;(define-main-key ("quoteright" :mod-1) 'b-main-focus-workspace-4) +;;(define-main-key ("parenleft" :mod-1) 'b-main-focus-workspace-5) +;;(define-main-key ("minus" :mod-1) 'b-main-focus-workspace-6) +;;(define-main-key ("egrave" :mod-1) 'b-main-focus-workspace-7) +;;(define-main-key ("underscore" :mod-1) 'b-main-focus-workspace-8) +;;(define-main-key ("ccedilla" :mod-1) 'b-main-focus-workspace-9) +;;(define-main-key ("agrave" :mod-1) 'b-main-focus-workspace-10) +;; +;;;; Second mode +;;(undefine-second-key (#\t)) +;;(undefine-second-key (#\b)) +;;(undefine-second-key (#\b :mod-1)) +;;(undefine-second-key ("1" :mod-1)) +;;(undefine-second-key ("2" :mod-1)) +;;(undefine-second-key ("3" :mod-1)) +;;(undefine-second-key ("4" :mod-1)) +;;(undefine-second-key ("5" :mod-1)) +;;(undefine-second-key ("6" :mod-1)) +;;(undefine-second-key ("7" :mod-1)) +;;(undefine-second-key ("8" :mod-1)) +;;(undefine-second-key ("9" :mod-1)) +;;(undefine-second-key ("0" :mod-1)) +;;(undefine-second-key ("1" :control :mod-1)) +;;(undefine-second-key ("2" :control :mod-1)) +;; +;; +;; +;;(define-second-key (#\<) 'leave-second-mode-maximize) +;; +;; +;;(define-second-key ("ampersand" :mod-1) 'b-second-focus-workspace-1) +;;(define-second-key ("eacute" :mod-1) 'b-second-focus-workspace-2) +;;(define-second-key ("quotedbl" :mod-1) 'b-second-focus-workspace-3) +;;(define-second-key ("quoteright" :mod-1) 'b-second-focus-workspace-4) +;;(define-second-key ("parenleft" :mod-1) 'b-second-focus-workspace-5) +;;(define-second-key ("minus" :mod-1) 'b-second-focus-workspace-6) +;;(define-second-key ("egrave" :mod-1) 'b-second-focus-workspace-7) +;;(define-second-key ("underscore" :mod-1) 'b-second-focus-workspace-8) +;;(define-second-key ("ccedilla" :mod-1) 'b-second-focus-workspace-9) +;;(define-second-key ("agrave" :mod-1) 'b-second-focus-workspace-10) +;; +;;(define-second-key ("ampersand" :control :mod-1) 'renumber-workspaces) +;;(define-second-key ("eacute" :control :mod-1) 'sort-workspaces) +;; +;; +;;(define-second-key ("twosuperior") 'banish-pointer) +;;(define-second-key ("twosuperior" :mod-1) 'toggle-maximize-current-group) +;; +;;(define-second-key (#\t) 'tile-current-workspace-vertically) +;;(define-second-key (#\t :shift) 'tile-current-workspace-horizontally) +;; +;;;; Pager mode +;;(undefine-pager-key (#\b)) +;;(undefine-pager-key ("1" :mod-1)) +;;(undefine-pager-key ("2" :mod-1)) +;;(undefine-pager-key ("3" :mod-1)) +;;(undefine-pager-key ("4" :mod-1)) +;;(undefine-pager-key ("5" :mod-1)) +;;(undefine-pager-key ("6" :mod-1)) +;;(undefine-pager-key ("7" :mod-1)) +;;(undefine-pager-key ("8" :mod-1)) +;;(undefine-pager-key ("9" :mod-1)) +;;(undefine-pager-key ("0" :mod-1)) +;;(undefine-pager-key ("1" :control :mod-1)) +;;(undefine-pager-key ("2" :control :mod-1)) +;; +;; +;;(define-pager-key ("twosuperior") 'banish-pointer) +;; +;;(define-pager-key ("ampersand" :mod-1) 'b-pager-focus-workspace-1) +;;(define-pager-key ("eacute" :mod-1) 'b-pager-focus-workspace-2) +;;(define-pager-key ("quotedbl" :mod-1) 'b-pager-focus-workspace-3) +;;(define-pager-key ("quoteright" :mod-1) 'b-pager-focus-workspace-4) +;;(define-pager-key ("parenleft" :mod-1) 'b-pager-focus-workspace-5) +;;(define-pager-key ("minus" :mod-1) 'b-pager-focus-workspace-6) +;;(define-pager-key ("egrave" :mod-1) 'b-pager-focus-workspace-7) +;;(define-pager-key ("underscore" :mod-1) 'b-pager-focus-workspace-8) +;;(define-pager-key ("ccedilla" :mod-1) 'b-pager-focus-workspace-9) +;;(define-pager-key ("agrave" :mod-1) 'b-pager-focus-workspace-10) +;; +;;(define-pager-key ("ampersand" :control :mod-1) 'pager-renumber-workspaces) +;;(define-pager-key ("eacute" :control :mod-1) 'pager-sort-workspaces) + + + From pbrochard at common-lisp.net Sat Dec 22 22:55:27 2007 From: pbrochard at common-lisp.net (pbrochard) Date: Sat, 22 Dec 2007 17:55:27 -0500 (EST) Subject: [clfswm-cvs] CVS clfswm Message-ID: <20071222225527.9181D33083@common-lisp.net> Update of /project/clfswm/cvsroot/clfswm In directory clnet:/tmp/cvs-serv26867 Modified Files: ChangeLog bindings-pager.lisp bindings-second-mode.lisp bindings.lisp clfswm-keys.lisp clfswm-pager.lisp clfswm-util.lisp clfswm.asd dot-clfswmrc keys.html keys.txt Log Message: typo and undefine-*-multi-key new macro --- /project/clfswm/cvsroot/clfswm/ChangeLog 2007/08/26 21:08:16 1.3 +++ /project/clfswm/cvsroot/clfswm/ChangeLog 2007/12/22 22:55:26 1.4 @@ -1,3 +1,11 @@ +2007-12-22 Philippe Brochard + + * clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new macro. + * clfswm: Color change for the pager. Typo or better description + in bindings definitions. Define bindings for a qwerty keyboard by + default. dot-clfswmrc show examples to switch to an azerty keyboard. + * config.lisp: new file - group all globals variables in this file. + 2007-08-26 Philippe Brochard * xlib-util.lisp (hide-window): Remove structure-notivy events --- /project/clfswm/cvsroot/clfswm/bindings-pager.lisp 2007/12/21 23:45:56 1.4 +++ /project/clfswm/cvsroot/clfswm/bindings-pager.lisp 2007/12/22 22:55:26 1.5 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Dec 22 00:35:03 2007 +;;; #Date#: Sat Dec 22 23:31:47 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse for pager mode @@ -38,7 +38,7 @@ (define-pager-key (#\g :control) (defun b-pager-stop-all-pending-actions () - "Stop all pending actions (like open in new workspace/group)" + "Stop all pending actions (actions like open in new workspace/group)" (stop-all-pending-actions) (pager-draw-display))) @@ -260,19 +260,19 @@ (pager-select-workspace-by-number ,number)))) -(define-pager-focus-workspace-by-number ("1" :mod-1) 1) -(define-pager-focus-workspace-by-number ("2" :mod-1) 2) -(define-pager-focus-workspace-by-number ("3" :mod-1) 3) -(define-pager-focus-workspace-by-number ("4" :mod-1) 4) -(define-pager-focus-workspace-by-number ("5" :mod-1) 5) -(define-pager-focus-workspace-by-number ("6" :mod-1) 6) -(define-pager-focus-workspace-by-number ("7" :mod-1) 7) -(define-pager-focus-workspace-by-number ("8" :mod-1) 8) -(define-pager-focus-workspace-by-number ("9" :mod-1) 9) -(define-pager-focus-workspace-by-number ("0" :mod-1) 10) +(define-pager-focus-workspace-by-number (#\1 :mod-1) 1) +(define-pager-focus-workspace-by-number (#\2 :mod-1) 2) +(define-pager-focus-workspace-by-number (#\3 :mod-1) 3) +(define-pager-focus-workspace-by-number (#\4 :mod-1) 4) +(define-pager-focus-workspace-by-number (#\5 :mod-1) 5) +(define-pager-focus-workspace-by-number (#\6 :mod-1) 6) +(define-pager-focus-workspace-by-number (#\7 :mod-1) 7) +(define-pager-focus-workspace-by-number (#\8 :mod-1) 8) +(define-pager-focus-workspace-by-number (#\9 :mod-1) 9) +(define-pager-focus-workspace-by-number (#\0 :mod-1) 10) -(define-pager-key ("1" :control :mod-1) 'pager-renumber-workspaces) -(define-pager-key ("2" :control :mod-1) 'pager-sort-workspaces) +(define-pager-key (#\1 :control :mod-1) 'pager-renumber-workspaces) +(define-pager-key (#\2 :control :mod-1) 'pager-sort-workspaces) --- /project/clfswm/cvsroot/clfswm/bindings-second-mode.lisp 2007/12/21 23:45:56 1.4 +++ /project/clfswm/cvsroot/clfswm/bindings-second-mode.lisp 2007/12/22 22:55:26 1.5 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Dec 22 00:31:08 2007 +;;; #Date#: Sat Dec 22 23:31:58 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse for second mode @@ -113,19 +113,19 @@ ,(format nil "Focus workspace ~A" number) (circulate-workspace-by-number ,number)))) -(define-second-focus-workspace-by-number ("1" :mod-1) 1) -(define-second-focus-workspace-by-number ("2" :mod-1) 2) -(define-second-focus-workspace-by-number ("3" :mod-1) 3) -(define-second-focus-workspace-by-number ("4" :mod-1) 4) -(define-second-focus-workspace-by-number ("5" :mod-1) 5) -(define-second-focus-workspace-by-number ("6" :mod-1) 6) -(define-second-focus-workspace-by-number ("7" :mod-1) 7) -(define-second-focus-workspace-by-number ("8" :mod-1) 8) -(define-second-focus-workspace-by-number ("9" :mod-1) 9) -(define-second-focus-workspace-by-number ("0" :mod-1) 10) +(define-second-focus-workspace-by-number (#\1 :mod-1) 1) +(define-second-focus-workspace-by-number (#\2 :mod-1) 2) +(define-second-focus-workspace-by-number (#\3 :mod-1) 3) +(define-second-focus-workspace-by-number (#\4 :mod-1) 4) +(define-second-focus-workspace-by-number (#\5 :mod-1) 5) +(define-second-focus-workspace-by-number (#\6 :mod-1) 6) +(define-second-focus-workspace-by-number (#\7 :mod-1) 7) +(define-second-focus-workspace-by-number (#\8 :mod-1) 8) +(define-second-focus-workspace-by-number (#\9 :mod-1) 9) +(define-second-focus-workspace-by-number (#\0 :mod-1) 10) -(define-second-key ("1" :control :mod-1) 'renumber-workspaces) -(define-second-key ("2" :control :mod-1) 'sort-workspaces) +(define-second-key (#\1 :control :mod-1) 'renumber-workspaces) +(define-second-key (#\2 :control :mod-1) 'sort-workspaces) @@ -442,7 +442,7 @@ (defun move-selected-group (root-x root-y) - "Move selected group or create a new group" + "Move selected group or create a new group on the root window" (select-group-under-mouse root-x root-y) (setf *motion-object* (find-group-under-mouse root-x root-y)) (if *motion-object* --- /project/clfswm/cvsroot/clfswm/bindings.lisp 2007/12/21 23:45:56 1.4 +++ /project/clfswm/cvsroot/clfswm/bindings.lisp 2007/12/22 22:55:26 1.5 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 23:52:03 2007 +;;; #Date#: Sat Dec 22 23:30:51 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse @@ -90,14 +90,14 @@ ,(format nil "Focus workspace ~A" number) (circulate-workspace-by-number ,number)))) -(define-main-focus-workspace-by-number ("1" :mod-1) 1) -(define-main-focus-workspace-by-number ("2" :mod-1) 2) -(define-main-focus-workspace-by-number ("3" :mod-1) 3) -(define-main-focus-workspace-by-number ("4" :mod-1) 4) -(define-main-focus-workspace-by-number ("5" :mod-1) 5) -(define-main-focus-workspace-by-number ("6" :mod-1) 6) -(define-main-focus-workspace-by-number ("7" :mod-1) 7) -(define-main-focus-workspace-by-number ("8" :mod-1) 8) -(define-main-focus-workspace-by-number ("9" :mod-1) 9) -(define-main-focus-workspace-by-number ("0" :mod-1) 10) +(define-main-focus-workspace-by-number (#\1 :mod-1) 1) +(define-main-focus-workspace-by-number (#\2 :mod-1) 2) +(define-main-focus-workspace-by-number (#\3 :mod-1) 3) +(define-main-focus-workspace-by-number (#\4 :mod-1) 4) +(define-main-focus-workspace-by-number (#\5 :mod-1) 5) +(define-main-focus-workspace-by-number (#\6 :mod-1) 6) +(define-main-focus-workspace-by-number (#\7 :mod-1) 7) +(define-main-focus-workspace-by-number (#\8 :mod-1) 8) +(define-main-focus-workspace-by-number (#\9 :mod-1) 9) +(define-main-focus-workspace-by-number (#\0 :mod-1) 10) --- /project/clfswm/cvsroot/clfswm/clfswm-keys.lisp 2007/12/21 22:01:14 1.3 +++ /project/clfswm/cvsroot/clfswm/clfswm-keys.lisp 2007/12/22 22:55:26 1.4 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 23:00:11 2007 +;;; #Date#: Sat Dec 22 22:52:07 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Keys functions definition @@ -44,7 +44,8 @@ (defmacro define-define-key (name hashtable) (let ((name-key-fun (create-symbol "define-" name "-key-fun")) (name-key (create-symbol "define-" name "-key")) - (undefine-name (create-symbol "undefine-" name "-key"))) + (undefine-name (create-symbol "undefine-" name "-key")) + (undefine-multi-name (create-symbol "undefine-" name "-multi-keys"))) `(progn (defun ,name-key-fun (key function &optional keystring) "Define a new key, a key is '(char '(modifier list))" @@ -54,8 +55,12 @@ `(,',name-key-fun (list ,key ,(modifiers->state modifiers)) ,function ,keystring)) (defmacro ,undefine-name ((key &rest modifiers)) - `(remhash (list ,key ,(modifiers->state modifiers)) ,',hashtable))))) + `(remhash (list ,key ,(modifiers->state modifiers)) ,',hashtable)) + (defmacro ,undefine-multi-name (&rest keys) + `(progn + ,@(loop for k in keys + collect `(,',undefine-name ,k))))))) (defmacro define-define-mouse (name hashtable) @@ -80,6 +85,13 @@ (define-define-key "pager" *pager-keys*) (define-define-key "info" *info-keys*) + + + +;;(defun undefine-main-keys (&rest keys) +;; (dolist (k keys) +;; (undefine-main-key k))) + (defun undefine-info-key-fun (key) (remhash key *info-keys*)) --- /project/clfswm/cvsroot/clfswm/clfswm-pager.lisp 2007/12/21 22:01:14 1.3 +++ /project/clfswm/cvsroot/clfswm/clfswm-pager.lisp 2007/12/22 22:55:26 1.4 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 23:00:16 2007 +;;; #Date#: Sat Dec 22 23:49:48 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -304,7 +304,7 @@ (defun pager-renumber-workspaces () - "Reset workspaces numbers" + "Reset workspaces numbers (1 for current workspace, 2 for the second...) " (dotimes (i (pcursor-workspace *pcursor*)) (setf *workspace-list* (rotate-list *workspace-list*))) (setf *current-workspace-number* 0) --- /project/clfswm/cvsroot/clfswm/clfswm-util.lisp 2007/12/21 22:01:14 1.3 +++ /project/clfswm/cvsroot/clfswm/clfswm-util.lisp 2007/12/22 22:55:26 1.4 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 23:00:22 2007 +;;; #Date#: Sat Dec 22 23:15:43 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility @@ -32,7 +32,7 @@ ;;;| Various definitions ;;;`----- (defun stop-all-pending-actions () - "Stop all pending actions (like open in new workspace/group)" + "Stop all pending actions (actions like open in new workspace/group)" (setf *open-next-window-in-new-workspace* nil *open-next-window-in-new-group* nil *arrow-action* nil @@ -89,7 +89,7 @@ (defun renumber-workspaces () - "Reset workspaces numbers" + "Reset workspaces numbers (1 for current workspace, 2 for the second...) " (hide-all-windows-in-workspace (current-workspace)) (setf *current-workspace-number* 0) (loop for workspace in *workspace-list* do @@ -596,7 +596,7 @@ (defun eval-from-query-string () - "Eval a lisp form from the query input" + "Eval a lisp form the query input" (let ((form (query-string "Eval:")) (result nil)) (when (and form (not (equal form ""))) --- /project/clfswm/cvsroot/clfswm/clfswm.asd 2007/12/21 22:38:14 1.3 +++ /project/clfswm/cvsroot/clfswm/clfswm.asd 2007/12/22 22:55:26 1.4 @@ -2,7 +2,7 @@ ;;;; Author: Philippe Brochard ;;;; ASDF System Definition ;;; -;;; #date#: Fri Dec 21 23:30:21 2007 +;;; #date#: Sat Dec 22 22:26:18 2007 (in-package #:asdf) @@ -25,13 +25,13 @@ (:file "keysyms" :depends-on ("package")) (:file "clfswm-keys" - :depends-on ("package" "xlib-util" "keysyms")) + :depends-on ("package" "config" "xlib-util" "keysyms")) (:file "clfswm-internal" :depends-on ("xlib-util" "clfswm-keys" "netwm-util")) (:file "clfswm-second-mode" :depends-on ("package" "clfswm-internal")) (:file "clfswm" - :depends-on ("xlib-util" "netwm-util" "clfswm-keys" + :depends-on ("xlib-util" "netwm-util" "clfswm-keys" "config" "clfswm-internal" "clfswm-second-mode" "tools")) (:file "clfswm-util" :depends-on ("clfswm" "keysyms")) --- /project/clfswm/cvsroot/clfswm/dot-clfswmrc 2007/12/21 23:45:56 1.3 +++ /project/clfswm/cvsroot/clfswm/dot-clfswmrc 2007/12/22 22:55:26 1.4 @@ -83,8 +83,8 @@ -;;;;;; Azerty keyboard configuration (first remove keys, then rebind) -;;;; Main mode +;;;; Azerty keyboard configuration (first remove keys, then rebind) +;; Main mode ;;(undefine-main-key (#\t :mod-1)) ;;(undefine-main-key (#\b :mod-1)) ;;(undefine-main-key (#\b :mod-1 :control)) @@ -98,98 +98,81 @@ ;;(undefine-main-key ("8" :mod-1)) ;;(undefine-main-key ("9" :mod-1)) ;;(undefine-main-key ("0" :mod-1)) -;; -;; -;;(define-main-key (#\< :control) 'second-key-mode) -;; -;;(define-main-key ("twosuperior") 'banish-pointer) -;;(define-main-key ("twosuperior" :mod-1) 'toggle-maximize-current-group) -;; -;;(define-main-key ("ampersand" :mod-1) 'b-main-focus-workspace-1) -;;(define-main-key ("eacute" :mod-1) 'b-main-focus-workspace-2) -;;(define-main-key ("quotedbl" :mod-1) 'b-main-focus-workspace-3) -;;(define-main-key ("quoteright" :mod-1) 'b-main-focus-workspace-4) -;;(define-main-key ("parenleft" :mod-1) 'b-main-focus-workspace-5) -;;(define-main-key ("minus" :mod-1) 'b-main-focus-workspace-6) -;;(define-main-key ("egrave" :mod-1) 'b-main-focus-workspace-7) -;;(define-main-key ("underscore" :mod-1) 'b-main-focus-workspace-8) -;;(define-main-key ("ccedilla" :mod-1) 'b-main-focus-workspace-9) -;;(define-main-key ("agrave" :mod-1) 'b-main-focus-workspace-10) -;; -;;;; Second mode -;;(undefine-second-key (#\t)) -;;(undefine-second-key (#\b)) -;;(undefine-second-key (#\b :mod-1)) -;;(undefine-second-key ("1" :mod-1)) -;;(undefine-second-key ("2" :mod-1)) -;;(undefine-second-key ("3" :mod-1)) -;;(undefine-second-key ("4" :mod-1)) -;;(undefine-second-key ("5" :mod-1)) -;;(undefine-second-key ("6" :mod-1)) -;;(undefine-second-key ("7" :mod-1)) -;;(undefine-second-key ("8" :mod-1)) -;;(undefine-second-key ("9" :mod-1)) -;;(undefine-second-key ("0" :mod-1)) -;;(undefine-second-key ("1" :control :mod-1)) -;;(undefine-second-key ("2" :control :mod-1)) -;; -;; -;; -;;(define-second-key (#\<) 'leave-second-mode-maximize) -;; -;; -;;(define-second-key ("ampersand" :mod-1) 'b-second-focus-workspace-1) -;;(define-second-key ("eacute" :mod-1) 'b-second-focus-workspace-2) -;;(define-second-key ("quotedbl" :mod-1) 'b-second-focus-workspace-3) -;;(define-second-key ("quoteright" :mod-1) 'b-second-focus-workspace-4) -;;(define-second-key ("parenleft" :mod-1) 'b-second-focus-workspace-5) -;;(define-second-key ("minus" :mod-1) 'b-second-focus-workspace-6) -;;(define-second-key ("egrave" :mod-1) 'b-second-focus-workspace-7) -;;(define-second-key ("underscore" :mod-1) 'b-second-focus-workspace-8) -;;(define-second-key ("ccedilla" :mod-1) 'b-second-focus-workspace-9) -;;(define-second-key ("agrave" :mod-1) 'b-second-focus-workspace-10) -;; -;;(define-second-key ("ampersand" :control :mod-1) 'renumber-workspaces) -;;(define-second-key ("eacute" :control :mod-1) 'sort-workspaces) -;; -;; -;;(define-second-key ("twosuperior") 'banish-pointer) -;;(define-second-key ("twosuperior" :mod-1) 'toggle-maximize-current-group) -;; -;;(define-second-key (#\t) 'tile-current-workspace-vertically) -;;(define-second-key (#\t :shift) 'tile-current-workspace-horizontally) -;; -;;;; Pager mode -;;(undefine-pager-key (#\b)) -;;(undefine-pager-key ("1" :mod-1)) -;;(undefine-pager-key ("2" :mod-1)) -;;(undefine-pager-key ("3" :mod-1)) -;;(undefine-pager-key ("4" :mod-1)) -;;(undefine-pager-key ("5" :mod-1)) -;;(undefine-pager-key ("6" :mod-1)) -;;(undefine-pager-key ("7" :mod-1)) -;;(undefine-pager-key ("8" :mod-1)) -;;(undefine-pager-key ("9" :mod-1)) -;;(undefine-pager-key ("0" :mod-1)) -;;(undefine-pager-key ("1" :control :mod-1)) -;;(undefine-pager-key ("2" :control :mod-1)) -;; -;; -;;(define-pager-key ("twosuperior") 'banish-pointer) -;; -;;(define-pager-key ("ampersand" :mod-1) 'b-pager-focus-workspace-1) -;;(define-pager-key ("eacute" :mod-1) 'b-pager-focus-workspace-2) -;;(define-pager-key ("quotedbl" :mod-1) 'b-pager-focus-workspace-3) -;;(define-pager-key ("quoteright" :mod-1) 'b-pager-focus-workspace-4) -;;(define-pager-key ("parenleft" :mod-1) 'b-pager-focus-workspace-5) -;;(define-pager-key ("minus" :mod-1) 'b-pager-focus-workspace-6) -;;(define-pager-key ("egrave" :mod-1) 'b-pager-focus-workspace-7) -;;(define-pager-key ("underscore" :mod-1) 'b-pager-focus-workspace-8) -;;(define-pager-key ("ccedilla" :mod-1) 'b-pager-focus-workspace-9) -;;(define-pager-key ("agrave" :mod-1) 'b-pager-focus-workspace-10) -;; -;;(define-pager-key ("ampersand" :control :mod-1) 'pager-renumber-workspaces) -;;(define-pager-key ("eacute" :control :mod-1) 'pager-sort-workspaces) +;; Or better: +(undefine-main-multi-keys (#\t :mod-1) (#\b :mod-1) (#\b :mod-1 :control) + ("1" :mod-1) ("2" :mod-1) ("3" :mod-1) + ("4" :mod-1) ("5" :mod-1) ("6" :mod-1) + ("7" :mod-1) ("8" :mod-1) ("9" :mod-1) ("0" :mod-1)) + +(define-main-key (#\< :control) 'second-key-mode) + +(define-main-key ("twosuperior") 'banish-pointer) +(define-main-key ("twosuperior" :mod-1) 'toggle-maximize-current-group) + +(define-main-key ("ampersand" :mod-1) 'b-main-focus-workspace-1) +(define-main-key ("eacute" :mod-1) 'b-main-focus-workspace-2) +(define-main-key ("quotedbl" :mod-1) 'b-main-focus-workspace-3) +(define-main-key ("quoteright" :mod-1) 'b-main-focus-workspace-4) +(define-main-key ("parenleft" :mod-1) 'b-main-focus-workspace-5) +(define-main-key ("minus" :mod-1) 'b-main-focus-workspace-6) +(define-main-key ("egrave" :mod-1) 'b-main-focus-workspace-7) +(define-main-key ("underscore" :mod-1) 'b-main-focus-workspace-8) +(define-main-key ("ccedilla" :mod-1) 'b-main-focus-workspace-9) +(define-main-key ("agrave" :mod-1) 'b-main-focus-workspace-10) + +;; Second mode +(undefine-second-multi-keys (#\t) (#\b) (#\b :mod-1) + ("1" :mod-1) ("2" :mod-1) ("3" :mod-1) + ("4" :mod-1) ("5" :mod-1) ("6" :mod-1) + ("7" :mod-1) ("8" :mod-1) ("9" :mod-1) ("0" :mod-1) + ("1" :control :mod-1) ("2" :control :mod-1)) + +(define-second-key (#\<) 'leave-second-mode-maximize) + + +(define-second-key ("ampersand" :mod-1) 'b-second-focus-workspace-1) +(define-second-key ("eacute" :mod-1) 'b-second-focus-workspace-2) +(define-second-key ("quotedbl" :mod-1) 'b-second-focus-workspace-3) +(define-second-key ("quoteright" :mod-1) 'b-second-focus-workspace-4) +(define-second-key ("parenleft" :mod-1) 'b-second-focus-workspace-5) +(define-second-key ("minus" :mod-1) 'b-second-focus-workspace-6) +(define-second-key ("egrave" :mod-1) 'b-second-focus-workspace-7) +(define-second-key ("underscore" :mod-1) 'b-second-focus-workspace-8) +(define-second-key ("ccedilla" :mod-1) 'b-second-focus-workspace-9) +(define-second-key ("agrave" :mod-1) 'b-second-focus-workspace-10) + +(define-second-key ("ampersand" :control :mod-1) 'renumber-workspaces) +(define-second-key ("eacute" :control :mod-1) 'sort-workspaces) + + +(define-second-key ("twosuperior") 'banish-pointer) +(define-second-key ("twosuperior" :mod-1) 'toggle-maximize-current-group) + +(define-second-key (#\t) 'tile-current-workspace-vertically) +(define-second-key (#\t :shift) 'tile-current-workspace-horizontally) + +;; Pager mode +(undefine-pager-multi-keys (#\b) + ("1" :mod-1) ("2" :mod-1) ("3" :mod-1) + ("4" :mod-1) ("5" :mod-1) ("6" :mod-1) + ("7" :mod-1) ("8" :mod-1) ("9" :mod-1) ("0" :mod-1) + ("1" :control :mod-1) ("2" :control :mod-1)) + +(define-pager-key ("twosuperior") 'banish-pointer) + +(define-pager-key ("ampersand" :mod-1) 'b-pager-focus-workspace-1) +(define-pager-key ("eacute" :mod-1) 'b-pager-focus-workspace-2) +(define-pager-key ("quotedbl" :mod-1) 'b-pager-focus-workspace-3) +(define-pager-key ("quoteright" :mod-1) 'b-pager-focus-workspace-4) +(define-pager-key ("parenleft" :mod-1) 'b-pager-focus-workspace-5) +(define-pager-key ("minus" :mod-1) 'b-pager-focus-workspace-6) +(define-pager-key ("egrave" :mod-1) 'b-pager-focus-workspace-7) +(define-pager-key ("underscore" :mod-1) 'b-pager-focus-workspace-8) +(define-pager-key ("ccedilla" :mod-1) 'b-pager-focus-workspace-9) +(define-pager-key ("agrave" :mod-1) 'b-pager-focus-workspace-10) + +(define-pager-key ("ampersand" :control :mod-1) 'pager-renumber-workspaces) +(define-pager-key ("eacute" :control :mod-1) 'pager-sort-workspaces) --- /project/clfswm/cvsroot/clfswm/keys.html 2007/05/15 19:49:51 1.1 +++ /project/clfswm/cvsroot/clfswm/keys.html 2007/12/22 22:55:26 1.2 @@ -54,10 +54,10 @@ - Control + Mod-1 - < + T Switch to editing mode @@ -87,10 +87,10 @@ - + Mod-1 - Twosuperior + B Move the pointer to the lower right corner of the screen @@ -98,10 +98,10 @@ - Mod-1 + Mod-1 Control - Twosuperior + B Maximize/minimize the current group @@ -288,7 +288,7 @@ Mod-1 - Ampersand + 1 Focus workspace 1 @@ -299,7 +299,7 @@ Mod-1 - Eacute + 2 Focus workspace 2 @@ -310,7 +310,7 @@ Mod-1 - Quotedbl + 3 Focus workspace 3 @@ -321,7 +321,7 @@ Mod-1 - Quoteright + 4 Focus workspace 4 @@ -332,7 +332,7 @@ Mod-1 - Parenleft + 5 Focus workspace 5 @@ -343,7 +343,7 @@ Mod-1 - Minus + 6 Focus workspace 6 @@ -354,7 +354,7 @@ Mod-1 - Egrave + 7 Focus workspace 7 @@ -365,7 +365,7 @@ Mod-1 - Underscore + 8 Focus workspace 8 @@ -376,7 +376,7 @@ Mod-1 - Ccedilla + 9 Focus workspace 9 @@ -387,7 +387,7 @@ Mod-1 - Agrave + 0 Focus workspace 10 @@ -430,7 +430,7 @@ G - Stop all pending actions (like open in new workspace/group) + Stop all pending actions (actions like open in new workspace/group) @@ -452,7 +452,7 @@ : - Eval a lisp form from the query input + Eval a lisp form the query input @@ -471,7 +471,7 @@ - < + T Leave second mode and maximize current group @@ -702,7 +702,7 @@ Mod-1 - Ampersand + 1 Focus workspace 1 @@ -713,7 +713,7 @@ Mod-1 - Eacute + 2 Focus workspace 2 @@ -724,7 +724,7 @@ Mod-1 - Quotedbl + 3 Focus workspace 3 @@ -735,7 +735,7 @@ Mod-1 - Quoteright + 4 Focus workspace 4 @@ -746,7 +746,7 @@ Mod-1 - Parenleft + 5 Focus workspace 5 @@ -757,7 +757,7 @@ Mod-1 - Minus + 6 Focus workspace 6 @@ -768,7 +768,7 @@ Mod-1 - Egrave + 7 Focus workspace 7 @@ -779,7 +779,7 @@ Mod-1 - Underscore + 8 Focus workspace 8 @@ -790,7 +790,7 @@ Mod-1 - Ccedilla + 9 Focus workspace 9 @@ -801,7 +801,7 @@ Mod-1 - Agrave + 0 Focus workspace 10 @@ -812,10 +812,10 @@ Mod-1 Control - Ampersand + 1 - Reset workspaces numbers + Reset workspaces numbers (1 for current workspace, 2 for the second...) @@ -823,7 +823,7 @@ Mod-1 Control - Eacute + 2 Sort workspaces by numbers @@ -856,7 +856,7 @@ - Twosuperior + B Move the pointer to the lower right corner of the screen @@ -867,7 +867,7 @@ Mod-1 - Twosuperior + B Maximize/minimize the current group @@ -1073,7 +1073,7 @@ - + Control T @@ -1084,7 +1084,7 @@ - Shift + Control Shift T @@ -1350,7 +1350,7 @@ 1 - Move selected group or create a new group + Move selected group or create a new group on the root window @@ -1512,7 +1512,7 @@ G - Stop all pending actions (like open in new workspace/group) + Stop all pending actions (actions like open in new workspace/group) @@ -1542,7 +1542,7 @@ - Twosuperior + B Move the pointer to the lower right corner of the screen @@ -2114,7 +2114,7 @@ Mod-1 - Ampersand + 1 Focus workspace 1 @@ -2125,7 +2125,7 @@ Mod-1 - Eacute + 2 Focus workspace 2 @@ -2136,7 +2136,7 @@ Mod-1 - Quotedbl + 3 Focus workspace 3 @@ -2147,7 +2147,7 @@ Mod-1 - Quoteright + 4 Focus workspace 4 @@ -2158,7 +2158,7 @@ Mod-1 - Parenleft + 5 Focus workspace 5 @@ -2169,7 +2169,7 @@ Mod-1 - Minus + 6 Focus workspace 6 @@ -2180,7 +2180,7 @@ Mod-1 - Egrave + 7 Focus workspace 7 @@ -2191,7 +2191,7 @@ Mod-1 [45 lines skipped] --- /project/clfswm/cvsroot/clfswm/keys.txt 2007/05/15 19:49:51 1.1 +++ /project/clfswm/cvsroot/clfswm/keys.txt 2007/12/22 22:55:26 1.2 @@ -8,11 +8,11 @@ Mod-1 F1 Open the help and info window Mod-1 Control Shift Home Quit clfswm -Control < Switch to editing mode +Mod-1 T Switch to editing mode Mod-1 Tab Rotate up windows in the current group Mod-1 Shift Tab Rotate down windows in the current group - Twosuperior Move the pointer to the lower right corner of the screen -Mod-1 Twosuperior Maximize/minimize the current group +Mod-1 B Move the pointer to the lower right corner of the screen +Mod-1 Control B Maximize/minimize the current group Control Shift Escape Delete the current window in all groups and workspaces Mod-1 Control Shift Escape Destroy the current window in all groups and workspaces Control Escape Remove the current window in the current group @@ -29,27 +29,27 @@ Mod-1 Left Circulate down in workspace Mod-1 Shift Left Circulate down in workspace moving current group in the next workspace Mod-1 Control Shift Left Circulate down in workspace copying current group in the next workspace -Mod-1 Ampersand Focus workspace 1 -Mod-1 Eacute Focus workspace 2 -Mod-1 Quotedbl Focus workspace 3 -Mod-1 Quoteright Focus workspace 4 -Mod-1 Parenleft Focus workspace 5 -Mod-1 Minus Focus workspace 6 -Mod-1 Egrave Focus workspace 7 -Mod-1 Underscore Focus workspace 8 -Mod-1 Ccedilla Focus workspace 9 -Mod-1 Agrave Focus workspace 10 +Mod-1 1 Focus workspace 1 +Mod-1 2 Focus workspace 2 +Mod-1 3 Focus workspace 3 +Mod-1 4 Focus workspace 4 +Mod-1 5 Focus workspace 5 +Mod-1 6 Focus workspace 6 +Mod-1 7 Focus workspace 7 +Mod-1 8 Focus workspace 8 +Mod-1 9 Focus workspace 9 +Mod-1 0 Focus workspace 10 Second mode keys: ---------------- Mod-1 F1 Open the help and info window -Control G Stop all pending actions (like open in new workspace/group) +Control G Stop all pending actions (actions like open in new workspace/group) I Identify a key - : Eval a lisp form from the query input + : Eval a lisp form the query input ! Run a program from the query input - < Leave second mode and maximize current group + T Leave second mode and maximize current group Return Leave second mode and maximize current group Escape Leave second mode Control < Leave second mode @@ -70,22 +70,22 @@ Mod-1 Left Circulate down in workspace Mod-1 Shift Left Circulate down in workspace moving current group in the next workspace Mod-1 Control Shift Left Circulate down in workspace copying current group in the next workspace -Mod-1 Ampersand Focus workspace 1 -Mod-1 Eacute Focus workspace 2 -Mod-1 Quotedbl Focus workspace 3 -Mod-1 Quoteright Focus workspace 4 -Mod-1 Parenleft Focus workspace 5 -Mod-1 Minus Focus workspace 6 -Mod-1 Egrave Focus workspace 7 -Mod-1 Underscore Focus workspace 8 -Mod-1 Ccedilla Focus workspace 9 -Mod-1 Agrave Focus workspace 10 -Mod-1 Control Ampersand Reset workspaces numbers -Mod-1 Control Eacute Sort workspaces by numbers +Mod-1 1 Focus workspace 1 +Mod-1 2 Focus workspace 2 +Mod-1 3 Focus workspace 3 +Mod-1 4 Focus workspace 4 +Mod-1 5 Focus workspace 5 +Mod-1 6 Focus workspace 6 +Mod-1 7 Focus workspace 7 +Mod-1 8 Focus workspace 8 +Mod-1 9 Focus workspace 9 +Mod-1 0 Focus workspace 10 +Mod-1 Control 1 Reset workspaces numbers (1 for current workspace, 2 for the second...) +Mod-1 Control 2 Sort workspaces by numbers Mod-1 Tab Rotate up windows in the current group Mod-1 Shift Tab Rotate down windows in the current group - Twosuperior Move the pointer to the lower right corner of the screen -Mod-1 Twosuperior Maximize/minimize the current group + B Move the pointer to the lower right corner of the screen +Mod-1 B Maximize/minimize the current group X Open the fullscreen pager Mod-1 K Destroy the current window in all groups and workspaces K Remove the current window in the current group @@ -104,8 +104,8 @@ A Force the current window to move in the center of the group (Useful only for transient windows) Mod-1 A Force the current window to move in the group (Useful only for transient windows) Mod-1 D Show debuging info - T Tile the current workspace vertically -Shift T Tile the current workspace horizontally +Control T Tile the current workspace vertically +Control Shift T Tile the current workspace horizontally Y Tile the current workspace with the current window on one side and others on the other Mod-1 Y Reconfigure the workspace tiling for the current session Control Y Create a new group for each window in the current group @@ -132,7 +132,7 @@ Mouse buttons actions in second mode: ------------------------------------ - 1 Move selected group or create a new group + 1 Move selected group or create a new group on the root window Mod-1 1 Resize selected group Control 1 Copy selected group 2 Leave second mode and maximize current group @@ -151,10 +151,10 @@ --------------- Mod-1 F1 Open the help and info window -Control G Stop all pending actions (like open in new workspace/group) +Control G Stop all pending actions (actions like open in new workspace/group) Return Leave the pager mode Escape Leave the pager mode - Twosuperior Move the pointer to the lower right corner of the screen + B Move the pointer to the lower right corner of the screen Home Select the first workspace End Select the last workspace Mod-1 Tab Rotate up windows in the current group @@ -206,18 +206,18 @@ Control Shift Right Copy the current group to the next workspace Control Shift Down Copy the current window to the next line Control Shift Up Copy the current window to the previous line -Mod-1 Ampersand Focus workspace 1 -Mod-1 Eacute Focus workspace 2 -Mod-1 Quotedbl Focus workspace 3 -Mod-1 Quoteright Focus workspace 4 -Mod-1 Parenleft Focus workspace 5 -Mod-1 Minus Focus workspace 6 -Mod-1 Egrave Focus workspace 7 -Mod-1 Underscore Focus workspace 8 -Mod-1 Ccedilla Focus workspace 9 -Mod-1 Agrave Focus workspace 10 -Mod-1 Control Ampersand Reset workspaces numbers -Mod-1 Control Eacute Sort workspaces by numbers +Mod-1 1 Focus workspace 1 +Mod-1 2 Focus workspace 2 +Mod-1 3 Focus workspace 3 +Mod-1 4 Focus workspace 4 +Mod-1 5 Focus workspace 5 +Mod-1 6 Focus workspace 6 +Mod-1 7 Focus workspace 7 +Mod-1 8 Focus workspace 8 +Mod-1 9 Focus workspace 9 +Mod-1 0 Focus workspace 10 +Mod-1 Control 1 Reset workspaces numbers (1 for current workspace, 2 for the second...) +Mod-1 Control 2 Sort workspaces by numbers Mouse buttons actions in pager mode: From pbrochard at common-lisp.net Tue Dec 25 22:52:16 2007 From: pbrochard at common-lisp.net (pbrochard) Date: Tue, 25 Dec 2007 17:52:16 -0500 (EST) Subject: [clfswm-cvs] CVS clfswm Message-ID: <20071225225216.32E3F5C191@common-lisp.net> Update of /project/clfswm/cvsroot/clfswm In directory clnet:/tmp/cvs-serv17241 Modified Files: ChangeLog bindings-second-mode.lisp clfswm-internal.lisp Log Message: hide-group and less flickering when moving/resizing groups --- /project/clfswm/cvsroot/clfswm/ChangeLog 2007/12/22 22:55:26 1.4 +++ /project/clfswm/cvsroot/clfswm/ChangeLog 2007/12/25 22:52:16 1.5 @@ -1,10 +1,22 @@ +2007-12-25 Philippe Brochard + + * bindings-second-mode.lisp (mouse-motion): use hide-group to have + less flickering when moving/resizing groups. + + * clfswm-internal.lisp (hide-group): new function. + (show-all-group): clear-all: new parameter. + 2007-12-22 Philippe Brochard - * clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new macro. - * clfswm: Color change for the pager. Typo or better description + * clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new + macro. + * clfswm*: Color change for the pager. Typo or better description in bindings definitions. Define bindings for a qwerty keyboard by - default. dot-clfswmrc show examples to switch to an azerty keyboard. - * config.lisp: new file - group all globals variables in this file. + default. dot-clfswmrc show examples to switch to an azerty + keyboard. + License change to GPL v3. + * config.lisp: new file - group all globals variables in this + file. 2007-08-26 Philippe Brochard --- /project/clfswm/cvsroot/clfswm/bindings-second-mode.lisp 2007/12/22 22:55:26 1.5 +++ /project/clfswm/cvsroot/clfswm/bindings-second-mode.lisp 2007/12/25 22:52:16 1.6 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Dec 22 23:31:58 2007 +;;; #Date#: Tue Dec 25 23:09:55 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse for second mode @@ -428,16 +428,18 @@ (setf accept-motion t)) (case *motion-action* (:move-group + (hide-group *root* *motion-object*) (setf (group-x *motion-object*) (+ root-x *motion-dx*) (group-y *motion-object*) (+ root-y *motion-dy*)) (adapt-all-window-in-group *motion-object*) - (show-all-group (current-workspace))) + (show-all-group (current-workspace) *root* *root-gc* nil)) (:resize-group + (hide-group *root* *motion-object*) (setf (group-width *motion-object*) (max (+ (group-width *motion-object*) (- root-x *motion-dx*)) 100) (group-height *motion-object*) (max (+ (group-height *motion-object*) (- root-y *motion-dy*)) 100) *motion-dx* root-x *motion-dy* root-y) (adapt-all-window-in-group *motion-object*) - (show-all-group (current-workspace)))))) + (show-all-group (current-workspace) *root* *root-gc* nil))))) --- /project/clfswm/cvsroot/clfswm/clfswm-internal.lisp 2007/12/21 22:01:14 1.4 +++ /project/clfswm/cvsroot/clfswm/clfswm-internal.lisp 2007/12/25 22:52:16 1.5 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 23:00:08 2007 +;;; #Date#: Tue Dec 25 23:17:49 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -180,6 +180,13 @@ +(defun hide-group (root group) + (multiple-value-bind (x y width height) + (get-group-size group) + (clear-area root :x (1- x) :y (1- y) :width (+ width 2) :height (+ height 2)))) + + + (defun show-group (root gc group) (when (and gc group) (handler-case @@ -197,12 +204,16 @@ -(defun show-all-group (workspace &optional (root *root*) (gc *root-gc*)) - "Show all groups in workspace" +(defun show-all-group (workspace &optional (root *root*) (gc *root-gc*) (clear-all :hide-each)) + "Show all groups in workspace +clear-all: nil=do not clear; t=clear all root window; :hide-each=clear each group before redrawing" (handler-case (progn - (clear-area root) + (when clear-all + (clear-area root)) (dolist (group (reverse (workspace-group-list workspace))) + (when (eql clear-all :hide-each) + (hide-group root group)) (show-group root gc group))) ((or match-error window-error drawable-error) (c) (declare (ignore c))))) From pbrochard at common-lisp.net Wed Dec 26 22:49:36 2007 From: pbrochard at common-lisp.net (pbrochard) Date: Wed, 26 Dec 2007 17:49:36 -0500 (EST) Subject: [clfswm-cvs] CVS clfswm Message-ID: <20071226224936.1CCBE111D8@common-lisp.net> Update of /project/clfswm/cvsroot/clfswm In directory clnet:/tmp/cvs-serv16263 Modified Files: clfswm-util.lisp config.lisp Log Message: typo in second mode bindings documentation --- /project/clfswm/cvsroot/clfswm/clfswm-util.lisp 2007/12/22 22:55:26 1.4 +++ /project/clfswm/cvsroot/clfswm/clfswm-util.lisp 2007/12/26 22:49:35 1.5 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Dec 22 23:15:43 2007 +;;; #Date#: Wed Dec 26 23:45:06 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility @@ -596,7 +596,7 @@ (defun eval-from-query-string () - "Eval a lisp form the query input" + "Eval a lisp form from the query input" (let ((form (query-string "Eval:")) (result nil)) (when (and form (not (equal form ""))) --- /project/clfswm/cvsroot/clfswm/config.lisp 2007/12/21 23:45:56 1.5 +++ /project/clfswm/cvsroot/clfswm/config.lisp 2007/12/26 22:49:35 1.6 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Dec 22 00:40:23 2007 +;;; #Date#: Wed Dec 26 20:22:26 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Configuration file From pbrochard at common-lisp.net Sat Dec 29 15:20:11 2007 From: pbrochard at common-lisp.net (pbrochard) Date: Sat, 29 Dec 2007 10:20:11 -0500 (EST) Subject: [clfswm-cvs] CVS clfswm Message-ID: <20071229152011.751EA12063@common-lisp.net> Update of /project/clfswm/cvsroot/clfswm In directory clnet:/tmp/cvs-serv13732 Modified Files: ChangeLog bindings-pager.lisp bindings-second-mode.lisp clfswm-internal.lisp clfswm-pack.lisp clfswm-pager.lisp clfswm-second-mode.lisp clfswm-util.lisp clfswm.asd clfswm.lisp package.lisp tools.lisp Log Message: Adapt window only when necessary - Prevent the copy of the same window in the same workspace --- /project/clfswm/cvsroot/clfswm/ChangeLog 2007/12/25 22:52:16 1.5 +++ /project/clfswm/cvsroot/clfswm/ChangeLog 2007/12/29 15:20:09 1.6 @@ -1,3 +1,38 @@ +2007-12-29 Philippe Brochard + + * clfswm-util.lisp (circulate-group-up-copy-window) + (circulate-group-down-copy-window) + (circulate-workspace-up-copy-group) + (circulate-workspace-down-copy-group): Prevent the copy of the + same window in the same workspace. + + * bindings-second-mode.lisp (release-copy-selected-window) + (release-copy-selected-group): Prevent the copy of the same window + in the same workspace. + + * clfswm-pager.lisp (generic-pager-move-window-on-previous-line) + (generic-pager-move-window-on-next-line): Remove the copy + property. + (generic-pager-move-group-on-next-workspace) + (generic-pager-move-group-on-previous-workspace): Prevent the copy + of the same window in the same workspace. + + * bindings-pager.lisp (mouse-pager-copy-selected-window-release) + (mouse-pager-copy-selected-group-release): Prevent the copy of the + same window in the same workspace. + + * tools.lisp (setf/=): new macro to set a variable only when + necessary. + + * clfswm-internal.lisp (adapt-window-to-group): use set/= to set + x, y... only when necessary. + +2007-12-28 Philippe Brochard + + * clfswm.lisp (handle-configure-notify, *configure-notify-hook*): + new function and hook: force windows to stay in its group (solve a + bug with the Gimp). + 2007-12-25 Philippe Brochard * bindings-second-mode.lisp (mouse-motion): use hide-group to have --- /project/clfswm/cvsroot/clfswm/bindings-pager.lisp 2007/12/22 22:55:26 1.5 +++ /project/clfswm/cvsroot/clfswm/bindings-pager.lisp 2007/12/29 15:20:10 1.6 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Dec 22 23:31:47 2007 +;;; #Date#: Sat Dec 29 16:00:58 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse for pager mode @@ -248,8 +248,6 @@ (define-pager-key ("Left" :shift :control) 'pager-copy-group-on-previous-workspace) (define-pager-key ("Right" :shift :control) 'pager-copy-group-on-next-workspace) -(define-pager-key ("Down" :shift :control) 'pager-copy-window-on-next-line) -(define-pager-key ("Up" :shift :control) 'pager-copy-window-on-previous-line) (defmacro define-pager-focus-workspace-by-number (key number) @@ -312,9 +310,10 @@ (when *pager-motion-object* (destructuring-bind (workspace group) *pager-motion-object* (let ((new-workspace (find-cursor-workspace))) - (remove-group-in-workspace group workspace) - (add-group-in-workspace (copy-group group) workspace) - (add-group-in-workspace group new-workspace))) + (unless (group-windows-already-in-workspace group new-workspace) + (remove-group-in-workspace group workspace) + (add-group-in-workspace (copy-group group) workspace) + (add-group-in-workspace group new-workspace)))) (pager-draw-display)) (setf *pager-motion-object* nil)) @@ -354,9 +353,10 @@ (when *pager-motion-object* (destructuring-bind (group window) *pager-motion-object* (with-group-cursor (new-workspace new-group) - (add-window-in-group window new-group) - (add-null-window-in-empty-group group) - (remove-null-window-in-empty-group new-group))) + (unless (window-already-in-workspace window new-workspace) + (add-window-in-group window new-group) + (add-null-window-in-empty-group group) + (remove-null-window-in-empty-group new-group)))) (pager-draw-display)) (setf *pager-motion-object* nil)) @@ -405,4 +405,4 @@ (define-pager-mouse-action (4) 'mouse-pager-rotate-window-up nil) (define-pager-mouse-action (5) 'mouse-pager-rotate-window-down nil) -(define-pager-mouse-action ('Motion) 'pager-mouse-motion nil) \ No newline at end of file +(define-pager-mouse-action ('Motion) 'pager-mouse-motion nil) --- /project/clfswm/cvsroot/clfswm/bindings-second-mode.lisp 2007/12/25 22:52:16 1.6 +++ /project/clfswm/cvsroot/clfswm/bindings-second-mode.lisp 2007/12/29 15:20:10 1.7 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Dec 25 23:09:55 2007 +;;; #Date#: Sat Dec 29 15:38:21 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse for second mode @@ -431,14 +431,14 @@ (hide-group *root* *motion-object*) (setf (group-x *motion-object*) (+ root-x *motion-dx*) (group-y *motion-object*) (+ root-y *motion-dy*)) - (adapt-all-window-in-group *motion-object*) + ;;(adapt-all-window-in-group *motion-object*) PHIL (show-all-group (current-workspace) *root* *root-gc* nil)) (:resize-group (hide-group *root* *motion-object*) (setf (group-width *motion-object*) (max (+ (group-width *motion-object*) (- root-x *motion-dx*)) 100) (group-height *motion-object*) (max (+ (group-height *motion-object*) (- root-y *motion-dy*)) 100) *motion-dx* root-x *motion-dy* root-y) - (adapt-all-window-in-group *motion-object*) + ;;(adapt-all-window-in-group *motion-object*) PHIL (show-all-group (current-workspace) *root* *root-gc* nil))))) @@ -464,14 +464,15 @@ (defun copy-selected-group (root-x root-y) "Copy selected group" + (xgrab-pointer *root* 50 51) (select-group-under-mouse root-x root-y) (setf *motion-object* (find-group-under-mouse root-x root-y)) (when *motion-object* - (setf *motion-action* :move-group + (setf *motion-action* :copy-group *motion-object* (copy-group *motion-object*) *motion-dx* (- (group-x *motion-object*) root-x) - *motion-dy* (- (group-y *motion-object*) root-y)) - (add-group-in-workspace *motion-object* (current-workspace)))) + *motion-dy* (- (group-y *motion-object*) root-y)))) +;; (add-group-in-workspace *motion-object* (current-workspace)))) @@ -490,6 +491,21 @@ (select-group-under-mouse root-x root-y)) +(defun release-copy-selected-group (root-x root-y) + "Release button" + (xgrab-pointer *root* 66 67) + (when *motion-object* + (unless (group-windows-already-in-workspace *motion-object* (current-workspace)) + (add-group-in-workspace *motion-object* (current-workspace)) + (move-group-to *motion-object* (+ root-x *motion-dx*) (+ root-y *motion-dy*)))) + (setf *motion-action* nil + *motion-object* nil + *motion-dx* nil + *motion-dy* nil) + (select-group-under-mouse root-x root-y) + (show-all-windows-in-workspace (current-workspace))) + + (defun resize-selected-group (root-x root-y) "Resize selected group" @@ -545,7 +561,8 @@ (setf *motion-action* nil) (select-group-under-mouse root-x root-y) (when *motion-object* - (add-window-in-group *motion-object* (current-group))) + (unless (window-already-in-workspace *motion-object* (current-workspace)) + (add-window-in-group *motion-object* (current-group)))) (select-group-under-mouse root-x root-y) (show-all-windows-in-workspace (current-workspace))) @@ -556,7 +573,7 @@ (define-mouse-action (1) 'move-selected-group 'release-move-selected-group) (define-mouse-action (1 :mod-1) 'resize-selected-group 'release-resize-selected-group) -(define-mouse-action (1 :control) 'copy-selected-group 'release-move-selected-group) +(define-mouse-action (1 :control) 'copy-selected-group 'release-copy-selected-group) (define-mouse-action (2) nil 'mouse-leave-second-mode-maximize) (define-mouse-action (2 :control) nil 'mouse-leave-second-mode) --- /project/clfswm/cvsroot/clfswm/clfswm-internal.lisp 2007/12/25 22:52:16 1.5 +++ /project/clfswm/cvsroot/clfswm/clfswm-internal.lisp 2007/12/29 15:20:10 1.6 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Dec 25 23:17:49 2007 +;;; #Date#: Sat Dec 29 15:36:43 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -63,8 +63,7 @@ do (setf *workspace-list* (rotate-list *workspace-list*)))))) - - + (defun adapt-window-to-group (window group) (handler-case (when (and window group) @@ -74,10 +73,10 @@ (case (window-type window) (:normal ;;(dbg "adapt 1" (wm-name window) (drawable-height window)) ;;; PHIL - (setf (drawable-x window) x - (drawable-y window) y - (drawable-width window) width - (drawable-height window) height) + (setf/= (drawable-x window) x) + (setf/= (drawable-y window) y) + (setf/= (drawable-width window) width) + (setf/= (drawable-height window) height) ;;(dbg "adapt 2" (drawable-height window)) ) (t (let* ((hints (xlib:wm-normal-hints window)) @@ -87,11 +86,11 @@ most-positive-fixnum))) ;;; Adapt only windows with width and heigth outside group (when (> hints-width width) - (setf (drawable-width window) width - (drawable-x window) x)) + (setf/= (drawable-width window) width) + (setf/= (drawable-x window) x)) (when (> hints-height height) - (setf (drawable-height window) height - (drawable-y window) y))))))) + (setf/= (drawable-height window) height) + (setf/= (drawable-y window) y))))))) ((or match-error window-error drawable-error) (c) (declare (ignore c))))) ;;(dbg "Adapt error" c)))) @@ -104,6 +103,11 @@ (dolist (window (group-window-list group)) (adapt-window-to-group window group)))) +(defun adapt-all-window-in-workspace (workspace) + "Adapt all window to groups in workspace" + (dolist (group (workspace-group-list workspace)) + (adapt-all-window-in-group group))) + (defun add-window-in-group (window group) (when (and window group) @@ -230,6 +234,7 @@ (dolist (window (group-window-list group)) (hide-window window)))) + (defun show-all-windows-in-workspace (workspace) "Show all windows in a workspace" (dolist (group (workspace-group-list workspace)) @@ -261,6 +266,17 @@ acc)) +(defun group-windows-already-in-workspace (group workspace) + "Check if some windows in group group are already in workspace" + (some #'(lambda (x) + (member x (group-window-list group))) + (get-all-windows-in-workspace workspace))) + +(defun window-already-in-workspace (window workspace) + "Check if window is already in workspace" + (member window (get-all-windows-in-workspace workspace))) + + (defun create-workspace-on-request () (when *open-next-window-in-new-workspace* --- /project/clfswm/cvsroot/clfswm/clfswm-pack.lisp 2007/12/21 22:01:14 1.3 +++ /project/clfswm/cvsroot/clfswm/clfswm-pack.lisp 2007/12/29 15:20:10 1.4 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 23:00:13 2007 +;;; #Date#: Fri Dec 28 22:13:42 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Tile, pack and fill functions --- /project/clfswm/cvsroot/clfswm/clfswm-pager.lisp 2007/12/22 22:55:26 1.4 +++ /project/clfswm/cvsroot/clfswm/clfswm-pager.lisp 2007/12/29 15:20:10 1.5 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Dec 22 23:49:48 2007 +;;; #Date#: Sat Dec 29 15:55:52 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -447,9 +447,9 @@ (unwind-protect (catch 'exit-pager (loop - (raise-window *pager-window*) - (display-finish-output *display*) - (process-event *display* :handler #'pager-handle-event))) + (raise-window *pager-window*) + (display-finish-output *display*) + (process-event *display* :handler #'pager-handle-event))) (remove-null-window-in-all-empty-group) (xgrab-pointer *root* 66 67) (free-gcontext gc) @@ -537,7 +537,8 @@ (setf (pcursor-workspace *pcursor*) (mod (1+ (pcursor-workspace *pcursor*)) (length *workspace-list*))) - (add-group-in-workspace group (find-cursor-workspace))) + (unless (group-windows-already-in-workspace group (find-cursor-workspace)) + (add-group-in-workspace group (find-cursor-workspace)))) (pager-draw-display)) (defun pager-move-group-on-next-workspace () @@ -559,7 +560,8 @@ (setf (pcursor-workspace *pcursor*) (mod (1- (pcursor-workspace *pcursor*)) (length *workspace-list*))) - (add-group-in-workspace group (find-cursor-workspace))) + (unless (group-windows-already-in-workspace group (find-cursor-workspace)) + (add-group-in-workspace group (find-cursor-workspace)))) (pager-draw-display)) (defun pager-move-group-on-previous-workspace () @@ -572,7 +574,7 @@ -(defun generic-pager-move-window-on-next-line (&optional copy) +(defun generic-pager-move-window-on-next-line () "Move the current window to the next line" (multiple-value-bind (ngroup nwindow group) (find-group-window-from-cursor (find-cursor-workspace)) @@ -586,8 +588,7 @@ (nth new-nwindow (group-window-list new-group))) (let ((win (nth nwindow (group-window-list group)))) (when (window-p win) - (unless copy - (remove-window-in-group win group)) + (remove-window-in-group win group) (when (and (member "--" (group-window-list new-group) :test #'equal) (/= nwindow 0)) @@ -602,14 +603,10 @@ "Move the current window to the next line" (generic-pager-move-window-on-next-line)) -(defun pager-copy-window-on-next-line () - "Copy the current window to the next line" - (generic-pager-move-window-on-next-line t)) - -(defun generic-pager-move-window-on-previous-line (&optional copy) +(defun generic-pager-move-window-on-previous-line () "Move the current window to the previous line" (when (plusp (pcursor-line *pcursor*)) (multiple-value-bind (ngroup nwindow group) @@ -624,8 +621,7 @@ (nth new-nwindow (group-window-list new-group))) (let ((win (nth nwindow (group-window-list group)))) (when (window-p win) - (unless copy - (remove-window-in-group win group)) + (remove-window-in-group win group) (when (and (null (group-window-list group)) (/= new-nwindow 0)) (incf (pcursor-line *pcursor*))) @@ -640,10 +636,6 @@ "Move the current window to the previous line" (generic-pager-move-window-on-previous-line)) -(defun pager-copy-window-on-previous-line () - "Copy the current window to the previous line" - (generic-pager-move-window-on-previous-line t)) - ;;;,----- ;;;| Delete/Add functions --- /project/clfswm/cvsroot/clfswm/clfswm-second-mode.lisp 2007/12/21 22:38:14 1.5 +++ /project/clfswm/cvsroot/clfswm/clfswm-second-mode.lisp 2007/12/29 15:20:10 1.6 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 23:04:46 2007 +;;; #Date#: Fri Dec 28 22:38:00 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Second mode functions @@ -84,6 +84,11 @@ (draw-second-mode-window)) +(defun sm-handle-configure-notify (&rest event-slots) + (apply #'handle-configure-notify event-slots) + (draw-second-mode-window)) + + (defun sm-handle-destroy-notify (&rest event-slots) (apply #'handle-destroy-notify event-slots) (draw-second-mode-window)) @@ -113,6 +118,7 @@ *sm-motion-notify-hook* #'sm-handle-motion-notify *sm-key-press-hook* #'sm-handle-key-press *sm-configure-request-hook* #'sm-handle-configure-request + *sm-configure-notify-hook* #'sm-handle-configure-notify *sm-destroy-notify-hook* #'sm-handle-destroy-notify *sm-enter-notify-hook* #'sm-handle-enter-notify *sm-exposure-hook* #'sm-handle-exposure @@ -125,7 +131,7 @@ (defun sm-handle-event (&rest event-slots &key display event-key &allow-other-keys) (declare (ignore display)) - ;;(dbg event-key) + ;;(dbg event-key) (handler-case (case event-key (:button-press (call-hook *sm-button-press-hook* event-slots)) @@ -133,6 +139,7 @@ (:motion-notify (call-hook *sm-motion-notify-hook* event-slots)) (:key-press (call-hook *sm-key-press-hook* event-slots)) (:configure-request (call-hook *sm-configure-request-hook* event-slots)) + (:configure-notify (call-hook *sm-configure-notify-hook* event-slots)) (:map-request (call-hook *sm-map-request-hook* event-slots)) (:unmap-notify (call-hook *sm-unmap-notify-hook* event-slots)) (:destroy-notify (call-hook *sm-destroy-notify-hook* event-slots)) @@ -176,10 +183,10 @@ (unwind-protect (catch 'exit-second-loop (loop - (raise-window *sm-window*) - (display-finish-output *display*) - (process-event *display* :handler #'sm-handle-event) - (display-finish-output *display*))) + (raise-window *sm-window*) + (display-finish-output *display*) + (process-event *display* :handler #'sm-handle-event) + (display-finish-output *display*))) (free-gcontext *sm-gc*) (close-font *sm-font*) (destroy-window *sm-window*) --- /project/clfswm/cvsroot/clfswm/clfswm-util.lisp 2007/12/26 22:49:35 1.5 +++ /project/clfswm/cvsroot/clfswm/clfswm-util.lisp 2007/12/29 15:20:10 1.6 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Wed Dec 26 23:45:06 2007 +;;; #Date#: Sat Dec 29 15:41:24 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility @@ -143,7 +143,8 @@ (let ((window (current-window))) (setf (workspace-group-list (current-workspace)) (rotate-list (workspace-group-list (current-workspace)))) - (add-window-in-group window (current-group))) + (unless (window-already-in-workspace window (current-workspace)) + (add-window-in-group window (current-group)))) (adapt-window-to-group (current-window) (current-group)) (focus-window (current-window)) (show-all-group (current-workspace))) @@ -184,7 +185,8 @@ (let ((window (current-window))) (setf (workspace-group-list (current-workspace)) (anti-rotate-list (workspace-group-list (current-workspace)))) - (add-window-in-group window (current-group))) + (unless (window-already-in-workspace window (current-workspace)) + (add-window-in-group window (current-group)))) (adapt-window-to-group (current-window) (current-group)) (focus-window (current-window)) (show-all-group (current-workspace))) @@ -227,7 +229,8 @@ (hide-all-windows-in-workspace (current-workspace)) (let ((group (current-group))) (setf *workspace-list* (rotate-list *workspace-list*)) - (add-group-in-workspace (copy-group group) (current-workspace))) + (unless (group-windows-already-in-workspace group (current-workspace)) + (add-group-in-workspace (copy-group group) (current-workspace)))) (show-all-windows-in-workspace (current-workspace))) @@ -255,7 +258,8 @@ (hide-all-windows-in-workspace (current-workspace)) (let ((group (current-group))) (setf *workspace-list* (anti-rotate-list *workspace-list*)) - (add-group-in-workspace (copy-group group) (current-workspace))) + (unless (group-windows-already-in-workspace group (current-workspace)) + (add-group-in-workspace (copy-group group) (current-workspace)))) (show-all-windows-in-workspace (current-workspace))) --- /project/clfswm/cvsroot/clfswm/clfswm.asd 2007/12/22 22:55:26 1.4 +++ /project/clfswm/cvsroot/clfswm/clfswm.asd 2007/12/29 15:20:10 1.5 @@ -2,7 +2,7 @@ ;;;; Author: Philippe Brochard ;;;; ASDF System Definition ;;; -;;; #date#: Sat Dec 22 22:26:18 2007 +;;; #date#: Sat Dec 29 15:08:01 2007 (in-package #:asdf) @@ -27,7 +27,7 @@ (:file "clfswm-keys" :depends-on ("package" "config" "xlib-util" "keysyms")) (:file "clfswm-internal" - :depends-on ("xlib-util" "clfswm-keys" "netwm-util")) + :depends-on ("xlib-util" "clfswm-keys" "netwm-util" "tools")) (:file "clfswm-second-mode" :depends-on ("package" "clfswm-internal")) (:file "clfswm" --- /project/clfswm/cvsroot/clfswm/clfswm.lisp 2007/12/21 22:38:14 1.4 +++ /project/clfswm/cvsroot/clfswm/clfswm.lisp 2007/12/29 15:20:10 1.5 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 23:04:39 2007 +;;; #Date#: Sat Dec 29 15:33:46 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -75,6 +75,11 @@ +(defun handle-configure-notify (&rest event-slots) + (declare (ignore event-slots)) + (adapt-all-window-in-workspace (current-workspace))) + + (defun handle-map-request (&rest event-slots &key window send-event-p &allow-other-keys) (declare (ignore event-slots)) (unless send-event-p @@ -121,6 +126,7 @@ ;;; CONFIG: Main mode hooks (setf *key-press-hook* #'handle-key-press *configure-request-hook* #'handle-configure-request + *configure-notify-hook* #'handle-configure-notify *destroy-notify-hook* #'handle-destroy-notify *enter-notify-hook* #'handle-enter-notify *exposure-hook* #'handle-exposure @@ -139,6 +145,7 @@ (:button-press (call-hook *button-press-hook* event-slots)) (:key-press (call-hook *key-press-hook* event-slots)) (:configure-request (call-hook *configure-request-hook* event-slots)) + (:configure-notify (call-hook *configure-notify-hook* event-slots)) (:map-request (call-hook *map-request-hook* event-slots)) (:unmap-notify (call-hook *unmap-notify-hook* event-slots)) (:destroy-notify (call-hook *destroy-notify-hook* event-slots)) --- /project/clfswm/cvsroot/clfswm/package.lisp 2007/12/21 22:01:14 1.7 +++ /project/clfswm/cvsroot/clfswm/package.lisp 2007/12/29 15:20:10 1.8 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 23:00:40 2007 +;;; #Date#: Fri Dec 28 22:32:54 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Package definition @@ -91,6 +91,7 @@ (defparameter *button-press-hook* nil) (defparameter *key-press-hook* nil) (defparameter *configure-request-hook* nil) +(defparameter *configure-notify-hook* nil) (defparameter *create-notify-hook* nil) (defparameter *destroy-notify-hook* nil) (defparameter *enter-notify-hook* nil) @@ -107,6 +108,7 @@ (defparameter *sm-motion-notify-hook* nil) (defparameter *sm-key-press-hook* nil) (defparameter *sm-configure-request-hook* nil) +(defparameter *sm-configure-notify-hook* nil) (defparameter *sm-map-request-hook* nil) (defparameter *sm-unmap-notify-hook* nil) (defparameter *sm-destroy-notify-hook* nil) --- /project/clfswm/cvsroot/clfswm/tools.lisp 2007/12/21 22:01:14 1.3 +++ /project/clfswm/cvsroot/clfswm/tools.lisp 2007/12/29 15:20:10 1.4 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 23:00:43 2007 +;;; #Date#: Sat Dec 29 15:08:48 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: General tools @@ -31,6 +31,7 @@ (defpackage tools (:use common-lisp) (:export :dbg + :setf/= :create-symbol :split-string :expand-newline @@ -111,6 +112,15 @@ ;;; Tools + +(defmacro setf/= (var val) + "Set var to val only when var not equal to val" + (let ((gval (gensym))) + `(let ((,gval ,val)) + (when (/= ,var ,gval) + (setf ,var ,gval))))) + + (defun create-symbol (&rest names) "Return a new symbol from names" (intern (string-upcase (apply #'concatenate 'string names)))) From pbrochard at common-lisp.net Sun Dec 30 12:03:37 2007 From: pbrochard at common-lisp.net (pbrochard) Date: Sun, 30 Dec 2007 07:03:37 -0500 (EST) Subject: [clfswm-cvs] CVS clfswm Message-ID: <20071230120337.B9A6A6A035@common-lisp.net> Update of /project/clfswm/cvsroot/clfswm In directory clnet:/tmp/cvs-serv17417 Modified Files: ChangeLog clfswm-internal.lisp clfswm-util.lisp clfswm.lisp Log Message: Adapt window only when necessary+speed up --- /project/clfswm/cvsroot/clfswm/ChangeLog 2007/12/29 15:20:09 1.6 +++ /project/clfswm/cvsroot/clfswm/ChangeLog 2007/12/30 12:03:36 1.7 @@ -1,3 +1,17 @@ +2007-12-30 Philippe Brochard + + * clfswm-internal.lisp (process-new-window): Do not crop transient + window to group size. + (adapt-window-to-group): Do not crop transient window to group + size. + + * clfswm.lisp (handle-configure-request): Adapt just the window to + its group and don't take care of the configure request. Remove the + bug with the Gimp outside the group and speed up the window + manipulation. + (handle-exposure): Remove show-all-group on exposure event + -> Speed up. + 2007-12-29 Philippe Brochard * clfswm-util.lisp (circulate-group-up-copy-window) --- /project/clfswm/cvsroot/clfswm/clfswm-internal.lisp 2007/12/29 15:20:10 1.6 +++ /project/clfswm/cvsroot/clfswm/clfswm-internal.lisp 2007/12/30 12:03:36 1.7 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Dec 29 15:36:43 2007 +;;; #Date#: Sun Dec 30 12:40:58 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -72,25 +72,10 @@ (get-group-size group) (case (window-type window) (:normal - ;;(dbg "adapt 1" (wm-name window) (drawable-height window)) ;;; PHIL (setf/= (drawable-x window) x) (setf/= (drawable-y window) y) (setf/= (drawable-width window) width) - (setf/= (drawable-height window) height) - ;;(dbg "adapt 2" (drawable-height window)) - ) - (t (let* ((hints (xlib:wm-normal-hints window)) - (hints-width (or (and hints (xlib:wm-size-hints-max-width hints)) - most-positive-fixnum)) - (hints-height (or (and hints (xlib:wm-size-hints-max-height hints)) - most-positive-fixnum))) - ;;; Adapt only windows with width and heigth outside group - (when (> hints-width width) - (setf/= (drawable-width window) width) - (setf/= (drawable-x window) x)) - (when (> hints-height height) - (setf/= (drawable-height window) height) - (setf/= (drawable-y window) y))))))) + (setf/= (drawable-height window) height))))) ((or match-error window-error drawable-error) (c) (declare (ignore c))))) ;;(dbg "Adapt error" c)))) @@ -320,19 +305,19 @@ (:maxsize 1) (:transient 1) (t 0))) - (if (equal (window-type window) :normal) - (adapt-window-to-group window (current-group)) - (let* ((hints (xlib:wm-normal-hints window)) - (hints-width (or (and hints (xlib:wm-size-hints-max-width hints)) - most-positive-fixnum)) - (hints-height (or (and hints (xlib:wm-size-hints-max-height hints)) - most-positive-fixnum))) - (multiple-value-bind (x y width height) - (get-group-size (current-group)) - (setf (drawable-width window) (min hints-width width) - (drawable-height window) (min hints-height height)) - (setf (drawable-x window) (truncate (+ x (/ (- width (drawable-width window)) 2))) - (drawable-y window) (truncate (+ y (/ (- height (drawable-height window)) 2))))))) + (case (window-type window) + (:normal (adapt-window-to-group window (current-group))) + (t (let* ((hints (xlib:wm-normal-hints window)) + (hints-width (or (and hints (xlib:wm-size-hints-max-width hints)) + most-positive-fixnum)) + (hints-height (or (and hints (xlib:wm-size-hints-max-height hints)) + most-positive-fixnum))) + (multiple-value-bind (x y width height) + (get-group-size (current-group)) + (setf (drawable-width window) hints-width + (drawable-height window) hints-height) + (setf (drawable-x window) (truncate (+ x (/ (- width (drawable-width window)) 2))) + (drawable-y window) (truncate (+ y (/ (- height (drawable-height window)) 2)))))))) (add-window-in-group window (current-group)) (netwm-add-in-client-list window)) --- /project/clfswm/cvsroot/clfswm/clfswm-util.lisp 2007/12/29 15:20:10 1.6 +++ /project/clfswm/cvsroot/clfswm/clfswm-util.lisp 2007/12/30 12:03:36 1.7 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Dec 29 15:41:24 2007 +;;; #Date#: Sun Dec 30 12:59:59 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility @@ -82,10 +82,11 @@ (defun banish-pointer () - "Move the pointer to the lower right corner of the screen" + "Move the pointer to the lower right corner of the screen and redraw all groups" (warp-pointer *root* (1- (screen-width *screen*)) - (1- (screen-height *screen*)))) + (1- (screen-height *screen*))) + (show-all-group (current-workspace))) (defun renumber-workspaces () --- /project/clfswm/cvsroot/clfswm/clfswm.lisp 2007/12/29 15:20:10 1.5 +++ /project/clfswm/cvsroot/clfswm/clfswm.lisp 2007/12/30 12:03:36 1.6 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Dec 29 15:33:46 2007 +;;; #Date#: Sun Dec 30 12:45:01 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -38,34 +38,68 @@ +;;(defun handle-configure-request (&rest event-slots &key stack-mode #|parent|# window #|above-sibling|# +;; x y width height border-width value-mask &allow-other-keys) +;; (declare (ignore event-slots)) +;; (labels ((has-x (mask) (= 1 (logand mask 1))) +;; (has-y (mask) (= 2 (logand mask 2))) +;; (has-w (mask) (= 4 (logand mask 4))) +;; (has-h (mask) (= 8 (logand mask 8))) +;; (has-bw (mask) (= 16 (logand mask 16))) +;; (has-stackmode (mask) (= 64 (logand mask 64)))) +;; (handler-case +;; (progn +;; (with-state (window) +;; (when (has-x value-mask) +;; (setf (drawable-x window) x)) +;; (when (has-y value-mask) +;; (setf (drawable-y window) y)) +;; (when (has-h value-mask) +;; (setf (drawable-height window) height)) +;; (when (has-w value-mask) +;; (setf (drawable-width window) width)) +;; (when (has-bw value-mask) +;; (setf (drawable-border-width window) border-width))) +;; ;; The ICCCM says with have to send a fake configure-notify if +;; ;; the window is moved but not resized. +;; (when (member window (group-window-list (current-group))) +;; (unless (or (logbitp 2 value-mask) (logbitp 3 value-mask)) +;; (send-configuration-notify window)) +;; (adapt-window-to-group window (current-group)) +;; (when (has-stackmode value-mask) +;; (case stack-mode +;; (:above (raise-window window)))))) +;; ((or match-error window-error drawable-error) (c) +;; (declare (ignore c)))))) +;; ;;(dbg "Configure Error" c))))) +;; +;; +;; +;;(defun handle-configure-notify (&rest event-slots) +;; (declare (ignore event-slots)) +;; (adapt-all-window-in-workspace (current-workspace))) + (defun handle-configure-request (&rest event-slots &key stack-mode #|parent|# window #|above-sibling|# x y width height border-width value-mask &allow-other-keys) (declare (ignore event-slots)) (labels ((has-x (mask) (= 1 (logand mask 1))) - (has-y (mask) (= 2 (logand mask 2))) - (has-w (mask) (= 4 (logand mask 4))) - (has-h (mask) (= 8 (logand mask 8))) - (has-bw (mask) (= 16 (logand mask 16))) + (has-y (mask) (= 2 (logand mask 2))) + (has-w (mask) (= 4 (logand mask 4))) + (has-h (mask) (= 8 (logand mask 8))) + (has-bw (mask) (= 16 (logand mask 16))) (has-stackmode (mask) (= 64 (logand mask 64)))) (handler-case (progn (with-state (window) - (when (has-x value-mask) - (setf (drawable-x window) x)) - (when (has-y value-mask) - (setf (drawable-y window) y)) - (when (has-h value-mask) - (setf (drawable-height window) height)) - (when (has-w value-mask) - (setf (drawable-width window) width)) (when (has-bw value-mask) - (setf (drawable-border-width window) border-width))) - ;; The ICCCM says with have to send a fake configure-notify if - ;; the window is moved but not resized. - (when (member window (group-window-list (current-group))) - (unless (or (logbitp 2 value-mask) (logbitp 3 value-mask)) - (send-configuration-notify window)) - (adapt-window-to-group window (current-group)) + (setf (drawable-border-width window) border-width)) + (when (member window (group-window-list (current-group))) + (case (window-type window) + (:normal (adapt-window-to-group window (current-group))) + (t (when (has-x value-mask) (setf (drawable-x window) x)) + (when (has-y value-mask) (setf (drawable-y window) y)) + (when (has-h value-mask) (setf (drawable-height window) height)) + (when (has-w value-mask) (setf (drawable-width window) width))))) (when (has-stackmode value-mask) (case stack-mode (:above (raise-window window)))))) @@ -76,8 +110,9 @@ (defun handle-configure-notify (&rest event-slots) - (declare (ignore event-slots)) - (adapt-all-window-in-workspace (current-workspace))) + (declare (ignore event-slots))) +;; (adapt-all-window-in-workspace (current-workspace))) + (defun handle-map-request (&rest event-slots &key window send-event-p &allow-other-keys) @@ -118,8 +153,8 @@ (focus-group-under-mouse root-x root-y))) (defun handle-exposure (&rest event-slots) - (declare (ignore event-slots)) - (show-all-group (current-workspace))) + (declare (ignore event-slots))) +;; (show-all-group (current-workspace))) @@ -139,7 +174,7 @@ (defun handle-event (&rest event-slots &key display event-key &allow-other-keys) (declare (ignore display)) - ;;(dbg event-slots) +;; (dbg event-key) (handler-case (case event-key (:button-press (call-hook *button-press-hook* event-slots)) From pbrochard at common-lisp.net Mon Dec 31 16:32:41 2007 From: pbrochard at common-lisp.net (pbrochard) Date: Mon, 31 Dec 2007 11:32:41 -0500 (EST) Subject: [clfswm-cvs] CVS clfswm Message-ID: <20071231163241.483BC2F04A@common-lisp.net> Update of /project/clfswm/cvsroot/clfswm In directory clnet:/tmp/cvs-serv2747 Modified Files: ChangeLog bindings-second-mode.lisp clfswm-internal.lisp clfswm-second-mode.lisp clfswm.lisp Log Message: Send a configure notify event- Do not crop transient windows --- /project/clfswm/cvsroot/clfswm/ChangeLog 2007/12/30 12:03:36 1.7 +++ /project/clfswm/cvsroot/clfswm/ChangeLog 2007/12/31 16:32:41 1.8 @@ -1,3 +1,12 @@ +2007-12-31 Philippe Brochard + + * clfswm.lisp (handle-configure-request): Send an Configuration + Notify event. This solve a bug with xterm and rxvt who takes some + times to be mapped. Now there is no delay. + + * bindings-second-mode.lisp (define-shell): Run programs after + living the second mode. + 2007-12-30 Philippe Brochard * clfswm-internal.lisp (process-new-window): Do not crop transient --- /project/clfswm/cvsroot/clfswm/bindings-second-mode.lisp 2007/12/29 15:20:10 1.7 +++ /project/clfswm/cvsroot/clfswm/bindings-second-mode.lisp 2007/12/31 16:32:41 1.8 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Dec 29 15:38:21 2007 +;;; #Date#: Mon Dec 31 00:14:27 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse for second mode @@ -61,7 +61,7 @@ "Run a program from the query input" (let ((program (query-string "Run:"))) (when (and program (not (equal program ""))) - (do-shell program) + (setf *second-mode-program* program) (leave-second-mode)))) (define-second-key (#\!) 'run-program-from-query-string) @@ -186,7 +186,7 @@ `(define-second-key ,key (defun ,name () ,docstring - (do-shell ,cmd) + (setf *second-mode-program* ,cmd) (leave-second-mode)))) (define-shell (#\c) b-start-xterm "start an xterm" "exec xterm") @@ -431,14 +431,14 @@ (hide-group *root* *motion-object*) (setf (group-x *motion-object*) (+ root-x *motion-dx*) (group-y *motion-object*) (+ root-y *motion-dy*)) - ;;(adapt-all-window-in-group *motion-object*) PHIL + (adapt-all-window-in-group *motion-object*) (show-all-group (current-workspace) *root* *root-gc* nil)) (:resize-group (hide-group *root* *motion-object*) (setf (group-width *motion-object*) (max (+ (group-width *motion-object*) (- root-x *motion-dx*)) 100) (group-height *motion-object*) (max (+ (group-height *motion-object*) (- root-y *motion-dy*)) 100) *motion-dx* root-x *motion-dy* root-y) - ;;(adapt-all-window-in-group *motion-object*) PHIL + (adapt-all-window-in-group *motion-object*) (show-all-group (current-workspace) *root* *root-gc* nil))))) --- /project/clfswm/cvsroot/clfswm/clfswm-internal.lisp 2007/12/30 12:03:36 1.7 +++ /project/clfswm/cvsroot/clfswm/clfswm-internal.lisp 2007/12/31 16:32:41 1.8 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sun Dec 30 12:40:58 2007 +;;; #Date#: Sun Dec 30 22:50:43 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -307,15 +307,13 @@ (t 0))) (case (window-type window) (:normal (adapt-window-to-group window (current-group))) - (t (let* ((hints (xlib:wm-normal-hints window)) - (hints-width (or (and hints (xlib:wm-size-hints-max-width hints)) - most-positive-fixnum)) - (hints-height (or (and hints (xlib:wm-size-hints-max-height hints)) - most-positive-fixnum))) - (multiple-value-bind (x y width height) - (get-group-size (current-group)) - (setf (drawable-width window) hints-width - (drawable-height window) hints-height) + (t (multiple-value-bind (x y width height) + (get-group-size (current-group)) + (let* ((hints (xlib:wm-normal-hints window)) + (min-width (or (and hints (xlib:wm-size-hints-max-width hints)) 0)) + (min-height (or (and hints (xlib:wm-size-hints-max-height hints)) 0))) + (setf (drawable-width window) (max min-width (drawable-width window)) + (drawable-height window) (max min-height (drawable-height window))) (setf (drawable-x window) (truncate (+ x (/ (- width (drawable-width window)) 2))) (drawable-y window) (truncate (+ y (/ (- height (drawable-height window)) 2)))))))) (add-window-in-group window (current-group)) --- /project/clfswm/cvsroot/clfswm/clfswm-second-mode.lisp 2007/12/29 15:20:10 1.6 +++ /project/clfswm/cvsroot/clfswm/clfswm-second-mode.lisp 2007/12/31 16:32:41 1.7 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 28 22:38:00 2007 +;;; #Date#: Mon Dec 31 00:03:50 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Second mode functions @@ -31,6 +31,9 @@ (defparameter *sm-font* nil) (defparameter *sm-gc* nil) +(defparameter *second-mode-program* nil + "Execute the program string if not nil") + (defun draw-second-mode-window () (clear-area *sm-window*) (let* ((text (format nil "Workspace ~A ~:(~A~) ~A ~A" @@ -196,7 +199,9 @@ (adapt-window-to-group (current-window) (current-group)) (focus-window (current-window)) (show-all-group (current-workspace)) - (wait-no-key-or-button-press)) + (wait-no-key-or-button-press) + (when *second-mode-program* + (do-shell *second-mode-program*))) --- /project/clfswm/cvsroot/clfswm/clfswm.lisp 2007/12/30 12:03:36 1.6 +++ /project/clfswm/cvsroot/clfswm/clfswm.lisp 2007/12/31 16:32:41 1.7 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sun Dec 30 12:45:01 2007 +;;; #Date#: Mon Dec 31 00:10:03 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -100,6 +100,7 @@ (when (has-y value-mask) (setf (drawable-y window) y)) (when (has-h value-mask) (setf (drawable-height window) height)) (when (has-w value-mask) (setf (drawable-width window) width))))) + (send-configuration-notify window) (when (has-stackmode value-mask) (case stack-mode (:above (raise-window window)))))) @@ -157,6 +158,10 @@ ;; (show-all-group (current-workspace))) +(defun handle-create-notify (&rest event-slots) + (declare (ignore event-slots))) + + ;;; CONFIG: Main mode hooks (setf *key-press-hook* #'handle-key-press @@ -166,7 +171,8 @@ *enter-notify-hook* #'handle-enter-notify *exposure-hook* #'handle-exposure *map-request-hook* #'handle-map-request - *unmap-notify-hook* #'handle-unmap-notify) + *unmap-notify-hook* #'handle-unmap-notify + *create-notify-hook* #'handle-create-notify) @@ -174,7 +180,7 @@ (defun handle-event (&rest event-slots &key display event-key &allow-other-keys) (declare (ignore display)) -;; (dbg event-key) + ;;(dbg event-key) (handler-case (case event-key (:button-press (call-hook *button-press-hook* event-slots)) @@ -214,10 +220,10 @@ (dolist (win children) (let ((map-state (window-map-state win)) (wm-state (window-state win))) - (unless (or (eq (window-override-redirect win) :on) - (eq win *no-focus-window*)) + (unless (or (eql (window-override-redirect win) :on) + (eql win *no-focus-window*)) (when (or (eql map-state :viewable) - (eql wm-state +iconic-state+)) + (eql wm-state +iconic-state+)) (format t "Processing ~S ~S~%" (wm-name win) win) (unhide-window win) (process-new-window win) From pbrochard at common-lisp.net Mon Dec 31 16:38:36 2007 From: pbrochard at common-lisp.net (pbrochard) Date: Mon, 31 Dec 2007 11:38:36 -0500 (EST) Subject: [clfswm-cvs] CVS clfswm Message-ID: <20071231163836.45FB25E109@common-lisp.net> Update of /project/clfswm/cvsroot/clfswm In directory clnet:/tmp/cvs-serv3169 Modified Files: clfswm-internal.lisp clfswm-second-mode.lisp clfswm.lisp Log Message: Don't start second mode program any times --- /project/clfswm/cvsroot/clfswm/clfswm-internal.lisp 2007/12/31 16:32:41 1.8 +++ /project/clfswm/cvsroot/clfswm/clfswm-internal.lisp 2007/12/31 16:38:36 1.9 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sun Dec 30 22:50:43 2007 +;;; #Date#: Mon Dec 31 17:36:46 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -305,6 +305,7 @@ (:maxsize 1) (:transient 1) (t 0))) + ;;(dbg (wm-name window) (window-type window)) (case (window-type window) (:normal (adapt-window-to-group window (current-group))) (t (multiple-value-bind (x y width height) --- /project/clfswm/cvsroot/clfswm/clfswm-second-mode.lisp 2007/12/31 16:32:41 1.7 +++ /project/clfswm/cvsroot/clfswm/clfswm-second-mode.lisp 2007/12/31 16:38:36 1.8 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Mon Dec 31 00:03:50 2007 +;;; #Date#: Mon Dec 31 17:37:12 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Second mode functions @@ -201,7 +201,8 @@ (show-all-group (current-workspace)) (wait-no-key-or-button-press) (when *second-mode-program* - (do-shell *second-mode-program*))) + (do-shell *second-mode-program*) + (setf *second-mode-program* nil))) --- /project/clfswm/cvsroot/clfswm/clfswm.lisp 2007/12/31 16:32:41 1.7 +++ /project/clfswm/cvsroot/clfswm/clfswm.lisp 2007/12/31 16:38:36 1.8 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Mon Dec 31 00:10:03 2007 +;;; #Date#: Mon Dec 31 17:34:22 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions From pbrochard at common-lisp.net Mon Dec 31 16:49:25 2007 From: pbrochard at common-lisp.net (pbrochard) Date: Mon, 31 Dec 2007 11:49:25 -0500 (EST) Subject: [clfswm-cvs] CVS clfswm Message-ID: <20071231164925.F26C27323A@common-lisp.net> Update of /project/clfswm/cvsroot/clfswm In directory clnet:/tmp/cvs-serv6191 Modified Files: clfswm-internal.lisp Log Message: use wm-size-hints-min-width instead of wm-size-hints-max-width --- /project/clfswm/cvsroot/clfswm/clfswm-internal.lisp 2007/12/31 16:38:36 1.9 +++ /project/clfswm/cvsroot/clfswm/clfswm-internal.lisp 2007/12/31 16:49:25 1.10 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Mon Dec 31 17:36:46 2007 +;;; #Date#: Mon Dec 31 17:46:55 2007 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -311,13 +311,17 @@ (t (multiple-value-bind (x y width height) (get-group-size (current-group)) (let* ((hints (xlib:wm-normal-hints window)) - (min-width (or (and hints (xlib:wm-size-hints-max-width hints)) 0)) - (min-height (or (and hints (xlib:wm-size-hints-max-height hints)) 0))) + (min-width (or (and hints (xlib:wm-size-hints-min-width hints)) 0)) + (min-height (or (and hints (xlib:wm-size-hints-min-height hints)) 0))) + ;;(dbg min-width min-height) (setf (drawable-width window) (max min-width (drawable-width window)) (drawable-height window) (max min-height (drawable-height window))) (setf (drawable-x window) (truncate (+ x (/ (- width (drawable-width window)) 2))) (drawable-y window) (truncate (+ y (/ (- height (drawable-height window)) 2)))))))) + ;;(dbg (drawable-x window) (drawable-y window) (drawable-width window) (drawable-height window)) (add-window-in-group window (current-group)) + ;;(dbg (drawable-x window) (drawable-y window) (drawable-width window) (drawable-height window)) + ;;(format t "-------------------------------~%") (netwm-add-in-client-list window))