Now managed by yadm, which is pretty nice.
My environment is based around alacritty, tmux, and neovim. xmonad on Linux. Divvy on macOS.
xmonad https://xmonad.org/manpage.html kakoune https://github.com/mawww/kakoune/blob/master/doc/pages/keys.asciidoc tmux https://gist.github.com/mzmonsour/8791835 tmux-tilish https://github.com/jabirali/tmux-tilish i3m https://i3wm.org/docs/refcard.html
Kakoune keybindings that use control: MANY
There are three nested layers in which operations are performed.
- OS Window Manager (xmonad, amethyst)
- Application Context (tmux, chromium)
- Application Operations (kakoune, neovim)
- Application Context (tmux, chromium)
Super - OS Window Manager (xmonad, amethyst) Control - Application / tmux Space - Application Context / neovim
The goal is to have keys perform the same conceptual operation within the given layer. Where X is the modifier to target a layer.
Key combos that feel good on the fingers (Kinesis Advantage custom layout) in order:
-
[Super] + [Shift] - Target OS window manager
- macos: amethyst
- linux: xmonad
-
[Alt] + [Shift] - Target application context
- chrome: tabs
- tmux: tabs, panes
-
[Ctrl] + [Shift] - Target application actions
- kakoune: user mode bindings
- neovim: leader bindings
By always using the [Shift] modifier, we avoid conflicts with most existing app and OS keybindings.
Keys that should be left alone (used by misc apps):
- Ctrl
- Alt
- Alt
- X-n - (n)ew item (xmonad window, tmux session, neovim tab)
- X- - jump to (xmonad workspace, tmux tab, neovim tab)
- X-0 - show all available (xmonad windows, tmux sessions, neovim buffers)
- X-g - to(g)gle minimalist layout (xmonad panel gap, tmux status bar, neovim focus mode)
-
X- - jump to
- xmonad: jump to workspace
- tmux: jump to (or create) tab
- kakoune: jump to (or create) buffer (TODO)
- neovim: jump to tab
-
-j - move down
- xmonad: focus next window
- tmux: focus next pane
- kakoune: open next buffer
-
-k - move up
- xmonad: focus prev window
- tmux: focus prev pane
- kakoune: open prev buffer
-
-h - move left
- xmonad: expand window size
- tmux: expand pane width
- kakoune: ???
-
-h - move right
- xmonad: shrink window size
- tmux: shrink pane width
- kakoune: ???
-
-s - split horizontally
- xmonad: split into sub-layout horizontally
- tmux: split pane horizontally
- kakoune: ???
-
-v - split vertically
- xmonad: split into sub-layout vertically
- tmux: split pane vertically
- kakoune: ???
-
-g - toggle minimalist layout
- xmonad: show/hide desktop panel
- tmux: show/hide status bar
- neovim: toggle GoYo
- kakoune: ???
X-Tab - rotate between (xmonad window, tmux tab, neovim tab) X-Shift-Tab - " reversed
X-. - rotate layout (xmonad layout, tmux ???, neovim ???) X-, - " reversed
X-Up - move workspace focus (xmonad display, tmux window) X-Down - " reversed
X-Left - resize workspace (xmonad display, tmux ???, neovim window) X-Right - " reversed
X-w - close focused item (window/tab) X-n - new item (window/tab) X-/ - deep search X-p - fuzzy search X-:, X-; - Command Prompt
X-q - soft quit (confirm) X-Shift-q - hard quit
X-c - kill / stop / SIGINT
[MacOS:Command] [MacOS:Option] [MacOS:Control]
[Linux:Super] [Linux:Alt] [Linux:Ctrl]
Keys used by applications.
Kakoune
- Alt
- Ctrl
MacOS
- Alt
- Ctrl
- Ctrl