Blog's control panel: | Home | Tags | Index | Rss 2.0

Fluxbox and temporary virtual desktop: a proposal for a new workflow

Thu, 31 May 2007 | Permalink | Tags:

I've been a fluxbox user almost since the beginning, then I had a period where I tried other WMs but after 10 months I'm back to square one, there's just nothing better. Along the years I've made several customizations to my desktop environment in order to improve my work flow, and some things made such a huge difference you wouldn't believe it. Being a system administrator the 90% of the applications sitting on my desktop are terminals, and I got to a point where I just got too many of them, but cant really do with less.
I've tried to rethink the way I'm working, reusing xterms rather than opening new ones, creating new virtual desktops to divide terms on local machines to remote ones, and so on, to no avail. But the key is there, task separation, which incidentally implies grouping. I used fluxbox's grouping in the past, but that's more tabbing than logically grouping windows; and I find it awkward as I'm not able to see output from more than a window at the same time, and I'm commonly tailing logs on some host and editing something else on another. Nonetheless I didn't want to abandon this idea of grouping, it seemed right, it's just the grouping that should been implemented otherwise. After all, illusion of multitasking aside, you always work on a task at time, and that's your group, whatever it involves. I spent (should say waste really) an insane amount of time thinking about volatile sessions and all kind of structures until I went ranting about it on #fluxbox. In 2 sentences Ak|ra showed me how what I wanted could be implemented with simple virtual desktops, brilliant! I guess I was so used to the idea of partitioning my WM into several static vdesktops (main, email, web, local, remote) that I missed their flexibility.

The problem

Summarizing what I've been saying so far, the problem is dealing with a very large number of windows, which especially in the case of terminals can look all the same making it hard to locate/browse to the right one.

The solution

The solution is to logically group windows, which is quite different than tabs/grouping. As suggested the best way to do it is with virtual desktops, but then a problem of too many desktops arises, with inherited growing number of shortcuts and what-is-what issues. I cant see much of a point to end up with like 20 empty vdesktops or tons of unused windows (if you decide to restore stuff on each of them, ready to go). What I do like is the idea of temporary desktops in addition to a few standard ones, so you can keep your well known apps (email, irc, web) separated, and then have a dynamic work pool.

Current situation/limitations

This refers to version 1.0rc2
Currently the workspace management is very limited. It's possible to add/delete/rename a workspace only via the WS menu, and in case of delete only deleting last workspace is possible, which is definitely a show-stopper. Another big problem is posed by movements through workspaces: whenever there's an high number of items involved, cycling through them isn't ever a good solution, so the Prev/Next - Left/Right Workspace arent valid options (I'm talking of keyable here, mouse is damn slow and should be avoided as much as possible). The other available action is Workspace <number>, but since we're discussing dynamic WS management that makes very little sense.

Proposed implementation

Add WS should be keyable. It should pop a dialog where you can input the name of the desktop or assign it a random one (and not leave it blank as currently doing). Basic/static WSs are setup via config files, so what you're likely to add on the fly are dynamic ones, hence order doesn't really matter so they can just be appended at the end.
Delete should be completely rewritten as it makes no sense to delete the last WS. Without adding to much complexity to support parameters like name or number, deleting current looks like the best option.
Rename is alright , it just needs to be keyable.
Moving through the workspaces is the big thing, but considering what's in 1.0rc3 (typeahead support to menus) it shouldn't be too much work. Because that's the winning way to do it: if you have a long list of items there's no way out, the best thing to do is reduce that list, and typeahead is the right choice. So ideally you can bring up a list of workspaces (obviously function should be keyable) and then type a few chars and use arrows to select what you want. That should be enough to reach any desktop within 4 keystrokes, no matter how many you've got (unless you use very silly names).

Dream on: ws templates and group management

Once logical groups are available it would be amazing if you could create templates out of it, which pretty much means being able to set window's attribute per workspace. At the moment I'm using some bash script as a form of cheap templating, so I can type "webservers" and that will give me 6 terminals arranged like I need 'em to be, of the right sizes, etc. There are obvious drawbacks, it would be a lot nicer if I could express that in fluxbox's config file.
The other thing I had in mind was the ability to kill a group. Always thinking in terms of tasks, once you're done with say fixing an issue on the webservers, that task is over and you could delete that group. But you dont want the windows to be bumped to the previous workspace. This is tricky as the specs say that's what you MUST do, but I'm not sure whether an exception could be made being this a "particular" use of vdesktops.




SpikeLab.org is a Filippo Spike Morelli copyright 2005-2008
This work is licensed under Creative Commons Att-SA License.