Skip to content

[BUG] Docker linuxserver/firefox container: Chinese text clipboard paste becomes garbled (mojibake) #86

@billyunver

Description

@billyunver

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Hi everyone,
I'm running the linuxserver/firefox Docker container on my FNOS NAS (hardware: Dell Wyse 5070). Recently I noticed an issue with clipboard pasting of Chinese text.
When I copy Chinese text from other applications on my host machine and paste it into Firefox inside the container, it turns into garbled characters (mojibake).
Example:
Original text: "为什么这很重要?"
After pasting into container Firefox: "为�������"
Additional details:

This only happens when pasting from outside the container.
Typing Chinese directly inside the container Firefox (using Microsoft IME) works perfectly.
I have other Selkies-based Docker browsers running on the same setup, and they do not have this clipboard issue.
The issue may or may not have existed before — I only noticed it recently.

Here is my current docker-compose.yaml:
YAMLservices:
firefox:
image: lscr.io/linuxserver/firefox:latest
container_name: firefox
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
- LC_ALL=zh_CN.UTF-8
- FIREFOX_CLI=https://www.google.com
# - CUSTOM_USER=yourusername # recommended for basic auth
# - PASSWORD=yourstrongpassword # recommended for basic auth
volumes:
- ./config:/config
- ./fonts:/usr/share/fonts/custom # optional, custom fonts
ports:
- 13000:3000 # optional HTTP
- 13001:3001 # HTTPS main port
devices:
- /dev/dri:/dev/dri # Intel iGPU hardware acceleration
shm_size: "1gb"
restart: unless-stopped
Has anyone encountered this clipboard encoding issue with Chinese (or other non-ASCII) text in the linuxserver/firefox container? Any suggestions for fixes or workarounds would be greatly appreciated.
Thanks in advance!

Expected Behavior

No response

Steps To Reproduce

When I copy Chinese text from other applications on my host machine and paste it into Firefox inside the container, it turns into garbled characters (mojibake).
Example:
Original text: "为什么这很重要?"
After pasting into container Firefox: "为�������"

Environment

- OS:
- How docker service was installed:
FN nas os
Dell wyse 5070

CPU architecture

x86-64

Docker creation

YAMLservices:
  firefox:
    image: lscr.io/linuxserver/firefox:latest
    container_name: firefox
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - LC_ALL=zh_CN.UTF-8
      - FIREFOX_CLI=https://www.google.com
      # - CUSTOM_USER=yourusername    # recommended for basic auth
      # - PASSWORD=yourstrongpassword  # recommended for basic auth
    volumes:
      - ./config:/config
      - ./fonts:/usr/share/fonts/custom  # optional, custom fonts
    ports:
      - 13000:3000   # optional HTTP
      - 13001:3001   # HTTPS main port
    devices:
      - /dev/dri:/dev/dri  # Intel iGPU hardware acceleration
    shm_size: "1gb"
    restart: unless-stopped

Container logs

INFO:selkies_gamepad:EVDEV interposer server listening on /tmp/selkies_event1000.sock

INFO:selkies_gamepad:EVDEV interposer server listening on /tmp/selkies_event1001.sock

INFO:selkies_gamepad:EVDEV interposer server listening on /tmp/selkies_event1002.sock

INFO:selkies_gamepad:EVDEV interposer server listening on /tmp/selkies_event1003.sock

dbus-daemon[283]: [system] Activating service name='org.freedesktop.login1' requested by ':1.15' (uid=1000 pid=387 comm="/usr/lib/firefox/firefox https://www.linuxserver.i") (using servicehelper)

dbus-daemon[283]: [system] Activating service name='org.freedesktop.timedate1' requested by ':1.15' (uid=1000 pid=387 comm="/usr/lib/firefox/firefox https://www.linuxserver.i") (using servicehelper)

dbus-daemon[283]: [system] Activated service 'org.freedesktop.login1' failed: Failed to execute program org.freedesktop.login1: Permission denied

WARNING:data_websocket:Cannot broadcast cursor data: no clients connected or server not ready.

INFO:data_websocket:Legacy client ('127.0.0.1', 40274) connected. Role: controller, Slot: None

INFO:data_websocket:Data WebSocket connected from ('127.0.0.1', 40274)

INFO:data_websocket:Sending last known cursor to new client ('127.0.0.1', 40274)

INFO:data_websocket:Attempting to establish PulseAudio connection...

INFO:data_websocket:PulseAudio connection established.

INFO:data_websocket:Registering new client for display: primary

INFO:data_websocket:Applying and sanitizing client settings for 'primary' (initial=True)

INFO:data_websocket:DPI changed from None to 96. Applying system-level change.

INFO:gst_app_resize:Openbox detected. Applying xrdb for DPI 96.

INFO:gst_app_resize:Wrote 'Xft.dpi:   96' to /config/.Xresources.

