Skip to content

Config Schema

Complete reference for all config options.

interface RawConfig {
theme?: ThemeEntry
logging?: LoggingConfig
decks: Record<string, DeckDefinition>
addons?: AddonEntry[]
lock?: LockConfig
}
type ThemeEntry =
| string
| {
name?: string
path: string
}
# Built-in theme
theme: "default"
# Custom theme
theme:
name: "my-theme"
path: "./themes/my-theme"
interface LoggingConfig {
level?: "trace" | "debug" | "info" | "warn" | "error" | "fatal" | "silent"
verbose?: boolean
}
logging:
level: "debug"
verbose: true
interface DeckDefinition {
name?: string
icon?: string
background?: string
paginated?: boolean
trigger?: TriggerConfig
autoShow?: boolean
buttonColor?: "blue" | "green" | "purple"
buttons?: ButtonEntry[]
}
interface TriggerConfig {
process_name?: string | string[]
window_name?: string | string[]
}
trigger:
process_name: ["code", "code-oss"]
window_name: ["*VS Code*"]
type ButtonEntry =
| string
| {
position: number
type: string
config?: unknown
actions?: {
tap?: string
dbltap?: string
hold?: string
}
}
type AddonEntry =
| string
| {
src: string
enabled?: boolean
config?: AddonConfig
}
interface AddonConfig {
defaults?: {
autoShow?: boolean
}
decks?: Record<string, DeckOverride>
}
interface LockConfig {
buttons?: ButtonEntry[]
}
theme: "default"
logging:
level: "info"
decks:
main:
name: "Main"
icon: "icon://Deck"
background: "#000000"
buttons:
- position: 0
type: "core:action"
config:
icon: "icon://globe"
label: "Open"
actions:
tap: "xdg-open https://example.com"
- position: 1
type: "core:blank"
vscode:
name: "VS Code"
icon: "icon://Code"
buttonColor: "green"
paginated: true
autoShow: true
isOverlay: true
trigger:
process_name: ["code", "code-oss"]
buttons:
- { position: 0, type: "core:blank" }
addons:
- "date-time"
- "system-status"
- src: "my-addon"
enabled: true
config:
defaults:
autoShow: false
lock:
buttons:
- { position: 0, type: "core:blank" }