koshi0.1.0
Configuration

koshi.kdl

The main koshi settings file — theme, panes, scrollback, layout, mouse, copy, terminal, logging, and self-update.

koshi.kdl holds the app settings. It sits directly in the config directory. version is required; everything else is optional and grouped into blocks. theme is the one top-level setting.

A bad field is skipped at startup, keeps its default, and is logged — the rest of the file still applies. The exception is update: a bad value there drops the whole file for that launch. koshi config check rejects bad fields outright.

theme

theme "midnight" loads themes/midnight.kdl. A missing, invalid, or omitted theme — or "default" — uses the built-in colours. See Themes.

KeyValueDefaultSince
themestring — the themes/<name>.kdl to use, without .kdl"default"≥ 0.1.0

pane

KeyValueDefaultSince
min-colsinteger — smallest width a pane may shrink to2≥ 0.1.0
min-rowsinteger — smallest height a pane may shrink to1≥ 0.1.0

scrollback

KeyValueDefaultSince
max-linesinteger — lines of history kept per pane (negative means 0: no scrollback)10000≥ 0.1.0
max-bytesinteger — byte ceiling on that history (negative means 0)33554432 (32 MiB)≥ 0.1.0
scroll-on-inputboolean — typing while scrolled up snaps the view back to the newest line#true≥ 0.1.0

scroll-on-input #false keeps the view parked while the input still goes through. Only the primary screen follows; the alternate screen is left to the full-screen program on it.

layout

KeyValueDefaultSince
new-pane-direction"left" | "right" | "up" | "down" — where a new pane opens when the command does not say"right"≥ 0.1.0

mouse

KeyValueDefaultSince
border-resizeboolean — drag a pane border to resize it#true≥ 0.1.0
scroll-linesinteger — lines per wheel notch3≥ 0.1.0
wheel"scroll-scrollback" | "ignore""scroll-scrollback"≥ 0.1.0

copy

KeyValueDefaultSince
trim-trailing-whitespaceboolean — drop trailing blanks from copied lines#true≥ 0.1.0

terminal

KeyValueDefaultSince
termstring — the TERM value child programs see"xterm-256color"≥ 0.1.0
colortermstring — the COLORTERM value child programs see"truecolor"≥ 0.1.0
default-shellstring — the shell to launchyour $SHELL (%COMSPEC% on Windows)≥ 0.1.0

logging

koshi writes logs/koshi-log-<session-id>.log below the state directory. Disabled logging creates no file at all.

KeyValueDefaultSince
enabledboolean — write a log file at all#false≥ 0.1.0
level"info" | "warning" | "error" — lowest severity written"warning"≥ 0.1.0
format"pretty" | "json""pretty"≥ 0.1.0

info includes normal lifecycle events, warning recoverable problems, and error failures that stop koshi. Each level includes the more severe ones. Logs store ids and byte counts — never typed or copied text.

update

A bad value in this block drops the whole koshi.kdl for that launch, not just the field.

KeyValueDefaultSince
auto-checkboolean — check GitHub for a newer koshi at startup#true≥ 0.1.0
check-interval-daysinteger — days between checks14≥ 0.1.0
allow-prereleaseboolean — offer pre-release builds too#false≥ 0.1.0

Every setting at its default

default-shell is commented out because its default comes from $SHELL or %COMSPEC%.

koshi.kdl
// koshi.kdl — the complete default configuration.
version 1

theme "default"

pane {
    min-cols 2
    min-rows 1
}

scrollback {
    max-lines 10000
    max-bytes 33554432       // 32 MiB
    scroll-on-input #true
}

layout {
    new-pane-direction "right"
}

mouse {
    border-resize #true
    scroll-lines 3
    wheel "scroll-scrollback"
}

copy {
    trim-trailing-whitespace #true
}

terminal {
    term "xterm-256color"
    colorterm "truecolor"
    // default-shell "/bin/zsh"  // optional override
}

logging {
    enabled #false
    level "warning"
    format "pretty"
}

update {
    auto-check #true
    check-interval-days 14
    allow-prerelease #false
}

On this page