INFO:gst_app_resize:Successfully loaded /config/.Xresources using xrdb.

INFO:gst_app_resize:Wrote font and DPI settings to /config/.xsettingsd.

INFO:gst_app_resize:Found xsettingsd process with PID: 286.

xsettingsd: Reloading configuration

xsettingsd: Loaded 5 settings from /config/.xsettingsd

INFO:gst_app_resize:Sent SIGHUP to xsettingsd process 286 to reload config.

INFO:data_websocket:Initial setup or dimensional change detected for 'primary'. Performing full display reconfiguration.

INFO:data_websocket:Starting display reconfiguration...

INFO:data_websocket:Calculating new extended desktop layout from ALL clients...

INFO:data_websocket:Aligned total width from 1910 to 1912 for xrandr.

INFO:data_websocket:Layout calculated: Total Size=1912x952. Layouts: {'primary': {'x': 0, 'y': 0, 'w': 1910, 'h': 952}}

INFO:data_websocket:Mode 1912x952 not found. Creating it.

INFO:data_websocket:Defining logical monitors for the window manager...

INFO:data_websocket:Starting separate capture instances for each ACTIVE display region...

INFO:data_websocket:Client 'primary' is active. Starting its capture.

INFO:data_websocket:Preparing to start capture for display='primary': Res=1910x952, Offset=0x0

INFO:data_websocket:Video chunk sender started for display 'primary'.

INFO:data_websocket:SUCCESS: Capture started for 'primary'.

INFO:data_websocket:New frame backpressure task started for display 'primary'.

INFO:data_websocket:Broadcasting primary stream resolution to all clients: {"type": "stream_resolution", "width": 1910, "height": 952}

INFO:data_websocket:Broadcasting display config update: DISPLAY_CONFIG_UPDATE,{"type": "display_config_update", "displays": ["primary"]}

INFO:data_websocket:Display reconfiguration finished successfully.

INFO:data_websocket:Reconfiguration process complete (state unlocked).

INFO:data_websocket:Initial client settings message processed by ws_handler.

INFO:data_websocket:Initial setup: Primary client connected, audio not active, attempting start.

INFO:data_websocket:Starting pcmflux audio pipeline...

INFO:data_websocket:pcmflux settings: device='output.monitor', bitrate=320000, channels=2

INFO:data_websocket:Frame-based backpressure logic task started for display 'primary'.

[pcmflux] Attempting to connect to PulseAudio device: output.monitor...

INFO:data_websocket:Client settings received, proceeding with backpressure loop for 'primary'.

INFO:data_websocket:pcmflux audio capture started successfully.

INFO:data_websocket:pcmflux audio chunk broadcasting task started.

X Shared Memory Extension available.

XShm setup complete for 1910x952.

CPU cores available: 4

Stream settings active -> Res: 1910x952 | FPS: 60.0 | Stripes: 1 | Mode: H264 (CPU) FullFrame | CRF: 25 | PaintOver CRF: 18 (Burst: 5f) | Colorspace: I420 (Limited Range) | Damage Thresh: 10f | Damage Dur: 20f

[pcmflux] SUCCESS: Connected to PulseAudio.

[pcmflux] SUCCESS: Opus encoder created.

[pcmflux] Capture loop started. Device: output.monitor, Rate: 48000, Channels: 2, Bitrate: 320 kbps, VBR: On, Silence Gate: Off, Debug Logging: Off, PCM Chunk: 3840 bytes

INFO:data_websocket:Received START_AUDIO command from client for server-to-client audio.

INFO:data_websocket:START_AUDIO: pcmflux audio pipeline already active.

INFO:data_websocket:Client is taking over existing display 'primary'. Updating state for new connection.

INFO:data_websocket:Applying and sanitizing client settings for 'primary' (initial=False)

INFO:data_websocket:Received redundant resize request for primary (1910x952). No action taken.

[pcmflux] First non-silent audio chunk detected! Encoding...

INFO:webrtc_input:Clipboard changed. Sending content (text/plain)

INFO:data_websocket:Received STOP_VIDEO for 'primary'. Stopping stream.

INFO:data_websocket:Stopping all streams for display 'primary'...

INFO:data_websocket:Backpressure logic task for 'primary' cancelled.

INFO:data_websocket:Backpressure logic task for 'primary' finished.

INFO:data_websocket:Backpressure task for 'primary' was stopped. Resetting its frame IDs.

INFO:data_websocket:Resetting frame IDs for display 'primary'.

INFO:data_websocket:Broadcasting primary pipeline reset to all 1 clients: PIPELINE_RESETTING primary

Capture loop stopped. X resources released.

INFO:data_websocket:Successfully stopped all streams for display 'primary'.

INFO:data_websocket:Video chunk sender for 'primary' cancelled.

INFO:data_websocket:Video chunk sender for 'primary' finished.

