added tray menu

This commit is contained in:
2026-08-12 04:59:22 +05:00
parent 08192d317e
commit a0d3098fe4
21 changed files with 1327 additions and 42 deletions
+30 -1
View File
@@ -33,13 +33,42 @@ MSIX всегда выполняются в контексте вошедшег
раскладки чужого окна не ограничено, поэтому сама подсказка продолжает работать
везде.
## Трей
Приложение работает в фоне и живёт в области уведомлений. Окно настроек —
гость на экране, а не само приложение: оно показывается после установки и
всякий раз, когда его просят иконка или её меню. Обе кнопки в заголовке окна —
свернуть и закрыть — убирают окно в трей и ничего не завершают; выход из
приложения — пункт «Выход» в меню трея.
Окно скрывается, а не закрывается. Закрытие унесло бы с собой его дескриптор, и
всё, что на окне держится, — тема, место, где его оставили, вычисленная
разметка, — строилось бы заново при каждом показе.
Меню иконки сделано средствами WPF, а не системное: так оно держится темы и
языка, выбранных в настройках, как и остальной интерфейс.
Запущенное самой Windows, приложение не показывает окна вовсе и сразу уходит в
трей — пользователь просил, чтобы оно было на месте при входе в систему, а не
чтобы окно встречало его каждое утро. Такой запуск две сборки распознают
по-разному: запись в реестре у распакованной сборки несёт аргумент `--startup`, а
пакет своей командной строкой не распоряжается, и вместо неё Windows
спрашивают об активации.
Если Windows откажет иконке — в сеансе без рабочего стола области уведомлений
нет, — окно возвращает себе обычные обязанности: показывается при любом запуске,
а его закрытие завершает приложение. Иначе у пользователя осталось бы
приложение, которое он не может ни увидеть, ни закрыть.
## Автозапуск
Автозапуск включается из настроек приложения тем способом, который доступен
сборке. Пакет объявляет его в манифесте как `windows.startupTask`. Сборка,
распакованная в папку, прописывается так, как это всегда делали программы для
рабочего стола, — в `HKCU\Software\Microsoft\Windows\CurrentVersion\Run`, и прав
администратора для этого не нужно.
администратора для этого не нужно. Записанная там команда заканчивается на
`--startup`: так приложение отличает запуск, устроенный самой Windows, от
запуска пользователем.
И в том, и в другом случае Windows показывает приложение в разделе Параметры —
Приложения — Автозагрузка; если пользователь выключит его там, приложение уже не