KISS — keep it simple, stupid.
A small terminal editor built with Textual. It opens files and folders, with syntax highlighting, a file tree and undo/redo. Just an editor — no LSP, no plugins, no ambitions to become an IDE.
About & status
KISS is early-stage software. It's not a replacement for nano or vim — just a small editor that tries to stay simple and useful. It's for learning, and for the moments where a tiny no-nonsense editor is enough. Some things are still missing (see TODO).
Install
for unix systems:
curl -fsSL https://raw.githubusercontent.com/levk-m/kiss/main/install.sh | bash
via package managers:
[uv tool / pipx] install kiss-editor
or from source (requires Python 3.12+ and uv):
git clone https://github.com/levk-m/kiss.git
cd kiss
uv sync
uv run kiss
Or run directly without cloning:
uvx kiss-editor
Usage
kiss <file> Edit a file
kiss <dir> Browse a directory
kiss . Open current directory
Features
The usual editor essentials are here — undo/redo, clipboard, line numbers, word wrap, cursor line highlight. On top of that KISS adds:
- File tree — browse and open files with custom icons per file type
- Syntax highlighting — auto-detected from the file
- Command palette (
Ctrl+P) — fuzzy-find files, switch themes - Image viewer — open images directly in the terminal (requires Kitty, Sixel or iTerm support)
- Config —
~/.kiss_conf.json, open withCtrl+O - Help dialog —
Ctrl+H - Splash screen — ASCII logo on startup
Keybindings
Navigation
| Key | Action |
|---|---|
| Arrows | Move cursor |
Home / Ctrl+A |
Go to line start |
End / Ctrl+E |
Go to line end |
PgUp / Ctrl+PgUp |
Page up |
PgDn / Ctrl+PgDn |
Page down |
Ctrl+Left / Ctrl+Right |
Page left / right |
Alt+Left |
Word start |
Alt+Right |
Word end |
Selection
| Key | Action |
|---|---|
Shift+Arrows |
Select character / line |
Shift+Home |
Select to line start |
Shift+End |
Select to line end |
Shift+PgUp / Shift+PgDn |
Select page up / down |
F6 |
Select current line |
F7 |
Select all |
Editing
| Key | Action |
|---|---|
Backspace / Ctrl+Backspace |
Delete char before cursor |
Delete / Ctrl+D |
Delete char under cursor |
Alt+Del |
Delete to start of word |
Ctrl+U |
Delete to line start |
Ctrl+K |
Delete to line end |
Ctrl+Left / Ctrl+Right |
Decrease / increase indent |
Ctrl+X / Super+X |
Cut |
Ctrl+C / Super+C |
Copy |
Ctrl+V |
Paste |
Ctrl+Z |
Undo |
Ctrl+Y |
Redo |
Interface
| Key | Action |
|---|---|
Tab / Shift+Tab |
Focus next / previous element |
Ctrl+S |
Save |
Ctrl+P |
Command palette (files, themes) |
Ctrl+H |
Help dialog |
Ctrl+O |
Open config (~/.kiss_conf.json) |
Ctrl+Q |
Quit |
Configuration
JSON config file at ~/.kiss_conf.json. Open it with Ctrl+O — changes take effect after restart.
A copyable example lives at examples/kiss_conf.json.
{
"kiss": {
"theme": "tokyo-night",
"editor-theme": "dracula",
"show_line_numbers": true,
"soft_wrap": true,
"highlight_cursor_line": false,
"start-screen": false
}
}
| Key | Default | Description |
|---|---|---|
kiss.theme |
"tokyo-night" |
Application theme |
kiss.editor-theme |
"css" |
Syntax highlighting colors |
kiss.show_line_numbers |
true |
Show line numbers |
kiss.soft_wrap |
true |
Soft-wrap long lines |
kiss.highlight_cursor_line |
false |
Highlight current line |
kiss.start-screen |
false |
Show splash screen on startup |
Application themes
textual-dark, textual-light, nord, gruvbox, catppuccin-mocha,
catppuccin-latte, catppuccin-frappe, catppuccin-macchiato, dracula,
tokyo-night, monokai, flexoki, solarized-light, solarized-dark,
rose-pine, rose-pine-moon, rose-pine-dawn, atom-one-dark,
atom-one-light, ansi-dark, ansi-light
Editor themes
css, monokai, dracula, vscode_dark, github_light
css is the default editor theme. It has no fixed background — it adapts to
the current application theme's palette, so the editor blends with the app UI.
TODO
- Enter handling — auto-indent to match the current line on newline
- Custom command palette — replace the default Textual palette with a bespoke one
- Search within file —
Ctrl+F(maybe) - Markdown viewer — two modes: render and edit
License
MIT License.
Repo: github.com/levk-m/kiss
Release files for kiss-editor 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kiss_editor-0.2.1.tar.gz | 8.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kiss_editor-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.6 kB
Release files / kiss_editor-0.2.1.tar.gz
| Download URL | kiss_editor-0.2.1.tar.gz |
|---|---|
| Size | 8.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c68ebc8bcfbdd113aa2eb0101fe074aead33399eff833c8f04d6a1dfbed0efd5
|
|
BLAKE2b-256 checksum How to use checksums |
7b4c23189b7b84c95bf4284d3ecb7b0cba22b06e076fe845e9a95fdd3ac101b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / kiss_editor-0.2.1-py3-none-any.whl
| Download URL | kiss_editor-0.2.1-py3-none-any.whl |
|---|---|
| Size | 11.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4afb3b4a3a6da610a943734a459ebc718b5bcf0167ca54ab8a327ad5a14c8f19
|
|
BLAKE2b-256 checksum How to use checksums |
cbc79efc58e3a7c753d459fa9fb4dc8d8ee732f84a67735853cd2c6903a76894
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|