INFO:data_websocket:Received START_VIDEO for 'primary'. Starting its stream.

INFO:data_websocket:Found existing layout for 'primary'. Starting capture with: {'x': 0, 'y': 0, 'w': 1910, 'h': 952}

INFO:data_websocket:Preparing to start capture for display='primary': Res=1910x952, Offset=0x0

INFO:data_websocket:Video chunk sender started for display 'primary'.

INFO:data_websocket:SUCCESS: Capture started for 'primary'.

INFO:data_websocket:New frame backpressure task started for display 'primary'.

INFO:data_websocket:Frame-based backpressure logic task started for display 'primary'.

INFO:data_websocket:Client settings received, proceeding with backpressure loop for 'primary'.

X Shared Memory Extension available.

XShm setup complete for 1910x952.

CPU cores available: 4

Stream settings active -> Res: 1910x952 | FPS: 60.0 | Stripes: 1 | Mode: H264 (CPU) FullFrame | CRF: 25 | PaintOver CRF: 18 (Burst: 5f) | Colorspace: I420 (Limited Range) | Damage Thresh: 10f | Damage Dur: 20f

INFO:webrtc_input:Set clipboard content, length: 249

INFO:webrtc_input:Set clipboard content, length: 249

INFO:webrtc_input:Set clipboard content, length: 249

INFO:data_websocket:Received STOP_VIDEO for 'primary'. Stopping stream.

INFO:data_websocket:Stopping all streams for display 'primary'...

INFO:data_websocket:Backpressure logic task for 'primary' cancelled.

INFO:data_websocket:Backpressure logic task for 'primary' finished.

INFO:data_websocket:Backpressure task for 'primary' was stopped. Resetting its frame IDs.

INFO:data_websocket:Resetting frame IDs for display 'primary'.

INFO:data_websocket:Broadcasting primary pipeline reset to all 1 clients: PIPELINE_RESETTING primary

Capture loop stopped. X resources released.

INFO:data_websocket:Successfully stopped all streams for display 'primary'.

INFO:data_websocket:Video chunk sender for 'primary' cancelled.

INFO:data_websocket:Video chunk sender for 'primary' finished.

INFO:data_websocket:Received START_VIDEO for 'primary'. Starting its stream.

INFO:data_websocket:Found existing layout for 'primary'. Starting capture with: {'x': 0, 'y': 0, 'w': 1910, 'h': 952}

INFO:data_websocket:Preparing to start capture for display='primary': Res=1910x952, Offset=0x0

INFO:data_websocket:Video chunk sender started for display 'primary'.

INFO:data_websocket:SUCCESS: Capture started for 'primary'.

INFO:data_websocket:New frame backpressure task started for display 'primary'.

INFO:data_websocket:Frame-based backpressure logic task started for display 'primary'.

INFO:data_websocket:Client settings received, proceeding with backpressure loop for 'primary'.

X Shared Memory Extension available.

XShm setup complete for 1910x952.

CPU cores available: 4

Stream settings active -> Res: 1910x952 | FPS: 60.0 | Stripes: 1 | Mode: H264 (CPU) FullFrame | CRF: 25 | PaintOver CRF: 18 (Burst: 5f) | Colorspace: I420 (Limited Range) | Damage Thresh: 10f | Damage Dur: 20f

INFO:webrtc_input:Set clipboard content, length: 249

INFO:data_websocket:Received STOP_VIDEO for 'primary'. Stopping stream.

INFO:data_websocket:Stopping all streams for display 'primary'...

INFO:data_websocket:Backpressure logic task for 'primary' cancelled.

INFO:data_websocket:Backpressure logic task for 'primary' finished.

INFO:data_websocket:Backpressure task for 'primary' was stopped. Resetting its frame IDs.

INFO:data_websocket:Resetting frame IDs for display 'primary'.

INFO:data_websocket:Broadcasting primary pipeline reset to all 1 clients: PIPELINE_RESETTING primary

Capture loop stopped. X resources released.

INFO:data_websocket:Successfully stopped all streams for display 'primary'.

INFO:data_websocket:Video chunk sender for 'primary' cancelled.

INFO:data_websocket:Video chunk sender for 'primary' finished.

INFO:data_websocket:Received START_VIDEO for 'primary'. Starting its stream.

INFO:data_websocket:Found existing layout for 'primary'. Starting capture with: {'x': 0, 'y': 0, 'w': 1910, 'h': 952}

INFO:data_websocket:Preparing to start capture for display='primary': Res=1910x952, Offset=0x0

INFO:data_websocket:Video chunk sender started for display 'primary'.

INFO:data_websocket:SUCCESS: Capture started for 'primary'.

INFO:data_websocket:New frame backpressure task started for display 'primary'.

INFO:data_websocket:Frame-based backpressure logic task started for display 'primary'.

