# Configuration

Every key in config.toml, its default, and what it changes.


Rip reads one file: `~/.config/rip/config.toml`. When `XDG_CONFIG_HOME` is set, the file is `$XDG_CONFIG_HOME/rip/config.toml`. Every key is optional. A missing key keeps its default.

## The file

Press <kbd>secondary-,</kbd> to open the file. When the file does not exist, Rip creates it with every key and a comment for each. Edit it in Rip or in any other editor.

To apply a change, run `rip: reload config` from the command palette, or restart Rip. When the file has an error, Rip starts with the defaults and shows the error.

## Keys

The tables below come from the template that Rip writes, so they match this release. A key marked *optional* is a comment in the template until you set it.

### Appearance

Theme: pick one with ⌘K ⌘T. Bundled: one-dark, one-light, catppuccin-mocha, catppuccin-latte, tokyo-night, tokyo-night-day, github-dark, github-light, dracula, nord, rose-pine, rose-pine-dawn, gruvbox-dark, gruvbox-light, solarized-dark, solarized-light, nightfox, vscode-dark-modern, darcula, macos-classic, everforest-dark, kanagawa, osaka-jade, ethereal, pitch-black. Or a name in ~/.config/rip/themes/&lt;name>.toml, or a path. light-theme / dark-theme follow the system appearance.

| Key | Default | Note |
| --- | --- | --- |
| `theme` | `"one-dark"` |  |
| `light-theme` | `"one-light"` | Optional. |
| `dark-theme` | `"one-dark"` | Optional. |

### Fonts

| Key | Default | Note |
| --- | --- | --- |
| `font-family` | `"Menlo"` |  |
| `font-size` | `14` |  |
| `ui-font-family` | `".SystemUIFont"` |  |
| `ui-font-size` | `13` |  |
| `line-height` | `1.5` |  |

### Editing

| Key | Default | Note |
| --- | --- | --- |
| `tab-size` | `4` |  |
| `indent` | `"spaces"` | "spaces" or "tabs" |
| `soft-wrap` | `false` |  |
| `line-numbers` | `true` |  |
| `relative-line-numbers` | `false` |  |
| `cursor-blink` | `true` |  |
| `scroll-beyond-last-line` | `false` |  |
| `show-whitespace` | `"selection"` | "none", "all", "selection" |
| `indent-guides` | `true` |  |
| `trim-trailing-whitespace-on-save` | `true` |  |
| `ensure-final-newline-on-save` | `true` |  |

### Behavior

| Key | Default | Note |
| --- | --- | --- |
| `markdown-preview` | `"off"` | Markdown files open with: "split" (live preview beside), "reading" (rendered in place), "off" |
| `hot-exit` | `true` | quit and close windows without asking; unsaved buffers come back next launch |
| `diff-layout` | `"split"` | "split" (side by side) or "unified" |
| `diff-context` | `3` |  |

### Layout

| Key | Default | Note |
| --- | --- | --- |
| `sidebar-width` | `240` |  |
| `show-sidebar` | `true` |  |
| `plan-file` | `"docs/PLAN.md"` | Optional. opened beside your code with cmd-alt-p |

### Keys

Keybindings. Keystroke syntax: [ctrl-][alt-][shift-][cmd-]key, chords separated by spaces ("cmd-k cmd-w"). Value is an action name, or "none" to unbind. Run "rip: show keymap" to list every action and binding.

```toml
[keys]
"cmd-p" = "workspace::ToggleFileFinder"
"cmd-shift-p" = "workspace::ToggleCommandPalette"
"cmd-d" = "editor::SelectNext"
```


## Themes

`theme` names a bundled theme, a file in `~/.config/rip/themes/`, or a path to a theme file. Set `light-theme` and `dark-theme` together and Rip follows the system appearance.

<kbd>secondary-k secondary-t</kbd> previews every theme and writes your choice to this file. A TOML file in `~/.config/rip/themes/` adds a theme, or replaces a bundled theme with the same name.

## Key bindings

The `[keys]` table maps keystrokes to actions. [Keyboard shortcuts](/docs/keyboard-shortcuts.md#change-a-binding) explains the notation and the table.
