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.
  • 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 SIGUSR1 to 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)

Source distribution for PBKittyConfigStudio 0.5.0
File Size Uploaded
pbkittyconfigstudio-0.5.0.tar.gz 2.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for PBKittyConfigStudio 0.5.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

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