INFO:data_websocket:Client settings received, proceeding with backpressure loop for 'primary'.

X Shared Memory Extension available.

XShm setup complete for 1910x952.

CPU cores available: 4

Stream settings active -> Res: 1910x952 | FPS: 60.0 | Stripes: 1 | Mode: H264 (CPU) FullFrame | CRF: 25 | PaintOver CRF: 18 (Burst: 5f) | Colorspace: I420 (Limited Range) | Damage Thresh: 10f | Damage Dur: 20f

INFO:webrtc_input:Set clipboard content, length: 249

INFO:data_websocket:Received STOP_VIDEO for 'primary'. Stopping stream.

INFO:data_websocket:Stopping all streams for display 'primary'...

INFO:data_websocket:Backpressure logic task for 'primary' cancelled.

INFO:data_websocket:Backpressure logic task for 'primary' finished.

INFO:data_websocket:Backpressure task for 'primary' was stopped. Resetting its frame IDs.

INFO:data_websocket:Resetting frame IDs for display 'primary'.

INFO:data_websocket:Broadcasting primary pipeline reset to all 1 clients: PIPELINE_RESETTING primary

Capture loop stopped. X resources released.

INFO:data_websocket:Successfully stopped all streams for display 'primary'.

INFO:data_websocket:Video chunk sender for 'primary' cancelled.

INFO:data_websocket:Video chunk sender for 'primary' finished.

INFO:data_websocket:Received START_VIDEO for 'primary'. Starting its stream.

INFO:data_websocket:Found existing layout for 'primary'. Starting capture with: {'x': 0, 'y': 0, 'w': 1910, 'h': 952}

INFO:data_websocket:Preparing to start capture for display='primary': Res=1910x952, Offset=0x0

INFO:data_websocket:Video chunk sender started for display 'primary'.

INFO:data_websocket:SUCCESS: Capture started for 'primary'.

INFO:data_websocket:New frame backpressure task started for display 'primary'.

INFO:data_websocket:Frame-based backpressure logic task started for display 'primary'.

INFO:data_websocket:Client settings received, proceeding with backpressure loop for 'primary'.

X Shared Memory Extension available.

XShm setup complete for 1910x952.

CPU cores available: 4

Stream settings active -> Res: 1910x952 | FPS: 60.0 | Stripes: 1 | Mode: H264 (CPU) FullFrame | CRF: 25 | PaintOver CRF: 18 (Burst: 5f) | Colorspace: I420 (Limited Range) | Damage Thresh: 10f | Damage Dur: 20f

INFO:webrtc_input:Set clipboard content, length: 13

WARNING:webrtc_input:unhandled on_mouse_pointer_visible

INFO:data_websocket:Received SET_NATIVE_CURSOR_RENDERING: True

INFO:data_websocket:Cursor rendering changed, triggering display reconfiguration.

INFO:data_websocket:Starting display reconfiguration...

INFO:data_websocket:Stopping all existing capture and backpressure tasks...

INFO:data_websocket:Backpressure logic task for 'primary' cancelled.

INFO:data_websocket:Backpressure logic task for 'primary' finished.

INFO:data_websocket:Backpressure task for 'primary' was stopped. Resetting its frame IDs.

INFO:data_websocket:Resetting frame IDs for display 'primary'.

INFO:data_websocket:Broadcasting primary pipeline reset to all 1 clients: PIPELINE_RESETTING primary

Capture loop stopped. X resources released.

INFO:data_websocket:All capture instances, senders, and backpressure tasks stopped.

INFO:data_websocket:Calculating new extended desktop layout from ALL clients...

INFO:data_websocket:Aligned total width from 1910 to 1912 for xrandr.

INFO:data_websocket:Layout calculated: Total Size=1912x952. Layouts: {'primary': {'x': 0, 'y': 0, 'w': 1910, 'h': 952}}

INFO:data_websocket:Video chunk sender for 'primary' cancelled.

INFO:data_websocket:Video chunk sender for 'primary' finished.

INFO:data_websocket:Defining logical monitors for the window manager...

INFO:data_websocket:Starting separate capture instances for each ACTIVE display region...

INFO:data_websocket:Client 'primary' is active. Starting its capture.

INFO:data_websocket:Preparing to start capture for display='primary': Res=1910x952, Offset=0x0

INFO:data_websocket:Video chunk sender started for display 'primary'.

INFO:data_websocket:SUCCESS: Capture started for 'primary'.

INFO:data_websocket:New frame backpressure task started for display 'primary'.

INFO:data_websocket:Broadcasting primary stream resolution to all clients: {"type": "stream_resolution", "width": 1910, "height": 952}

INFO:data_websocket:Broadcasting display config update: DISPLAY_CONFIG_UPDATE,{"type": "display_config_update", "displays": ["primary"]}

INFO:data_websocket:Display reconfiguration finished successfully.

