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(bundled at build time, see below) 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
- Python 3.12+
- pixi (recommended) to manage the development environment
kitty itself is not required to
run this app: the settings schema, action reference and default
configuration are all generated once at build time from kitty's own source
(see CODING.md) and bundled with the app, so it never queries
an installed kitty. You'll obviously want kitty installed to actually use
the kitty.conf you edit with it, and running for hot reload after a save
to take effect.
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.5.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.5.0.tar.gz | 2.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pbkittyconfigstudio-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 4.1 MB
Release files / pbkittyconfigstudio-0.5.0.tar.gz
| Download URL | pbkittyconfigstudio-0.5.0.tar.gz |
|---|---|
| Size | 2.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7fc83332ef03519a9449e765c2fec1e3d5d4449f239cb4f9973ceb8d7379fdcb
|
|
BLAKE2b-256 checksum How to use checksums |
4ded51bcdecb3ce35c31de3a9f6cb2bd14ce6cee42a14bdb805f901d77070ae5
|
| 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.5.0-py3-none-any.whl
| Download URL | pbkittyconfigstudio-0.5.0-py3-none-any.whl |
|---|---|
| Size | 2.0 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b46fd20b527eca0bd5e0d8c9408e79ab446b2a6f99ba94046967bf414bce2596
|
|
BLAKE2b-256 checksum How to use checksums |
97a8cb0123e0e3c9d6fe9fa14216961ef688d962347002d4d6276b09be43469c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|