Skip to content

[BUG] librewolf fails to start after restarting Docker Desktop #7

Description

@putouts-pianos63

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

After restarting Docker Desktop (for example after updating Docker Desktop, or an OS update) librewolf fails to start. It looks like an issue with the window server or websocket.

Expected Behavior

Librewolf should start normally, but it does not. The only way to make it work again is to delete the entire folder (Users/user/docker/librewolf) and recreate it.

Deleting the container and recreating does not fix it.
Deleting the container and image and recreating does not fix it.
Only deleting the folder (shared volume) fixes it.

Steps To Reproduce

MacOS, docker desktop, latest librewolf image. Restart Docker Desktop. Container fails to load properly.

Environment

- OS:MacOS 26.6
- How docker service was installed: docker compose file, included below

CPU architecture

arm64

Docker creation

---
services:
  librewolf:
    image: lscr.io/linuxserver/librewolf:latest
    container_name: librewolf
    security_opt:
      - seccomp:unconfined #optional
    environment:
      - PUID=503
      - PGID=20
      - TZ=America/New_York
      - RUST_BACKTRACE=full
      - LIBREWOLF_CLI=https://old.reddit.com #optional
    volumes:
      - /Users/user/docker/librewolf/config:/config
#    network_mode: bridge
    ports:
      - 3000:3000
      - 3001:3001
    shm_size: "1gb"
    restart: no

Container logs

docker compose up 
[+] up 19/19
 ✔ Image lscr.io/linuxserver/librewolf:latest Pulled                                                               74.0s
 ✔ Network librewolf_default                  Created                                                               0.0s
 ✔ Container librewolf                        Created                                                               0.2s