INFO:data_websocket:Reconfiguration process complete (state unlocked).

INFO:data_websocket:Frame-based backpressure logic task started for display 'primary'.

INFO:data_websocket:Client settings received, proceeding with backpressure loop for 'primary'.

X Shared Memory Extension available.

XFixes Extension available.

XShm setup complete for 1910x952.

CPU cores available: 4

Stream settings active -> Res: 1910x952 | FPS: 60.0 | Stripes: 1 | Mode: H264 (CPU) FullFrame | CRF: 25 | PaintOver CRF: 18 (Burst: 5f) | Colorspace: I420 (Limited Range) | Damage Thresh: 10f | Damage Dur: 20f

INFO:data_websocket:Received resize request for primary: 1918x1078 from ('127.0.0.1', 40274)

INFO:gst_app_resize:on_resize_handler for display 'primary' with resolution: 1918x1078

INFO:gst_app_resize:Display client 'primary' dimensions updated to 1918x1078. Triggering reconfiguration.

INFO:data_websocket:Starting display reconfiguration...

INFO:data_websocket:Stopping all existing capture and backpressure tasks...

INFO:data_websocket:Backpressure logic task for 'primary' cancelled.

INFO:data_websocket:Backpressure logic task for 'primary' finished.

INFO:data_websocket:Backpressure task for 'primary' was stopped. Resetting its frame IDs.

INFO:data_websocket:Resetting frame IDs for display 'primary'.

INFO:data_websocket:Broadcasting primary pipeline reset to all 1 clients: PIPELINE_RESETTING primary

Capture loop stopped. X resources released.

INFO:data_websocket:All capture instances, senders, and backpressure tasks stopped.

INFO:data_websocket:Calculating new extended desktop layout from ALL clients...

INFO:data_websocket:Aligned total width from 1918 to 1920 for xrandr.

INFO:data_websocket:Layout calculated: Total Size=1920x1078. Layouts: {'primary': {'x': 0, 'y': 0, 'w': 1918, 'h': 1078}}

INFO:data_websocket:Video chunk sender for 'primary' cancelled.

INFO:data_websocket:Video chunk sender for 'primary' finished.

INFO:data_websocket:Mode 1920x1078 not found. Creating it.

INFO:data_websocket:Defining logical monitors for the window manager...

INFO:data_websocket:Starting separate capture instances for each ACTIVE display region...

INFO:data_websocket:Client 'primary' is active. Starting its capture.

INFO:data_websocket:Preparing to start capture for display='primary': Res=1918x1078, Offset=0x0

INFO:data_websocket:Video chunk sender started for display 'primary'.

INFO:data_websocket:SUCCESS: Capture started for 'primary'.

INFO:data_websocket:New frame backpressure task started for display 'primary'.

INFO:data_websocket:Broadcasting primary stream resolution to all clients: {"type": "stream_resolution", "width": 1918, "height": 1078}

INFO:data_websocket:Broadcasting display config update: DISPLAY_CONFIG_UPDATE,{"type": "display_config_update", "displays": ["primary"]}

INFO:data_websocket:Display reconfiguration finished successfully.

INFO:data_websocket:Reconfiguration process complete (state unlocked).

INFO:data_websocket:Frame-based backpressure logic task started for display 'primary'.

INFO:data_websocket:Client settings received, proceeding with backpressure loop for 'primary'.

X Shared Memory Extension available.

XFixes Extension available.

XShm setup complete for 1918x1078.

CPU cores available: 4

Stream settings active -> Res: 1918x1078 | FPS: 60.0 | Stripes: 1 | Mode: H264 (CPU) FullFrame | CRF: 25 | PaintOver CRF: 18 (Burst: 5f) | Colorspace: I420 (Limited Range) | Damage Thresh: 10f | Damage Dur: 20f

WARNING:webrtc_input:unhandled on_mouse_pointer_visible

INFO:data_websocket:Received SET_NATIVE_CURSOR_RENDERING: False

INFO:data_websocket:Cursor rendering changed, triggering display reconfiguration.

INFO:data_websocket:Starting display reconfiguration...

INFO:data_websocket:Stopping all existing capture and backpressure tasks...

INFO:data_websocket:Backpressure logic task for 'primary' cancelled.

INFO:data_websocket:Backpressure logic task for 'primary' finished.

INFO:data_websocket:Backpressure task for 'primary' was stopped. Resetting its frame IDs.

INFO:data_websocket:Resetting frame IDs for display 'primary'.

INFO:data_websocket:Broadcasting primary pipeline reset to all 1 clients: PIPELINE_RESETTING primary

Capture loop stopped. X resources released.

INFO:data_websocket:All capture instances, senders, and backpressure tasks stopped.

INFO:data_websocket:Calculating new extended desktop layout from ALL clients...

INFO:data_websocket:Aligned total width from 1918 to 1920 for xrandr.

