mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-06-22 10:02:20 +00:00
Add an embeddable, multi-tab persistent terminal to the mobile remote session: open one or more terminal tabs in a resizable sheet over the live screen stream, all on a single authenticated connection. This lets you watch the remote screen and run shell commands at the same time — like an SSH+tmux split, built into RustDesk with no external wrapper. Client-only: no changes under src/ or libs/ — the server and protocol stay stock. The feature reuses RustDesk's native terminal stack (TerminalModel + the `terminal-persistent` option), so sessions survive disconnect/idle and reattach on reconnect. Highlights: - Multiple tabs over ONE connection (TerminalConnectionManager keeps one FFI per peer, refcounted); each tab is a distinct terminal_id, one live TerminalView per tab in an IndexedStack. - Persistent sessions: on (re)connect the server's surviving session ids are offered as tabs to reattach; `exit` closes the tab and reaps the session. - Keyboard routed to the terminal while it's open (not the remote desktop), with a Termius-style accessory bar: sticky Ctrl/Alt that combine with the next key. - One Dark theme; resizable/maximizable sheet that stays clear of the system bars and the soft keyboard. - Hardening of the shared terminal stack it builds on: use-after-dispose guards, identity-checked event routing, an error-safe per-peer connection pool, and guarded padding math. The desktop split-view reuses the same InlineTerminalPanel. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| ab_model.dart | ||
| chat_model.dart | ||
| cm_file_model.dart | ||
| desktop_render_texture.dart | ||
| file_model.dart | ||
| group_model.dart | ||
| input_model.dart | ||
| input_modifier_utils.dart | ||
| model.dart | ||
| native_model.dart | ||
| peer_model.dart | ||
| peer_tab_model.dart | ||
| platform_model.dart | ||
| printer_model.dart | ||
| relative_mouse_model.dart | ||
| server_model.dart | ||
| state_model.dart | ||
| terminal_model.dart | ||
| user_model.dart | ||
| web_model.dart | ||