Commit 227d0d2b6ce1

Vincent Demeester <vincent@sbr.pm>
2026-07-31 15:03:54
fix(kitty): workaround inotify watch exhaustion
Added zsh workaround to kill kitten __watch_conf__ and updated config comment to reference upstream #10102. Needed until kitty >= 0.47.2 lands in Fedora.
1 parent 7ae853b
Changed files (2)
dots
config
zsh
home
common
desktop
dots/config/zsh/tools/kitty.zsh
@@ -6,3 +6,12 @@ autoload -Uz -- "$KITTY_INSTALLATION_DIR"/shell-integration/zsh/kitty-integratio
 kitty-integration
 unfunction kitty-integration
 
+# WORKAROUND: kitty < 0.47.2 spawns kitten __watch_conf__ that recursively
+# watches symlink targets (e.g. nix store), exhausting inotify watches.
+# See https://github.com/kovidgoyal/kitty/issues/10102
+# Remove when Fedora ships kitty >= 0.47.2.
+if (( KITTY_PID )) && [[ ! -f /tmp/.kitty-watcher-killed-$KITTY_PID ]]; then
+  pkill -f 'kitten __watch_conf__' 2>/dev/null
+  touch /tmp/.kitty-watcher-killed-$KITTY_PID
+fi
+
home/common/desktop/kitty.nix
@@ -10,8 +10,9 @@
     package = if osConfig != null then pkgs.kitty else pkgs.emptyDirectory;
     shellIntegration.enableZshIntegration = false; # handled in dots/config/zsh/tools/kitty.zsh
     settings = {
-      # FIXME: disable until kitty >= 0.47.4 lands in Fedora (upstream #10102:
-      # config watcher recursively watches $HOME, leaking inotify watches)
+      # FIXME: disable until kitty >= 0.47.2 lands in Fedora (upstream #10102:
+      # config watcher recursively watches symlink targets like /nix/store,
+      # exhausting inotify watches). Workaround in dots/config/zsh/tools/kitty.zsh.
       auto_reload_config = "0";
       close_on_child_death = "yes";
       # font_family = "JetBrainsMono Nerd Font Mono";