From xma at gnu.org Sat Apr 5 00:00:09 2008 From: xma at gnu.org (Xavier Maillard) Date: Sat, 5 Apr 2008 02:00:09 +0200 Subject: [clfswm-devel] Focus and new window Message-ID: <200804050000.m35009ge004342@localhost.localdomain> Hi, How can I control the focus with new created window ? I do not like the default to put the focus on a newly created window and I want to be able to control that behaviour. Typical use case: In emacs, I create a terminal. I do not want to change to that new window *but* stay on the emacs window from where I send orders to that xterm. Regards, Xavier -- http://www.gnu.org http://www.april.org http://www.lolica.org From pbrochard at common-lisp.net Sat Apr 5 21:27:52 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Sat, 05 Apr 2008 23:27:52 +0200 Subject: [clfswm-devel] Focus and new window In-Reply-To: <200804050000.m35009ge004342@localhost.localdomain> (Xavier Maillard's message of "Sat\, 5 Apr 2008 02\:00\:09 +0200") References: <200804050000.m35009ge004342@localhost.localdomain> Message-ID: <871w5kdmav.fsf@free.fr> Xavier Maillard writes: > Hi, > Hi, > How can I control the focus with new created window ? > > I do not like the default to put the focus on a newly created > window and I want to be able to control that behaviour. > > Typical use case: > > In emacs, I create a terminal. I do not want to change to that > new window *but* stay on the emacs window from where I send > orders to that xterm. > This is typically the goal of new window hook. In clfswm it's the first child of a frame who takes the focus. You just need to swap children when they are created. If you want to make this permanent, just change the default new window hook (in clfswm-nw-hook.lisp): -------------------------------------------------- (defun default-frame-nw-hook (frame window) "Open the next window in the current frame" (declare (ignore frame)) (leave-if-not-frame *current-child*) (when (frame-p *current-child*) (pushnew window (frame-child *current-child*)) (when (second (frame-child *current-child*)) ; <- here (rotatef (first (frame-child *current-child*)) (second (frame-child *current-child*))))) (default-window-placement *current-child* window)) -------------------------------------------------- If you just want this behaviour for a particular frame, define a new hook and register it: -------------------------------------------------- ;;; Open a new window but leave the focus on the current child (defun leave-focus-frame-nw-hook (frame window) "Open the next window in the current frame and leave the focus on the current child" (declare (ignore frame)) (leave-if-not-frame *current-child*) (when (frame-p *current-child*) (pushnew window (frame-child *current-child*)) (when (second (frame-child *current-child*)) (rotatef (first (frame-child *current-child*)) (second (frame-child *current-child*))))) (default-window-placement *current-child* window)) (defun set-leave-focus-frame-nw-hook () "Open the next window in the current frame and leave the focus on the current child" (set-nw-hook #'leave-focus-frame-nw-hook)) (register-nw-hook 'set-leave-focus-frame-nw-hook) -------------------------------------------------- After registering it, it is available from the new window hook menu (by default: second mode -> f -> n -> e) I've let this hook in the code. Just pull the last commit. Hope that'll help, Regards, Philipe -- Philippe Brochard http://hocwp.free.fr From xma at gnu.org Sun Apr 6 00:00:28 2008 From: xma at gnu.org (Xavier Maillard) Date: Sun, 6 Apr 2008 02:00:28 +0200 Subject: [clfswm-devel] Focus and new window In-Reply-To: <871w5kdmav.fsf@free.fr> (message from Philippe Brochard on Sat, 05 Apr 2008 23:27:52 +0200) References: <200804050000.m35009ge004342@localhost.localdomain> <871w5kdmav.fsf@free.fr> Message-ID: <200804060000.m3600Saj007700@localhost.localdomain> > How can I control the focus with new created window ? > > I do not like the default to put the focus on a newly created > window and I want to be able to control that behaviour. > > Typical use case: > > In emacs, I create a terminal. I do not want to change to that > new window *but* stay on the emacs window from where I send > orders to that xterm. > This is typically the goal of new window hook. In clfswm it's the first child of a frame who takes the focus. You just need to swap children when they are created. ... code ... I've let this hook in the code. Just pull the last commit. Hope that'll help, It is exactly what I wanted to have. Thank you very much for the code and the enlightenment about the hook. By the way, am I alone having difficulties to pull from the git repository ? Each time I am pulling, there are conflicts I have to resolve manually. Xavier -- http://www.gnu.org http://www.april.org http://www.lolica.org From pbrochard at common-lisp.net Sun Apr 6 14:00:34 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Sun, 06 Apr 2008 16:00:34 +0200 Subject: [clfswm-devel] Focus and new window In-Reply-To: <200804060000.m3600Saj007700@localhost.localdomain> (Xavier Maillard's message of "Sun\, 6 Apr 2008 02\:00\:28 +0200") References: <200804050000.m35009ge004342@localhost.localdomain> <871w5kdmav.fsf@free.fr> <200804060000.m3600Saj007700@localhost.localdomain> Message-ID: <87lk3r13st.fsf@free.fr> Xavier Maillard writes: > > How can I control the focus with new created window ? > > > > I do not like the default to put the focus on a newly created > > window and I want to be able to control that behaviour. > > > > Typical use case: > > > > In emacs, I create a terminal. I do not want to change to that > > new window *but* stay on the emacs window from where I send > > orders to that xterm. > > > This is typically the goal of new window hook. In clfswm it's the > first child of a frame who takes the focus. You just need to swap > children when they are created. > > ... code ... > > I've let this hook in the code. Just pull the last commit. > > Hope that'll help, > > It is exactly what I wanted to have. Thank you very much for the > code and the enlightenment about the hook. > Ah, nice. I haven't yet documented this hook on the wiki but I think one can do some nice things with it. > By the way, am I alone having difficulties to pull from the git repository > ? Each time I am pulling, there are conflicts I have to resolve manually. > No you're not alone: I have the same boring problem. I've read some more docs and change the rsync part of the commit (ie: git repack + git clone /tmp-dir + git update-server-info Before only the git update-server-info was done). I hope this solve the problem. BTW you may have to clone a fresh copy of clfswm (now with pack it's faster than before). Philippe -- Philippe Brochard http://hocwp.free.fr From xma at gnu.org Mon Apr 7 00:00:12 2008 From: xma at gnu.org (Xavier Maillard) Date: Mon, 7 Apr 2008 02:00:12 +0200 Subject: [clfswm-devel] Navigation inside multiple frames setup ? Message-ID: <200804070000.m3700CtF013297@localhost.localdomain> Hi, What's the best way to navigate inside such a setup. Say I have 3 frames with several windows by frame. I do not want to have to Alt-Tab each window in each frame each time I am switching :) Sorry I did not have time to read the code lately and I could not finish the refactoring I was referering a few weeks ago. Xavier -- http://www.gnu.org http://www.april.org http://www.lolica.org From xma at gnu.org Mon Apr 7 00:00:10 2008 From: xma at gnu.org (Xavier Maillard) Date: Mon, 7 Apr 2008 02:00:10 +0200 Subject: [clfswm-devel] Frame: odd behavior ? Message-ID: <200804070000.m3700AMa013290@localhost.localdomain> Hi, Maybe I am dumb, maybe I misunderstood something _but_ I can't find how to have multiple frames In full screen mode. Can somebody explain exactly what a frame is now in the CLFSWM terminology ? In fact, I am sad you adopted the frame/group switch already :) What is a frame exactly ? Xavier -- http://www.gnu.org http://www.april.org http://www.lolica.org From xma at gnu.org Mon Apr 7 00:00:16 2008 From: xma at gnu.org (Xavier Maillard) Date: Mon, 7 Apr 2008 02:00:16 +0200 Subject: [clfswm-devel] QWERTY users: still impossible to fully use CLFSWM Message-ID: <200804070000.m3700Gre013304@localhost.localdomain> Hi, I am pretty sure I already asked this question but since I could not find something, I am asking it again here. How can a QWERTY user fully use the possibilities offered by CLFSWM ? I mean, I still can't do something as simple as "Run a command" (M-t m y !) since CLFSWM does not recognise my '!' key (it sees a 1 here). There are numerous other key bindings inaccessible for me such as "Home" key. I do not like the idea to "tweak" all the key bindings so how can I fix that in the source code directly ? Regards Xavier -- http://www.gnu.org http://www.april.org http://www.lolica.org From xma at gnu.org Mon Apr 7 00:00:09 2008 From: xma at gnu.org (Xavier Maillard) Date: Mon, 7 Apr 2008 02:00:09 +0200 Subject: [clfswm-devel] Focus and new window In-Reply-To: <87lk3r13st.fsf@free.fr> (message from Philippe Brochard on Sun, 06 Apr 2008 16:00:34 +0200) References: <200804050000.m35009ge004342@localhost.localdomain> <871w5kdmav.fsf@free.fr> <200804060000.m3600Saj007700@localhost.localdomain> <87lk3r13st.fsf@free.fr> Message-ID: <200804070000.m37009Yh013289@localhost.localdomain> > By the way, am I alone having difficulties to pull from the git repository > ? Each time I am pulling, there are conflicts I have to resolve manually. > No you're not alone: I have the same boring problem. I've read some more docs and change the rsync part of the commit (ie: git repack + git clone /tmp-dir + git update-server-info Before only the git update-server-info was done). I hope this solve the problem. BTW you may have to clone a fresh copy of clfswm (now with pack it's faster than before). I will try that now. Thank you very much. Xavier -- http://www.gnu.org http://www.april.org http://www.lolica.org From pbrochard at common-lisp.net Mon Apr 7 12:04:18 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Mon, 07 Apr 2008 14:04:18 +0200 Subject: [clfswm-devel] Frame: odd behavior ? In-Reply-To: <200804070000.m3700AMa013290@localhost.localdomain> (Xavier Maillard's message of "Mon\, 7 Apr 2008 02\:00\:10 +0200") References: <200804070000.m3700AMa013290@localhost.localdomain> Message-ID: <87y77pna65.fsf@free.fr> Xavier Maillard writes: > Hi, > Hi, > Maybe I am dumb, maybe I misunderstood something _but_ I can't > find how to have multiple frames In full screen mode. > > Can somebody explain exactly what a frame is now in the CLFSWM > terminology ? > A frame is a geometrical group which can contain some other frames or some application windows. The current root frame is fullscreen maximized. So if you want to have multiple frames in full screen mode, create the frames you want to be fullscreened in the same father (they'll act as workspace in the 0801 version) and place your children in them (windows or frames). The new keybinding is: Alt-Left/Right: circulate throw brothers (ie throw workspaces in 0801) Alt-Tab: circulate throw children (ie throw application windows as usual) Alt-Enter: Enter in a frame -> make it the current root and fullscreen it. Alt-Shift-Enter: Leave the current child -> make its father the current root. Alt+Up/Down: select the next/previous level. > In fact, I am sad you adopted the frame/group switch already :) > Sure? It's because you have to be accustomed to the new behaviour and it is not usual (far less than the 0801 version of clfswm which stay near the standard). In fact, if you stay in the starting root frame, you have the same behaviour than in the 0801 version by creating frames in it. The only new thing is that you're not restricted to the starting root frame: you can create workspaces at any level. > What is a frame exactly ? > I've put a little video to see how I use clfswm now. Here: http://hocwp.free.fr/temp/record-frame.ogv Hope that'll help Regards, Philippe -- Philippe Brochard http://hocwp.free.fr From pbrochard at common-lisp.net Mon Apr 7 12:05:48 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Mon, 07 Apr 2008 14:05:48 +0200 Subject: [clfswm-devel] QWERTY users: still impossible to fully use CLFSWM In-Reply-To: <200804070000.m3700Gre013304@localhost.localdomain> (Xavier Maillard's message of "Mon\, 7 Apr 2008 02\:00\:16 +0200") References: <200804070000.m3700Gre013304@localhost.localdomain> Message-ID: <87wsn9na3n.fsf@free.fr> Xavier Maillard writes: > Hi, > Hi, > I am pretty sure I already asked this question but since I could > not find something, I am asking it again here. > > How can a QWERTY user fully use the possibilities offered by > CLFSWM ? I mean, I still can't do something as simple as "Run a > command" (M-t m y !) since CLFSWM does not recognise my '!' key > (it sees a 1 here). > > There are numerous other key bindings inaccessible for me such as > "Home" key. > Please, what is the output of identify key when you press the "1" key and "Shift+1" key? I think that I see what's going wrong: in the info-mode-menu there is no modifier allowed and your ! is on shift+1 (I think). I have to change the keysym code part to allow ! without the shift. It's in the TODO. BTW, I think I'll rebind them on some more standard keys (like "e" for exec, "v" for eval...). > I do not like the idea to "tweak" all the key bindings so how can > I fix that in the source code directly ? > I don't like this idea too! I try to make CLFSWM as indepedant of keyboard layout as possible. > Regards > Regards, Philippe -- Philippe Brochard http://hocwp.free.fr From pbrochard at common-lisp.net Mon Apr 7 12:21:39 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Mon, 07 Apr 2008 14:21:39 +0200 Subject: [clfswm-devel] Navigation inside multiple frames setup ? In-Reply-To: <200804070000.m3700CtF013297@localhost.localdomain> (Xavier Maillard's message of "Mon\, 7 Apr 2008 02\:00\:12 +0200") References: <200804070000.m3700CtF013297@localhost.localdomain> Message-ID: <87skxxn9d8.fsf@free.fr> Xavier Maillard writes:http://hocwp.free.fr/temp/record-frame.ogv > Hi, > Hi, > What's the best way to navigate inside such a setup. Say I have 3 > frames with several windows by frame. I do not want to have to > Alt-Tab each window in each frame each time I am switching :) > The fast answer: use your mouse :) See the previous response about frames and this video: http://hocwp.free.fr/temp/record-frame.ogv Maybe that'll help. In fact, now with multiple frame level I try to have max to 3 windows in the same frame (most of the time 2) and I organize them so that I can switch easily between them. You can also bind a key to a particular child (with Alt+1/2/3/4+Return) and jump to it with (Alt+1/2/3/4+Tab). > Sorry I did not have time to read the code lately and I could not > finish the refactoring I was referering a few weeks ago. > Regards, Philippe -- Philippe Brochard http://hocwp.free.fr From xma at gnu.org Tue Apr 8 00:00:02 2008 From: xma at gnu.org (Xavier Maillard) Date: Tue, 8 Apr 2008 02:00:02 +0200 Subject: [clfswm-devel] Frame: odd behavior ? In-Reply-To: <87y77pna65.fsf@free.fr> (message from Philippe Brochard on Mon, 07 Apr 2008 14:04:18 +0200) References: <200804070000.m3700AMa013290@localhost.localdomain> <87y77pna65.fsf@free.fr> Message-ID: <200804080000.m38002bC005401@localhost.localdomain> > Maybe I am dumb, maybe I misunderstood something _but_ I can't > find how to have multiple frames In full screen mode. > > Can somebody explain exactly what a frame is now in the CLFSWM > terminology ? > A frame is a geometrical group which can contain some other frames or some application windows. The current root frame is fullscreen maximized. So when CLFSWM is starting, it has two frames: 0 => root and 1 => default. Right ? If so, why not stick with the root frame by default ? Well I tried that it throws an error when I want to create a frame : DEBUG[2 - dbg] *ROOT-FRAME*=# DEBUG[3 - dbg] *CURRENT-CHILD*=NIL DEBUG[4 - dbg] *CURRENT-ROOT*=# *** - NO-APPLICABLE-METHOD: When calling # with arguments (NIL NIL), no method is applicable. The following restarts are available: RETRY :R1 try calling CLFSWM::SELECT-CHILD again RETURN :R2 specify return values I should probably have removed the setf *current-child*. Let's try that. Ok I understand why it fails. See enclosed in another post, a patch that could remedy the confusion introduced by creating 2 empty frames on startup. So if you want to have multiple frames in full screen mode, create the frames you want to be fullscreened in the same father (they'll act as workspace in the 0801 version) and place your children in them (windows or frames). In fact, yes and no. The new keybinding is: Alt-Left/Right: circulate throw brothers (ie throw workspaces in 0801) What do you call brothers ? It seems they are simply "clients" of the same level. Right ? Alt-Enter: Enter in a frame -> make it the current root and fullscreen it. Considering this new (?) binding, I can force a frame to be fullscreen without having to do what you have mentionned above, right ? Alt-Shift-Enter: Leave the current child -> make its father the current root. Ok. Alt+Up/Down: select the next/previous level. Ok. In fact, if you stay in the starting root frame, you have the same behaviour than in the 0801 version by creating frames in it. The only new thing is that you're not restricted to the starting root frame: you can create workspaces at any level. Yes, it is pretty cool even if I do not see any use of it currently :) > What is a frame exactly ? > I've put a little video to see how I use clfswm now. Here: http://hocwp.free.fr/temp/record-frame.ogv Thank you, it helped a lot. Xavier -- http://www.gnu.org http://www.april.org http://www.lolica.org From xma at gnu.org Tue Apr 8 00:00:05 2008 From: xma at gnu.org (Xavier Maillard) Date: Tue, 8 Apr 2008 02:00:05 +0200 Subject: [clfswm-devel] QWERTY users: still impossible to fully use CLFSWM In-Reply-To: <87wsn9na3n.fsf@free.fr> (message from Philippe Brochard on Mon, 07 Apr 2008 14:05:48 +0200) References: <200804070000.m3700Gre013304@localhost.localdomain> <87wsn9na3n.fsf@free.fr> Message-ID: <200804080000.m38005jW005406@localhost.localdomain> Xavier Maillard writes: > Hi, > Hi, > I am pretty sure I already asked this question but since I could > not find something, I am asking it again here. > > How can a QWERTY user fully use the possibilities offered by > CLFSWM ? I mean, I still can't do something as simple as "Run a > command" (M-t m y !) since CLFSWM does not recognise my '!' key > (it sees a 1 here). > > There are numerous other key bindings inaccessible for me such as > "Home" key. > Please, what is the output of identify key when you press the "1" key and "Shift+1" key? DEBUG[5 - dbg] CODE=10 KEYSYM="1" KEY=#\1 MODIFIERS=NIL DEBUG[6 - dbg] CODE=50 KEYSYM="Shift_L" KEY=#\FULLWIDTH_POUND_SIGN MODIFIERS=NIL DEBUG[7 - dbg] CODE=10 KEYSYM="exclam" KEY=#\1 MODIFIERS=(:SHIFT) DEBUG[8 - dbg] CODE=50 KEYSYM="Shift_L" KEY=#\FULLWIDTH_POUND_SIGN MODIFIERS=NIL DEBUG[9 - dbg] CODE=24 KEYSYM="q" KEY=#\q MODIFIERS=NIL I think that I see what's going wrong: in the info-mode-menu there is no modifier allowed and your ! is on shift+1 (I think). I am not sure how to interpret this. It effectively sees my ! key but in sort of a two-phase process. BTW, I think I'll rebind them on some more standard keys (like "e" for exec, "v" for eval...). I am not sure I like it but given the fact it is customisable, I am not against that change :) Xavier -- http://www.gnu.org http://www.april.org http://www.lolica.org From xma at gnu.org Tue Apr 8 00:00:07 2008 From: xma at gnu.org (Xavier Maillard) Date: Tue, 8 Apr 2008 02:00:07 +0200 Subject: [clfswm-devel] Navigation inside multiple frames setup ? In-Reply-To: <87skxxn9d8.fsf@free.fr> (message from Philippe Brochard on Mon, 07 Apr 2008 14:21:39 +0200) References: <200804070000.m3700CtF013297@localhost.localdomain> <87skxxn9d8.fsf@free.fr> Message-ID: <200804080000.m38007ux005408@localhost.localdomain> > What's the best way to navigate inside such a setup. Say I have 3 > frames with several windows by frame. I do not want to have to > Alt-Tab each window in each frame each time I am switching :) > The fast answer: use your mouse :) I do not like this idea. In fact, I am using CLFSWM exclusively with keyboard. I tried to resize frames with the mouse but I failed at it (I did not find what combo to use :)) In fact, now with multiple frame level I try to have max to 3 windows in the same frame (most of the time 2) and I organize them so that I can switch easily between them. I am using an EEE PC (by Asus) here and I *must* organize my windows carefully. In fact it is pretty simple, I am almost fullscreen for all. The frame feature will allow me to setup pre-defined frames: - Net (opera, firefox) - IM (actually aMSN to discuss with my syster) - work (xterm and/or screen) - emacs The root frame is used as a "decoration" here. All other frames are children of the root frame. Speaking of aMSN, my sister often offers me to see her webcam. The problem is that this window is a transient window. How can I manage such window to force it to go in a particular frame ? You can also bind a key to a particular child (with Alt+1/2/3/4+Return) and jump to it with (Alt+1/2/3/4+Tab). WOnderful ! Is it new ? Xavier -- http://www.gnu.org http://www.april.org http://www.lolica.org From xma at gnu.org Tue Apr 8 06:29:31 2008 From: xma at gnu.org (Xavier Maillard) Date: Tue, 8 Apr 2008 08:29:31 +0200 Subject: [clfswm-devel] [PATCH] Do not create another empty frame on startup. Message-ID: <200804080629.m386TVuP007462@localhost.localdomain> With current code, it may confuse users to have two empty frames on startup. This patch just remove the creation of the "default" frame of id 1. Signed-off-by: Xavier Maillard --- The creation of several frames on startup could be put onto the init-hook hook instead of "hardcoding" it here. src/clfswm.lisp | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) diff --git a/src/clfswm.lisp b/src/clfswm.lisp index f4e762c..5f3aeab 100644 --- a/src/clfswm.lisp +++ b/src/clfswm.lisp @@ -222,8 +222,6 @@ (setf *root-frame* (create-frame :name "Root" :number 0) ;; :layout #'tile-space-layout) *current-root* *root-frame* *current-child* *current-root*) - (add-frame (create-frame :name "Default" :layout nil :x 0.05 :y 0.05 :w 0.9 :h 0.9) *root-frame*) - (setf *current-child* (first (frame-child *current-root*))) (call-hook *init-hook*) (process-existing-windows *screen*) (show-all-children) -- 1.5.2.2 From pbrochard at common-lisp.net Tue Apr 8 22:24:11 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Wed, 09 Apr 2008 00:24:11 +0200 Subject: [clfswm-devel] Frame: odd behavior ? In-Reply-To: <200804080000.m38002bC005401@localhost.localdomain> (Xavier Maillard's message of "Tue\, 8 Apr 2008 02\:00\:02 +0200") References: <200804070000.m3700AMa013290@localhost.localdomain> <87y77pna65.fsf@free.fr> <200804080000.m38002bC005401@localhost.localdomain> Message-ID: <87od8kj88k.fsf@free.fr> Xavier Maillard writes: > > Maybe I am dumb, maybe I misunderstood something _but_ I can't > > find how to have multiple frames In full screen mode. > > > > Can somebody explain exactly what a frame is now in the CLFSWM > > terminology ? > > > A frame is a geometrical group which can contain some other frames or > some application windows. > The current root frame is fullscreen maximized. > > So when CLFSWM is starting, it has two frames: 0 => root and 1 => > default. Right ? If so, why not stick with the root frame by > default ? > Yes there is two frames at startup. Because I think that the first thing most users will do is to add a default frame to contain its applications. Except in some rare cases you don't want to have all your windows maximized and not resizable. I think that the first application window have to go in its own frame and not in the root frame (you can make it fullscreen after if you want). Here is an analogie with standard window manager: Pager | ------------------------------ ... | | | v v v Workspace 1 Workspace 2 Workspace 3 ... | | ------------------- v | | App 3 v v Application 1 App 2 In clfswm: the root frame is the pager and the default frame is the first workspace. Root Frame 0 *root-frame* | ---------------------------..... | | | v v v Default Frame 1 Frame 2 Frame 3 .... | | ------------- v | | Application 2 v v Application 1 Frame 4 *current-root* | ------------- | | v v *current-child* App 3 Frame 5 . . . . . . It's more complex but you can stay in the root frame as in others window manager. > Well I tried that it throws an error when I want to create a > frame : > > DEBUG[2 - dbg] *ROOT-FRAME*=# > DEBUG[3 - dbg] *CURRENT-CHILD*=NIL > DEBUG[4 - dbg] *CURRENT-ROOT*=# > > *** - NO-APPLICABLE-METHOD: When calling # with arguments (NIL NIL), no method is > applicable. > The following restarts are available: > RETRY :R1 try calling CLFSWM::SELECT-CHILD again > RETURN :R2 specify return values > > I should probably have removed the setf *current-child*. > What is the code exactly? Because it seems that you haven't defined the current child (*CURRENT-CHILD*=NIL). Another thing, it's the root frame which contain all other children (frames or application windows). The only thing you can do with the *root-frame* is to append some children in its child list. Then you have to tell which is the current root (the child that have to be fullscreen maximized) and which is the current child (the selected and focused child). See an example above. > Let's try that. Ok I understand why it fails. > > See enclosed in another post, a patch that could remedy the > confusion introduced by creating 2 empty frames on startup. > > So if you want to have multiple frames in full screen mode, create the > frames you want to be fullscreened in the same father (they'll act as > workspace in the 0801 version) and place your children in them > (windows or frames). > > In fact, yes and no. > > > The new keybinding is: > > Alt-Left/Right: circulate throw brothers (ie throw workspaces in 0801) > > What do you call brothers ? It seems they are simply "clients" of > the same level. Right ? > Yes, right: children that have the same father. > Alt-Enter: Enter in a frame -> make it the current root and fullscreen > it. > > Considering this new (?) binding, I can force a frame to be > fullscreen without having to do what you have mentionned above, > right ? > Yes but you loss the Alt-Tab behaviour. You'll have to use Alt+Right/Left to select the next children. > Alt-Shift-Enter: Leave the current child -> make its father the > current root. > > Ok. > > Alt+Up/Down: select the next/previous level. > > Ok. > > In fact, if you stay in the starting root frame, you have the same > behaviour than in the 0801 version by creating frames in it. > The only new thing is that you're not restricted to the starting root > frame: you can create workspaces at any level. > > Yes, it is pretty cool even if I do not see any use of it > currently :) > In fact I find that I use this to work efficiently when I have two task in parallel with two windows for each task and some others tasks not related to this work. I'll put a video again to explain this. > > What is a frame exactly ? > > > I've put a little video to see how I use clfswm now. Here: > > http://hocwp.free.fr/temp/record-frame.ogv > > Thank you, it helped a lot. > Philippe -- Philippe Brochard http://hocwp.free.fr From pbrochard at common-lisp.net Tue Apr 8 22:27:32 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Wed, 09 Apr 2008 00:27:32 +0200 Subject: [clfswm-devel] QWERTY users: still impossible to fully use CLFSWM In-Reply-To: <200804080000.m38005jW005406@localhost.localdomain> (Xavier Maillard's message of "Tue\, 8 Apr 2008 02\:00\:05 +0200") References: <200804070000.m3700Gre013304@localhost.localdomain> <87wsn9na3n.fsf@free.fr> <200804080000.m38005jW005406@localhost.localdomain> Message-ID: <87k5j8j82z.fsf@free.fr> Xavier Maillard writes: > Xavier Maillard writes: > > > Hi, > > > Hi, > > > I am pretty sure I already asked this question but since I could > > not find something, I am asking it again here. > > > > How can a QWERTY user fully use the possibilities offered by > > CLFSWM ? I mean, I still can't do something as simple as "Run a > > command" (M-t m y !) since CLFSWM does not recognise my '!' key > > (it sees a 1 here). > > > > There are numerous other key bindings inaccessible for me such as > > "Home" key. > > > Please, what is the output of identify key when you press the "1" key > and "Shift+1" key? > > DEBUG[5 - dbg] CODE=10 KEYSYM="1" KEY=#\1 MODIFIERS=NIL > DEBUG[6 - dbg] CODE=50 KEYSYM="Shift_L" KEY=#\FULLWIDTH_POUND_SIGN MODIFIERS=NIL > DEBUG[7 - dbg] CODE=10 KEYSYM="exclam" KEY=#\1 MODIFIERS=(:SHIFT) > DEBUG[8 - dbg] CODE=50 KEYSYM="Shift_L" KEY=#\FULLWIDTH_POUND_SIGN MODIFIERS=NIL > DEBUG[9 - dbg] CODE=24 KEYSYM="q" KEY=#\q MODIFIERS=NIL > > I think that I see what's going wrong: in the info-mode-menu there is > no modifier allowed and your ! is on shift+1 (I think). > > I am not sure how to interpret this. It effectively sees my ! key > but in sort of a two-phase process. > Here is the problem: DEBUG[7 - dbg] CODE=10 KEYSYM="exclam" KEY=#\1 MODIFIERS=(:SHIFT) ^^^^^^ ^^^^^^ You have to say explicitly that you press the shift key and this is not yet allowed in the info mode menu. > BTW, I think I'll rebind them on some more standard keys (like "e" for > exec, "v" for eval...). > > I am not sure I like it but given the fact it is customisable, I > am not against that change :) > Neither do I. I'll rewrite the keysym part instead. Philippe -- Philippe Brochard http://hocwp.free.fr From pbrochard at common-lisp.net Tue Apr 8 22:38:33 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Wed, 09 Apr 2008 00:38:33 +0200 Subject: [clfswm-devel] Navigation inside multiple frames setup ? In-Reply-To: <200804080000.m38007ux005408@localhost.localdomain> (Xavier Maillard's message of "Tue\, 8 Apr 2008 02\:00\:07 +0200") References: <200804070000.m3700CtF013297@localhost.localdomain> <87skxxn9d8.fsf@free.fr> <200804080000.m38007ux005408@localhost.localdomain> Message-ID: <87fxtwj7km.fsf@free.fr> Xavier Maillard writes: > > What's the best way to navigate inside such a setup. Say I have 3 > > frames with several windows by frame. I do not want to have to > > Alt-Tab each window in each frame each time I am switching :) > > > The fast answer: use your mouse :) > > I do not like this idea. In fact, I am using CLFSWM exclusively > with keyboard. I tried to resize frames with the mouse but I > failed at it (I did not find what combo to use :)) > It's a jocke: I don't use my mouse with clfswm. Even to create new frames. The key combo is Alt+mouse on the root window or the current root frame window. But a key I use intensively is "second mode + o" that is "open the next window in a new frame on the root frame" This is like create a new workspace on next window in the 0801 version. > In fact, now with multiple frame level I try to have max to 3 windows > in the same frame (most of the time 2) and I organize them so that I > can switch easily between them. > > I am using an EEE PC (by Asus) here and I *must* organize my > windows carefully. In fact it is pretty simple, I am almost > fullscreen for all. > > The frame feature will allow me to setup pre-defined frames: > > - Net (opera, firefox) > - IM (actually aMSN to discuss with my syster) > - work (xterm and/or screen) > - emacs > > The root frame is used as a "decoration" here. All other frames > are children of the root frame. > I think a better way is to create all this application in a frame in the root frame. Like this you can have workspaces as usual. > Speaking of aMSN, my sister often offers me to see her webcam. > The problem is that this window is a transient window. How can I > manage such window to force it to go in a particular frame ? > For now you can just recenter a transient window in its frame with: second mode -> m -> w -> c I have something more useful in mind where you can specify for each frame the behaviour you want for each window type (normal, transient...) > You can also bind a key to a particular child > (with Alt+1/2/3/4+Return) and jump to it with (Alt+1/2/3/4+Tab). > > WOnderful ! Is it new ? > Yes, I wrote this on 2 april http://trac.common-lisp.net/clfswm/changeset/66 -- Philippe Brochard http://hocwp.free.fr From pbrochard at common-lisp.net Tue Apr 8 22:47:08 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Wed, 09 Apr 2008 00:47:08 +0200 Subject: [clfswm-devel] [PATCH] Do not create another empty frame on startup. In-Reply-To: <200804080629.m386TVuP007462@localhost.localdomain> (Xavier Maillard's message of "Tue\, 8 Apr 2008 08\:29\:31 +0200") References: <200804080629.m386TVuP007462@localhost.localdomain> Message-ID: <87abk4j76b.fsf@free.fr> Xavier Maillard writes: > With current code, it may confuse users to have two empty frames on > startup. > > This patch just remove the creation of the "default" frame of id 1. > There is no two empty frames on startup. There is the root frame which contain a default frame. See my previous post about the correspondence with standard window manager. The root frame is like the pager. The default frame is like a default workspace. You have to think about clfswm as if it is a tree. Root Frame 0 | ---------------------------..... | | | v v v Default Frame 1 Frame 2 Frame 3 .... | | ------------- v | | Application 2 v v Application 1 Frame 4 | ------------- | | v v App 3 Frame 5 . . . . . . The root frame is the mother of all other frames and applications windows. The only thing you can do with the root frame is to append children in its child list. I know, it's a little confusing at first time, but I think that once you get it you can do some wonderful things with it. At least it is what I was looking for a long time. [...] -- Philippe Brochard http://hocwp.free.fr From pbrochard at common-lisp.net Fri Apr 11 21:58:23 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Fri, 11 Apr 2008 23:58:23 +0200 Subject: [clfswm-devel] Request for testing [was: QWERTY users: still impossible to fully use CLFSWM] In-Reply-To: <87k5j8j82z.fsf@free.fr> (Philippe Brochard's message of "Wed\, 09 Apr 2008 00\:27\:32 +0200") References: <200804070000.m3700Gre013304@localhost.localdomain> <87wsn9na3n.fsf@free.fr> <200804080000.m38005jW005406@localhost.localdomain> <87k5j8j82z.fsf@free.fr> Message-ID: <87skxsqcjk.fsf_-_@free.fr> Hi, I've made some big changes in the keyboard strategie. Now all keys are grabbed in the main mode and only those who have not to be managed are replayed and send to the client. This works like a charm on my box but I need more feedback to let this code in the future release. In particular, is the exclam key works on a qwerty keyboard? Same thing with the colon key. Thanks for your feedback, Philippe -- Philippe Brochard http://hocwp.free.fr From xma at gnu.org Sat Apr 12 00:00:23 2008 From: xma at gnu.org (Xavier Maillard) Date: Sat, 12 Apr 2008 02:00:23 +0200 Subject: [clfswm-devel] Problem with revision 74 Message-ID: <200804120000.m3C00Nqf004865@localhost.localdomain> Hi, I was browsing the Internet and I saw you updated something related to my recent problems. Thank you. Now Typing M-t ! just works, err, partially. Actually it prompts me for a command to enter and then, it throws an error: ;; Loading file /home/xma/etc/clfswm/clfswmrc ... ;; Loaded file /home/xma/etc/clfswm/clfswmrc DEBUG[1 - dbg] *DISPLAY*=# *** - XLIB:GRAB-KEY: :ANY is not of type XLIB:CARD8 Break 1 [1]> What I did is simply 1. M-t ! 2. xterm RET Regards Xavier -- http://www.gnu.org http://www.april.org http://www.lolica.org From pbrochard at common-lisp.net Sat Apr 12 20:18:27 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Sat, 12 Apr 2008 22:18:27 +0200 Subject: [clfswm-devel] Problem with revision 74 In-Reply-To: <200804120000.m3C00Nqf004865@localhost.localdomain> (Xavier Maillard's message of "Sat\, 12 Apr 2008 02\:00\:23 +0200") References: <200804120000.m3C00Nqf004865@localhost.localdomain> Message-ID: <87d4ouomi4.fsf@free.fr> Xavier Maillard writes: > Hi, > Hi, > I was browsing the Internet and I saw you updated something > related to my recent problems. Thank you. > Yes, but it's not only your problem: for example I'd like to grab the "1" key on an azerty keyboard without the need of an extra shift key. > Now Typing M-t ! just works, err, partially. Actually it prompts > me for a command to enter and then, it throws an error: > > ;; Loading file /home/xma/etc/clfswm/clfswmrc ... > ;; Loaded file /home/xma/etc/clfswm/clfswmrc > DEBUG[1 - dbg] *DISPLAY*=# > > *** - XLIB:GRAB-KEY: :ANY is not of type XLIB:CARD8 > Break 1 [1]> > > What I did is simply > > 1. M-t ! > 2. xterm RET > Ah, too bad :( Well first, what is your lisp implementation, your clx implementation, your distribution (maybe I can test directly with it)? I've no problem with clisp/mit-clx, sbcl and cmucl. I haven't test yet the clisp/new-clx version. Second thing, the only reference of grab-key is in xlib-util.lisp in grab-all-keys. Which of the two :any cause the problem? To determine this, you can change the modifiers with an explicit list: -------------------------------------------------- (defun grab-all-keys (window) (ungrab-all-keys window) (dolist (modifiers '(:control :mod-1 :shift)) (xlib:grab-key window :any :modifiers (list modifiers) :owner-p nil :sync-pointer-p nil :sync-keyboard-p t))) -------------------------------------------------- Do you have again the problem? Thanks for your feedback. Cheers, Philippe -- Philippe Brochard http://hocwp.free.fr From pbrochard at common-lisp.net Sun Apr 13 22:12:39 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Mon, 14 Apr 2008 00:12:39 +0200 Subject: [clfswm-devel] Problem with revision 74 In-Reply-To: <200804120000.m3C00Nqf004865@localhost.localdomain> (Xavier Maillard's message of "Sat\, 12 Apr 2008 02\:00\:23 +0200") References: <200804120000.m3C00Nqf004865@localhost.localdomain> Message-ID: <87y77hl7zc.fsf@free.fr> Xavier Maillard writes: > Hi, > > I was browsing the Internet and I saw you updated something > related to my recent problems. Thank you. > > Now Typing M-t ! just works, err, partially. Actually it prompts > me for a command to enter and then, it throws an error: > > ;; Loading file /home/xma/etc/clfswm/clfswmrc ... > ;; Loaded file /home/xma/etc/clfswm/clfswmrc > DEBUG[1 - dbg] *DISPLAY*=# > > *** - XLIB:GRAB-KEY: :ANY is not of type XLIB:CARD8 > Break 1 [1]> > > What I did is simply > > 1. M-t ! > 2. xterm RET > > Regards > I think your problem have been solved in the 76 revision. I revert to the old grabbing strategie and add more cases with the shift key. I think keygrabbing is robust now (as in the past) but it handle all cases (I hope). Philippe -- Philippe Brochard http://hocwp.free.fr From pbrochard at common-lisp.net Sun Apr 13 22:15:48 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Mon, 14 Apr 2008 00:15:48 +0200 Subject: [clfswm-devel] Request for testing In-Reply-To: <87skxsqcjk.fsf_-_@free.fr> (Philippe Brochard's message of "Fri\, 11 Apr 2008 23\:58\:23 +0200") References: <200804070000.m3700Gre013304@localhost.localdomain> <87wsn9na3n.fsf@free.fr> <200804080000.m38005jW005406@localhost.localdomain> <87k5j8j82z.fsf@free.fr> <87skxsqcjk.fsf_-_@free.fr> Message-ID: <87tzi5l7u3.fsf@free.fr> Philippe Brochard writes: > Hi, > > I've made some big changes in the keyboard strategie. Now all keys are > grabbed in the main mode and only those who have not to be managed are > replayed and send to the client. > This works like a charm on my box but I need more feedback to let this > code in the future release. > > In particular, is the exclam key works on a qwerty keyboard? Same > thing with the colon key. > > Thanks for your feedback, > I revert to the old strategie for grabbing keys and I have added more cases to handle the shift key properly. As always, feedback is welcome anyway :) Philippe -- Philippe Brochard http://hocwp.free.fr From xma at gnu.org Mon Apr 14 00:00:14 2008 From: xma at gnu.org (Xavier Maillard) Date: Mon, 14 Apr 2008 02:00:14 +0200 Subject: [clfswm-devel] Request for testing [was: QWERTY users: still impossible to fully use CLFSWM] In-Reply-To: <87skxsqcjk.fsf_-_@free.fr> (message from Philippe Brochard on Fri, 11 Apr 2008 23:58:23 +0200) References: <200804070000.m3700Gre013304@localhost.localdomain> <87wsn9na3n.fsf@free.fr> <200804080000.m38005jW005406@localhost.localdomain> <87k5j8j82z.fsf@free.fr> <87skxsqcjk.fsf_-_@free.fr> Message-ID: <200804140000.m3E00Cjm012491@localhost.localdomain> In particular, is the exclam key works on a qwerty keyboard? Same thing with the colon key. Thanks for your feedback, With the modification I proposed in another message, you have my GO since it no longer makes my session crashing :) Thank you very much. Xavier -- http://www.gnu.org http://www.april.org http://www.lolica.org From xma at gnu.org Mon Apr 14 00:00:15 2008 From: xma at gnu.org (Xavier Maillard) Date: Mon, 14 Apr 2008 02:00:15 +0200 Subject: [clfswm-devel] Frame: odd behavior ? In-Reply-To: <87od8kj88k.fsf@free.fr> (message from Philippe Brochard on Wed, 09 Apr 2008 00:24:11 +0200) References: <200804070000.m3700AMa013290@localhost.localdomain> <87y77pna65.fsf@free.fr> <200804080000.m38002bC005401@localhost.localdomain> <87od8kj88k.fsf@free.fr> Message-ID: <200804140000.m3E00FBe012496@localhost.localdomain> Xavier Maillard writes: > > Maybe I am dumb, maybe I misunderstood something _but_ I can't > > find how to have multiple frames In full screen mode. > > > > Can somebody explain exactly what a frame is now in the CLFSWM > > terminology ? > > > A frame is a geometrical group which can contain some other frames or > some application windows. > The current root frame is fullscreen maximized. > > So when CLFSWM is starting, it has two frames: 0 => root and 1 => > default. Right ? If so, why not stick with the root frame by > default ? > Yes there is two frames at startup. Because I think that the first thing most users will do is to add a default frame to contain its applications. I have a special X session where I am just playing with CLFSWM source code and make test. There, I do not need anything but the root frame :) I make changes and then test them there. Except in some rare cases you don't want to have all your windows maximized and not resizable. I think that the first application window have to go in its own frame and not in the root frame (you can make it fullscreen after if you want). Why not have an option for this behaviour ? Then, we would have to check the value of a variable and we would have to act according to this variable. > Well I tried that it throws an error when I want to create a > frame : > > DEBUG[2 - dbg] *ROOT-FRAME*=# > DEBUG[3 - dbg] *CURRENT-CHILD*=NIL > DEBUG[4 - dbg] *CURRENT-ROOT*=# > > *** - NO-APPLICABLE-METHOD: When calling # with arguments (NIL NIL), no method is > applicable. > The following restarts are available: > RETRY :R1 try calling CLFSWM::SELECT-CHILD again > RETURN :R2 specify return values > > I should probably have removed the setf *current-child*. > What is the code exactly? Because it seems that you haven't defined the current child (*CURRENT-CHILD*=NIL). Yes, I had something wrong here. I fixed it. Another thing, it's the root frame which contain all other children (frames or application windows). The only thing you can do with the *root-frame* is to append some children in its child list. Yes. Then you have to tell which is the current root (the child that have to be fullscreen maximized) and which is the current child (the selected and focused child). This is, in fact, what I found difficult to understand at first. Now, it is all crystal clear to me and I (finally) understood the concept. Thank you for your explanation(s). Xavier -- http://www.gnu.org http://www.april.org http://www.lolica.org From xma at gnu.org Mon Apr 14 00:00:09 2008 From: xma at gnu.org (Xavier Maillard) Date: Mon, 14 Apr 2008 02:00:09 +0200 Subject: [clfswm-devel] Problem with revision 74 In-Reply-To: <87d4ouomi4.fsf@free.fr> (message from Philippe Brochard on Sat, 12 Apr 2008 22:18:27 +0200) References: <200804120000.m3C00Nqf004865@localhost.localdomain> <87d4ouomi4.fsf@free.fr> Message-ID: <200804140000.m3E0096t012486@localhost.localdomain> > Now Typing M-t ! just works, err, partially. Actually it prompts > me for a command to enter and then, it throws an error: > > ;; Loading file /home/xma/etc/clfswm/clfswmrc ... > ;; Loaded file /home/xma/etc/clfswm/clfswmrc > DEBUG[1 - dbg] *DISPLAY*=# > > *** - XLIB:GRAB-KEY: :ANY is not of type XLIB:CARD8 > Break 1 [1]> > Well first, what is your lisp implementation, your clx implementation, your distribution (maybe I can test directly with it)? This is CLISP 2.44 with these features: :ASDF-INSTALL :ASDF :CLX-ANSI-COMMON-LISP :CLX :REGEXP :SYSCALLS :I18N :LOOP :COMPILER :CLOS :MOP :CLISP :ANSI-CL :COMMON-LISP :LISP=CL :INTERPRETER :SOCKETS :GENERIC-STREAMS :LOGICAL-PATHNAMES :SCREEN :GETTEXT :UNICODE :BASE-CHAR=CHARACTER :PC386 :UNIX) Second thing, the only reference of grab-key is in xlib-util.lisp in grab-all-keys. Which of the two :any cause the problem? It definetely is the code parameter. I tested with something like this and it works perfectly: (defun grab-all-keys (window) (ungrab-all-keys window) (xlib:grab-key window (char->keycode #\0) :modifiers :any :owner-p nil :sync-pointer-p nil :sync-keyboard-p t)) By the way, what is this :any thing ? I tried to find its definition but I failed. Regards, Xavier -- http://www.gnu.org http://www.april.org http://www.lolica.org From xma at gnu.org Mon Apr 14 00:00:17 2008 From: xma at gnu.org (Xavier Maillard) Date: Mon, 14 Apr 2008 02:00:17 +0200 Subject: [clfswm-devel] [PATCH] Do not create another empty frame on startup. In-Reply-To: <87abk4j76b.fsf@free.fr> (message from Philippe Brochard on Wed, 09 Apr 2008 00:47:08 +0200) References: <200804080629.m386TVuP007462@localhost.localdomain> <87abk4j76b.fsf@free.fr> Message-ID: <200804140000.m3E00Hfc012498@localhost.localdomain> Xavier Maillard writes: > With current code, it may confuse users to have two empty frames on > startup. > > This patch just remove the creation of the "default" frame of id 1. > There is no two empty frames on startup. There is the root frame which contain a default frame. Yes. I still think we should make the first frame creation, an option or just stick with the hook setting. Why not put the "default frame" in the *init-hook* as the default ? Dunno what do other people think about this, but I _really_ do not like the default frame with no "easy way" to get rid of it except killing the frame (or renaming it). So something like this: In package.lisp (defun default-init-hook () (let ((frame (add-frame (create-frame :name "Default" :layout nil :x 0.05 :y 0.05 :w 0.9 :h 0.9) *root-frame*))) (setf *current-child* (first (frame-child *current-root*))))) (defparameter *init-hook* #'default-init-hook) would be much acceptable to me. I am sending a patch on top of this one. In the end all parts will be happy: - you. Still have the default frame created if you install these two patches - I, since I will be able to easily change that by just setting another value to *init-hook* if I want to. Regards, Xavier -- http://www.gnu.org http://www.april.org http://www.lolica.org From xma at gnu.org Sun Apr 13 23:15:42 2008 From: xma at gnu.org (Xavier Maillard) Date: Mon, 14 Apr 2008 01:15:42 +0200 Subject: [clfswm-devel] [PATCH] Let users decide whether or not create a default frame when starting up Message-ID: <200804140000.m3E00JZo012504@localhost.localdomain> In this patch, we just move the default frame creation into the *init-hook* hook. So users just have to tweak the hook definition if they do not want to have a default frame when CLFSWM starts. Signed-off-by: Xavier Maillard --- If you decide to apply this patch, do not forget to also apply patch 183669702cf10737746efc80ad16737846afb9a4 ('Do not create another empty frame on startup.') You will have to amend the patch to change the commit message though. src/package.lisp | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) diff --git a/src/package.lisp b/src/package.lisp index 21a4591..20c2e4c 100644 --- a/src/package.lisp +++ b/src/package.lisp @@ -129,7 +129,13 @@ others in the same frame") ;;; See clfswm.lisp for hooks examples. ;;; Init hook. This hook is run just after the first root frame is created -(defparameter *init-hook* nil) +(defun default-init-hook () + (let ((frame (add-frame (create-frame :name "Default" + :layout nil :x 0.05 :y 0.05 + :w 0.9 :h 0.9) *root-frame*))) + (setf *current-child* (first (frame-child *current-root*))))) + +(defparameter *init-hook* #'default-init-hook) ;;; Main mode hooks (set in clfswm.lisp) (defparameter *button-press-hook* nil) -- 1.5.2.2 From pbrochard at common-lisp.net Mon Apr 14 20:04:20 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Mon, 14 Apr 2008 22:04:20 +0200 Subject: [clfswm-devel] Frame: odd behavior ? In-Reply-To: <200804140000.m3E00FBe012496@localhost.localdomain> (Xavier Maillard's message of "Mon\, 14 Apr 2008 02\:00\:15 +0200") References: <200804070000.m3700AMa013290@localhost.localdomain> <87y77pna65.fsf@free.fr> <200804080000.m38002bC005401@localhost.localdomain> <87od8kj88k.fsf@free.fr> <200804140000.m3E00FBe012496@localhost.localdomain> Message-ID: <87y77gi4or.fsf@free.fr> Xavier Maillard writes: > Xavier Maillard writes: > > > > Maybe I am dumb, maybe I misunderstood something _but_ I can't > > > find how to have multiple frames In full screen mode. > > > > > > Can somebody explain exactly what a frame is now in the CLFSWM > > > terminology ? > > > > > A frame is a geometrical group which can contain some other frames or > > some application windows. > > The current root frame is fullscreen maximized. > > > > So when CLFSWM is starting, it has two frames: 0 => root and 1 => > > default. Right ? If so, why not stick with the root frame by > > default ? > > > Yes there is two frames at startup. Because I think that the first > thing most users will do is to add a default frame to contain its > applications. > > I have a special X session where I am just playing with CLFSWM > source code and make test. There, I do not need anything but the > root frame :) I make changes and then test them there. > Ah, ok, like me when I debug it. > Except in some rare cases you don't want to have all your windows > maximized and not resizable. I think that the first application window > have to go in its own frame and not in the root frame (you can make it > fullscreen after if you want). > > Why not have an option for this behaviour ? Then, we would have > to check the value of a variable and we would have to act > according to this variable. > Your patch to put this behaviour in the default hook is prefect. I have not to think in advance to what users want to do with there clfswm :) > > Well I tried that it throws an error when I want to create a > > frame : > > > > DEBUG[2 - dbg] *ROOT-FRAME*=# > > DEBUG[3 - dbg] *CURRENT-CHILD*=NIL > > DEBUG[4 - dbg] *CURRENT-ROOT*=# > > > > *** - NO-APPLICABLE-METHOD: When calling # with arguments (NIL NIL), no method is > > applicable. > > The following restarts are available: > > RETRY :R1 try calling CLFSWM::SELECT-CHILD again > > RETURN :R2 specify return values > > > > I should probably have removed the setf *current-child*. > > > What is the code exactly? Because it seems that you haven't defined > the current child (*CURRENT-CHILD*=NIL). > > Yes, I had something wrong here. I fixed it. > > Another thing, it's the root frame which contain all other children > (frames or application windows). The only thing you can do with the > *root-frame* is to append some children in its child list. > > Yes. > In fact another important thing you can do withthe root frame is to set an automatic layout. > Then you have to tell which is the current root (the child that have > to be fullscreen maximized) and which is the current child (the > selected and focused child). > > This is, in fact, what I found difficult to understand at first. > Now, it is all crystal clear to me and I (finally) understood the > concept. Thank you for your explanation(s). > Yes I think I have to be clear for the next release because now clfswm is less conventional and the tree view is not something easy to understand. A little video may help here. Philippe -- Philippe Brochard http://hocwp.free.fr From pbrochard at common-lisp.net Mon Apr 14 20:14:20 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Mon, 14 Apr 2008 22:14:20 +0200 Subject: [clfswm-devel] Problem with revision 74 In-Reply-To: <200804140000.m3E0096t012486@localhost.localdomain> (Xavier Maillard's message of "Mon\, 14 Apr 2008 02\:00\:09 +0200") References: <200804120000.m3C00Nqf004865@localhost.localdomain> <87d4ouomi4.fsf@free.fr> <200804140000.m3E0096t012486@localhost.localdomain> Message-ID: <87r6d8i483.fsf@free.fr> Xavier Maillard writes: > > Now Typing M-t ! just works, err, partially. Actually it prompts > > me for a command to enter and then, it throws an error: > > > > ;; Loading file /home/xma/etc/clfswm/clfswmrc ... > > ;; Loaded file /home/xma/etc/clfswm/clfswmrc > > DEBUG[1 - dbg] *DISPLAY*=# > > > > *** - XLIB:GRAB-KEY: :ANY is not of type XLIB:CARD8 > > Break 1 [1]> > > > > Well first, what is your lisp implementation, your clx implementation, > your distribution (maybe I can test directly with it)? > > This is CLISP 2.44 with these features: > > :ASDF-INSTALL :ASDF :CLX-ANSI-COMMON-LISP > :CLX :REGEXP :SYSCALLS :I18N :LOOP :COMPILER > :CLOS :MOP :CLISP > :ANSI-CL :COMMON-LISP :LISP=CL :INTERPRETER :SOCKETS > :GENERIC-STREAMS :LOGICAL-PATHNAMES :SCREEN :GETTEXT > :UNICODE :BASE-CHAR=CHARACTER :PC386 :UNIX) > Ok, thanks. > Second thing, the only reference of grab-key is in xlib-util.lisp in > grab-all-keys. Which of the two :any cause the problem? > > It definetely is the code parameter. > > I tested with something like this and it works perfectly: > > (defun grab-all-keys (window) > (ungrab-all-keys window) > (xlib:grab-key window (char->keycode #\0) > :modifiers :any > :owner-p nil > :sync-pointer-p nil > :sync-keyboard-p t)) > Ok, great! > By the way, what is this :any thing ? I tried to find its > definition but I failed. > :any is here to say to grab *all* keys. It's a way to avoid a loop on all keycodes. For information, my bible is here (CLX manual): http://www.stud.uni-karlsruhe.de/~unk6/clxman/ BTW I revert to the old strategie where clfswm grab only needed keys. And I have add some cases to handle properly the shift key in the main mode. I find this more logical than to grab all keys and let pass those where clfswm has nothing to do with. > Regards, > Regards, Philippe -- Philippe Brochard http://hocwp.free.fr From pbrochard at common-lisp.net Mon Apr 14 20:36:51 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Mon, 14 Apr 2008 22:36:51 +0200 Subject: [clfswm-devel] [PATCH] Let users decide whether or not create a default frame when starting up In-Reply-To: <200804140000.m3E00JZo012504@localhost.localdomain> (Xavier Maillard's message of "Mon\, 14 Apr 2008 01\:15\:42 +0200") References: <200804140000.m3E00JZo012504@localhost.localdomain> Message-ID: <87iqykfa1o.fsf@free.fr> Xavier Maillard writes: > In this patch, we just move the default frame creation into the > *init-hook* hook. So users just have to tweak the hook definition if > they do not want to have a default frame when CLFSWM starts. > You are absolutly right, the default hook is the right place to have the default frame creation: this let the user do what he wants with its frames. Thanks for the idea, Regards, Philippe -- Philippe Brochard http://hocwp.free.fr From xma at gnu.org Tue Apr 15 22:03:31 2008 From: xma at gnu.org (Xavier Maillard) Date: Wed, 16 Apr 2008 00:03:31 +0200 Subject: [clfswm-devel] [PATCH] Let users decide whether or not create a default frame when starting up In-Reply-To: <200804140000.m3E00JZo012504@localhost.localdomain> (message from Xavier Maillard on Mon, 14 Apr 2008 01:15:42 +0200) References: <200804140000.m3E00JZo012504@localhost.localdomain> Message-ID: <200804152203.m3FM3V4t004944@localhost.localdomain> Hi howcp, Out of curiosity, how do you apply patch sent with git format-patch ? It seems to me you are doing wrong with them. The simplest method is: 1. save the mail in the mailbox format 2. git am this file Regards Xavier -- http://www.gnu.org http://www.april.org http://www.lolica.org From xma at gnu.org Tue Apr 15 22:03:31 2008 From: xma at gnu.org (Xavier Maillard) Date: Wed, 16 Apr 2008 00:03:31 +0200 Subject: [clfswm-devel] Problem with revision 74 In-Reply-To: <87y77hl7zc.fsf@free.fr> (message from Philippe Brochard on Mon, 14 Apr 2008 00:12:39 +0200) References: <200804120000.m3C00Nqf004865@localhost.localdomain> <87y77hl7zc.fsf@free.fr> Message-ID: <200804152203.m3FM3UfL004939@localhost.localdomain> I think your problem have been solved in the 76 revision. I revert to the old grabbing strategie and add more cases with the shift key. Yes it works. I think keygrabbing is robust now (as in the past) but it handle all cases (I hope). I do not understand this sentence. Thank you. Xavier -- http://www.gnu.org http://www.april.org http://www.lolica.org From pbrochard at common-lisp.net Thu Apr 17 12:25:21 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Thu, 17 Apr 2008 14:25:21 +0200 Subject: [clfswm-devel] Problem with revision 74 In-Reply-To: <200804152203.m3FM3UfL004939@localhost.localdomain> (Xavier Maillard's message of "Wed\, 16 Apr 2008 00\:03\:31 +0200") References: <200804120000.m3C00Nqf004865@localhost.localdomain> <87y77hl7zc.fsf@free.fr> <200804152203.m3FM3UfL004939@localhost.localdomain> Message-ID: <87wsmwfz2m.fsf@free.fr> Xavier Maillard writes: > I think your problem have been solved in the 76 revision. I revert to > the old grabbing strategie and add more cases with the shift key. > > Yes it works. > Ah, cool :) > I think keygrabbing is robust now (as in the past) but it handle all > cases (I hope). > > I do not understand this sentence. > The code I tested in the 74/75 revision was less stable because the key grabbing was made on all keys, on all modifiers and on all windows. If one window had not the grab the keyboard apear to freeze. And this occur too mush time on my box to continue to use this code. Your problem is due to the fact that the old code doesn't handle the shift key properly (this is the all the cases part). This is solved now. > Thank you. > Regards, Philippe -- Philippe Brochard http://hocwp.free.fr From pbrochard at common-lisp.net Thu Apr 17 12:29:32 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Thu, 17 Apr 2008 14:29:32 +0200 Subject: [clfswm-devel] [PATCH] Let users decide whether or not create a default frame when starting up In-Reply-To: <200804152203.m3FM3V4t004944@localhost.localdomain> (Xavier Maillard's message of "Wed\, 16 Apr 2008 00\:03\:31 +0200") References: <200804140000.m3E00JZo012504@localhost.localdomain> <200804152203.m3FM3V4t004944@localhost.localdomain> Message-ID: <87skxkfyvn.fsf@free.fr> Xavier Maillard writes: > Hi howcp, > Hi Xavier, > Out of curiosity, how do you apply patch sent with git > format-patch ? It seems to me you are doing wrong with them. > > The simplest method is: > > 1. save the mail in the mailbox format > 2. git am this file > Sure I'm doing something wrong: I apply one line patchs manually with a copy/paste :) I haven't thougth that spaces matter for the diff. I'll use a more conventional way for next patchs. > Regards > Regards, Philippe -- Philippe Brochard http://hocwp.free.fr From Matthieu.Moy at imag.fr Thu Apr 17 12:35:43 2008 From: Matthieu.Moy at imag.fr (Matthieu Moy) Date: Thu, 17 Apr 2008 14:35:43 +0200 Subject: [clfswm-devel] [PATCH] Let users decide whether or not create a default frame when starting up In-Reply-To: <87skxkfyvn.fsf@free.fr> (Philippe Brochard's message of "Thu\, 17 Apr 2008 14\:29\:32 +0200") References: <200804140000.m3E00JZo012504@localhost.localdomain> <200804152203.m3FM3V4t004944@localhost.localdomain> <87skxkfyvn.fsf@free.fr> Message-ID: Philippe Brochard writes: > Xavier Maillard writes: > >> Hi howcp, >> > Hi Xavier, > >> Out of curiosity, how do you apply patch sent with git >> format-patch ? It seems to me you are doing wrong with them. >> >> The simplest method is: >> >> 1. save the mail in the mailbox format >> 2. git am this file >> > Sure I'm doing something wrong: I apply one line patchs manually with > a copy/paste :) git am will also take the log message (Subject line + email body until "---"), so it saves two cut-and-paste ;-). -- Matthieu From pbrochard at common-lisp.net Thu Apr 17 13:17:42 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Thu, 17 Apr 2008 15:17:42 +0200 Subject: [clfswm-devel] [PATCH] Let users decide whether or not create a default frame when starting up In-Reply-To: (Matthieu Moy's message of "Thu\, 17 Apr 2008 14\:35\:43 +0200") References: <200804140000.m3E00JZo012504@localhost.localdomain> <200804152203.m3FM3V4t004944@localhost.localdomain> <87skxkfyvn.fsf@free.fr> Message-ID: <87od88fwnd.fsf@free.fr> Matthieu Moy a ?crit : > Philippe Brochard writes: > >> Xavier Maillard writes: >> >>> Hi howcp, >>> >> Hi Xavier, >> >>> Out of curiosity, how do you apply patch sent with git >>> format-patch ? It seems to me you are doing wrong with them. >>> >>> The simplest method is: >>> >>> 1. save the mail in the mailbox format >>> 2. git am this file >>> >> Sure I'm doing something wrong: I apply one line patchs manually with >> a copy/paste :) > > git am will also take the log message (Subject line + email body until > "---"), so it saves two cut-and-paste ;-). > Ah, yes thanks for the hint. I promise I'll not do it any more :) Philippe -- Philippe Brochard http://hocwp.free.fr From pbrochard at common-lisp.net Fri Apr 25 23:40:36 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Sat, 26 Apr 2008 01:40:36 +0200 Subject: [clfswm-devel] Help needed with the git repository Message-ID: <87zlrhlczv.fsf@free.fr> Hi all, I'm sad, but it seems that it's too work for me to maintain two repository. The svn doesn't cause any problem but I have always some boring conflicts with the git repository. I haven't found what I'm doing wrong (I give some details at the end of this mail if that's help) and it tooks me less time to write an automatic conflict cleaner in lisp than to found how to prevent them... So I've decided to not maintain the git repository on common-lisp.net any more. But I find git useful, so if someone want to maintain a git repository on a public domain, feel free do to so and share your link. In all cases, git-svn is style working with the common-lisp.net svn repository. So you can continu to use git if you want. Sorry for the inconvenience, Philippe PS: Here is the script I use to commit on both svn and git repository. -------------------------------------------------- #!/bin/sh TMP_REPO=/tmp/clfswm.git git commit -a -m "$1" rm -rf $TMP_REPO git repack -d git update-server-info git clone --bare -l --no-hardlinks . $TMP_REPO git --bare --git-dir=$TMP_REPO update-server-info rsync -avz $TMP_REPO pbrochard at common-lisp.net:/project/clfswm/public_html/ rm -rf $TMP_REPO git svn dcommit -------------------------------------------------- -- Philippe Brochard http://hocwp.free.fr From pbrochard at common-lisp.net Fri Apr 25 23:57:24 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Sat, 26 Apr 2008 01:57:24 +0200 Subject: [clfswm-devel] How to handle transient windows (was: Navigation inside multiple frames setup ?) In-Reply-To: <200804080000.m38007ux005408@localhost.localdomain> (Xavier Maillard's message of "Tue\, 8 Apr 2008 02\:00\:07 +0200") References: <200804070000.m3700CtF013297@localhost.localdomain> <87skxxn9d8.fsf@free.fr> <200804080000.m38007ux005408@localhost.localdomain> Message-ID: <87prsdij2z.fsf_-_@free.fr> Xavier Maillard writes: > Speaking of aMSN, my sister often offers me to see her webcam. > The problem is that this window is a transient window. How can I > manage such window to force it to go in a particular frame ? > I've add in the last svn revision the ability to choose what window type to handle. To handle the webcam window, you just need to say to its frame that it must handle the transient window type: second_mode -> f(rame) -> w(indow type) -> a(ll) or m(odify) for more control Or this can be done automatically with a hook. Also, I've planed for the next revision to manage transient windows with the mouse (they are already a little manageable with the keyboard with center and force to move in frame). Hope that helps, Regards, Philippe -- Philippe Brochard http://hocwp.free.fr From pbrochard at common-lisp.net Sun Apr 27 12:04:29 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Sun, 27 Apr 2008 14:04:29 +0200 Subject: [clfswm-devel] Help needed with the git repository In-Reply-To: <87zlrhlczv.fsf@free.fr> (Philippe Brochard's message of "Sat\, 26 Apr 2008 01\:40\:36 +0200") References: <87zlrhlczv.fsf@free.fr> Message-ID: <87ej8rijw2.fsf@free.fr> Hi all, Well I have set up a git repository on repo.or.cz to manage the git server part: http://repo.or.cz/w/clfswm.git Now I maintain the svn repo on common-lisp.net and the git repo on repo.or.cz. So you can fetch clfswm with svn or git at your convenience: svn checkout svn://common-lisp.net/project/clfswm/svn/clfswm or git clone git://repo.or.cz/clfswm.git I have also removed the git repository on common-lisp.net. I hope this will be the last change with the git part... Regards, Philippe -- Philippe Brochard http://hocwp.free.fr From pbrochard at common-lisp.net Wed Apr 30 22:38:15 2008 From: pbrochard at common-lisp.net (Philippe Brochard) Date: Thu, 01 May 2008 00:38:15 +0200 Subject: [clfswm-devel] Near to a new release of CLFSWM Message-ID: <87skx3vui0.fsf@free.fr> Hi, As there is less urgent things in the TODO file, I think I'll make a release this week. Before doing something wrong, any feedback on the last changes on clfswm is welcome. Some new things are the managed/unmanaged window menu and the move window over frame (ctrl+alt+b1). There is also a new autodoc for the menu. See here for the automatic produced pages: http://trac.common-lisp.net/clfswm/browser/clfswm/doc/menu.txt?format=raw http://trac.common-lisp.net/clfswm/browser/clfswm/doc/menu.html?format=raw Before the release, I need to update the clfswm website. I'll revert the CVS to the 0801 version for those who doesn't like the new clfswm way. The GIT or SVN is now used for new devel. Also, the wiki need to be updated (at least the clfswm presentation). And, after the release, it'll become public. Cyrille, your page on the UserAPI is not linked from the main page. http://trac.common-lisp.net/clfswm/wiki/UserAPI All is ok for me, even if I don't see clfswm as something so well defined (clfswm is more a "Argh, I need to do this with my windows. Ok, let's add a new function" :) ) I think I'll just let the groups concept to do in the contrib part. Have fun, Philippe -- Philippe Brochard http://hocwp.free.fr