[xmonad] How to configure TwoPane to this way

Chengqi Song songcq at gmail.com
Mon Mar 22 02:07:50 EDT 2010


Cool, rotFocusedDown and Up works for me.

I'm trying to get Keybinding per Layout work

On Sun, 21 Mar 2010, Wirt Wolff wrote:

> Excerpts from Chengqi Song's message of Sun Mar 21 10:34:13 -0600 2010:
> > Thanks for your analysis. The layout is like this:
> > 
> > 1. It always has two panes, left and right;
> > 
> > 2. Suppose we have windows A, B, C, D and E; currently left pane displays A and right pane displays B; A is focused:
> >    (A)|B [C, D, E]
> >    window in () is focused, windows in [] are not visible;
> > 
> > 3. When pressing M-J/K, left pane switches between all windows expect B, focus in always on left pane.
> >    so it can become:
> >    (C)|B [A, D, E]
> >    (D)|B [A, C, E]
> >    (E)|B [A, C, D]
> > 
> > 4. When pressing M-S, focus switches between left and right pane.
> >    so it can become:
> >    A|(B) [C, D, E]
> > 
> > 5. When focus is on right pane, when pressing M-J/K, right pane switches between all windows expect A:
> >    A|(C) [B, D, E]
> >    A|(D) [A, C, E]
> >    A|(E) [A, C, D]
> > 
> > Is there any solution for this requirement?
> > 
> 
> Hi lars,
> 
> For the TwoPane binding on M-J/K, if I understand what you want, then
> rotFocusedUp and rotFocusedDown from XMonad.Actions.CycleWindows should
> do it. So if you use those on "M-j" "M-k" you'd be rebinding those to
> act differently in all layouts. When I used to use TwoPane most all the
> time, I put rotFocused bindings on M-U/I to keep using M-J/K in other
> tiling layouts, but you could get fancier to have less key bindings
> (see below).
> 
> For the M-S switch this is the version I used to use:
> i.e. ("M-s", windows (W.modify' switchTP))
> 
> switchTP (W.Stack t [] (r:rs)) = W.Stack r [t] rs   -- master focused
> switchTP (W.Stack t [l] rrs) = W.Stack l [] (t:rrs) -- other focused
>                 -- TwoPane never has more than one above focus
> switchTP s = s  -- do nothing if one window or not TwoPane-ish
> 
> Hopefully that is good enough for that part of what you're wanting.
> 
> If having the same key actions for all layouts doesn't work so well
> for you, you could perhaps:
> 
> * Put layouts that all work well with the TwoPane bindings on a few
> workspaces only, with Layout.PerWorkspace. Then you can use
> Actions.PerWorkspaceKeys to have the TwoPane key bindings only on
> those workspaces.
> 
> * Get a modified version of PerWorkspaceKeys working with layout
> descriptions rather than workspace tags so that your key bindings
> run TwoPane actions only in TwoPane layout variations and otherwise
> run defaults. (Attached is long abandoned ConditionalKeys experiment
> that shows over-complicated clues about how to do that.)
> -- 
> wmw




More information about the xmonad mailing list