Hi everyone.

I am looking for some advice from those of you experienced building modules.

I am running into workflows where the ideal window split is not equal to
the number of apps that I need to work with.  For example, in the main
group that I use for (say) graphic design, I might only have one vertical
frame split with two main apps open BUT I need to occasionally interact
with about 5 apps total.

The problem I am running into is that the unfocused apps are not
conveniently ordered and even if I spent time ordering them and assigning
shortcuts to yank them into view its not useful because the total number of
apps can even by dynamic meaning that it might not be the same 5 apps
between sessions or I may need 7 temporarily and so forth.

In thinking about this problem, I was thinking that building a Firefox
style tabs feature (ones that look like tabs, not the stupid tabs the
latest FF has, dear lord ... ) might actually help me with my workflow.  If
I am thinking of my graphics workflow with one vertical split where one
frame is larger than the other, I would like to be able to activate the
tabs feature in the smaller frame and "attach" apps to each tab such that
each tab is labeled with the app name.

The tabs would need to:

* Tabs should be draggable so they can be reordered unless they are pinned.

* Be pinnable so the pinned tabs stay in their order.  Some tabs are more
important than others, unpinned tabs can be draggable and pinned ones not.

* If tabs are active in a frame and an app is sent to the frame, yanked
into the frame or started in the frame the app would be "attached to a new
tab".  We just automatically assume a tabbed frame opens up a new app in a
tab like in a browser.

* Prefix + f = would label the tabs just as if they were frames so we can
jump to them with keystrokes.

* WISHFUL THINKING FEATURE: Modal dialogs would need to be captured and
"kept" with the tab.  This means that a tab would be equivalent to a frame
and would render modal dialog boxes on top of their parent app just as they
would if you were to open a modal dialog box on a screen with no frame
splits.  This would also imply that core functionality would not change and
that frames behave as they always would with stacked windows.  Tabs,
technically, would only be a visual metaphor allowing us to see / organize
the stacked window order and on click would simply yank the stacked window
into the frame just as we do now with Prefix + " + select window.  In a
way, tabs would be a special use case for the modeline PER frame.

* NOTE: I know the first suggestion will be to just use the modeline and
customize that.  I would VERY MUCH like to avoid the modeline metaphor
entirely as it stands currently.  I cannot stand the metaphor of the panel
with a bunch of useless garbage in it, if I need to know something about my
system I can just open up the right app with a keystroke (this is StumpWM
afterall, not KDE).  The modeline occupies the panel space and spans all
frames on every side of a monitor that you drag it to.  However, if
modeline has the capability that I am looking for and could be forked and
made into a module to render ONLY in the frame that needs tabs enabled for
it, I would not object to that suggestion.

I have read through all the modules and you guys have done some amazing
work to add features to StumpWM.  Does anyone here have any suggestions on
how the above feature might best be developed?  I have a little bit of
experience with lisp and wouldn't mind trying to hack this together, but I
don't fully understand where to start and how to think about how this might
be achievable.

I am looking for experienced suggestions from those of you that have dug
into the guts of StumpWM and who might have an idea of how we might shove
the tab metaphor into any frame (maybe even allow it to be draggable to
each side of a frame for the rest of you weirdos that like that kind of
thing) and even re-purpose as much existing code as possible to get this
done.

I am particularly curious if you guys think this should be done purely with
existing StumpWM bits and bobs or if it ought to be done using something
like McClim.

What do you guys think?  What might be the best way to think about how this
feature should be developed?

Any help is appreciated as I will have a lot of learning to do.

Robert

Reply via email to