① Misc
For whenever I need a workspace beyond the other two.
Window manager.
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 3 permanent workspaces that are set up in my .stumpwmrc
file:
For whenever I need a workspace beyond the other two.
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.)
Runs tmux to accomodate infinite terminals in the one window.
For entertainment, or to do something trivial real quick.
vgroups
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 (windows
).
(Auto-hides at the next window manager command or after a timeout.
I almost always hide it immediately with Ctrl-t Ctrl-g.)
gselect 1
, gselect 2
, gselect 3
Super-1, Super-2, Super-3
Switch to one of my 3 workspaces.
other-in-frame
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.
select-window-by-number
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.
delete
Ctrl-t Ctrl-k, Super-a
Close the current window normally.
kill
Ctrl-t Ctrl-K
Close current window forcibly, killing the underlying application.
gmove
Ctrl-t g m
Move the current window to another workspace.
emacs
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.)
google-chrome
Ctrl-t e b (mnemonic: "Execute Browser")
Make a new browser window, regardless of if there's already one or not.
gnome-terminal
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.)
exec nautilus
Super-e
Open file browser in home directory.
(Keybinding inspired by Windows' Win-E.)
send-escape
Ctrl-t t
Send a Ctrl-t to the current application.
banish
Ctrl-t b
Put the cursor out of the way at the bottom right corner of the screen.
amixer-master
Ctrl-t x v
Change the global sound level. Asks for a percentage.
1
, 2
, 3
and 4
are shortcuts for 33%, 50%, 75% and 100%, respectively.
fullscreen
Super-f
Make the current window fullscreen.
where-is
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 ; (colon
).
describe-key
Ctrl-t h k
Show what command, if any, is bound to the given key sequence.
describe-command
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.
vsplit
Ctrl-t s
Equivalent to emacs' C-x 2 (split-window-vertically
).
Useful if I need to see 2 windows at the same time.
hsplit
Ctrl-t S
Equivalent to emacs' C-x 3 (split-window-horizontally
).
Useful in very special situations where I want to do a side-by-side comparison.
only
Ctrl-t Q
Equivalent to emacs' C-x 1 (delete-other-windows
).
Effectively returns the current workspace to the usual mode of operation, in my case.
fnext
Ctrl-t o
Equivalent to emacs' C-x o (other-window
).
balance-frames
Ctrl-t +
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.
iresize
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 iresize
mode.
loadrc
Ctrl-t x l
Reload .stumpwmrc
config file.
Not quite like having a real REPL, but usually good enough for simple casual configuration editing and testing.
lastmsg
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.
lastmsg-no-timeout
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.
list-window-properties
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-raise
or to use the feature allowing to assign particular application windows that pop up to particular workspaces, which I just do manually...
activate-screensaver
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...
colon
Ctrl-t ;
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.
eval
Ctrl-t :
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.
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.