When using FreeCAD (possibly other Selkies environments) when a dialog box or pop-up happens in the application, the pop-up or dialog box is the full size of the application windows. Then window can be manually resized, or manually "popped out" from full screen into an applicable size, but the default behaviour seems to always take up the full viewport.
✔ Network freecad_default Created 0.0s
✔ Container freecad Created 0.0s
Attaching to freecad
freecad | [migrations] started
freecad | [migrations] no migrations found
freecad | usermod: user abc is currently used by process 1
freecad | ───────────────────────────────────────
freecad |
freecad | ██╗ ███████╗██╗ ██████╗
freecad | ██║ ██╔════╝██║██╔═══██╗
freecad | ██║ ███████╗██║██║ ██║
freecad | ██║ ╚════██║██║██║ ██║
freecad | ███████╗███████║██║╚██████╔╝
freecad | ╚══════╝╚══════╝╚═╝ ╚═════╝
freecad |
freecad | Brought to you by linuxserver.io
freecad | ───────────────────────────────────────
freecad |
freecad | To support LSIO projects visit:
freecad | https://www.linuxserver.io/donate/
freecad |
freecad | ───────────────────────────────────────
freecad | GID/UID
freecad | ───────────────────────────────────────
freecad |
freecad | User UID: 0
freecad | User GID: 0
freecad | ───────────────────────────────────────
freecad | [ls.io-init] Creating initial backup of system rc.xml
freecad | **** permissions for /dev/dri/renderD128 are good ****
freecad | **** permissions for /dev/dri/card0 are good ****
freecad | [custom-init] No custom files found, skipping...
freecad | xsettingsd: Loaded 5 settings from /config/.xsettingsd
freecad | xsettingsd: Unable to open connection to X server
freecad | screen 0 shmid 0
freecad | [ls.io-init] done.
freecad | amdgpu: os_same_file_description couldn't determine if two DRM fds reference the same file description.
freecad | If they do, bad things may happen!
freecad | 17
freecad | 18
freecad | INFO:selkies.__main__:Starting mode 'websockets'...
freecad | INFO:selkies.__main__:Starting Selkies in 'websockets' mode.
freecad | INFO:data_websocket:pcmflux library found. Audio capture is available.
freecad | INFO:data_websocket:pixelflux library found. Striped encoding modes available.
freecad | INFO:root:Expected C js_config_t size (from ctypes): 1354 bytes
freecad | INFO:main:Upload directory ensured: /config/Desktop
freecad | INFO:main:Legacy Mode ENABLED (SELKIES_MASTER_TOKEN is not set).
freecad | 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': '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': 'audio_bitrate', 'type': 'enum', 'default': '320000', 'meta': {'allowed': ['64000', '128000', '265000', '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': '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': 'encoder', 'type': 'enum', 'default': 'x264enc', 'meta': {'allowed': ['x264enc', 'x264enc-striped', 'jpeg']}, 'help': 'The default video encoder.'}, {'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': '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': 'audio_device_name', 'type': 'str', 'default': 'output.monitor', 'help': 'Audio device name for pcmflux capture.'}, {'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).'}], 'audio_enabled': (True, False), 'microphone_enabled': (True, False), 'gamepad_enabled': (True, False), 'clipboard_enabled': (True, False), 'command_enabled': (True, False), 'file_transfers': ['upload', 'download'], 'framerate': (8, 120), 'audio_bitrate': '320000', 'is_manual_resolution_mode': (False, False), 'manual_width': 0, 'manual_height': 0, 'scaling_dpi': '96', '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), 'encoder': 'x264enc', 'h264_crf': (5, 50), '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': (True, False), 'port': 8082, 'control_port': 8083, 'master_token': '', 'dri_node': '/dev/dri/renderD128', 'audio_device_name': 'output.monitor', 'watermark_path': '', 'watermark_location': -1}
freecad | INFO:main:Initial Encoder: x264enc, Framerate: 60
freecad | INFO:main:SelkiesStreamingApp initialized: encoder=x264enc, display=1024x768
freecad | INFO:main:All main components initialized. Running server...
freecad | INFO:webrtc_input:System DPI detected as ~96. Cursor size cap set to 32x32px.
freecad | INFO:webrtc_input:Resetting keyboard modifiers.
freecad | INFO:webrtc_input:Clipboard monitor running (binary mode: False)
freecad | INFO:webrtc_input:Found XFIXES version 4.0
freecad | INFO:webrtc_input:starting cursor monitor
freecad | INFO:webrtc_input:watching for cursor changes
freecad | WARNING:data_websocket:Cannot broadcast cursor data: no clients connected or server not ready.
freecad | INFO:data_websocket:Data WebSocket Server listening on port 8082
freecad | INFO:webrtc_input:Initializing 4 persistent gamepad instances...
freecad | 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)
freecad | 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
freecad | 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).
freecad | 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)
freecad | 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
freecad | 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).
freecad | 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)
freecad | 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
freecad | 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).
freecad | 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)
freecad | 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
freecad | 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).
freecad | INFO:selkies_gamepad:Gamepad /tmp/selkies_js0.sock: Event processor started.
freecad | INFO:selkies_gamepad:JS interposer server listening on /tmp/selkies_js0.sock
freecad | INFO:selkies_gamepad:Gamepad /tmp/selkies_js1.sock: Event processor started.
freecad | INFO:selkies_gamepad:JS interposer server listening on /tmp/selkies_js1.sock
freecad | INFO:selkies_gamepad:Gamepad /tmp/selkies_js2.sock: Event processor started.
freecad | INFO:selkies_gamepad:JS interposer server listening on /tmp/selkies_js2.sock
freecad | INFO:selkies_gamepad:Gamepad /tmp/selkies_js3.sock: Event processor started.
freecad | INFO:selkies_gamepad:JS interposer server listening on /tmp/selkies_js3.sock
freecad | INFO:selkies_gamepad:EVDEV interposer server listening on /tmp/selkies_event1000.sock
freecad | INFO:selkies_gamepad:EVDEV interposer server listening on /tmp/selkies_event1001.sock
freecad | INFO:selkies_gamepad:EVDEV interposer server listening on /tmp/selkies_event1002.sock
freecad | INFO:selkies_gamepad:EVDEV interposer server listening on /tmp/selkies_event1003.sock
freecad | xsettingsd: Loaded 5 settings from /config/.xsettingsd
freecad | xsettingsd: Created window 0x1200001 on screen 0 with timestamp 755214179
freecad | xsettingsd: Selection _XSETTINGS_S0 is owned by 0x0
freecad | xsettingsd: Took ownership of selection _XSETTINGS_S0
freecad | WARNING:data_websocket:Cannot broadcast cursor data: no clients connected or server not ready.
freecad | WARNING:data_websocket:Cannot broadcast cursor data: no clients connected or server not ready.
freecad | WARNING:data_websocket:Cannot broadcast cursor data: no clients connected or server not ready.
freecad | WARNING:data_websocket:Cannot broadcast cursor data: no clients connected or server not ready.
freecad | Stream settings active -> Res: 1338x806 | FPS: 60.0 | Stripes: 1 | Mode: H264 (VAAPI) FullFrame | CRF: 25 | PaintOver CRF: 18 (Burst: 5f) | Colorspace: I420 (Limited Range) | Damage Thresh: 10f | Damage Dur: 20f
freecad | [pcmflux] First non-silent audio chunk detected! Encoding...
Is there an existing issue for this?
Current Behavior
When using FreeCAD (possibly other Selkies environments) when a dialog box or pop-up happens in the application, the pop-up or dialog box is the full size of the application windows. Then window can be manually resized, or manually "popped out" from full screen into an applicable size, but the default behaviour seems to always take up the full viewport.
Expected Behavior
What's Expected:

What's Happening:

Steps To Reproduce
Environment
CPU architecture
x86-64
Docker creation
--- services: freecad: image: lscr.io/linuxserver/freecad:latest container_name: freecad environment: - PUID=0 - PGID=0 - TZ=America/Chicago volumes: - ./volumes/config:/config ports: - 8087:3000 devices: - /dev/dri:/dev/dri shm_size: "1gb" restart: unless-stoppedContainer logs