diff --git a/About-delegate-of-MacOS-RustDesk.md b/About-delegate-of-MacOS-RustDesk.md new file mode 100644 index 0000000..5355661 --- /dev/null +++ b/About-delegate-of-MacOS-RustDesk.md @@ -0,0 +1,8 @@ +We have two most important delegate events, one is url schema via browser, another one is launchpad click. + +When `--server` is running, the delegate events will be captured by `--server` background process, the delegate listeners are registered in tao crate https://github.com/rustdesk-org/tao/blob/1cad16b200485bbccc67dcee2d339eac6e1c16ad/src/platform_impl/macos/app_delegate.rs. It also may be captured by `--service` which caused launchpad click failure, here is a fix for this, https://github.com/rustdesk/rustdesk/discussions/5631#discussioncomment-8916223. +When `--server` receives the delegate, it will check if there is RustDesk window. +- If there is, `--server` will send url schema to the RustDesk windows +- If there is not, `--server` will run command `rustdesk ` + +When `--server` is not running, the delegate events will be sent to RustDesk window directly, the openURL delegate listen is registered in uni_links_desktop, the url schema will be propogated to dart via uni_links_desktop. launchpad click delegate event listener is registered here, https://github.com/rustdesk/rustdesk/blob/6e689400b69f0276a68e9eff531737c25b09c64e/flutter/macos/Runner/AppDelegate.swift#L15. \ No newline at end of file