Commit Graph

76 Commits

Author SHA1 Message Date
rustdesk
e9b81e3475 typo 2026-08-27 11:47:36 +08:00
Jade
7c6e661fcc fix(linux): Set AppIndicator ID for tray-icon (#15981)
* set static AppIndicator ID in tray-icon init

allows DEs, eg. KDE to 'remember' the user's configuration of tray hidden/unhidden. see: https://github.com/rustdesk/rustdesk/discussions/15208

Signed-off-by: Jade <5164609+gnosticJade@users.noreply.github.com>

* Update tray.rs

---------

Signed-off-by: Jade <5164609+gnosticJade@users.noreply.github.com>
Co-authored-by: RustDesk <71636191+rustdesk@users.noreply.github.com>
2026-08-27 09:41:24 +08:00
RustDesk
85a5fefab8 fix(windows): prevent ghost and duplicate tray icons (#15689) (#15690)
* docs(agents): require minimally invasive, additive-first patches

Codify the review feedback from the tray ghost-icon fix: fixes should
add self-contained code around existing lines instead of restructuring
them, keep platform-specific logic in src/platform/ with fn-local
imports, and leave only thin one-line hooks in shared files.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(windows): stop duplicate tray icons from piling up (#15689)

`check_process("--tray", ..)` is used to decide whether a tray process
needs to be spawned, but it can miss one that is already running: it
cannot read the command line of an elevated process from a non-elevated
one (the installer spawns the tray elevated), and wmic, used by 32-bit
builds since #11638, is gone from newer Windows 11. `connection.rs` runs
that check once per incoming connection, so every miss added another tray
icon and they kept piling up, which is the same blind spot behind #6692.

Hold a named mutex in the session namespace as the authoritative single
instance guard, so a redundant tray process exits before creating an
icon. `ERROR_ACCESS_DENIED` also counts as "already running", since it
means the mutex belongs to a tray we may not touch.

Also remove the icon before the tray menu's "Stop service" calls
uninstall_service(): on success it ends the process with
std::process::exit, which skips the destructor that would call
Shell_NotifyIcon(NIM_DELETE), so every click left a ghost icon behind.
The icon is shown again if stopping the service failed or was cancelled.

Ghost icons from the taskkill in the install/update/service flows are
left alone here.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs(windows): note that update_me's pid lookup can silently find nothing

The pids are matched by command line, which comes back empty for a 32-bit
build reading 64-bit processes (hence the `wmic` fallback of #11638, and
`wmic` is no longer installed by default since Windows 11 24H2) and for a
non-elevated process reading an elevated one. `taskkill` matches by image
name and still works, but the session lists are then empty, so the restore
guard silently restores nothing and the update leaves the user without a
tray icon and main window.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs(windows): record the confirmed cause of the duplicate tray icons

Process Explorer output in #15689 pinned it down: run_after_run_cmds()
spawns the tray in the caller's own context, so installing or toggling
the service from a RustDesk that was itself started elevated leaves a
high integrity tray behind, which a medium integrity main window cannot
inspect afterwards. Record where the detection fails exactly, so the next
reader doesn't have to rediscover that the executable path, not the
command line, is what comes back empty.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 12:18:57 +08:00
Daniel Marschall
0cbdb6ffb3 Fix tray icon click (regression due to breaking change in tray-icon 0.17) (#15413) 2026-06-25 09:43:04 +08:00
21pages
c457b0e7d3 add option to hide stop-service when service is running (#14563)
* add option to hide stop-service when service is running

Signed-off-by: 21pages <sunboeasy@gmail.com>

* update hbb_common to upstream

Signed-off-by: 21pages <sunboeasy@gmail.com>

---------

Signed-off-by: 21pages <sunboeasy@gmail.com>
2026-03-19 20:04:10 +08:00
RustDesk
ceffcce20e fix hide-tray=Y causing The application “RustDesk.app” is not open anymore. https://github.com/rustdesk/rustdesk/discussions/10210 (#14127) 2026-01-23 19:09:33 +08:00
fufesou
9060f9ec8a fix: linux tray, defunct process (#12177)
Signed-off-by: fufesou <linlong1266@gmail.com>
2025-06-26 18:27:22 +08:00
fufesou
d56df22838 fix: win, tray, detect cmdline (#11638)
target x86, run on x64

Signed-off-by: fufesou <linlong1266@gmail.com>
2025-05-05 08:51:25 +08:00
21pages
88a99211f3 replace pkexec with gtk sudo (#9383)
* Fix https://github.com/rustdesk/rustdesk/issues/9286, replace pkexec
  with gtk sudo. Tested on gnome (ubuntu 22.04, debian 13), xfce (manjaro, suse), kde (kubuntu 23), lxqt (lubuntu 22), Cinnamon (mint 21.3), Mate (mint 21.2)
* Fix incorrect config of the main window opened by the tray, replace
  xdg-open with run_me, replace with dbus + run_me
* Fix `check_if_stop_service`, it causes the problem fixed in
  https://github.com/rustdesk/rustdesk/pull/8414, now revert that fix and fix itself.

Signed-off-by: 21pages <sunboeasy@gmail.com>
2024-09-19 18:47:37 +08:00
rustdesk
579e0fac36 fix https://github.com/rustdesk/rustdesk/issues/9088 2024-08-16 12:20:40 +08:00
rustdesk
9a194f0850 res/users.py 2024-08-07 23:26:17 +08:00
rustdesk
025cdfa25b fix ci 2024-08-07 01:19:29 +08:00
rustdesk
2f432e941d hide-tray option 2024-08-07 01:08:36 +08:00
rustdesk
c02b4f994a fix two tray icon on macos 2024-07-08 14:46:28 +08:00
21pages
25d0ced8ba fix ci (#8543)
Signed-off-by: 21pages <sunboeasy@gmail.com>
2024-06-30 13:54:40 +08:00
rustdesk
99edab4b61 hide docker from tao, this may fix https://github.com/rustdesk/rustdesk/issues/8399 2024-06-19 16:25:48 +08:00
rustdesk
6e78037770 fix linux custom client tray 2024-05-10 15:12:07 +08:00
rustdesk
6186b41e3f modify comment 2024-03-28 11:52:43 +08:00
fufesou
810b980e6b Try fix, click tray icon, run main window (#7540)
* Try fix, click tray icon, run main window

Signed-off-by: fufesou <shuanglongchen@yeah.net>

* Remove start uni link on Windows, use 'run_me' instead

Signed-off-by: fufesou <shuanglongchen@yeah.net>

---------

Signed-off-by: fufesou <shuanglongchen@yeah.net>
2024-03-28 11:14:03 +08:00
rustdesk
85f387bfb9 improve https://github.com/rustdesk/rustdesk/discussions/5631#discussioncomment-8916273 2024-03-27 00:38:13 +08:00
rustdesk
30f84e78e1 fix custom tray of mac 2024-03-24 22:17:40 +08:00
rustdesk
ef27cd6c5c custom.txt and tray for mac 2024-03-24 20:09:37 +08:00
rustdesk
a9b0bc0409 fix some minors of custom client 2024-03-15 00:26:53 +08:00
rustdesk
be301b825f load tray icon from asset 2024-03-12 22:13:28 +08:00
rustdesk
a28c9f8f36 remove more "rustdesk" built-in 2024-02-25 13:29:06 +08:00
fufesou
8c108065eb Refact. Replace all tokio::time::interval() (#7173)
* Refact. Replace all `tokio::time::interval()`

Signed-off-by: fufesou <shuanglongchen@yeah.net>

* Refact Better min_interval for `ThrottledInterval`.

Signed-off-by: fufesou <shuanglongchen@yeah.net>

---------

Signed-off-by: fufesou <shuanglongchen@yeah.net>
2024-02-18 21:18:00 +08:00
21pages
2a0c081380 fix windows ci (#7156)
Signed-off-by: 21pages <pages21@163.com>
2024-02-16 15:24:43 +08:00
rustdesk
f7f3bc8bee fix mac tray icon to use template icon, no need to know theme any more 2024-02-16 12:29:32 +08:00
rustdesk
5fb026b8d5 fix https://github.com/rustdesk/rustdesk/discussions/7143 2024-02-15 21:12:24 +08:00
rustdesk
fc110c4988 Fix icon color on Sonoma 2023-12-09 10:18:13 +08:00
dignow
a32e740242 fix build linux
Signed-off-by: dignow <linlong1265@gmail.com>
2023-10-18 08:07:10 +08:00
21pages
d3ce8203be win,linux remove desktop wallpaper
Signed-off-by: 21pages <pages21@163.com>
2023-10-13 13:58:11 +08:00
21pages
3389c798f6 remove mac tray session count tooltip, which won't be shown
Signed-off-by: 21pages <pages21@163.com>
2023-09-18 14:49:51 +08:00
21pages
c254eebea2 windows/mac tray tooltip show controlled session count
* ubuntu 22.04 can't see tooltip

Signed-off-by: 21pages <pages21@163.com>
2023-09-13 12:14:25 +08:00
rustdesk
85c149d8e4 mainly for mac, if somehow --server not killed 2023-08-12 15:17:00 +08:00
rustdesk
d9f58ed4df workaround of exit tray in windows 2023-07-02 11:22:52 +08:00
rustdesk
8ab2a79fa2 refactoring conn audit, add session_id (both session_id and conn_id on
sever side), use session_id instead of conn_id for client id, and remove
conn_id in protobuf
2023-07-01 16:21:36 +08:00
rustdesk
324447ffc8 fix sciter bundle 2023-06-30 22:13:34 +08:00
RustDesk
f635453e80 Revert "linux tray as mac tray" 2023-06-25 00:45:33 +08:00
NicKoehler
fac3ec7697 linux tray as mac tray 2023-06-10 18:50:28 +02:00
rustdesk
9677bd1863 exit directly if no --server for --tray 2023-06-10 22:26:30 +08:00
rustdesk
7fba1800ec fix linux uni (url) and tray exit 2023-06-10 18:24:03 +08:00
rustdesk
644da37a4f refactor tray uninstall service 2023-06-09 22:02:25 +08:00
rustdesk
7f51f8d976 refactor linux install/uninstall service as windows 2023-06-07 23:08:50 +08:00
rustdesk
14541fd182 fix tray 2023-06-06 01:47:02 +08:00
rustdesk
77c9341ba5 open uni on tray instead, though double click not work on stupid tauri
tray-icon
2023-06-06 01:22:55 +08:00
rustdesk
b07ac438f5 working on windows service install/uninstall 2023-06-05 20:27:48 +08:00
Kingtous
7a82070420 fix: make event loop in tray compatible with main window 2023-05-02 12:52:27 +08:00
rustdesk
c5d7e5dfda fix: #3369 2023-03-02 13:32:21 +08:00
rustdesk
bb26ba3384 Exit in mac tray 2023-02-23 20:01:50 +08:00