[Task]: Support customized plugins for RustDesk
Is there an existing issue for this?
- [X] I have searched the existing issues
SubTasks
Proposal
Background
RustDesk is an open-source tool for remote desktops, which supports all PC platforms and also Android/iOS clients. With the plugin's support, we can make RustDesk more flexible, useful, and powerful.
Currently, several users have their own specific needs, like #878, etc. Rather than making it to be a built-in function in our RustDesk, it's better to use a plugin that can be loaded and unloaded from the RustDesk. So everyone can have their own customized RustDesk with only some mouse clicks to load the plugin into it. The users which don't have this need can unload the plugin to reduce the memory or cpu usage.
Getting started
We can add the plugin support in the RustDesk first, and add hooks for some functions.
As for #878, I think we have these TODOs:
- [x] Add the ability to load/unload a plugin based on shared libraries.
- [x] #3989
- [ ] #4031
- [ ] Hooks for registering a full-customized virtual remote device, which can override the default behaviors to customized ones, like
Showing our prepared picture on the video frame. (Server Side)- [x] Hooks for getting video frames from the specific remote devices group, maybe a callback or interface. #4221
- [ ] Hooks for passing the video frames to our renderer.
- ...
- [ ] Hooks for making extra setting tiles just like the Visual Studio Code. (UI side)
- [ ] ...
So that we can register a virtual remote device, which binds to several physical devices, and combine their video frames into a wall screen, and then we pass the composite frame into our render to be the screen output of our virtual remote device.
Any suggestions are welcome. :)
Check https://github.com/Kingtous/rustdesk/tree/feat/plugins for the latest progress.