[xmonad] Re: Real Tabbing?

Anders Engström ankaan at gmail.com
Wed Feb 11 14:03:30 EST 2009


I think the most logical would be to let mod+j/k switch tabs and when
there are no more tabs go to the next pane. This way, they will keep
the same functionality. Other bindings (messages) should then be
created to handle cycling through tabs or panes separately.

Moving between panes could be done with the already existing
WindowNavigation. But a cycle through panes should also be available.

I have been thinking about how signals would then propagate through
the combined layout. If this is implemented as a layout modifier, let
us say that all messages is sent to the outermost layout. Primarily
the layout modifier itself, but all unhandled messages is sent to the
layout that is splitting the panes.

Furthermore if a new message class is introduced, let us call it
PropagateMessage for now. If we wish to send the message to an inner
layout the message oldMessage is encapsulated in PropagateMessage. The
layout modifier decapsulates this message and sends it to the layout
which handles the window that is focused.

It may seem cumbersome to write keybindings for this, but I think it
could easily be solved by a recursive submap. Each time the submap is
entered another PropagateMessage would be added infront of all
messages that are sent. This solution is very similar to what is seen
in the terminal application screen where the sequence "ctrl-a a" sends
a "ctrl-a" to the screen inside.

The biggest problem about the behaviour I can see is how to start
placing windows in a new pane. Any ideas?
Moving windows from pane to pane is solved by WindowNavigation.
Swapping panes with eachother should not be too hard to solve.

On Wed, Feb 11, 2009 at 19:44, Braden Shepherdson
<Braden.Shepherdson at gmail.com> wrote:
> Dominik Bruhn wrote:
>>
>> Hy,
>> is there any chance we might get real tabbing support in xmonad?
>>
>> Ill try to explain what I mean by that:
>> I often use the "Tall" Layout. It would be nice If I could take any frame
>> and
>> apply a tabbed layout on it so that I can open several windows within that
>> frame
>> and get some tabs. Currently I cant get this behaviour because I have to
>> select
>> the frames where I want tabbing uppon compiletime and there is no
>> keybinding for
>> switching the tabs.
>>
>> So what I'm searching for is:
>>
>> 1. A Keystroke which makes the current frame tabbed
>> 2. A possibility to shift a window into a frame (so it gets another tab)
>> and out
>> again.
>> 3. The current Keybindings like Mod+{j,k} stay the same, they dont switch
>> tabs.
>> 4. New Keybindings for moving to the next tab in the current frame.
>>
>> Is it possible at all? I'm not into the xmonad sourcecode but perhaps the
>> stack-set datastructure is not the right choice for this features. Perhaps
>> some
>> developers can tell about this.
>>
>> This is the only feature which im missing and which could make me go to
>> ion3
>> because everytime I see a ion3 I love this feature.
>>
>> So, lets discuss!
>
> I suspect I'm not alone in pondering this one off and on. It's a common
> request. There are some questions of the  interface, whether mod+j/k switch
> panes or tabs, but there are sensible defaults and room for customization.
>
> Build a TabbedTall layout specifically would likely be a little tricky, but
> perfectly possible. The bigger question is whether it would be possible to
> implement this as a LayoutModifier that could be strapped atop any (well,
> most) other layouts. I suppose it could keep a list of lists of windows, and
> give the underlying layout a list of "windows" which were actually the
> tabbed panes.
>
> My money is on possible, but it's nontrivial.
>
> I won't volunteer; I don't have the time to continue with my current
> xmonad-mangling project, ScreenWorkspaces. Taking 5 courses in one's major
> in one term is not recommended.
>
>
> Braden Shepherdson
> shepheb
>
> _______________________________________________
> xmonad mailing list
> xmonad at haskell.org
> http://www.haskell.org/mailman/listinfo/xmonad
>


More information about the xmonad mailing list