Just over a week ago I completely my conversion to Ubuntu (my laptop was the last machine over). One of the reasons for doing this conversion was to get the benefits of some of the gnome stack, like dbus, which are very nicely configured in the Ubuntu environment. It meant that after about 1.5 yrs with Ion, I gave it up for the default Ubuntu Gnome environment.
Running Ion for a year and a half gave me perspective on a few features that are really nice:
- Go to Window By Name - Alt+G, start typing a window title name, go
- Go to Urgent - Alt+K, jumps you to windows that need your attention
- Go to Prev - Alt+K, if no urgent, jumps between current and last window
- Dynamic Desktop Creation - for a new work effort move everything to a new workspace that is relevant to it
- Kludges - policy based placement of windows so Pidgin stays on it's own workspace
- Full screen windows are the way to go
- Scratchpad - a frame that is smaller than the rest of the workspace that pops up and back on demand.
There were also a lot of drawbacks:
- Ion had so many key bindings it tended to collide with xemacs bindings (like Alt+G). I lost some xemacs functionality while running Ion
- Ion didn't really do multi window applications well, like Inkscape or Gimp. There was a float workspace type which acted like very old fvwm. As such I tended to use Gimp and Inkscape less because they were hard to manipulate in the environment
- Tumo (the Ion maintainer) decided that people were forking his software, so he removed access to the darcs repository, and you could only get snapshots. And he changed the default license to something very odd. Running a software stack that is fundamentally unsupportable because the maintainer is actively trying to make it hard for people to get source access is bothersome.
- Config formats changed, and 2 attempts to roll forward to something current wasted 2 hours each.
One of the reasons for Ubuntu is that their community support is pretty good, and using main path base software was what I was looking for. But I learned a lot of lessons in the time with Ion about things that I liked, and wanted to duplicate in a gnome environment.
After watching many people in meetings on MS Windows get a sensitive IM while they are giving a presentation, and scrambling, you realize the value of a policy engine for windows placement. IMs are always on Workspace 5, always. My presentation won't be on Workspace 5, so I can get to the IMs when I'm ready to deal with them.
One upon a time, the default gnome window manager did this. Then we got Metacity, which pretty much can't do anything (interesting enough that compiz is bringing features like this back). The fact that useful features are being slipped past the anti-feature HIG overlords under the guise of eye candy has a certain irony that you don't find many places. 🙂
However, my laptop is old. It can't do compiz. That's ok, as Devil's Pie can do it for you instead. Devil's Pie lets you create small policy files in lisp which control window behavior. Before you run away screaming because of this being lisp, look, it isn't that bad:
(if (is (application_name) “firefox_bin”) (set_workspace 2)
See, didn't make you blind or anything. The policy for devil's pie is way easier to grok than ion's kludges file, and provides a few more options.
Scratchpad for Terminals
Remember Quake? No? Well it's that first person shooter all us old folks rave about, as it existed prior to 3D hardware, and let us waste nights in college on our brand new Pentium computers. When you hit the tilda button, you got a drop down console, that did an overlay on your screen, and let you type in commands, or Say stuff.
Behold Tilda. The default configuration actually does look like the Quake overlay. With a bit of configuration you can make it look like an Ion scratchpad with a terminal embedded.
Unfortunately I'm having mixed success with rendering in Ubuntu 7.10 (plus a bad interaction with the next piece of software). I'm bad, and haven't sent in a bug report, but I will so. When tilda was working for me, it was great.
In full disclosure I need to say I found out about Tilda by listening to LUG Radio, where Aq brought it back in the spring.
Once I started to use Gnome again I knew I needed better desktop navigation than the default. I even set aside most of a weekend to write my own "go to window by name" program, as I was convinced that libwnck would give me enough to do that. While writing a bunch of sample code that would get, but couldn't set window properties, I found superswitcher.
Superswitcher takes over your Windows key and/or Caps Lock and creates all manner of interesting key strokes to navigate and control your work spaces. I'm pretty convinced it was designed as the ideal test can for libwnck, as it seems to use all the features in there.
You can dynamically create/destroy workspaces, navigate very nicely through windows based on typing partial names.
Things that I still want
Tilda to work. After a few rez / derez of tilda on gutsy, it stops displaying properly. I need to file a bug on this.
Jumping to urgent windows with Alt+K, and a command line interface to "Go to window by name", which let's me have an edit command that loads a file in xemacs, then jumps my focus there. With the code provided by superswitcher and devilspie that shouldn't be too bad, as soon as I figure out why libwnck was ignoring all my set requests for focus and workspace changing.
Superswitcher currently segfaults when tilda is running. This has to do with tilda not being in any workspace, which defies the superswitcher logic. Should be an easy fix, just need to carve out an hour or two to do it and send it in.
What makes you productive in Linux?
Sit down and think about it some time. Post a comment about it, I'd love to hear your thoughts on this, as well as any experiences with other interesting Linux desktop tools that collectively make your environment optimized.