Skip to main content

PBKittyConfigStudio

Release CI Coverage PyPI

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 as font_features/modify_font.
  • 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.
  • 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 SIGUSR1 to running kitty instances after a save.
  • Restore default configuration — regenerates kitty's own pristine, fully-commented example kitty.conf (via a throwaway kitty instance) and overwrites the current file, behind a confirmation dialog and the usual timestamped backup.
  • Translated UI — English and French 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+
  • kitty terminal
  • pixi (recommended) to manage the development environment

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.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PBKittyConfigStudio 0.1.1
File Size Uploaded
pbkittyconfigstudio-0.1.1.tar.gz 1.9 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for PBKittyConfigStudio 0.1.1
File Interpreter ABI Platform
pbkittyconfigstudio-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 3.7 MB

Release files / pbkittyconfigstudio-0.1.1.tar.gz

Download URL pbkittyconfigstudio-0.1.1.tar.gz
Size 1.9 MB
Tags Source
SHA-256 checksum
How to use checksums
0d56a76b844262077cf749577190f3563331bf435bda17e7f80b711b0ffb0989
BLAKE2b-256 checksum
How to use checksums
97429b3a49a5095d8461f17b92a0e41da5c6dc30f91c36ed1d56c5b5e31a948f
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.1.1-py3-none-any.whl

Download URL pbkittyconfigstudio-0.1.1-py3-none-any.whl
Size 1.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
5d758c9756653f1463d3f44397b59d1de64276a80398760dcb3d41eb6d519c1d
BLAKE2b-256 checksum
How to use checksums
021a741ea5ca21d6e71b1dd4b15d0e642b6365025bf7410c6d3bd828626e088b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release history Release notifications | RSS feed

0.5.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page