fix(linux): значок .desktop не рендерился; нечем было остановить хаб #5

Merged
ochenstarik-ui merged 1 commit from linux/a62-installer-desktop-icon into main 2026-09-03 18:03:16 +00:00
ochenstarik-ui commented 2026-09-03 15:03:10 +00:00 (Migrated from github.com)

Найдено и проверено живым прогоном на реальной Linux-машине (настоящий GTK-рабочий стол, настоящие профили agy), не по чтению кода.

1. Значок .desktop-записи был .ico

Измерено: GdkPixbuf.Pixbuf.new_from_file на HermesHub.ico падает с Compressed icons are not supported. .desktop-файл с нерендерящейся иконкой меню приложений и файловый менеджер просто показывают пустым — без ошибки, молча. PNG в тех же ассетах уже был и загружается (проверено: 256×256). Подставлен app_icon_256.png.

2. Хаб нельзя было остановить иначе как из терминала

На Windows сервер стартует из HermesHubWeb.exe, который держит значок в системном трее — оттуда «Exit» останавливает процесс. На Linux сервер остаётся в фоне после закрытия окна браузера (так и задумано — не переустанавливать каждый раз), но ни кнопки в интерфейсе (её нет ни на одной платформе), ни трея, ни пункта меню не было вовсе.

launcher/hermes-hub-stop.sh — недостающий эквивалент «Exit из трея»: доступен из меню приложений через собственный .desktop-пункт, использует ту же функцию, что и install/uninstall. Проверено живым прогоном: сервер запущен → остановлен новым лаунчером → curl получает connection refused.

3. uninstall-linux.sh не останавливал работающий хаб перед удалением файлов

Та же причина, что install уже чинил для установки: с --purge-user-data это ещё и rm -rf каталогов, на которые у живого процесса открыты файловые дескрипторы. Измерено: сервер, запущенный в песочнице, оставался в списке процессов после uninstall-linux.sh до этой правки.

4. Устранено дублирование

stop_running_hub была вписана отдельно в install-linux.sh и uninstall-linux.sh — вынесена в installer/lib_stop_running_hub.sh, источается обоими скриптами и новым лаунчером остановки.

Проверка

Дважды: прямым запуском install-linux.sh/uninstall-linux.sh в изолированной песочнице (не ~/.hermes) и через собранный dist/hermes-hub-setup.sh — тот самый файл, который уходит в релиз.

Тесты: 738 → 740 passed. Новый тест на .ico падает на прежней версии install-linux.sh (проверено git stash) и проходит после фикса. ruff check . чисто.

🤖 Generated with Claude Code

Найдено и проверено живым прогоном на реальной Linux-машине (настоящий GTK-рабочий стол, настоящие профили `agy`), не по чтению кода. ## 1. Значок `.desktop`-записи был `.ico` Измерено: `GdkPixbuf.Pixbuf.new_from_file` на `HermesHub.ico` падает с `Compressed icons are not supported`. `.desktop`-файл с нерендерящейся иконкой меню приложений и файловый менеджер просто показывают пустым — без ошибки, молча. PNG в тех же ассетах уже был и загружается (проверено: 256×256). Подставлен `app_icon_256.png`. ## 2. Хаб нельзя было остановить иначе как из терминала На Windows сервер стартует из `HermesHubWeb.exe`, который держит значок в системном трее — оттуда «Exit» останавливает процесс. На Linux сервер остаётся в фоне после закрытия окна браузера (так и задумано — не переустанавливать каждый раз), но ни кнопки в интерфейсе (её нет ни на одной платформе), ни трея, ни пункта меню не было вовсе. `launcher/hermes-hub-stop.sh` — недостающий эквивалент «Exit из трея»: доступен из меню приложений через собственный `.desktop`-пункт, использует ту же функцию, что и install/uninstall. Проверено живым прогоном: сервер запущен → остановлен новым лаунчером → `curl` получает `connection refused`. ## 3. `uninstall-linux.sh` не останавливал работающий хаб перед удалением файлов Та же причина, что install уже чинил для установки: с `--purge-user-data` это ещё и `rm -rf` каталогов, на которые у живого процесса открыты файловые дескрипторы. Измерено: сервер, запущенный в песочнице, оставался в списке процессов после `uninstall-linux.sh` до этой правки. ## 4. Устранено дублирование `stop_running_hub` была вписана отдельно в `install-linux.sh` и `uninstall-linux.sh` — вынесена в `installer/lib_stop_running_hub.sh`, источается обоими скриптами и новым лаунчером остановки. ## Проверка Дважды: прямым запуском `install-linux.sh`/`uninstall-linux.sh` в изолированной песочнице (не `~/.hermes`) и через собранный `dist/hermes-hub-setup.sh` — тот самый файл, который уходит в релиз. Тесты: 738 → 740 passed. Новый тест на `.ico` падает на прежней версии `install-linux.sh` (проверено `git stash`) и проходит после фикса. `ruff check .` чисто. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
No description provided.