siggy 1.4.0

Terminal-based Signal messenger client with vim keybindings
Documentation
# Configuration

## Config file location

siggy loads its config from a TOML file at the platform-specific path:

| Platform | Path |
|---|---|
| Linux / macOS | `~/.config/siggy/config.toml` |
| Windows | `%APPDATA%\siggy\config.toml` |

You can override the path with the `-c` flag:

```sh
siggy -c /path/to/config.toml
```

## Config fields

All fields are optional. Here is a complete example with defaults:

```toml
account = "+15551234567"
signal_cli_path = "signal-cli"
download_dir = "/home/user/signal-downloads"
notify_direct = true
notify_group = true
desktop_notifications = false
inline_images = true
native_images = false
show_receipts = true
color_receipts = true
nerd_fonts = false
reaction_verbose = false
send_read_receipts = true
mouse_enabled = true
theme = "Default"
keybinding_profile = "Default"
proxy = ""
```

### Field reference

| Field | Type | Default | Description |
|---|---|---|---|
| `account` | string | `""` | Phone number in E.164 format |
| `signal_cli_path` | string | `"signal-cli"` | Path to the signal-cli binary |
| `download_dir` | string | `~/signal-downloads/` | Directory for downloaded attachments |
| `notify_direct` | bool | `true` | Terminal bell on new direct messages |
| `notify_group` | bool | `true` | Terminal bell on new group messages |
| `desktop_notifications` | bool | `false` | OS-level desktop notifications for incoming messages |
| `inline_images` | bool | `true` | Render image attachments as halfblock art |
| `native_images` | bool | `false` | Use native terminal image protocols (Kitty/iTerm2) |
| `show_receipts` | bool | `true` | Show delivery/read receipt status symbols |
| `color_receipts` | bool | `true` | Colored receipt status symbols (vs monochrome) |
| `nerd_fonts` | bool | `false` | Use Nerd Font glyphs for status symbols |
| `reaction_verbose` | bool | `false` | Show reaction sender names instead of counts |
| `send_read_receipts` | bool | `true` | Send read receipts when viewing conversations |
| `mouse_enabled` | bool | `true` | Enable mouse support (click sidebar, scroll, etc.) |
| `theme` | string | `"Default"` | Color theme name |
| `keybinding_profile` | string | `"Default"` | Keybinding profile (`Default`, `Emacs`, `Minimal`, or custom) |
| `proxy` | string | `""` | Signal TLS proxy URL passed through to signal-cli |

## CLI flags

CLI flags override config file values for the current session:

| Flag | Overrides |
|---|---|
| `-a +15551234567` | `account` |
| `-c /path/to/config.toml` | Config file path |
| `--incognito` | Uses in-memory database (no persistence) |

## Settings overlay

![Settings overlay](../settings-menu.png)

Press `/settings` inside the app to open the settings overlay. This provides
toggles for runtime settings:

- Notification toggles (direct / group / desktop)
- Sidebar visibility
- Inline image previews / native images
- Show read receipts / receipt colors / nerd font icons
- Verbose reactions
- Send read receipts
- Mouse support
- Theme selector
- Keybinding profile selector

Changes made in the settings overlay are saved to the config file when you
close the overlay, and persist across sessions.

## Incognito mode

```sh
siggy --incognito
```

Incognito mode replaces the on-disk SQLite database with an in-memory database.
No messages, conversations, or read markers are saved. When you exit, all data is
gone. The status bar shows a bold magenta **incognito** indicator.