Configuration Files
Sireno Deck uses a config.yml file to define your decks, buttons, addons, and themes.
File Discovery
Section titled “File Discovery”The config file is searched in this order:
- Explicit path via
--configoption $SIRENO_CONFIGenvironment variable- Walk up from current directory looking for
config.yml $XDG_CONFIG_HOME/sireno-deck/config.yml~/.config/sireno-deck/config.yml
Config Structure
Section titled “Config Structure”# Theme configurationtheme: "default"# ORtheme: name: "mytheme" path: "/path/to/theme"
# Logging settingslogging: level: "info" # trace, debug, info, warn, error, fatal, silent verbose: true # optional
# Deck definitionsdecks: main: name: "Main Deck" icon: "icon://Deck" background: "#000000" paginated: false trigger: # optional - for overlay decks process_name: "chrome" window_name: "VSCode" autoShow: true buttons: - { position: 0, type: "core:blank" } - position: 1 type: "core:action" config: icon: "icon://globe" label: "Open" actions: tap: "xdg-open https://example.com"
# Addonsaddons: - "local-addon" # local path ./local-addon - "/absolute/path" # absolute path - "npm-addon" # npm package - "npm-addon@1.2.3" # npm with version # OR with config: - src: "my-addon" enabled: true config: defaults: autoShow: false decks: shortcuts: name: "Chrome Shortcuts" autoShow: true someKey: value
# Lock configuration (optional)lock: buttons: - { position: 0, type: "core:blank" }# Use built-in themetheme: "default"
# OR use local themetheme: name: "mytheme" path: "./themes/my-theme"Logging
Section titled “Logging”logging: level: "info" # trace, debug, info, warn, error, fatal, silent verbose: true # enables extra debug outputBasic Deck
Section titled “Basic Deck”decks: main: name: "Main Deck" icon: "icon://Deck" background: "#000000" buttons: - { position: 0, type: "core:blank" } - position: 1 type: "core:action" config: icon: "icon://play" label: "Play" actions: tap: "spotify play"Overlay Deck
Section titled “Overlay Deck”Overlay decks appear automatically when specific apps are active:
decks: vscode: name: "VS Code" icon: "icon://Code" buttonColor: "green" paginated: true autoShow: true isOverlay: true trigger: process_name: ["code", "code-oss", "Code"] window_name: ["*Visual Studio Code*"] buttons: - position: 0 type: "core:action" actions: tap: 'macro://{"all":"ctrl+shift+p","osx":"cmd+shift+p"}' config: label: "Command Palette"Paginated Deck
Section titled “Paginated Deck”decks: shortcuts: name: "Shortcuts" paginated: true buttons: - { position: 0, type: "core:action", ... } # ... more than keyCount - 2 buttonsButtons
Section titled “Buttons”Button Shorthand
Section titled “Button Shorthand”# Full form- position: 0 type: "core:action" config: icon: "icon://globe" label: "Open" actions: tap: "xdg-open https://example.com"
# Short form (type only)- "core:blank"
# Short form (type with position)- { position: 0, type: "core:blank" }Button Position
Section titled “Button Position”Positions are 0-indexed. The last position is reserved for system buttons (back/settings).
Addons
Section titled “Addons”Addon Entry Formats
Section titled “Addon Entry Formats”# Local relative pathaddons: - "./my-addon"
# Local absolute pathaddons: - "/Users/me/sireno-addons/my-addon"
# NPM packageaddons: - "sireno-my-addon" - "sireno-my-addon@1.0.0"
# With configurationaddons: - src: "my-addon" enabled: true config: defaults: autoShow: false decks: shortcuts: name: "My Shortcuts"Lock Mode
Section titled “Lock Mode”Lock mode prevents accidental button presses. Only specific button types can escape it:
lock: buttons: - { position: 0, type: "core:blank" }Includes
Section titled “Includes”You can use YAML anchors and aliases for reusable button definitions:
# Define a button template.base-button: &base-button type: "core:action" config: icon: "icon://globe"
# Use itdecks: main: buttons: - position: 0 <<: *base-button config: label: "One" - position: 1 <<: *base-button config: label: "Two"Validation
Section titled “Validation”Sireno Deck validates your config on startup. Invalid configurations will prevent the service from starting with clear error messages.