PBKittyConfigStudio
Although kitty is a keyboard-driven terminal for power users that also fully supports the mouse, editing its configuration file can be a chore: knowing the options, their possible values, their defaults... you need the documentation open in front of you.
This program is a graphical interface for configuring the kitty terminal. It covers a broad set of kitty's configuration options, pulled directly from kitty's own source (see CODING.md for how).
Built with Python and PySide6 (Qt6), the app needs nothing else.
Features
- ~237 settings across 12 categories, mirroring kitty's own grouping: fonts, cursor, scrollback, mouse, performance, terminal bell, window layout, tab bar, color scheme (including the 16 ANSI colors and mark colors), advanced, OS-specific tweaks, and the non-mapping keyboard shortcut settings.
- Real widgets for real values — color pickers, spin boxes, toggle
switches, dropdowns, a font picker built on Qt's own font database (no
shelling out to
fc-list), and a list editor for repeatable settings such asfont_features/modify_font. - A sidebar tree, not a flat list — a subgroup (e.g. the color table under "Color scheme", mouse actions under "Mouse") is its own entry with its own settings page, so a category with a lot of settings never turns into one giant scrolling page burying part of it below the fold.
- Search — a search box above the sidebar filters settings by name or label across every category.
- Default vs. modified at a glance — every row is badged "default" or "modified" against kitty's own default value, with one-click buttons to reset it to that default or revert it to the value currently saved on disk (without rereading the whole file and losing other unsaved edits).
- Non-destructive — every save writes a timestamped backup
(
kitty.conf.bak_<date>) first, and rewrites existing lines (including commented-out ones) in place with a targeted regex, leaving comments and everything else in the file untouched. A value equal to its default is written back as a commented-out line, documenting it without forcing it. - Hot reload — best-effort
SIGUSR1to running kitty instances after a save. - Restore default configuration — regenerates kitty's own pristine,
fully-commented example
kitty.conf(via a throwawaykittyinstance) and overwrites the current file, behind a confirmation dialog and the usual timestamped backup. - Translated UI — English and many other languages out of the box (see Development to add a language).
- Stays in sync with kitty — the settings schema is generated straight from kitty's own option definitions rather than hand-maintained; see CODING.md for the full pipeline.
Requirements
Quick Start
make venv # create the pixi environment (installs pixi if missing)
make run # launch PBKittyConfigStudio
Or, without pixi, in any Python 3.12+ environment:
pip install -e .
python -m pb_kitty_config_studio
Development
This project uses pixi for environment management and a
Makefile for all common tasks — see make help for the full list.
make venv # create/update the pixi environment
make install # editable install + pre-commit hooks
make test # run the test suite
make lint # ruff check + format --check
make format # ruff format + check --fix
See CODING.md for the architecture, the schema generation/ curation pipeline, and the i18n extraction details — start there before adding or changing a setting.
Translations
Strings are managed with pybabel (never
xgettext/msgfmt directly).
make translate # extract strings, update & compile .po/.mo
make new-lang LOCALE=de # scaffold a new language
python tools/po_check.py # translation stats / search untranslated entries
Packaging
make dist # standalone PyInstaller executable → dist/
make srcdist # source archive (git archive) → dist/
The PyInstaller build embeds the OS-level app icon (.ico on Windows,
.icns in the macOS .app bundle). Icons are sourced from the PBIcons
project; sync them with:
make update-icons
License
GNU General Public License v3.0 or later — see LICENSE.
Credits
- Kovid Goyal and the kitty development team — many thanks for building and maintaining the kitty terminal this app configures.
Author
Marcel Spock mrspock@cardolan.net PBMou
PBMou is a cross-language pun: "PB" stands for "Poilbarbe", and "Mou" is the French translation of "Soft" — so PBMou reads like "PBSoft" half-translated into French.
Release files for PBKittyConfigStudio 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pbkittyconfigstudio-0.2.0.tar.gz | 1.9 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pbkittyconfigstudio-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.8 MB
Release files / pbkittyconfigstudio-0.2.0.tar.gz
| Download URL | pbkittyconfigstudio-0.2.0.tar.gz |
|---|---|
| Size | 1.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
764c1b739149a3a08822b3c5b8d59a497d1f4b52d4aeedcc6bd9fb34ba875134
|
|
BLAKE2b-256 checksum How to use checksums |
8e30e44ccd8219dfda4fcaf5dd23659957fef0551690cbb9e284ac26dc7c93a1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|
Release files / pbkittyconfigstudio-0.2.0-py3-none-any.whl
| Download URL | pbkittyconfigstudio-0.2.0-py3-none-any.whl |
|---|---|
| Size | 1.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
448879e54b85621a335c641a6fb4588db31196ccb3225b274e8edd4d15851abe
|
|
BLAKE2b-256 checksum How to use checksums |
de330e22622a26d451e7e63bfabbeb495dd8cd9f0461f8e1687ae81a9b047a0a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|