[clfswm-devel] Frame: odd behavior ?

Philippe Brochard pbrochard at common-lisp.net
Tue Apr 8 22:24:11 UTC 2008


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*=#<CLFSWM::FRAME #x204A843E>   
> DEBUG[3 - dbg]  *CURRENT-CHILD*=NIL   
> DEBUG[4 - dbg]  *CURRENT-ROOT*=#<CLFSWM::FRAME #x204A843E>   
>
> *** - NO-APPLICABLE-METHOD: When calling #<STANDARD-GENERIC-FUNCTION CLFSWM::SELECT-CHILD> 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    <pbrochard at common-lisp.net>
                      http://hocwp.free.fr




More information about the clfswm-devel mailing list