Put the clock on the working chips, and on all of them

The counter rode on the first chip, whichever state it happened to be in.
It now shows on every chip that is working and on no other: how long a
session has been at it is the thing that decides whether to wait for it,
where the age of an idle one only says how long ago you stopped looking.

The setting keeps its key and changes its name to "Show working time".

CLAUDE.md is new, and its first rule is the one broken twice: writing to
dconf from a shell attached to the live session bus wipes settings that
cannot be recovered.
This commit is contained in:
av
2026-08-10 17:21:43 +03:00
parent be69bec17f
commit f8e85d5703
5 changed files with 80 additions and 23 deletions
+47
View File
@@ -0,0 +1,47 @@
# Работа над этим расширением
## Никогда не писать в dconf живой сессии
**Запрещено** выполнять `gsettings set`, `gsettings reset`, `dconf write` и `dconf reset`
из bash этой сессии — ни голыми, ни с префиксом `XDG_CONFIG_HOME=...`.
Почему префикс не помогает: базу выбирает не клиент, а `dconf-service`, поднятый шиной
живой сессии, и берёт он её из **своего** окружения. Любая запись уходит в
`~/.config/dconf/user` Антона.
Чем это кончалось (дважды): затёрт `org.gnome.shell enabled-extensions` — во второй раз,
9 и 10 августа 2026, на работающем shell, отчего у него мгновенно отвалились dock, ding,
appindicators и tiling-assistant. Прежний список dconf не хранит, восстановить его точно
нельзя, только реконструировать.
Что делать вместо:
- нужно поменять настройку в **живой** сессии — отдать Антону команду, он выполнит её сам
через `! <команда>`;
- нужна настройка для **вложенного** shell — экспортировать `XDG_CONFIG_HOME` до форка
шины и звать `gsettings` уже внутри этой шины (см. рецепт ниже);
- читать (`dconf read`, `gsettings get`) можно свободно.
## Проверка изменений — только во вложенном shell
Живую сессию не трогаем вообще: расширение включает и перезагружает shell Антон сам.
У него несколько сессий Claude Code в zellij внутри gnome-terminal, и падение
gnome-shell унесёт весь его рабочий набор.
Рецепт для проверок только на чтение (GNOME 46, проверен 10.08.2026):
```sh
XDG_STATE_HOME=$TMP/state timeout 50 dbus-run-session -- \
gnome-shell --nested --wayland > $TMP/nested.log 2>&1
```
Подставные файлы сессий обязаны нести `event_ts` (плюс `since`, `started`): без него
`SessionStore` считает их древними и **удаляет** до первой отрисовки.
Скриншот из вложенного shell снять нельзя. Чтобы увидеть, что он нарисовал, добавляем
временный `log()` в код, читаем его из `nested.log` — и убираем инструментацию перед
коммитом.
## Коммиты
Без трейлера `Co-Authored-By`.