Compare commits

...
10 Commits
Author SHA1 Message Date
rootiest 23d74690dc fix: remove watcher from base repo
The Rootiest fish-config will append the watcher automatically when it
adds the symlink.

On systems using this kitty config but not the accompanying fish config,
this will prevent any confusion on the feature.
2026-07-16 02:49:40 -04:00
rootiest 77fcd76f43 chore: fix section indicators 2026-07-16 02:47:28 -04:00
rootiest af9111c791 feat: implement fish-config logging utility 2026-07-16 02:38:47 -04:00
rootiest baf2dc7d0b fix: adjust initial window size to be a bit larger 2026-07-16 02:38:06 -04:00
rootiest 3e00a620d1 chore(gitignore): update ai agent ignore patterns 2026-06-17 21:10:30 -04:00
rootiest 3f7eab7761 refactor(logging): remove redundant home assignment in save_scrollback_safely 2026-06-10 21:38:19 -04:00
rootiest e271c6e486 feat(logging): check C5 sentinel before scrollback capture 2026-06-10 21:36:48 -04:00
rootiest 5970905c08 docs: update links
chore: update gitignore patterns
2026-05-31 00:18:54 -04:00
rootiest 9228f55709 Merge pull request 'feat(watcher): add scrollback history logging on window/pane close' (#2) from feat-scrollback-watcher into main
Reviewed-on: #2
2026-05-31 03:42:31 +00:00
rootiest 9d34764815 feat(watcher): add scrollback history logging on window/pane close
Introduces watcher.py — a kitty Python watcher that captures terminal
scrollback to ~/.terminal_history/ whenever any window or pane is closed
via Ctrl+D, keybind, or full kitty quit. Works alongside the fish
smart_exit function, which handles graceful shell exits and sets a
user var flag to prevent duplicate logs.

Fixes the kitty.conf watcher directive (removed invalid --type=global
prefix that caused a FileNotFoundError on every kitty startup).
2026-05-30 23:40:53 -04:00
4 changed files with 287 additions and 16 deletions
View File
+267 -9
View File
@@ -2,14 +2,272 @@ kitty-dump.json
saved-session.conf
/OLD
# AI Sessions
.gemini_session
.claude_session
.remember/
# id: gi-patterns-e390e9c720b3dda36906a2b4cb76ffdd
# Created by https://www.toptal.com/developers/gitignore/api/python
# Edit at https://www.toptal.com/developers/gitignore?templates=python
# Personal testing/temporary files
[Tt][Mm][Pp]/
[Tt][Ee][Mm][Pp]/
[Tt][Ee][Mm][Pp][Oo][Rr][Aa][Rr][Yy]/
[Tt][Ee][Ss][Tt][Ii][Nn][Gg]/
### Python ###
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock
# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
### Python Patch ###
# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration
poetry.toml
# ruff
.ruff_cache/
# LSP config files
pyrightconfig.json
# End of https://www.toptal.com/developers/gitignore/api/python
# id: gitig-boilerplate-7f0528027e23f210196ae4583c408e5b
# ╭──────────────────────────────────────────────────────────╮
# │ GitIgnore Boilerplate Template │
# ╰──────────────────────────────────────────────────────────╯
#
# ──────────────────── OS-Generated Files ────────────────────
# automatic backup files created by some editors (e.g., Vim, Emacs)
*~
# temporary files created if a process still has a handle to a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# MacOS junk
.DS_Store
# Linux trash folder which might appear on any partition or disk
.Trash-*
# files created when an open file is removed but is still being accessed
.nfs*
# ─────────────────── Debug/Temporary/Testing ────────────────
# Matches OLD / .OLD
[Oo][Ll][Dd]/
.[Oo][Ll][Dd]/
# Matches DISABLE / .DISABLE
[Dd][Ii][Ss][Aa][Bb][Ll][Ee]/
.[Dd][Ii][Ss][Aa][Bb][Ll][Ee]/
# Matches DISABLED / .DISABLED
[Dd][Ii][Ss][Aa][Bb][Ll][Ee][Dd]/
.[Dd][Ii][Ss][Aa][Bb][Ll][Ee][Dd]/
# Matches DEBUG / .DEBUG
[Dd][Ee][Bb][Uu][Gg]/
.[Dd][Ee][Bb][Uu][Gg]/
# Matches TMP / .TMP
[Tt][Mm][Pp]/
.[Tt][Mm][Pp]/
# Matches TEMP / .TEMP
[Tt][Ee][Mm][Pp]/
.[Tt][Ee][Mm][Pp]/
# Matches TEMPORARY / .TEMPORARY
[Tt][Ee][Mm][Pp][Oo][Rr][Aa][Rr][Yy]/
.[Tt][Ee][Mm][Pp][Oo][Rr][Aa][Rr][Yy]/
# Matches TESTING / .TESTING
[Tt][Ee][Ss][Tt][Ii][Nn][Gg]/
.[Tt][Ee][Ss][Tt][Ii][Nn][Gg]/
# ─────────────────── AI Sessions and Rules ──────────────────
# Matches CLAUDE.md, .claud*, etc.
[Cc][Ll][Aa][Uu][Dd][Ee].[Mm][Dd]
.[Cc][Ll][Aa][Uu][Dd]*
# Matches GEMINI.md, .gemin*, etc.
[Gg][Ee][Mm][Ii][Nn][Ii].[Mm][Dd]
.[Gg][Ee][Mm][Ii][Nn]*
# Matches ANTIGRAVITY.md, .antigrav*, etc.
[Aa][nN][Tt][Ii][Gg][Rr][Aa][Vv][Ii][Tt][Yy].[Mm][Dd]
.[Aa][Nn][Tt][Ii][Gg][Rr][Aa][Vv]*
# Matches AGENTS.md, .remember, etc.
[Aa][Gg][Ee][Nn][Tt][Ss].[Mm][Dd]
.[Rr][Ee][Mm][Ee][Mm][Bb][Ee][Rr]
# ──────────────────────────────────────────────────────────────
# ──────────────── Added by agents-init ──────────────────
# agents-init --agents
AGENTS/
# ────────────────────────────────────────────────────────
# ──────────────── Added by agents-init ──────────────────
# agents-init --plugins
docs/superpowers
docs/plans
docs/specs
docs/devlogs
# ────────────────────────────────────────────────────────
### Generated dynamically when needed
/fish-config-watcher.py
+17 -5
View File
@@ -73,6 +73,7 @@ The rootiest kitty configuration you will ever see!
- Smart key bindings with NeoVim-aware passthrough
- Integration with NeoVim (kitty-scrollback.nvim for in-editor scrollback)
- Integration with fish shell
- Automatic scrollback history logging on every window/pane close
- Catppuccin Mocha theme with 85% background opacity and blur
- Cursor trail effect for enhanced visibility
- Highly-tuned Iosevka Rootiest v2 font with custom OpenType features
@@ -81,22 +82,33 @@ The rootiest kitty configuration you will ever see!
- Session saving (F11) and config reload (F12)
- Integrates cleanly with other Rootiest projects
## Configuration
### Scrollback History
Terminal scrollback is automatically saved to `~/.terminal_history/` whenever a window or pane is closed (including `Ctrl+D`, closing a pane via keybind, or quitting kitty). The fish `smart_exit` function handles graceful shell exits; `watcher.py` catches all other close events.
| Variable | Default | Description |
|---|---|---|
| `SCROLLBACK_HISTORY_DIR` | `~/.terminal_history` | Directory where scrollback logs are written |
| `SCROLLBACK_HISTORY_MAX_FILES` | `100` | Maximum number of log files to retain |
## Companion Tools
[Rootiest Fish](https://github.com/rootiest/rootiest-fish) -
[Rootiest Fish](https://git.rootiest.dev/rootiest/fish-config) -
Fish shell configuration that pairs well with this kitty configuration
and the NeoVim configuration.
[Rootiest Tmux](https://github.com/rootiest/rootiest-tmux) -
[Rootiest Tmux](https://git.rootiest.dev/rootiest/tmux-config) -
A tmux configuration that is designed to work with this kitty config.
[Rootiest Neovim](https://github.com/rootiest/rootiest-nvim) -
[Rootiest Neovim](https://git.rootiest.dev/rootiest/neovim-config) -
A NeoVim config built to work alongside this and the fish config.
[Rootiest Iosevka Font](https://github.com/rootiest/rootiest-iosevka) -
[Rootiest Iosevka Font](https://git.rootiest.dev/rootiest/rootiest-iosevka) -
A custom Iosevka font that is designed by developers, for developers.
[Nerd Fonts](https://github.com/ryanoasis/nerd-fonts/) -
[Nerd Fonts](https://github.com/ryanoasis/nerd-fonts) -
A collection of fonts that include many icons and glyphs that are used in this configuration.
## Dotfiles
+3 -2
View File
@@ -13,8 +13,8 @@ copy_on_select yes
# {{{ Window
remember_window_size no
initial_window_width 150c
initial_window_height 31c
initial_window_width 160c
initial_window_height 36c
enabled_layouts splits
# }}}
@@ -43,6 +43,7 @@ font_features IosevkaRootiestV2NF ss05 aplf clik wwid calt jspt mosc thnd vdaa=2
font_features IosevkaRootiestV2NF-ExtraBold ss05 aplf clik wwid calt jspt mosc thnd vdaa=2 vdac=1 vsac=3 vsaf=2 vsag=2 vsah=3 vsai=2 vsaj=3 vsak=1 vsal=6 vsam=6 vsan=6 vsao=4 vsaq=1 vsar=2 vsas=6 vsat=1 cv01=5 cv02=4 cv03=2 cv04=10 cv05=7 cv06=2 cv07=12 cv08=3 cv09=2 cv10=12 cv11=7 cv12=6 cv13=3 cv14=6 cv15=4 cv16=4 cv17=9 cv18=4 cv19=2 cv20=11 cv21=9 cv22=3 cv23=9 cv24=6 cv25=6 cv26=2 cv27=24 cv28=5 cv29=3 cv30=7 cv31=2 cv32=3 cv33=8 cv34=8 cv35=27 cv36=3 cv37=3 cv38=5 cv39=5 cv40=2 cv41=4 cv42=2 cv43=7 cv44=8 cv45=2 cv46=20 cv47=7 cv48=34 cv49=6 cv50=3 cv51=20 cv52=14 cv53=1 cv54=4 cv55=5 cv56=4 cv57=25 cv58=13 cv59=13 cv60=11 cv67=1 cv68=1 cv70=3 cv73=3 cv85=2
font_features IosevkaRootiestV2NF-Italic ss05 aplf clik wwid calt jspt mosc thnd vdaa=2 vdac=1 vsac=3 vsaf=2 vsag=2 vsah=3 vsai=2 vsaj=3 vsak=1 vsal=6 vsam=6 vsan=6 vsao=4 vsaq=1 vsar=2 vsas=6 vsat=1 cv01=5 cv02=4 cv03=2 cv04=10 cv05=7 cv06=2 cv07=12 cv08=3 cv09=2 cv10=12 cv11=7 cv12=6 cv13=3 cv14=6 cv15=4 cv16=4 cv17=9 cv18=4 cv19=2 cv20=11 cv21=9 cv22=3 cv23=9 cv24=6 cv25=6 cv26=2 cv27=24 cv28=5 cv29=3 cv30=7 cv31=2 cv32=3 cv33=8 cv34=8 cv35=27 cv36=3 cv37=3 cv38=5 cv39=5 cv40=2 cv41=4 cv42=2 cv43=7 cv44=8 cv45=2 cv46=20 cv47=7 cv48=34 cv49=6 cv50=3 cv51=20 cv52=14 cv53=1 cv54=4 cv55=5 cv56=4 cv57=25 cv58=13 cv59=13 cv60=11 cv67=1 cv68=1 cv70=3 cv73=3 cv85=2
font_features IosevkaRootiestV2NF-ExtraBoldItalic ss05 aplf clik wwid calt jspt mosc thnd vdaa=2 vdac=1 vsac=3 vsaf=2 vsag=2 vsah=3 vsai=2 vsaj=3 vsak=1 vsal=6 vsam=6 vsan=6 vsao=4 vsaq=1 vsar=2 vsas=6 vsat=1 cv01=5 cv02=4 cv03=2 cv04=10 cv05=7 cv06=2 cv07=12 cv08=3 cv09=2 cv10=12 cv11=7 cv12=6 cv13=3 cv14=6 cv15=4 cv16=4 cv17=9 cv18=4 cv19=2 cv20=11 cv21=9 cv22=3 cv23=9 cv24=6 cv25=6 cv26=2 cv27=24 cv28=5 cv29=3 cv30=7 cv31=2 cv32=3 cv33=8 cv34=8 cv35=27 cv36=3 cv37=3 cv38=5 cv39=5 cv40=2 cv41=4 cv42=2 cv43=7 cv44=8 cv45=2 cv46=20 cv47=7 cv48=34 cv49=6 cv50=3 cv51=20 cv52=14 cv53=1 cv54=4 cv55=5 cv56=4 cv57=25 cv58=13 cv59=13 cv60=11 cv67=1 cv68=1 cv70=3 cv73=3 cv85=2
# }}}
# {{{ Tab Bar
tab_bar_style powerline