Cap the chips at three, and make the menu report-only
Two changes that pull in the same direction: the panel says less, and the menu stops pretending to do anything. The chip row had no bound. It sits in the centre box next to the clock, so enough open sessions would have shoved the clock off centre. It now shows the first N, settable and three by default, and counts the rest as "+N". Chips are already ordered by urgency, so the ones that survive the cut are the ones that need you soonest. Labels are still assigned across every session, including hidden ones, so a chip does not change when the cap does or when a session ahead of it disappears. Clicking a menu row used to switch the zellij tab and raise a terminal. That is gone. It cost real machinery for what it saved -- gnome-terminal runs every window under one shared server process, so windows cannot be matched by pid and the code fell back to matching the zellij session name against window titles, with all the ways that misses. The menu reports status; alt-tab is not the bottleneck. Rows are built inert rather than demoted after the fact, because PopupBaseMenuItem latches _activatable in its constructor. zellij tab lookup stays: naming the tab is the better half of that feature and costs one process every couple of minutes. The preferences test now asserts a control per settings key rather than a switch per key, so the new spin row counts and a future non-boolean setting cannot slip in without one.
This commit is contained in:
@@ -42,6 +42,10 @@ Code ждёт меня прямо сейчас?**
|
||||
текстом `«Claude needs your permission»`. Различить их можно было бы только через
|
||||
`PreToolUse` — ценой записи файла на каждый вызов инструмента.
|
||||
|
||||
Чипов показывается три (настраивается), остальные сворачиваются в `+N`. Панель
|
||||
живёт в центральном боксе рядом с часами, и без предела достаточно открытых
|
||||
сессий сдвинули бы часы с центра.
|
||||
|
||||
Чипы идут по срочности, а внутри одного состояния первой стоит **самая
|
||||
давняя**: забывается та, что ждёт дольше всех, а не последняя. Время в
|
||||
состоянии показывается только у первого чипа: пять счётчиков рядом — это
|
||||
@@ -178,13 +182,17 @@ gnome-extensions enable claude-code-status@git.vakhrushev.me
|
||||
|
||||
## zellij
|
||||
|
||||
Если сессии живут в табах zellij, меню показывает **имя таба**, а клик
|
||||
переключает на него. Поиск идёт через `zellij action dump-layout` — рабочий
|
||||
каталог сессии сопоставляется с каталогами пейнов, потому что в дампе раскладки
|
||||
нет id пейнов и `ZELLIJ_PANE_ID` для этого не годится. Отсюда следствия: две
|
||||
сессии в одном табе неразличимы, а сессия, сменившая `cwd` после открытия пейна,
|
||||
не найдётся. Строки, которые не разрешились, остаются некликабельными — вместо
|
||||
того чтобы делать вид, будто клик что-то делает.
|
||||
Если сессии живут в табах zellij, меню называет **имя таба** — это лучший ответ
|
||||
на «в какой терминал идти», чем путь. Поиск идёт через `zellij action
|
||||
dump-layout`: рабочий каталог сессии сопоставляется с каталогами пейнов, потому
|
||||
что в дампе раскладки нет id пейнов и `ZELLIJ_PANE_ID` для этого не годится.
|
||||
Отсюда следствия: две сессии в одном табе неразличимы, а сессия, сменившая
|
||||
`cwd` после открытия пейна, не найдётся.
|
||||
|
||||
Меню **ничего не делает** — только показывает. Ни строки, ни чипы не кликабельны:
|
||||
переключение таба и подъём окна были написаны и убраны, потому что стоили заметной
|
||||
логики (окна gnome-terminal нельзя сопоставить по pid — все они под одним
|
||||
серверным процессом) ради экономии одного alt-tab.
|
||||
|
||||
Если zellij не используется, выключите в настройках: он стоит одного процесса
|
||||
раз в пару минут.
|
||||
@@ -198,11 +206,6 @@ gnome-extensions enable claude-code-status@git.vakhrushev.me
|
||||
путается с «мёртв», — и такие записи истекают по возрасту, через 36 часов.
|
||||
- **`Stop` не отличает «закончил» от «сдался».** Оба читаются как «ждёт ввода»,
|
||||
и решение для вас в обоих случаях одно и то же.
|
||||
- **Фокус ведёт к табу zellij, а не к окну.** gnome-terminal держит все окна под
|
||||
одним общим серверным процессом, так что окно нельзя сопоставить по pid. Окно
|
||||
поднимается, только если в его заголовке есть имя zellij-сессии; когда
|
||||
совпадения нет, таб всё равно переключается, а фокус остаётся на месте —
|
||||
поднять произвольный терминал хуже, чем не поднимать никакой.
|
||||
|
||||
## Тесты
|
||||
|
||||
|
||||
Reference in New Issue
Block a user