INFO:data_websocket:Layout calculated: Total Size=1920x1078. Layouts: {'primary': {'x': 0, 'y': 0, 'w': 1918, 'h': 1078}}

INFO:data_websocket:Video chunk sender for 'primary' cancelled.

INFO:data_websocket:Video chunk sender for 'primary' finished.

INFO:data_websocket:Defining logical monitors for the window manager...

INFO:data_websocket:Starting separate capture instances for each ACTIVE display region...

INFO:data_websocket:Client 'primary' is active. Starting its capture.

INFO:data_websocket:Preparing to start capture for display='primary': Res=1918x1078, Offset=0x0

INFO:data_websocket:Video chunk sender started for display 'primary'.

INFO:data_websocket:SUCCESS: Capture started for 'primary'.

INFO:data_websocket:New frame backpressure task started for display 'primary'.

INFO:data_websocket:Broadcasting primary stream resolution to all clients: {"type": "stream_resolution", "width": 1918, "height": 1078}

INFO:data_websocket:Broadcasting display config update: DISPLAY_CONFIG_UPDATE,{"type": "display_config_update", "displays": ["primary"]}

INFO:data_websocket:Display reconfiguration finished successfully.

INFO:data_websocket:Reconfiguration process complete (state unlocked).

INFO:webrtc_input:Resetting keyboard modifiers.

INFO:data_websocket:Frame-based backpressure logic task started for display 'primary'.

INFO:data_websocket:Client settings received, proceeding with backpressure loop for 'primary'.

X Shared Memory Extension available.

XShm setup complete for 1918x1078.

CPU cores available: 4

Stream settings active -> Res: 1918x1078 | FPS: 60.0 | Stripes: 1 | Mode: H264 (CPU) FullFrame | CRF: 25 | PaintOver CRF: 18 (Burst: 5f) | Colorspace: I420 (Limited Range) | Damage Thresh: 10f | Damage Dur: 20f

INFO:data_websocket:Received resize request for primary: 1910x952 from ('127.0.0.1', 40274)

INFO:gst_app_resize:on_resize_handler for display 'primary' with resolution: 1910x952

INFO:gst_app_resize:Display client 'primary' dimensions updated to 1910x952. Triggering reconfiguration.

INFO:data_websocket:Starting display reconfiguration...

INFO:data_websocket:Stopping all existing capture and backpressure tasks...

INFO:data_websocket:Backpressure logic task for 'primary' cancelled.

INFO:data_websocket:Backpressure logic task for 'primary' finished.

INFO:data_websocket:Backpressure task for 'primary' was stopped. Resetting its frame IDs.

INFO:data_websocket:Resetting frame IDs for display 'primary'.

INFO:data_websocket:Broadcasting primary pipeline reset to all 1 clients: PIPELINE_RESETTING primary

Capture loop stopped. X resources released.

INFO:data_websocket:All capture instances, senders, and backpressure tasks stopped.

INFO:data_websocket:Calculating new extended desktop layout from ALL clients...

INFO:data_websocket:Aligned total width from 1910 to 1912 for xrandr.

INFO:data_websocket:Layout calculated: Total Size=1912x952. Layouts: {'primary': {'x': 0, 'y': 0, 'w': 1910, 'h': 952}}

INFO:data_websocket:Video chunk sender for 'primary' cancelled.

INFO:data_websocket:Video chunk sender for 'primary' finished.

INFO:data_websocket:Defining logical monitors for the window manager...

INFO:data_websocket:Starting separate capture instances for each ACTIVE display region...

INFO:data_websocket:Client 'primary' is active. Starting its capture.

INFO:data_websocket:Preparing to start capture for display='primary': Res=1910x952, Offset=0x0

INFO:data_websocket:Video chunk sender started for display 'primary'.

INFO:data_websocket:SUCCESS: Capture started for 'primary'.

INFO:data_websocket:New frame backpressure task started for display 'primary'.

INFO:data_websocket:Broadcasting primary stream resolution to all clients: {"type": "stream_resolution", "width": 1910, "height": 952}

INFO:data_websocket:Broadcasting display config update: DISPLAY_CONFIG_UPDATE,{"type": "display_config_update", "displays": ["primary"]}

X Shared Memory Extension available.

XShm setup complete for 1910x952.

CPU cores available: 4

Stream settings active -> Res: 1910x952 | FPS: 60.0 | Stripes: 1 | Mode: H264 (CPU) FullFrame | CRF: 25 | PaintOver CRF: 18 (Burst: 5f) | Colorspace: I420 (Limited Range) | Damage Thresh: 10f | Damage Dur: 20f

INFO:data_websocket:Display reconfiguration finished successfully.

INFO:data_websocket:Reconfiguration process complete (state unlocked).

INFO:data_websocket:Frame-based backpressure logic task started for display 'primary'.

