Skip to content

[BUG] Pop-Up Windows Take Up Full Screen #10

Description

@c360e5f1

Is there an existing issue for this?

  • I have searched the existing issues

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:
Image

What's Happening:
Image

Steps To Reproduce

  1. Install FreeCAD Selkies via Docker.
  2. Launch FreeCAD Docker via brower
  3. Perform an action that causes a pop-up, such as creating a line and then attempting to set a constraint on the line. The constraint window is the pop-up window / dialog box that takes the full screen in the above screenshots.

Environment

- OS: Debian Trixie
- How docker service was installed: Docker official installer

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-stopped

Container logs

✔ 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...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    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