This documentation refers to individual protocol features, it links to the implementation and technical documentation for each subsystem.
Each subsystem should be using its own prefix for capabilities and packet types. (most already do)
Most modules are optional, see security considerations.
Most subsystems are independent of each other, except for:
Display subsystem is required by
WindowsWindows subsystem is required by the
Keyboard, Pointer and Cursors
subsystemsA client or server may choose to completely disable a
subsystem.
When this is the case, it will not load the module into memory and will
not know how to handle requests for this feature.
These subsystems involve communication between client and server.
| Subsystem | Client Module | Server Module | Client Connection Module | User Documentation | |---------------------------------|----------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|-------------------------------------------------------| | Audio | audio | audio | audio | audio feature | | Bandwidth | bandwidth | bandwidth | bandwidth | n/a | | Clipboard | clipboard | clipboard | clipboard | clipboard feature | | Command | command | command | none | n/a | | Cursor | cursor | cursor | cursor | n/a | | Display | display | display | display | Automatically configured | | Encoding | encoding | encoding | encoding | Automatically configured | | Encryption | n/a | encryption | n/a | encryption | | File | n/a | file | file | file transfers | | Info | server_info | info | n/a | | | Keyboard | keyboard | keyboard | keyboard | keyboard feature | | Logging | logging | logging | none | logging usage | | Menu | n/a | menu | menu | n/a | | MMAP | mmap | mmap | mmap | enabled automatically | | Notification | notification | notification | notification | notifications feature | | Ping | ping | ping | ping | n/a | | Pointer | pointer | pointer | pointer | | | Power | power | power | n/a | | | Printer | n/a | printer | printer | printing feature | | Sharing | n/a | sharing | sharing | n/a | | Shell | n/a | shell | shell | n/a | | Socket | socket | n/a | n/a | | | SSH Agent | ssh_agent | ssh_agent | none | n/a | | Tray | tray | tray | none | n/a | | Webcam | webcam | webcam | webcam | webcam usage | | Window | windows | window | window | |
These subsystems handle server-side infrastructure and have no corresponding client module or client connection module.
| Subsystem | Server Module | User Documentation | |----------------|----------------------------------------------------------------------------------------------------|--------------------------------------------------| | Control | control | n/a | | Daemon | daemon | n/a | | DBUS | dbus | n/a | | Debug | debug | n/a | | DRM | drm | n/a | | GTK | gtk | n/a | | HTTP | http | n/a | | ID | id | n/a | | Idle | idle | n/a | | MDNS | mdns | multicast DNS | | OpenGL | opengl | OpenGL usage | | Platform | platform | n/a | | PulseAudio | pulseaudio | audio feature | | SessionFiles | sessionfiles | n/a | | Splash | splash | n/a | | Suspend | suspend | n/a | | Version | version | n/a | | Watcher | watcher | n/a |