Please have a look at the warnings in the comments:
Rustdesk looks good on the outside, but if you look inside, it has a really bad codebase and has done some sketchy stuff in the past.
Last year, it installed custom root certificates as trusted on windows, which is a huge security risk: https://github.com/rustdesk/rustdesk/discussions/6444
On linux systems, it forced its own autostart with no option to disable this behavior: https://github.com/rustdesk/rustdesk/issues/4863
In the past, when it didn’t have Wayland support yet, it edited your GDM config and just disabled wayland: https://github.com/rustdesk/rustdesk/blob/1.1.9/src/platform/linux.rs#L411-L422
Furthermore, the code quality is really bad. 90% of the linux platform-dependant code is just executing shell commands and parsing their output, while the same could be achieved in a safe way with proper rust builtins: https://github.com/rustdesk/rustdesk/blob/master/src/platform/linux.rs
While I agree that Rustdesk works pretty flawlessly, the codebase and the behavior of the developers made me distrust the software and I don’t recommend using it.
Wth is that, that is the most anti-idiomatic code I have ever seen
https://github.com/rustdesk/rustdesk/blob/master/src%2Fplatform%2Flinux.rs#L176
pub fn get_cursor() -> ResultType<Option<u64>> { let mut res = None; DISPLAY.with(|conn| { if let Ok(d) = conn.try_borrow_mut() { if !d.is_null() { unsafe { let img = XFixesGetCursorImage(*d); if !img.is_null() { res = Some((*img).cursor_serial as u64); XFree(img as _); } } } } }); Ok(res) }
I’m not an expert but this seems wrong.
Yep, I’m not a Rust expert either, but this is pretty cursed. The comments on this post have some more examples of bad rustdesk code: https://lobste.rs/s/njfvjb/rustdesk_with_tailscale_on_arch_linux