INFO:data_websocket:Client settings received, proceeding with backpressure loop for 'primary'.

INFO:webrtc_input:Set clipboard content, length: 13

INFO:data_websocket:Received STOP_VIDEO for 'primary'. Stopping stream.

INFO:data_websocket:Stopping all streams for display 'primary'...

INFO:data_websocket:Backpressure logic task for 'primary' cancelled.

INFO:data_websocket:Backpressure logic task for 'primary' finished.

INFO:data_websocket:Backpressure task for 'primary' was stopped. Resetting its frame IDs.

INFO:data_websocket:Resetting frame IDs for display 'primary'.

INFO:data_websocket:Broadcasting primary pipeline reset to all 1 clients: PIPELINE_RESETTING primary

Capture loop stopped. X resources released.

INFO:data_websocket:Successfully stopped all streams for display 'primary'.

INFO:data_websocket:Video chunk sender for 'primary' cancelled.

INFO:data_websocket:Video chunk sender for 'primary' finished.

INFO:data_websocket:Received START_VIDEO for 'primary'. Starting its stream.

INFO:data_websocket:Found existing layout for 'primary'. Starting capture with: {'x': 0, 'y': 0, 'w': 1910, 'h': 952}

INFO:data_websocket:Preparing to start capture for display='primary': Res=1910x952, Offset=0x0

INFO:data_websocket:Video chunk sender started for display 'primary'.

INFO:data_websocket:SUCCESS: Capture started for 'primary'.

INFO:data_websocket:New frame backpressure task started for display 'primary'.

INFO:data_websocket:Frame-based backpressure logic task started for display 'primary'.

INFO:data_websocket:Client settings received, proceeding with backpressure loop for 'primary'.

X Shared Memory Extension available.

XShm setup complete for 1910x952.

CPU cores available: 4

Stream settings active -> Res: 1910x952 | FPS: 60.0 | Stripes: 1 | Mode: H264 (CPU) FullFrame | CRF: 25 | PaintOver CRF: 18 (Burst: 5f) | Colorspace: I420 (Limited Range) | Damage Thresh: 10f | Damage Dur: 20f

INFO:data_websocket:Received STOP_VIDEO for 'primary'. Stopping stream.

INFO:data_websocket:Stopping all streams for display 'primary'...

INFO:data_websocket:Backpressure logic task for 'primary' cancelled.

INFO:data_websocket:Backpressure logic task for 'primary' finished.

INFO:data_websocket:Backpressure task for 'primary' was stopped. Resetting its frame IDs.

INFO:data_websocket:Resetting frame IDs for display 'primary'.

INFO:data_websocket:Broadcasting primary pipeline reset to all 1 clients: PIPELINE_RESETTING primary

Capture loop stopped. X resources released.

INFO:data_websocket:Successfully stopped all streams for display 'primary'.

INFO:data_websocket:Video chunk sender for 'primary' cancelled.

INFO:data_websocket:Video chunk sender for 'primary' finished.

WARNING:data_websocket:Data WS closed with error from ('127.0.0.1', 40274): sent 1011 (internal error) keepalive ping timeout; no close frame received

INFO:data_websocket:Cleaning up Data WS handler for ('127.0.0.1', 40274) (Display ID: primary)...

INFO:data_websocket:Client for 'primary' disconnected. Removing and triggering full display reconfiguration.

INFO:data_websocket:Starting display reconfiguration...

WARNING:data_websocket:No display clients connected. Video pipelines remain stopped.

INFO:data_websocket:Reconfiguration process complete (state unlocked).

INFO:data_websocket:Last client (('127.0.0.1', 40274)) disconnected. All pipelines should have been stopped by reconfigure_displays.

INFO:main:Initiating unified pipeline shutdown...

WARNING:data_websocket:Reconfiguration already in progress. Ignoring concurrent request.

INFO:data_websocket:Stopping pcmflux audio pipeline...

INFO:data_websocket:pcmflux audio chunk broadcasting task cancelled.

INFO:data_websocket:pcmflux audio chunk broadcasting task finished.

[pcmflux] Stop requested. Cleaning up capture loop...

[pcmflux] Audio capture loop finished. Resources released.

INFO:data_websocket:pcmflux audio pipeline stopped.

INFO:main:Unified pipeline shutdown complete.

INFO:data_websocket:Data WS handler for ('127.0.0.1', 40274) finished all cleanup.

INFO:data_websocket:Stats sender: WS connection closed.

INFO:data_websocket:Legacy client ('127.0.0.1', 52100) connected. Role: controller, Slot: None

INFO:data_websocket:Data WebSocket connected from ('127.0.0.1', 52100)

INFO:data_websocket:Sending last known cursor to new client ('127.0.0.1', 52100)

INFO:data_websocket:Attempting to establish PulseAudio connection...