Attaching to librewolf
librewolf  | [migrations] started
librewolf  | [migrations] no migrations found
librewolf  | ───────────────────────────────────────
librewolf  | 
librewolf  |       ██╗     ███████╗██╗ ██████╗
librewolf  |       ██║     ██╔════╝██║██╔═══██╗
librewolf  |       ██║     ███████╗██║██║   ██║
librewolf  |       ██║     ╚════██║██║██║   ██║
librewolf  |       ███████╗███████║██║╚██████╔╝
librewolf  |       ╚══════╝╚══════╝╚═╝ ╚═════╝
librewolf  | 
librewolf  |    Brought to you by linuxserver.io
librewolf  | ───────────────────────────────────────
librewolf  | 
librewolf  | To support LSIO projects visit:
librewolf  | https://www.linuxserver.io/donate/
librewolf  | 
librewolf  | ───────────────────────────────────────
librewolf  | GID/UID
librewolf  | ───────────────────────────────────────
librewolf  | 
librewolf  | User UID:    503
librewolf  | User GID:    20
librewolf  | ───────────────────────────────────────
librewolf  | Linuxserver.io version: 153.0-1-ls171
librewolf  | Build-date: 2026-07-22T07:59:12+00:00
librewolf  | ───────────────────────────────────────
librewolf  |     
librewolf  | [ls.io-init] Generating labwc rc.xml from template
librewolf  | [custom-init] No custom files found, skipping...
librewolf  | [svc-de] Wayland mode: Waiting for socket at /config/.XDG/wayland-1...
librewolf  | [ls.io-init] done.
librewolf  | 17
librewolf  | 18
librewolf  | INFO:selkies.__main__:Starting mode 'websockets'...
librewolf  | INFO:selkies.__main__:Starting Selkies in 'websockets' mode.
librewolf  | INFO:data_websocket:pcmflux library found. Audio capture is available.
librewolf  | INFO:data_websocket:pixelflux library found. Striped encoding modes available.
librewolf  | INFO:root:Expected C js_config_t size (from ctypes): 1354 bytes
librewolf  | INFO:main:Upload directory ensured: /config/Desktop
librewolf  | INFO:main:Legacy Mode ENABLED (SELKIES_MASTER_TOKEN is not set).
librewolf  | INFO:main:Starting Selkies (WebSocket Mode) with settings: {'_setting_definitions': [{'name': 'audio_enabled', 'type': 'bool', 'default': True, 'help': 'Enable server-to-client audio streaming.'}, {'name': 'microphone_enabled', 'type': 'bool', 'default': True, 'help': 'Enable client-to-server microphone forwarding.'}, {'name': 'gamepad_enabled', 'type': 'bool', 'default': True, 'help': 'Enable gamepad support.'}, {'name': 'clipboard_enabled', 'type': 'bool', 'default': True, 'help': 'Enable clipboard synchronization.'}, {'name': 'clipboard_in_enabled', 'type': 'bool', 'default': True, 'help': 'Enable client-to-server clipboard synchronization.'}, {'name': 'clipboard_out_enabled', 'type': 'bool', 'default': True, 'help': 'Enable server-to-client clipboard synchronization.'}, {'name': 'command_enabled', 'type': 'bool', 'default': True, 'help': 'Enable parsing of command websocket messages.'}, {'name': 'file_transfers', 'type': 'list', 'default': 'upload,download', 'meta': {'allowed': ['upload', 'download']}, 'help': 'Allowed file transfer directions (comma-separated: "upload,download"). Set to "" or "none" to disable.'}, {'name': 'framerate', 'type': 'range', 'default': '8-120', 'meta': {'default_value': 60}, 'help': 'Allowed framerate range (e.g., "8-165") or a fixed value (e.g., "60").'}, {'name': 'h264_crf', 'type': 'range', 'default': '5-50', 'meta': {'default_value': 25}, 'help': 'Allowed H.264 CRF range (e.g., "5-50") or a fixed value.'}, {'name': 'video_bitrate', 'type': 'range', 'default': '1-100', 'meta': {'default_value': 8}, 'help': 'Default video-bitrate aka CBR, in Megabits per second (Mbps), allowed range (e.g., "1-100") or a fixed value (e.g., "8" for 8 Mbps)'}, {'name': 'rate_control_mode', 'type': 'enum', 'default': 'crf', 'meta': {'allowed': ['crf', 'cbr']}, 'help': 'Rate control mode for video encoding (cbr or crf). Only effective when enable_rate_control is true.'}, {'name': 'enable_rate_control', 'type': 'bool', 'default': False, 'help': 'Enable rate control for video encoding. Used in association with rate_control_mode.'}, {'name': 'audio_bitrate', 'type': 'enum', 'default': '320000', 'meta': {'allowed': ['64000', '128000', '192000', '256000', '320000']}, 'help': 'The default audio bitrate.'}, {'name': 'is_manual_resolution_mode', 'type': 'bool', 'default': False, 'help': 'Lock the resolution to the manual width/height values.'}, {'name': 'manual_width', 'type': 'int', 'default': 0, 'help': 'Lock width to a fixed value. Setting this forces manual resolution mode.'}, {'name': 'manual_height', 'type': 'int', 'default': 0, 'help': 'Lock height to a fixed value. Setting this forces manual resolution mode.'}, {'name': 'scaling_dpi', 'type': 'enum', 'default': '96', 'meta': {'allowed': ['96', '120', '144', '168', '192', '216', '240', '264', '288']}, 'help': 'The default DPI for UI scaling.'}, {'name': 'force_aligned_resolution', 'type': 'bool', 'default': False, 'help': 'Forces the display resolution to be a multiple of 16 pixels.'}, {'name': 'enable_binary_clipboard', 'type': 'bool', 'default': False, 'help': 'Allow binary data (e.g., images) on the clipboard.'}, {'name': 'use_browser_cursors', 'type': 'bool', 'default': False, 'help': 'Use browser CSS cursors instead of rendering to canvas.'}, {'name': 'use_css_scaling', 'type': 'bool', 'default': False, 'help': 'HiDPI when false, if true a lower resolution is sent from the client and the canvas is stretched.'}, {'name': 'ui_title', 'type': 'str', 'default': 'Selkies', 'help': 'Title in top left corner of sidebar.'}, {'name': 'ui_show_logo', 'type': 'bool', 'default': True, 'help': 'Show the Selkies logo in the sidebar.'}, {'name': 'ui_show_core_buttons', 'type': 'bool', 'default': True, 'help': 'Show the core components buttons display, audio, microphone, and gamepad.'}, {'name': 'ui_show_sidebar', 'type': 'bool', 'default': True, 'help': 'Show the main sidebar UI.'}, {'name': 'ui_sidebar_show_video_settings', 'type': 'bool', 'default': True, 'help': 'Show the video settings section in the sidebar.'}, {'name': 'ui_sidebar_show_screen_settings', 'type': 'bool', 'default': True, 'help': 'Show the screen settings section in the sidebar.'}, {'name': 'ui_sidebar_show_audio_settings', 'type': 'bool', 'default': True, 'help': 'Show the audio settings section in the sidebar.'}, {'name': 'ui_sidebar_show_stats', 'type': 'bool', 'default': True, 'help': 'Show the stats section in the sidebar.'}, {'name': 'ui_sidebar_show_clipboard', 'type': 'bool', 'default': True, 'help': 'Show the clipboard section in the sidebar.'}, {'name': 'ui_sidebar_show_files', 'type': 'bool', 'default': True, 'help': 'Show the file transfer section in the sidebar.'}, {'name': 'ui_sidebar_show_apps', 'type': 'bool', 'default': True, 'help': 'Show the applications section in the sidebar.'}, {'name': 'ui_sidebar_show_sharing', 'type': 'bool', 'default': True, 'help': 'Show the sharing section in the sidebar.'}, {'name': 'ui_sidebar_show_gamepads', 'type': 'bool', 'default': True, 'help': 'Show the gamepads section in the sidebar.'}, {'name': 'ui_sidebar_show_fullscreen', 'type': 'bool', 'default': True, 'help': 'Show the fullscreen button in the sidebar.'}, {'name': 'ui_sidebar_show_gaming_mode', 'type': 'bool', 'default': True, 'help': 'Show the gaming mode button in the sidebar.'}, {'name': 'ui_sidebar_show_trackpad', 'type': 'bool', 'default': True, 'help': 'Show the virtual trackpad button in the sidebar.'}, {'name': 'ui_sidebar_show_keyboard_button', 'type': 'bool', 'default': True, 'help': 'Show the on-screen keyboard button in the display area.'}, {'name': 'ui_sidebar_show_soft_buttons', 'type': 'bool', 'default': True, 'help': 'Show the soft buttons section in the sidebar.'}, {'name': 'enable_sharing', 'type': 'bool', 'default': True, 'help': 'Master toggle for all sharing features.'}, {'name': 'enable_collab', 'type': 'bool', 'default': True, 'help': 'Enable collaborative (read-write) sharing link.'}, {'name': 'enable_shared', 'type': 'bool', 'default': True, 'help': 'Enable view-only sharing links.'}, {'name': 'enable_player2', 'type': 'bool', 'default': True, 'help': 'Enable sharing link for gamepad player 2.'}, {'name': 'enable_player3', 'type': 'bool', 'default': True, 'help': 'Enable sharing link for gamepad player 3.'}, {'name': 'enable_player4', 'type': 'bool', 'default': True, 'help': 'Enable sharing link for gamepad player 4.'}, {'name': 'debug', 'type': 'bool', 'default': False, 'help': 'Enable debug logging.'}, {'name': 'mode', 'type': 'str', 'default': 'websockets', 'help': "Specify the mode: 'webrtc' or 'websockets'; defaults to websockets"}, {'name': 'enable_dual_mode', 'type': 'bool', 'default': False, 'help': 'Enable switching Streaming modes from UI'}, {'name': 'audio_device_name', 'type': 'str', 'default': 'output.monitor', 'help': 'Audio device name for pcmflux capture.'}, {'name': 'encoder', 'type': 'enum', 'default': 'x264enc', 'meta': {'allowed': ['x264enc', 'jpeg']}, 'help': 'The default video encoder.'}, {'name': 'jpeg_quality', 'type': 'range', 'default': '1-100', 'meta': {'default_value': 40}, 'help': 'Allowed JPEG quality range (e.g., "1-100") or a fixed value.'}, {'name': 'h264_fullcolor', 'type': 'bool', 'default': False, 'help': 'Enable H.264 full color range for pixelflux encoders.'}, {'name': 'h264_streaming_mode', 'type': 'bool', 'default': False, 'help': 'Enable H.264 streaming mode for pixelflux encoders.'}, {'name': 'use_cpu', 'type': 'bool', 'default': False, 'help': 'Force CPU-based encoding for pixelflux.'}, {'name': 'use_paint_over_quality', 'type': 'bool', 'default': True, 'help': 'Enable high-quality paint-over for static scenes.'}, {'name': 'paint_over_jpeg_quality', 'type': 'range', 'default': '1-100', 'meta': {'default_value': 90}, 'help': 'Allowed JPEG paint-over quality range or a fixed value.'}, {'name': 'h264_paintover_crf', 'type': 'range', 'default': '5-50', 'meta': {'default_value': 18}, 'help': 'Allowed H.264 paint-over CRF range or a fixed value.'}, {'name': 'h264_paintover_burst_frames', 'type': 'range', 'default': '1-30', 'meta': {'default_value': 5}, 'help': 'Allowed H.264 paint-over burst frames range or a fixed value.'}, {'name': 'second_screen', 'type': 'bool', 'default': True, 'help': 'Enable support for a second monitor/display.'}, {'name': 'port', 'type': 'int', 'default': 8081, 'env_var': 'CUSTOM_WS_PORT', 'help': 'Port for the data websocket server.'}, {'name': 'control_port', 'type': 'int', 'default': 8083, 'help': 'Port for the internal control plane API.'}, {'name': 'master_token', 'type': 'str', 'default': '', 'help': 'Master token to enable secure mode and protect the control plane API.'}, {'name': 'dri_node', 'type': 'str', 'default': '', 'env_var': 'DRI_NODE', 'help': 'Path to the DRI render node for VA-API.'}, {'name': 'watermark_path', 'type': 'str', 'default': '', 'env_var': 'WATERMARK_PNG', 'help': 'Absolute path to the watermark PNG file.'}, {'name': 'watermark_location', 'type': 'int', 'default': -1, 'env_var': 'WATERMARK_LOCATION', 'help': 'Watermark location enum (0-6).'}, {'name': 'wayland_socket_index', 'type': 'int', 'default': 0, 'help': 'Index for the Wayland command socket (e.g. 0 for wayland-0).'}], 'audio_enabled': (True, False), 'microphone_enabled': (True, False), 'gamepad_enabled': (True, False), 'clipboard_enabled': (True, False), 'clipboard_in_enabled': (True, False), 'clipboard_out_enabled': (True, False), 'command_enabled': (True, False), 'file_transfers': ['upload', 'download'], 'framerate': (8, 120), 'h264_crf': (5, 50), 'video_bitrate': (1, 100), 'rate_control_mode': 'crf', 'enable_rate_control': (False, False), 'audio_bitrate': '320000', 'is_manual_resolution_mode': (False, False), 'manual_width': 0, 'manual_height': 0, 'scaling_dpi': '96', 'force_aligned_resolution': (False, False), 'enable_binary_clipboard': (False, False), 'use_browser_cursors': (False, False), 'use_css_scaling': (False, False), 'ui_title': 'Selkies', 'ui_show_logo': (True, False), 'ui_show_core_buttons': (True, False), 'ui_show_sidebar': (True, False), 'ui_sidebar_show_video_settings': (True, False), 'ui_sidebar_show_screen_settings': (True, False), 'ui_sidebar_show_audio_settings': (True, False), 'ui_sidebar_show_stats': (True, False), 'ui_sidebar_show_clipboard': (True, False), 'ui_sidebar_show_files': (True, False), 'ui_sidebar_show_apps': (True, False), 'ui_sidebar_show_sharing': (True, False), 'ui_sidebar_show_gamepads': (True, False), 'ui_sidebar_show_fullscreen': (True, False), 'ui_sidebar_show_gaming_mode': (True, False), 'ui_sidebar_show_trackpad': (True, False), 'ui_sidebar_show_keyboard_button': (True, False), 'ui_sidebar_show_soft_buttons': (True, False), 'enable_sharing': (True, False), 'enable_collab': (True, False), 'enable_shared': (True, False), 'enable_player2': (True, False), 'enable_player3': (True, False), 'enable_player4': (True, False), 'debug': (False, False), 'mode': 'websockets', 'enable_dual_mode': (False, False), 'audio_device_name': 'output.monitor', 'encoder': 'x264enc', 'jpeg_quality': (1, 100), 'h264_fullcolor': (False, False), 'h264_streaming_mode': (False, False), 'use_cpu': (False, False), 'use_paint_over_quality': (True, False), 'paint_over_jpeg_quality': (1, 100), 'h264_paintover_crf': (5, 50), 'h264_paintover_burst_frames': (1, 30), 'second_screen': (False, False), 'port': 8082, 'control_port': 8083, 'master_token': '', 'dri_node': '', 'watermark_path': '', 'watermark_location': -1, 'wayland_socket_index': 0}
librewolf  | INFO:main:Initial Encoder: x264enc, Framerate: 60
librewolf  | INFO:data_websocket:Wayland display initialized via ensure_wayland_display.
librewolf  | INFO:main:SelkiesStreamingApp initialized: encoder=x264enc, display=1024x768
librewolf  | INFO:webrtc_input:Wayland input injection initialized.
librewolf  | [Wayland] No render node. Initializing Software Renderer (Pixman).
librewolf  | 
librewolf  | thread '<unnamed>' (353) panicked at src/lib.rs:2331:52:
librewolf  | called `Result::unwrap()` on an `Err` value: Io(Os { code: 95, kind: Unsupported, message: "Operation not supported" })
librewolf  | stack backtrace:
librewolf  | INFO:webrtc_input:Built Wayland scancode map with 456 keys.
librewolf  | INFO:main:All main components initialized. Running server...
librewolf  | INFO:webrtc_input:Initializing 4 persistent gamepad instances...
librewolf  | INFO:root:Packed js_config payload for 'Microsoft X-Box 360 pad' (js0): len=1360 bytes. Name='Microsoft X-Box 360 pad', Vendor=0x045e, Product=0x028e, Version=0x0100, Reported Buttons=11 (Array capacity: 512), Reported Axes=8 (Array capacity: 64)
librewolf  | INFO:selkies_gamepad:Gamepad configured. JS socket: /tmp/selkies_js0.sock, EVDEV socket: /tmp/selkies_event1000.sock. Using fixed config: Microsoft X-Box 360 pad
librewolf  | INFO:webrtc_input:Initialized and started persistent gamepad instance for index 0 (Name: 'Microsoft X-Box 360 pad', JS: /tmp/selkies_js0.sock, EVDEV: /tmp/selkies_event1000.sock).
librewolf  |    0:     0xffff7e384dd0 - <unknown>
librewolf  |    1:     0xffff7e23222c - <unknown>
librewolf  |    2:     0xffff7e384724 - <unknown>
librewolf  |    3:     0xffff7e384610 - <unknown>
librewolf  |    4:     0xffff7e3a1b74 - <unknown>
librewolf  |    5:     0xffff7e3a1b30 - <unknown>
librewolf  |    6:     0xffff7e3a2068 - <unknown>
librewolf  |    7:     0xffff7e00c00c - <unknown>
librewolf  |    8:     0xffff7e00c258 - <unknown>
librewolf  | INFO:root:Packed js_config payload for 'Microsoft X-Box 360 pad' (js1): len=1360 bytes. Name='Microsoft X-Box 360 pad', Vendor=0x045e, Product=0x028e, Version=0x0100, Reported Buttons=11 (Array capacity: 512), Reported Axes=8 (Array capacity: 64)
librewolf  |    9:     0xffff7e0d4574 - <unknown>
librewolf  |   10:     0xffff7e08ebdc - <unknown>
librewolf  |   11:     0xffff7e0c896c - <unknown>
librewolf  | INFO:selkies_gamepad:Gamepad configured. JS socket: /tmp/selkies_js1.sock, EVDEV socket: /tmp/selkies_event1001.sock. Using fixed config: Microsoft X-Box 360 pad
librewolf  |   12:     0xffff7e3a35c0 - <unknown>
librewolf  | INFO:webrtc_input:Initialized and started persistent gamepad instance for index 1 (Name: 'Microsoft X-Box 360 pad', JS: /tmp/selkies_js1.sock, EVDEV: /tmp/selkies_event1001.sock).
librewolf  | INFO:root:Packed js_config payload for 'Microsoft X-Box 360 pad' (js2): len=1360 bytes. Name='Microsoft X-Box 360 pad', Vendor=0x045e, Product=0x028e, Version=0x0100, Reported Buttons=11 (Array capacity: 512), Reported Axes=8 (Array capacity: 64)
librewolf  | INFO:selkies_gamepad:Gamepad configured. JS socket: /tmp/selkies_js2.sock, EVDEV socket: /tmp/selkies_event1002.sock. Using fixed config: Microsoft X-Box 360 pad
librewolf  | INFO:webrtc_input:Initialized and started persistent gamepad instance for index 2 (Name: 'Microsoft X-Box 360 pad', JS: /tmp/selkies_js2.sock, EVDEV: /tmp/selkies_event1002.sock).
librewolf  | INFO:root:Packed js_config payload for 'Microsoft X-Box 360 pad' (js3): len=1360 bytes. Name='Microsoft X-Box 360 pad', Vendor=0x045e, Product=0x028e, Version=0x0100, Reported Buttons=11 (Array capacity: 512), Reported Axes=8 (Array capacity: 64)
librewolf  | INFO:selkies_gamepad:Gamepad configured. JS socket: /tmp/selkies_js3.sock, EVDEV socket: /tmp/selkies_event1003.sock. Using fixed config: Microsoft X-Box 360 pad
librewolf  | INFO:webrtc_input:Initialized and started persistent gamepad instance for index 3 (Name: 'Microsoft X-Box 360 pad', JS: /tmp/selkies_js3.sock, EVDEV: /tmp/selkies_event1003.sock).
librewolf  | INFO:webrtc_input:Clipboard monitor running (binary mode: False)
librewolf  |   13:     0xffff8dec5f38 - <unknown>
librewolf  | INFO:webrtc_input:Wayland mode: Cursor monitor disabled (handled by compositor callback).
librewolf  |   14:     0xffff8df2de9c - <unknown>
librewolf  |   15:                0x0 - <unknown>
librewolf  | INFO:selkies_gamepad:Gamepad /tmp/selkies_js0.sock: Event processor started.
librewolf  | INFO:selkies_gamepad:JS interposer server listening on /tmp/selkies_js0.sock
librewolf  | INFO:selkies_gamepad:Gamepad /tmp/selkies_js1.sock: Event processor started.
librewolf  | INFO:selkies_gamepad:JS interposer server listening on /tmp/selkies_js1.sock
librewolf  | INFO:selkies_gamepad:Gamepad /tmp/selkies_js2.sock: Event processor started.
librewolf  | INFO:selkies_gamepad:JS interposer server listening on /tmp/selkies_js2.sock
librewolf  | INFO:selkies_gamepad:Gamepad /tmp/selkies_js3.sock: Event processor started.
librewolf  | INFO:selkies_gamepad:JS interposer server listening on /tmp/selkies_js3.sock
librewolf  | INFO:selkies_gamepad:EVDEV interposer server listening on /tmp/selkies_event1000.sock
librewolf  | INFO:selkies_gamepad:EVDEV interposer server listening on /tmp/selkies_event1001.sock
librewolf  | INFO:selkies_gamepad:EVDEV interposer server listening on /tmp/selkies_event1002.sock
librewolf  | INFO:selkies_gamepad:EVDEV interposer server listening on /tmp/selkies_event1003.sock
librewolf  | INFO:data_websocket:Data WebSocket Server listening on port 8082
librewolf  | INFO:data_websocket:Legacy client ('127.0.0.1', 35664) connected. Role: controller, Slot: None
librewolf  | INFO:data_websocket:Data WebSocket connected from ('127.0.0.1', 35664)
librewolf  | INFO:data_websocket:Attempting to establish PulseAudio connection...
librewolf  | INFO:data_websocket:PulseAudio connection established.
librewolf  | INFO:data_websocket:Registering new client for display: primary
librewolf  | INFO:data_websocket:Applying and sanitizing client settings for 'primary' (initial=True)
librewolf  | INFO:data_websocket:Client has requested manual resolution mode for display 'primary'.
librewolf  | INFO:data_websocket:DPI changed from None to 192. Applying system-level change.
librewolf  | INFO:data_websocket:Wayland Settings: Executing 'wlr-randr --output WL-1 --scale 2.0' on wayland-0
librewolf  | INFO:data_websocket:Initial setup or dimensional change detected for 'primary'. Performing full display reconfiguration.
librewolf  | INFO:data_websocket:Starting display reconfiguration...
librewolf  | INFO:data_websocket:Calculating new extended desktop layout from ALL clients...
librewolf  | INFO:data_websocket:Layout calculated: Total Size=2560x1440. Layouts: {'primary': {'x': 0, 'y': 0, 'w': 2560, 'h': 1440}}
librewolf  | INFO:data_websocket:Starting separate capture instances for each ACTIVE display region...
librewolf  | INFO:data_websocket:Client 'primary' is active. Starting its capture.
librewolf  | INFO:data_websocket:Preparing to start capture for display='primary': Res=2560x1440, Offset=0x0
librewolf  | ERROR:data_websocket:Failed to start capture for 'primary': Failed to set cursor callback: sending on a closed channel
librewolf  | Traceback (most recent call last):
librewolf  |   File "/lsiopy/lib/python3.13/site-packages/selkies/selkies.py", line 3183, in _start_capture_for_display
librewolf  |     capture_module.set_cursor_callback(wayland_cursor_handler)
librewolf  |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
librewolf  | RuntimeError: Failed to set cursor callback: sending on a closed channel
librewolf  | INFO:data_websocket:Broadcasting primary stream resolution to all clients: {"type": "stream_resolution", "width": 2560, "height": 1440}
librewolf  | INFO:data_websocket:Broadcasting display config update: DISPLAY_CONFIG_UPDATE,{"type": "display_config_update", "displays": ["primary"]}
librewolf  | INFO:data_websocket:Display reconfiguration finished successfully.
librewolf  | INFO:data_websocket:Reconfiguration process complete (state unlocked).
librewolf  | INFO:data_websocket:Initial client settings message processed by ws_handler.
librewolf  | ERROR:data_websocket:FATAL: Initial reconfiguration completed, but video pipeline did not start.
librewolf  | INFO:data_websocket:Initial setup: Primary client connected, audio not active, attempting start.
librewolf  | INFO:data_websocket:Starting pcmflux audio pipeline...
librewolf  | INFO:data_websocket:pcmflux settings: device='output.monitor', bitrate=320000, channels=2
librewolf  | [pcmflux] Attempting to connect to PulseAudio device: output.monitor (latency 10ms)
librewolf  | [pcmflux] SUCCESS: Connected to PulseAudio.
librewolf  | [pcmflux] SUCCESS: Opus encoder created (2 ch).
librewolf  | [pcmflux] Capture loop started. Device: output.monitor, Rate: 48000, Channels: 2, Bitrate: 320 kbps, VBR: On, Silence Gate: Off
librewolf  | INFO:data_websocket:pcmflux audio capture started successfully.
librewolf  | INFO:data_websocket:pcmflux audio chunk broadcasting task started.
librewolf  | INFO:data_websocket:Received START_AUDIO command from client for server-to-client audio.
librewolf  | INFO:data_websocket:START_AUDIO: pcmflux audio pipeline already active.
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | [pcmflux] First non-silent audio chunk detected! Encoding...
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to inject Wayland key: Failed to inject key: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to inject Wayland key: Failed to inject key: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to set mouse cursor: Failed to inject motion: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to inject Wayland key: Failed to inject key: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to inject Wayland key: Failed to inject key: sending on a closed channel
librewolf  | INFO:data_websocket:Received STOP_VIDEO for 'primary'. Stopping stream.
librewolf  | INFO:data_websocket:Stopping all streams for display 'primary'...
librewolf  | INFO:data_websocket:Successfully stopped all streams for display 'primary'.
librewolf  | INFO:data_websocket:Received START_VIDEO for 'primary'. Starting its stream.
librewolf  | INFO:data_websocket:Found existing layout for 'primary'. Starting capture with: {'x': 0, 'y': 0, 'w': 2560, 'h': 1440}
librewolf  | INFO:data_websocket:Preparing to start capture for display='primary': Res=2560x1440, Offset=0x0
librewolf  | ERROR:data_websocket:Failed to start capture for 'primary': Failed to set cursor callback: sending on a closed channel
librewolf  | Traceback (most recent call last):
librewolf  |   File "/lsiopy/lib/python3.13/site-packages/selkies/selkies.py", line 3183, in _start_capture_for_display
librewolf  |     capture_module.set_cursor_callback(wayland_cursor_handler)
librewolf  |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
librewolf  | RuntimeError: Failed to set cursor callback: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to inject Wayland key: Failed to inject key: sending on a closed channel
librewolf  | WARNING:webrtc_input:Failed to inject Wayland key: Failed to inject key: sending on a closed channel

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status
    Issues

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions