Skip to main content

Configuration

Ki supports two levels of configuration:

  1. Global:
    a. Windows: %LOCALAPPDATA%\ki\config.(json|yaml|toml)
    b. MacOS/Linux: ~/.config/ki/config.(json|yaml|toml)
  2. Workspace:
    a. ./.ki/config.json

Note: Workspace config overrides Global config.

Config Schema​

Loading...

Scripting​

You can define up to 30 custom actions that can execute arbitrary scripts and interact with Ki's state.

The custom actions menu can be brought up by pressing \.

Configuration​

First, add a leader_keymap section to your Ki config file:

{
"leader_keymap": [
[null, null, null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null, null, null]
]
}

Each row maps to keyboard positions (using QWERTY layout as example):

  • Row 1: q w e r t y u i o p
  • Row 2: a s d f g h j k l ;
  • Row 3: z x c v b n m , . /

To bind a script to a key, replace null with:

{
"name": "[Name of action]",
"script": "[Name of script]"
}

Script Resolution​

Scripts are resolved in this order:

  1. Workspace: .ki/scripts/<script-name>
  2. Global: ~/.ki/scripts/<script-name>

How do Scripts Work?​

Scripts communicate with Ki through stringified JSON on STDIN/STDOUT:

Input (STDIN): Current editor state including buffers, selections, and workspace info

Output (STDOUT): Array of Ki commands to execute

Example: Show Editor State​

#!/usr/bin/env python3

import json
import sys

# Parse editor state from stdin
state = json.loads(sys.stdin.read())

# Return commands to execute
output = {
"dispatches": [
{
"ShowInfo": {
"title": "Editor State",
"content": json.dumps(state, indent=2)
}
}
]
}

print(json.dumps(output))

Schema References​

Input Schema:

Loading...

Output Schema:

Loading...

Tips​

  • Make scripts executable: chmod +x script.py
  • Use workspace scripts for project-specific actions
  • Use global scripts for general utilities
  • Scripts can be written in any language that can read stdin and write stdout
  • Chain multiple dispatches to perform complex operations