Skip to content

feat(linux): улучшения трея - статус-кружок, уведомления, автозапуск, диалог обновления#854

Open
f4rceful wants to merge 18 commits into
Flowseal:mainfrom
f4rceful:feat/linux-tray-improvements
Open

feat(linux): улучшения трея - статус-кружок, уведомления, автозапуск, диалог обновления#854
f4rceful wants to merge 18 commits into
Flowseal:mainfrom
f4rceful:feat/linux-tray-improvements

Conversation

@f4rceful
Copy link
Copy Markdown
Contributor

Портировал улучшения из #829 на Linux и добавил несколько Linux-специфичных вещей, которых не хватало

Что добавил

  • Статус-точка на иконке трея - красная/жёлтая/зелёная через StatusManager, обновляется каждую секунду
image
  • Уведомления через notify-send при падении прокси - отдельные сообщения для "порт занят" и общего краша
Снимок экрана от 2026-05-15 23-01-36 Снимок экрана от 2026-05-15 23-01-40 Снимок экрана от 2026-05-15 23-01-44 Снимок экрана от 2026-05-15 23-01-27
  • Открытие ссылки в Telegram через xdg-open вместо просто копирования в буфер; буфер - только как fallback
  • Замена tkinter-диалогов: _show_info/_show_errornotify-send, _ask_yes_nozenity --question с иконкой приложения (если zenity не установлен — fallback на notify-send)
  • Автозапуск через XDG .desktop файл в ~/.config/autostart/ — управляется чекбоксом в настройках
  • Диалог обновления на CTK с кнопками "Страница" / "Закрыть"
  • Фикс скролла в настройках на Linux/Wayland - CTK не задаёт yscrollincrement для Linux, из-за чего одно движение колёсика листало всё до конца

@f4rceful f4rceful requested a review from Flowseal as a code owner May 15, 2026 20:07
@f4rceful f4rceful changed the title feat(linux): улучшения трея - статус-точка, уведомления, автозапуск, диалог обновления feat(linux): улучшения трея - статус-кружок, уведомления, автозапуск, диалог обновления May 15, 2026
@f4rceful f4rceful force-pushed the feat/linux-tray-improvements branch from 32f6e38 to 27a4516 Compare May 16, 2026 21:24
@f4rceful
Copy link
Copy Markdown
Contributor Author

иконка не появлялась - _imagingtk был исключён из бандла в linux.spec
скролл колесом не работал на KDE - события поглощались дочерними виджетами, заменил на bind_all
Closes #857

f4rceful added 17 commits May 17, 2026 00:30
- add add_status_dot() to overlay colored dot on base icon at 256px
- add _load_dot_image() with PNG support from assets/ folder
- add ProxyStatus enum (STOPPED/IDLE/ACTIVE)
- add StatusManager with 2s debounce for icon updates
- add is_proxy_running() helper
- add assets/ folder for custom dot PNG files
- status dot reflects proxy state: idle (amber), active (green), stopped (red)
- StatusManager polls every 1s with 2s debounce to prevent icon flickering
- crash balloon notification via Shell_NotifyIconW with hBalloonIcon
- uses pystray internal _hwnd for direct Win32 API call
- _pil_to_hicon converts PIL image to HICON for high-quality balloon icon
- tooltip shows active connections, upload/download speed (bytes/s)
- DC ping measured via TCP connect to port 443, updated every 30s
- ping shown on separate line: DC2: 45ms  DC4: 120ms
- pings visible in idle state too, not just when connections are active
- import StatusManager, ProxyStatus, add_status_dot, is_proxy_running
- _notify_send() sends desktop notifications via notify-send subprocess
- _start_dc_pinger() measures TCP latency to each DC every 30s
- _start_icon_updater() updates tray icon dot (idle/active/stopped) and
  tooltip with connection count, speed and DC pings via StatusManager
- crash notification fires on STOPPED transition with reason from _crash_reason
@f4rceful f4rceful force-pushed the feat/linux-tray-improvements branch from 27a4516 to 262ce67 Compare May 16, 2026 21:30
@Flowseal
Copy link
Copy Markdown
Owner

Flowseal commented May 16, 2026

Почему в pr для линукса изменены файлы для винды?
Если лень было отдельные ветки делать, то лучше бы в одном pr'е это было под общим названием

@f4rceful
Copy link
Copy Markdown
Contributor Author

забыл переключить ветку изменения windows.ру случайно попали сюда из PR #829, убрал

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants