diff --git a/docs/images/docker-baseimage-selkies.md b/docs/images/docker-baseimage-selkies.md index 9a3b998b61..e333d6c114 100644 --- a/docs/images/docker-baseimage-selkies.md +++ b/docs/images/docker-baseimage-selkies.md @@ -55,6 +55,110 @@ All application settings are passed via environment variables: * 5 - Centered * 6 - Animated +## Selkies application settings + +Using environment variables every facet of the application can be configured. + +### Setting Types and UI Customization + +Certain setting types have special syntax for advanced control over the client-side UI and available options. A key concept is that **any setting that is locked to a single value will not be rendered in the UI**, giving the user no option to change it. This, combined with the various `ui_` visibility settings, allows administrators to completely customize the client interface. + +#### Booleans and Locking +Boolean settings accept `true` or `false`. You can also prevent the user from changing a boolean setting in the UI by appending `|locked`. The UI toggle for this setting will be hidden. + +* **Example**: To force CPU encoding on and prevent the user from disabling it: + ```bash + -e SELKIES_USE_CPU="true|locked" + ``` + +#### Enums and Lists +These settings accept a comma-separated list of values. Their behavior depends on the number of items provided: + +* **Multiple Values**: The first item in the list becomes the default selection, and all items in the list become the available options in the UI dropdown. +* **Single Value**: The provided value becomes the default, and the UI dropdown is hidden because the choice is locked. + +* **Example**: Force the encoder to be `jpeg` with no other options available to the user: + ```bash + -e SELKIES_ENCODER="jpeg" + ``` + +#### Ranges +Range settings define a minimum and maximum for a value (e.g., framerate). + +* **To set a range**: Use a hyphen-separated `min-max` format. The UI will show a slider. +* **To set a fixed value**: Provide a single number. This will lock the value and hide the UI slider. + +* **Example**: Lock the framerate to exactly 60 FPS. + ```bash + -e SELKIES_FRAMERATE="60" + ``` + +#### Manual Resolution Mode +The server can be forced to use a single, fixed resolution for all connecting clients. This mode is automatically activated if `SELKIES_MANUAL_WIDTH`, `SELKIES_MANUAL_HEIGHT`, or `SELKIES_IS_MANUAL_RESOLUTION_MODE` is set. + +* If `SELKIES_MANUAL_WIDTH` and/or `SELKIES_MANUAL_HEIGHT` are set, the resolution is locked to those values. +* If `SELKIES_IS_MANUAL_RESOLUTION_MODE` is set to `true` without specifying width or height, the resolution defaults to **1024x768**. +* When this mode is active, the client UI for changing resolution is disabled. + +| Environment Variable | Default Value | Description | +| --- | --- | --- | +| `SELKIES_UI_TITLE` | `'Selkies'` | Title in top left corner of sidebar. | +| `SELKIES_UI_SHOW_LOGO` | `True` | Show the Selkies logo in the sidebar. | +| `SELKIES_UI_SHOW_SIDEBAR` | `True` | Show the main sidebar UI. | +| `SELKIES_UI_SHOW_CORE_BUTTONS` | `True` | Show the core components buttons display, audio, microphone, and gamepad. | +| `SELKIES_UI_SIDEBAR_SHOW_VIDEO_SETTINGS` | `True` | Show the video settings section in the sidebar. | +| `SELKIES_UI_SIDEBAR_SHOW_SCREEN_SETTINGS` | `True` | Show the screen settings section in the sidebar. | +| `SELKIES_UI_SIDEBAR_SHOW_AUDIO_SETTINGS` | `True` | Show the audio settings section in the sidebar. | +| `SELKIES_UI_SIDEBAR_SHOW_STATS` | `True` | Show the stats section in the sidebar. | +| `SELKIES_UI_SIDEBAR_SHOW_CLIPBOARD` | `True` | Show the clipboard section in the sidebar. | +| `SELKIES_UI_SIDEBAR_SHOW_FILES` | `True` | Show the file transfer section in the sidebar. | +| `SELKIES_UI_SIDEBAR_SHOW_APPS` | `True` | Show the applications section in the sidebar. | +| `SELKIES_UI_SIDEBAR_SHOW_SHARING` | `True` | Show the sharing section in the sidebar. | +| `SELKIES_UI_SIDEBAR_SHOW_GAMEPADS` | `True` | Show the gamepads section in the sidebar. | +| `SELKIES_UI_SIDEBAR_SHOW_FULLSCREEN` | `True` | Show the fullscreen button in the sidebar. | +| `SELKIES_UI_SIDEBAR_SHOW_GAMING_MODE` | `True` | Show the gaming mode button in the sidebar. | +| `SELKIES_UI_SIDEBAR_SHOW_TRACKPAD` | `True` | Show the virtual trackpad button in the sidebar. | +| `SELKIES_UI_SIDEBAR_SHOW_KEYBOARD_BUTTON` | `True` | Show the on-screen keyboard button in the display area. | +| `SELKIES_UI_SIDEBAR_SHOW_SOFT_BUTTONS` | `True` | Show the soft buttons section in the sidebar. | +| `SELKIES_AUDIO_ENABLED` | `True` | Enable server-to-client audio streaming. | +| `SELKIES_MICROPHONE_ENABLED` | `True` | Enable client-to-server microphone forwarding. | +| `SELKIES_GAMEPAD_ENABLED` | `True` | Enable gamepad support. | +| `SELKIES_CLIPBOARD_ENABLED` | `True` | Enable clipboard synchronization. | +| `SELKIES_COMMAND_ENABLED` | `True` | Enable parsing of command websocket messages. | +| `SELKIES_FILE_TRANSFERS` | `'upload,download'` | Allowed file transfer directions (comma-separated: "upload,download"). Set to "" or "none" to disable. | +| `SELKIES_ENCODER` | `'x264enc,x264enc-striped,jpeg'` | The default video encoders. | +| `SELKIES_FRAMERATE` | `'8-120'` | Allowed framerate range or a fixed value. | +| `SELKIES_H264_CRF` | `'5-50'` | Allowed H.264 CRF range or a fixed value. | +| `SELKIES_JPEG_QUALITY` | `'1-100'` | Allowed JPEG quality range or a fixed value. | +| `SELKIES_H264_FULLCOLOR` | `False` | Enable H.264 full color range for pixelflux encoders. | +| `SELKIES_H264_STREAMING_MODE` | `False` | Enable H.264 streaming mode for pixelflux encoders. | +| `SELKIES_USE_CPU` | `False` | Force CPU-based encoding for pixelflux. | +| `SELKIES_USE_PAINT_OVER_QUALITY` | `True` | Enable high-quality paint-over for static scenes. | +| `SELKIES_PAINT_OVER_JPEG_QUALITY` | `'1-100'` | Allowed JPEG paint-over quality range or a fixed value. | +| `SELKIES_H264_PAINTOVER_CRF` | `'5-50'` | Allowed H.264 paint-over CRF range or a fixed value. | +| `SELKIES_H264_PAINTOVER_BURST_FRAMES` | `'1-30'` | Allowed H.264 paint-over burst frames range or a fixed value. | +| `SELKIES_SECOND_SCREEN` | `True` | Enable support for a second monitor/display. | +| `SELKIES_AUDIO_BITRATE` | `'320000'` | The default audio bitrate. | +| `SELKIES_IS_MANUAL_RESOLUTION_MODE` | `False` | Lock the resolution to the manual width/height values. | +| `SELKIES_MANUAL_WIDTH` | `0` | Lock width to a fixed value. Setting this forces manual resolution mode. | +| `SELKIES_MANUAL_HEIGHT` | `0` | Lock height to a fixed value. Setting this forces manual resolution mode. | +| `SELKIES_SCALING_DPI` | `'96'` | The default DPI for UI scaling. | +| `SELKIES_ENABLE_BINARY_CLIPBOARD` | `False` | Allow binary data on the clipboard. | +| `SELKIES_USE_BROWSER_CURSORS` | `False` | Use browser CSS cursors instead of rendering to canvas. | +| `SELKIES_USE_CSS_SCALING` | `False` | HiDPI when false, if true a lower resolution is sent from the client and the canvas is stretched. | +| `SELKIES_PORT` (or `CUSTOM_WS_PORT`) | `8082` | Port for the data websocket server. | +| `SELKIES_DRI_NODE` (or `DRI_NODE`) | `''` | Path to the DRI render node for VA-API. | +| `SELKIES_AUDIO_DEVICE_NAME` | `'output.monitor'` | Audio device name for pcmflux capture. | +| `SELKIES_WATERMARK_PATH` (or `WATERMARK_PNG`) | `''` | Absolute path to the watermark PNG file. | +| `SELKIES_WATERMARK_LOCATION` (or `WATERMARK_LOCATION`) | `-1` | Watermark location enum (0-6). | +| `SELKIES_DEBUG` | `False` | Enable debug logging. | +| `SELKIES_ENABLE_SHARING` | `True` | Master toggle for all sharing features. | +| `SELKIES_ENABLE_COLLAB` | `True` | Enable collaborative (read-write) sharing link. | +| `SELKIES_ENABLE_SHARED` | `True` | Enable view-only sharing links. | +| `SELKIES_ENABLE_PLAYER2` | `True` | Enable sharing link for gamepad player 2. | +| `SELKIES_ENABLE_PLAYER3` | `True` | Enable sharing link for gamepad player 3. | +| `SELKIES_ENABLE_PLAYER4` | `True` | Enable sharing link for gamepad player 4. | + ## Language Support - Internationalization The environment variable `LC_ALL` can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French `LC_ALL=fr_FR.UTF-8`.