INFO:data_websocket:PulseAudio connection established.

INFO:data_websocket:Registering new client for display: primary

INFO:data_websocket:Applying and sanitizing client settings for 'primary' (initial=True)

INFO:data_websocket:DPI changed from None to 96. Applying system-level change.

INFO:gst_app_resize:Openbox detected. Applying xrdb for DPI 96.

INFO:gst_app_resize:Wrote 'Xft.dpi:   96' to /config/.Xresources.

INFO:gst_app_resize:Successfully loaded /config/.Xresources using xrdb.

INFO:gst_app_resize:Wrote font and DPI settings to /config/.xsettingsd.

INFO:gst_app_resize:Found xsettingsd process with PID: 286.

xsettingsd: Reloading configuration

xsettingsd: Loaded 5 settings from /config/.xsettingsd

INFO:gst_app_resize:Sent SIGHUP to xsettingsd process 286 to reload config.

INFO:data_websocket:Initial setup or dimensional change detected for 'primary'. Performing full display reconfiguration.

INFO:data_websocket:Starting display reconfiguration...

INFO:data_websocket:Calculating new extended desktop layout from ALL clients...

INFO:data_websocket:Aligned total width from 1910 to 1912 for xrandr.

INFO:data_websocket:Layout calculated: Total Size=1912x952. Layouts: {'primary': {'x': 0, 'y': 0, 'w': 1910, 'h': 952}}

INFO:data_websocket:Defining logical monitors for the window manager...

INFO:data_websocket:Starting separate capture instances for each ACTIVE display region...

INFO:data_websocket:Client 'primary' is active. Starting its capture.

INFO:data_websocket:Preparing to start capture for display='primary': Res=1910x952, Offset=0x0

INFO:data_websocket:Video chunk sender started for display 'primary'.

INFO:data_websocket:SUCCESS: Capture started for 'primary'.

INFO:data_websocket:New frame backpressure task started for display 'primary'.

INFO:data_websocket:Broadcasting primary stream resolution to all clients: {"type": "stream_resolution", "width": 1910, "height": 952}

INFO:data_websocket:Broadcasting display config update: DISPLAY_CONFIG_UPDATE,{"type": "display_config_update", "displays": ["primary"]}

INFO:data_websocket:Display reconfiguration finished successfully.

INFO:data_websocket:Reconfiguration process complete (state unlocked).

INFO:data_websocket:Initial client settings message processed by ws_handler.

INFO:data_websocket:Initial setup: Primary client connected, audio not active, attempting start.

INFO:data_websocket:Starting pcmflux audio pipeline...

INFO:data_websocket:pcmflux settings: device='output.monitor', bitrate=320000, channels=2

INFO:data_websocket:Frame-based backpressure logic task started for display 'primary'.

[pcmflux] Attempting to connect to PulseAudio device: output.monitor...

X Shared Memory Extension available.

XShm setup complete for 1910x952.

CPU cores available: 4

Stream settings active -> Res: 1910x952 | FPS: 60.0 | Stripes: 1 | Mode: H264 (CPU) FullFrame | CRF: 25 | PaintOver CRF: 18 (Burst: 5f) | Colorspace: I420 (Limited Range) | Damage Thresh: 10f | Damage Dur: 20f

INFO:data_websocket:Client settings received, proceeding with backpressure loop for 'primary'.

INFO:data_websocket:pcmflux audio capture started successfully.

[pcmflux] SUCCESS: Connected to PulseAudio.

[pcmflux] SUCCESS: Opus encoder created.

[pcmflux] Capture loop started. Device: output.monitor, Rate: 48000, Channels: 2, Bitrate: 320 kbps, VBR: On, Silence Gate: Off, Debug Logging: Off, PCM Chunk: 3840 bytes

INFO:data_websocket:pcmflux audio chunk broadcasting task started.

INFO:data_websocket:Received START_AUDIO command from client for server-to-client audio.

INFO:data_websocket:START_AUDIO: pcmflux audio pipeline already active.

INFO:data_websocket:Received redundant resize request for primary (1910x952). No action taken.

[pcmflux] First non-silent audio chunk detected! Encoding...

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.0s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.1s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.3s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.4s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.1s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.2s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.3s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.5s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.1s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.3s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.4s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.0s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.2s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.4s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.0s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.1s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.3s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.4s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.1s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.2s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.4s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.0s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.2s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.3s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.5s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.1s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.3s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.4s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.1s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.2s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.4s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.1s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.2s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.4s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.0s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.1s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.3s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.4s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.1s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.3s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.4s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.1s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.2s. Forcing backpressure.

INFO:data_websocket:Backpressure LIFTED for 'primary'. S:92, C:92 (EffDesync:-21.7f <= Allowed:120.0f).

WARNING:data_websocket:Client stall for 'primary': No ACK in 4.4s. Forcing backpressure.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions