In this section, I document only the StumpWM commands that I use interactively.
Green means built-in, orange means custom.
I've been using StumpWM day-in-day-out for years and I can't imagine living without it.
Despite this, my typical StumpWM usage patterns are very unsophisticated.
Despite that, StumpWM still greatly increases my productivity, or at least it greatly diminishes my frustration with life. This is no small feat!
Complex juggling of transient workspaces (what StumpWM calls "groups") isn't something that particularly appeals to me in life.
(I figure that if I created and deleted workspaces for specific tasks as I need them, in the general case I would either have to check their numbers before switching to them, or else assign them names so I can switch to them that way. But naming things is hard and I hate stupid names. So this approach seems just plain slow and prohibitively taxing on my precious cognitive resources... Though I haven't actually tried it, so what do I know.)
So I just have 4 permanent workspaces (imported from my pre-StumpWM days) that are set up in my
- ① Normal ⚓
Despite the name I normally don't use this one, calling it "Misc" would be more accurate.
One particular recurring use for it is when I'm in the middle of something and the Ubuntu update thing (whatever it's called) pops up, the window doesn't even have time to render and I can immediately shoot it out of the way to this workspace with Ctrl-t g m 1, pretty much by muscle memory alone. (I know there's a feature to automatically assign particular types of windows to particular workspaces, but it could be easier to setup and anyway I don't really care.)
- ② Dev ⚓
Most of the real action happens in this workspace.
What's more, most everything happens in 3 windows:
For all programming and other text editing needs.
For all web browsing needs. (Except occasional firefox testing.)
screento accomodate an unlimited number of terminals in the one window, though I usually have no more than 3 or 4 at once.
(I frequently find myself opening more terminal windows to do something quick and then forget to close them so I sometimes have up to 3 additional nonsense terminal windows open that I then have to close... Bad habits die hard.)
① Emacs ② Browser (Google Chrome) ③ Terminal (gnome-terminal)
- ③ Games ⚓
For when I want to waste some time in one way or another.
I also use it if I want some background music.
mplayer sound-file -loop 0)
And sometimes if I just want to do something trivial (but potentially involving more than one window) real quick.
- ④ Chat ⚓
For rare IRC-ing occasions.
I also sometimes use it for other purposes if the
Normalworkspace is cluttered up with other stuff.
- Ctrl-t G ⚓
Show all (non-hidden) workspace numbers and names,
along with all of their window numbers and titles.
The selected workspace and selected window in each workspace are indicated with a star.
This shows so much information at once that I never use Ctrl-t w (
(Auto-hides at the next window manager command or after a timeout.
I almost always hide it immediately with Ctrl-t Ctrl-g.)
- Ctrl-t g 1, Ctrl-t g 2, Ctrl-t g 3, Ctrl-t g 4 ⚓
- Super-1, Super-2, Super-3, Super-4
Switch to one of my 4 workspaces. If I already have both hands on the keyboard, I usually use the built-in bindings. Otherwise, I use my custom one-keystroke bindings.
- Ctrl-t Ctrl-t ⚓
Display the current frame's most recently selected window.
This lets one quickly switch back and forth between two windows, which I tend to do way more than splitting the screen into multiple frames.
- Ctrl-t digit ⚓
Select the window with the corresponding digit in the current workspace, switching to the frame it's associated with in the process.
Select the next or previous window in the current frame.
- Ctrl-t Ctrl-k ⚓
Close current window normally.
- Ctrl-t Ctrl-K ⚓
Close current window forcibly, killing the underlying application.
- Ctrl-t g m ⚓
Move the current window to another workspace.
Particularly useful if, for instance, a chat window pops up while I'm in the
Devworkspace because someone messages me. Then I send it to the
Chatworkspace with Ctrl-t g m 4 RET.
- Ctrl-t e e (mnemonic: "Execute Emacs") ⚓
Start an emacs instance, or switch to it if there's already one.
(Switching to it as in going to the correct workspace and selecting its window, pulling it in the current frame first if necessary. I'm not sure what happens if there are multiple emacs windows (emacs frames), I almost always use only one.)
- Ctrl-t e b (mnemonic: "Execute Browser") ⚓
Make a new browser window, regardless of if there's already one or not.
- Ctrl-t e c (mnemonic: "Execute Console") ⚓
Start a terminal instance, or switch to it if there's already one.
(I almost always use a single terminal window, with
screen. I sometimes open another terminal window to try something real quick and then immediately close it.)
- Super-e ⚓
Open file browser in home directory.
(Keybinding inspired by Windows' Win-E.)
- Ctrl-t t ⚓
Send a Ctrl-t to the current application.
- Ctrl-t b ⚓
Put the cursor out of the way at the bottom right corner of the screen.
- Ctrl-t x v ⚓
Change the global sound level. Asks for a percentage.
4are shortcuts for 25%, 50%, 75% and 100%, respectively.
01for 1%. (Sometimes useful with headphones, surprisingly.)
- F32 (my physical Right Shift is mapped to F32) ⚓
Send "(" and ")" to the current application, then "left" to put the cursor inside the parentheses.
Works with almost all applications, but not
gnome-terminal, for some reason.
- Ctrl-F32 ⚓
Send two double quotes to the current application, then "left" to put the cursor inside them.
Works with almost all applications, but not
gnome-terminal, for some reason.
- Super-f ⚓
Make the current window fullscreen.
- Super-d (qwerty: Super-h) (mnemonic: "Horaire" ("schedule")) ⚓
- Super-y (qwerty: Super-t) (mnemonic: "Terrebonne" (my city))
exec google-chrome http://horairetele.canoe.com
exec google-chrome http://www.meteomedia.com/weather/caqc0750
TV schedule, weather. Think of them as "super bookmarks".
- Ctrl-t h w ⚓
Show what key sequence(s) will invoke the given command.
If the command is not bound to any key sequence, you can still invoke it by name with Ctrl-t ; (
- Ctrl-t h k ⚓
Show what command, if any, is bound to the given key sequence.
- Ctrl-t h c ⚓
Show a small description for a command.
- partial-key-sequence Ctrl-h ⚓
Lists all keybindings reachable from the partial-key-sequence.
For instance, Ctrl-t h Ctrl-h usefully lists all interactive help commands!
(I almost never use those anymore, but they're of particular importance to newbies or those actively trying to learn more keybindings and commands. Or people documenting their StumpWM status quo!)
There's also Ctrl-t h f (
describe-function) and Ctrl-t h v (
describe-variable) but I never use them.
StumpWM's ability to imitate emacs' windowing system is one of its most touted features, and yet I almost never use it. I usually have a single frame (and therefore a single window) visible in each workspace.
I think I'm simply not using enough windows at once to make it worthwhile, besides rare special cases where I do need to see 2 or more windows at the same time. Also, with my 2003 vintage hardware I only have one screen at 1024x768, which is a pretty small resolution these days (I guess? I'm so out of the loop for these things), at least in the desktop category.
- Ctrl-t s ⚓
Equivalent to emacs' C-x 2 (
Useful if I need to see 2 windows at the same time.
- Ctrl-t S ⚓
Equivalent to emacs' C-x 3 (
Useful in very special situations where I want to do a side-by-side comparison.
- Ctrl-t Q ⚓
Equivalent to emacs' C-x 1 (
Effectively returns the current workspace to the usual mode of operation, in my case.
- Ctrl-t o ⚓
Equivalent to emacs' C-x o (
- Ctrl-t + ⚓
Equivalent to emacs' C-x + (
I almost always invoke this right after splitting twice in the same orientation, to have a 1/3:1/3:1/3 split instead of 1/2:1/4:1/4.
- Ctrl-t r ⚓
Useful in very special situations where I need very specific frame sizes.
Use C-n and C-p to expand or shrink the frame vertically.
Use C-f and C-b to expand or shrink the frame horizontally.
Use RET to exit
- Ctrl-t x l ⚓
Not quite like having a real REPL, but usually good enough for simple casual configuration editing and testing.
- Ctrl-t m ⚓
Display the last StumpWM message again, in case you missed it.
Use it multiple times in a row to display previous messages.
- Ctrl-t M ⚓
Display the last message StumpWM displayed again, "indefinitely" until another message comes up or until explicitly dismissed with Ctrl-t Ctrl-g. Sometimes useful for longer messages.
- Ctrl-t x p ⚓
Display the X window properties of the current window. Potentially useful notably to know what arguments to give to
run-or-raiseor to use the feature allowing to assign particular application windows that pop up to particular workspaces, which I just do manually...
- Ctrl-t x b (mnemonic: "Blank screen") ⚓
Activate the screensaver, lock the screen.
But usually I just let the screensaver auto-activate with its timeout...
- Ctrl-t ; ⚓
Invoke a StumpWM command by name. Similar to emacs' M-x (
Allows one to invoke a command that doesn't (yet) have an assigned keybinding.
I use this when I need to invoke
renumber, which is almost never.
- Ctrl-t : ⚓
Make the underlying Common Lisp implementation evaluate an expression and print any values it returns. Similar to emacs' M-: (
You can think of it as a one-shot REPL.
.stumpwmrc file (see it on github). It's very raw and messy and undocumented, but it works for me...
Here's a further bunch of setup files for
gnome, I think these were possibly not even necessary... I don't remember exactly. I'd have to investigate.
There's a good chance that these files are broken in various ways.