StumpWM » Usage notes

In this section, I document only the StumpWM commands that I use interactively.

Green means built-in, orange means custom.

StumpWM » Usage notes » Overview

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!

StumpWM » Usage notes » Overview » Workspaces

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 .stumpwmrc file:

① 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:

① Emacs

For all programming and other text editing needs.

② Browser (Google Chrome)

For all web browsing needs. (Except occasional firefox testing.)

③ Terminal (gnome-terminal)

Runs screen to 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.)

③ 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 Normal workspace is cluttered up with other stuff.

StumpWM » Usage notes » Routinely used commands

StumpWM » Usage notes » Routinely used commands » Workspaces and windows

Ctrl-t G

vgroups

[Example vgroups output]
Example vgroups output.
(By default, shown on the top right of the screen.)

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 (windows).

(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

gselect 1, gselect 2, gselect 3, gselect 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

other-in-frame

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-window-by-number

Select the window with the corresponding digit in the current workspace, switching to the frame it's associated with in the process.

Ctrl-t n, Ctrl-t p

pull-hidden-next, pull-hidden-previous.

Select the next or previous window in the current frame.

Ctrl-t Ctrl-k
Super-a

delete

Close current window normally.

Ctrl-t Ctrl-K

kill

Close current window forcibly, killing the underlying application.

Ctrl-t g m

gmove

Move the current window to another workspace.

Particularly useful if, for instance, a chat window pops up while I'm in the Dev workspace because someone messages me. Then I send it to the Chat workspace with Ctrl-t g m 4 RET.

StumpWM » Usage notes » Routinely used commands » Apps

Ctrl-t e e (mnemonic: "Execute Emacs")

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")

google-chrome

Make a new browser window, regardless of if there's already one or not.

Ctrl-t e c (mnemonic: "Execute Console")

gnome-terminal

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

exec nautilus

Open file browser in home directory.

(Keybinding inspired by Windows' Win-E.)

StumpWM » Usage notes » Routinely used commands » Misc

Ctrl-t t

send-escape

Send a Ctrl-t to the current application.

Ctrl-t b

banish

Put the cursor out of the way at the bottom right corner of the screen.

Ctrl-t x v

amixer-master

Change the global sound level. Asks for a percentage.

1, 2, 3 and 4 are shortcuts for 25%, 50%, 75% and 100%, respectively.
Enter 01 for 1%. (Sometimes useful with headphones, surprisingly.)

F32 (my physical Right Shift is mapped to F32)

open-parens

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

open-double-quotes

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.

StumpWM » Usage notes » Rarely used commands

Super-f

fullscreen

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".

StumpWM » Usage notes » Almost never used commands

StumpWM » Usage notes » Almost never used commands » Help

Ctrl-t h w

where-is

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 ; (colon).

Ctrl-t h k

describe-key

Show what command, if any, is bound to the given key sequence.

Ctrl-t h c

describe-command

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 » Usage notes » Almost never used commands » Frames

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

vsplit

Equivalent to emacs' C-x 2 (split-window-vertically).

Useful if I need to see 2 windows at the same time.

Ctrl-t S

hsplit

Equivalent to emacs' C-x 3 (split-window-horizontally).

Useful in very special situations where I want to do a side-by-side comparison.

Ctrl-t Q

only

Equivalent to emacs' C-x 1 (delete-other-windows).

Effectively returns the current workspace to the usual mode of operation, in my case.

Ctrl-t o

fnext

Equivalent to emacs' C-x o (other-window).

Ctrl-t +

balance-frames

Equivalent to emacs' C-x + (balance-windows).

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

iresize

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 iresize mode.

StumpWM » Usage notes » Almost never used commands » Misc

Ctrl-t x l

loadrc

Reload .stumpwmrc config file.

Not quite like having a real REPL, but usually good enough for simple casual configuration editing and testing.

Ctrl-t m

lastmsg

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

lastmsg-no-timeout

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

list-window-properties

Display the X window properties of the current window. Potentially useful notably to know what arguments to give to run-or-raise or 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-screensaver

Activate the screensaver, lock the screen.
But usually I just let the screensaver auto-activate with its timeout...

Ctrl-t ;

colon

Invoke a StumpWM command by name. Similar to emacs' M-x (execute-extended-command).

Allows one to invoke a command that doesn't (yet) have an assigned keybinding.

I use this when I need to invoke gfloat-new or renumber, which is almost never.

Ctrl-t :

eval

Make the underlying Common Lisp implementation evaluate an expression and print any values it returns. Similar to emacs' M-: (eval-expression).

You can think of it as a one-shot REPL.

StumpWM » My config

Here's my .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.