# Windows and developer workflows

> Close and cycle windows, launch applications, send terminal and IDE chords, keep five extra clipboards, and type code punctuation from the home row.

---

LLMS index: [llms.txt](/llms.txt)

---

The layout dedicates several colour-coded zones to the actions that interrupt a
developer's flow most often: switching windows, launching tools, sending
terminal signals, parking text somewhere, and typing punctuation.

> [!IMPORTANT]
> Every chord on this page assumes ✱ Hyper is held.

## Window control {#window-control}

⇥ Q W A
S form the azure block on the left of the keyboard. They close
and cycle things, from a single tab up to the whole login session.

| Key | Hyper | + ⌘ | + ⌥ | + ⌃ | + ⇧ |
| :--- | :--- | :--- | :--- | :--- | :--- |
| ⇥ | Next app | Previous app | Next desktop | — | Next tab |
| Q | Quit app | Quit app | — | Lock screen | Log out |
| W | Close window | Close window | Display sleep | — | Sleep |
| A | *Window manager* | Mission Control | Show desktop | Spotlight | — |
| S | Next tab | Previous tab | Next window | Previous window | — |
{.matrix .wide caption="Closing and cycling, from a tab to the whole session"}

Two rows deserve a note.

✱ + A is intentionally **not** mapped. Because Hyper is
⌃ + ⌥ + ⇧ + ⌘ on the right-hand side, an unmapped key passes
straight through to whatever application is listening. Bind
⌃ + ⌥ + ⇧ + ⌘ + A inside [Moom](https://manytricks.com/moom/), [Magnet](https://magnet.crowdcafe.com/) or any other window manager and it
becomes your layout key. [Slate](https://github.com/jigish/slate) is kept only
as a historical example.

Sleep is not a keystroke but a shell command: ✱ + ⇧ + W runs `pmset sleepnow` and ✱ + ⌥ + W runs `pmset displaysleepnow`.
Karabiner needs no extra permission for these, but they will not fire if a
modal dialog is blocking input.

## Application shortcuts {#applications}

The yellow keys launch or focus six applications on three planes. Each rule is
a plain `open -a` shell command, so the target is matched by application *name*, which is exactly what makes them safe to rewrite.

| Key | Hyper | + ⌘ | + ⌥ |
| :--- | :--- | :--- | :--- |
| E | Safari | Finder | Mail |
| R | iTerm2 | Preview | Terminal |
| T | Visual Studio Code | Typora | Notes |
| Y | Siri | Karabiner-Elements | Amphetamine |
| F | Alfred 5 | Dash | Dictionary |
| G | IntelliJ IDEA | Google Chrome | Calendar |
{.matrix .wide caption="Defaults only: every one of these eighteen names is meant to be changed"}

> [!TIP]
> The [configurator](/docs/karabiner/configurator/) rewrites any of these names
> in the browser and exports a JSON file you can import directly, without
> cloning the repository or installing anything.

Because `open -a` both launches and focuses, one key does the job of a Dock
icon and a ⌘ + ⇥ hunt. If an application is already frontmost,
pressing its key again does nothing: it does not toggle.

## Terminal and IDE control {#terminal-control}

The green keys put the control chords a shell uses constantly under your right
hand, so the left hand never has to contort into
⌃ + a letter mid-sentence.

| Key | Hyper | + ⌘ |
| :--- | :--- | :--- |
| D | ⌃ + D · send EOF | ⌃ + ⌘ + D · look up the word under the pointer |
| Z | ⌃ + Z · SIGTSTP, suspend the job | F5 · start debugging |
| X | ⌃ + R · run in the IDE | ⌃ + F5 · run without debugging |
| C | Open Codex | Open Claude |
| V | ⌃ + V · Vim block-visual / literal prefix | — |
| B | ⌃ + B · [Tmux](https://github.com/tmux/tmux/wiki) prefix | — |
{.matrix .wide caption="Terminal signals, IDE run controls, and the two prefix keys"}

✱ + C and ✱ + ⌘ + C are `open -a` commands like the
yellow keys, so they can be repointed at whichever assistant you use.

> [!NOTE]
> ✱ + Z and ✱ + X deliberately do **not** shadow
> ⌘ + Z undo or ⌘ + X cut: those need no Hyper, so
> both spellings coexist on the same physical keys.

## Five text clipboards {#clipboard}

Number keys 6–0 become five independent text
clipboards. ✱ + ⌘ plus a number copies the current selection into
that slot; ✱ plus the number pastes it back.

| Chord | What happens |
| :--- | :--- |
| ✱ + ⌘ + 6 … ✱ + ⌘ + 0 | Copy the selection, then `pbpaste > ~/.clip6` … `~/.clip0` |
| ✱ + 6 … ✱ + 0 | `cat ~/.clip6 \| pbcopy`, then paste |
{caption="Each slot is one file in your home directory"}

Two things follow from that implementation, and both are useful:

- **The slots survive logout, reboot, and the system clipboard.** They are
  ordinary files, so `cat ~/.clip7` reads one from a shell and any editor can
  fill one without touching the keyboard at all.
- **They hold plain text only.** Copying an image or a file into a slot stores
  whatever `pbpaste` renders as text, not the original object.

> [!NOTE]
> V3.1 deliberately uses five slots on 6–0. Older
> configurations also used 1–5, so check your
> habits before upgrading.

## Code-oriented shifter {#shifter}

The orange keys move the punctuation a programmer types all day within reach of
the home row, with no ⇧ gymnastics for brackets.

| Key | Hyper | + ⌘ | + ⌥ |
| :--- | :--- | :--- | :--- |
| \- | `_` | Zoom out | — |
| \= | `+` | Zoom in | — |
| \[ | `(` | `{` | `<` |
| \] | `)` | `}` | `>` |
| \; | `:` | `!` | — |
| \' | `=` | `=` | — |
| \/ | Toggle comment | — | — |
| \\ | Toggle comment | — | — |
{.matrix .wide caption="Three bracket pairs on two keys, and := and != under one hand"}

The bracket keys are the payoff: \[ and \] give all
three pairs (round, curly and angle) from the same two positions. And because
\; and \' sit side by side, `:` `=` and `!` `=` are
adjacent rolls, which is how Go and Rust assignment and comparison end up
faster to type than on a bare keyboard.

Both ✱ + \/ and ✱ + \\ emit ⌘ + \/, the
comment shortcut nearly every editor and IDE shares.

## Next {#next}

Use [system functions and reference](/docs/karabiner/reference/) for function
keys, screenshots, symbols, customization, and troubleshooting.

---

Backlinks:

- [Install](/docs/karabiner/getting-started/)
- [Navigation and mouse](/docs/karabiner/navigation/)
