jlesage / docker-firefox

Docker container for Firefox
MIT License
1.4k stars 266 forks source link

[Bug] VNC: Mouse pointer doesn't change while hovering links or resizing frames #244

Open B-Down opened 1 week ago

B-Down commented 1 week ago

Current Behavior

When the mouse pointer (arrow) is above a link, it stays as an arrow. The links/buttons/whatever behave as usual (highlighting and such), it's only the pointer that is stubborn.

Resizing frames (such as sidebars) has the same issue: it stays as the basic arrow pointer.

The only occurences it changes over are text areas, where it behaves as expected.

Expected Behavior

Regular adaptive pointer.

Steps To Reproduce

  1. Start the container
  2. Connect to it via TigerVNC
  3. Move the mouse around
  4. ???
  5. Sadness

Environment

Container creation

version: '3'
services:
  firefox:
    image: jlesage/firefox
    ports:
      - "5814:5800"
      - "5914:5900"
    environment:
      - DARK_MODE=1
      - DISPLAY_HEIGHT=1200
      - DISPLAY_WIDTH=1600
      - SECURE_CONNECTION_VNC_METHOD=TLS
    volumes:
      - "/docker/appdata/firefox-4-ssl:/config:rw"

Container log

[xvnc        ] Tue Jun 25 15:30:47 2024
[xvnc        ]  Connections: accepted: 192.168.xxx.xxx::2534
[xvnc        ]  SConnection: Client needs protocol version 3.8
[xvnc        ]  SConnection: Client requests security type VeNCrypt(19)
[xvnc        ]  SVeNCrypt:   Client requests security type X509Vnc (261)
[xvnc        ] Tue Jun 25 15:30:50 2024
[xvnc        ]  VNCSConnST:  Server default pixel format depth 24 (32bpp) little-endian rgb888
[xvnc        ] Tue Jun 25 15:32:05 2024
[xvnc        ]  Connections: accepted: /tmp/vnc.sock
[xvnc        ]  SConnection: Client needs protocol version 3.8
[xvnc        ]  SConnection: Client requests security type VeNCrypt(19)
[xvnc        ]  VNCSConnST:  closing /tmp/vnc.sock: Clean disconnection
[xvnc        ]  EncodeManager: Framebuffer updates: 0
[xvnc        ]  EncodeManager:   Total: 0 rects, 0 pixels
[xvnc        ]  EncodeManager:          0 B (1:-nan ratio)
[xvnc        ]  Connections: closed: /tmp/vnc.sock
[xvnc        ]  ComparingUpdateTracker: 400.035 Mpixels in / 33.8655 Mpixels out
[xvnc        ]  ComparingUpdateTracker: (1:11.8125 ratio)
[xvnc        ] Tue Jun 25 15:32:47 2024
[xvnc        ]  Connections: accepted: /tmp/vnc.sock
[xvnc        ]  SConnection: Client needs protocol version 3.8
[xvnc        ]  SConnection: Client requests security type VeNCrypt(19)
[xvnc        ]  VNCSConnST:  closing /tmp/vnc.sock: Clean disconnection
[xvnc        ]  EncodeManager: Framebuffer updates: 0
[xvnc        ]  EncodeManager:   Total: 0 rects, 0 pixels
[xvnc        ]  EncodeManager:          0 B (1:-nan ratio)
[xvnc        ]  Connections: closed: /tmp/vnc.sock
[xvnc        ]  ComparingUpdateTracker: 0 pixels in / 0 pixels out
[xvnc        ]  ComparingUpdateTracker: (1:-nan ratio)
[xvnc        ] Tue Jun 25 15:33:05 2024
[xvnc        ]  Connections: accepted: /tmp/vnc.sock
[xvnc        ]  SConnection: Client needs protocol version 3.8
[xvnc        ]  SConnection: Client requests security type VeNCrypt(19)
[xvnc        ]  VNCSConnST:  closing /tmp/vnc.sock: Clean disconnection
[xvnc        ]  EncodeManager: Framebuffer updates: 0
[xvnc        ]  EncodeManager:   Total: 0 rects, 0 pixels
[xvnc        ]  EncodeManager:          0 B (1:-nan ratio)
[xvnc        ]  Connections: closed: /tmp/vnc.sock
[xvnc        ]  ComparingUpdateTracker: 0 pixels in / 0 pixels out
[xvnc        ]  ComparingUpdateTracker: (1:-nan ratio)

Container inspect

[
    {
        "Id": "e80c3f1c9ede32d2a40bbca4ecbf3f30546627a68f56b465b7f64346507e8ab8",
        "Created": "2024-06-25T13:29:55.677326623Z",
        "Path": "/init",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 378413,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2024-06-25T13:29:56.150850126Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:c9e9594d22a5268ebbe56ad56bd9e93963bd737146c8b2972ad3264f65231ad3",
        "ResolvConfPath": "/var/lib/docker/containers/e80c3f1c9ede32d2a40bbca4ecbf3f30546627a68f56b465b7f64346507e8ab8/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/e80c3f1c9ede32d2a40bbca4ecbf3f30546627a68f56b465b7f64346507e8ab8/hostname",
        "HostsPath": "/var/lib/docker/containers/e80c3f1c9ede32d2a40bbca4ecbf3f30546627a68f56b465b7f64346507e8ab8/hosts",
        "LogPath": "/var/lib/docker/containers/e80c3f1c9ede32d2a40bbca4ecbf3f30546627a68f56b465b7f64346507e8ab8/e80c3f1c9ede32d2a40bbca4ecbf3f30546627a68f56b465b7f64346507e8ab8-json.log",
        "Name": "/Firefox-4-SSL",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [
                "/docker/appdata/firefox-4-ssl:/config"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "firefox-4-ssl_default",
            "PortBindings": {
                "5800/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "5814"
                    }
                ],
                "5900/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "5914"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "ConsoleSize": [
                0,
                0
            ],
            "CapAdd": [
                "AUDIT_WRITE",
                "CHOWN",
                "DAC_OVERRIDE",
                "FOWNER",
                "FSETID",
                "KILL",
                "MKNOD",
                "NET_BIND_SERVICE",
                "NET_RAW",
                "SETFCAP",
                "SETGID",
                "SETPCAP",
                "SETUID",
                "SYS_CHROOT"
            ],
            "CapDrop": [
                "AUDIT_CONTROL",
                "BLOCK_SUSPEND",
                "DAC_READ_SEARCH",
                "IPC_LOCK",
                "IPC_OWNER",
                "LEASE",
                "LINUX_IMMUTABLE",
                "MAC_ADMIN",
                "MAC_OVERRIDE",
                "NET_ADMIN",
                "NET_BROADCAST",
                "SYSLOG",
                "SYS_ADMIN",
                "SYS_BOOT",
                "SYS_MODULE",
                "SYS_NICE",
                "SYS_PACCT",
                "SYS_PTRACE",
                "SYS_RAWIO",
                "SYS_RESOURCE",
                "SYS_TIME",
                "SYS_TTY_CONFIG",
                "WAKE_ALARM"
            ],
            "CgroupnsMode": "private",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": [],
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 2147483648,
            "Runtime": "runc",
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 13000000000,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": null,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/e5e7653cae559e0d2ac5dc4fd9bf6396b4a52ce715b965c064c99d04ee7551ce-init/diff:/var/lib/docker/overlay2/5b3b05ccc197271d9de869004afbf7ba0d683109b02279d1422479271c473ae4/diff:/var/lib/docker/overlay2/642bb6e206992ad41a246ae1d8539787a90bdc776898b8ad56f582acb4ac91a7/diff:/var/lib/docker/overlay2/671867528fcd0afed92017b6039c5fa02d47bb67db2aa6d135a6f7a8d369f079/diff:/var/lib/docker/overlay2/38cf60d1be5d1ac1aab9739da8ddb2224f8b6588849ef3f242e848c7566855e4/diff:/var/lib/docker/overlay2/db97deec6ec5b0620e55aa5a2204ae91b4ba144cb12d9a7222ecd50366f55de0/diff:/var/lib/docker/overlay2/2fe13463095481b5da0dcfe51c1c2842b9aa0a3fc6bc17007a3d3cbadc0b68f0/diff:/var/lib/docker/overlay2/dc2c377b4efe2c9c39b6dc643c3cfa47ee5eaaaa4e10aff8da157becc1c6f673/diff:/var/lib/docker/overlay2/0cfb04816b8c7b016237e91d9c1c3bbeffac565672f88f34410fc84554dfed1a/diff:/var/lib/docker/overlay2/e5d5440a26606844d00f51b94c7d302b46a071bebfdf95f938ab58aa4341b91b/diff:/var/lib/docker/overlay2/1bae7704e604e49da897d8bfec2686ddad18b8bbfecb4aba185bfef906535b6f/diff:/var/lib/docker/overlay2/be503a6311db8880758c913222f090303b1eb7244ba4576e29f11409de3ccba0/diff:/var/lib/docker/overlay2/0a914470fc2d604cede420f82ab0939c727a98e6f31e411fcb8ed2ad812620c4/diff:/var/lib/docker/overlay2/aa0325cf5d13b781cb17fdae439296368921e2584cce9607dee788b003ca041f/diff:/var/lib/docker/overlay2/d0f522d149c28328f48dd73dd4b256491d1e960daccf3e4d2bfa5165b4b51dcb/diff:/var/lib/docker/overlay2/3978713b14e383f76ce5dd2eac9c3faada1be3d5b0dbfe52b16e12729382eb37/diff:/var/lib/docker/overlay2/39cd67faac8d755d09b431084345d3f587173728a47ebc60406380aaf3fcf507/diff:/var/lib/docker/overlay2/1cf255f7498f591c4c659e890cec5e1f90ceb18e013b84b4e817e18b8c61485f/diff:/var/lib/docker/overlay2/adef8b61062182dde248d9ae9ff4fe174f5eaad83b1632cdf841bf278b32418d/diff:/var/lib/docker/overlay2/fa5b42b98308d1960bf82c0eab140e19fcc01c0e90d3066c127a7ea8d76191f4/diff:/var/lib/docker/overlay2/5dae8b0f19329b64a40a81bf73e555bc0e6c6cf21b73883c808d9967afdf2a4e/diff:/var/lib/docker/overlay2/9528e7680aeca3c3ee100578e2299eff0876148262aa77486ba46fc6bfe66e0a/diff:/var/lib/docker/overlay2/e13904ea42eba4a5f603a7856472a853c31bffb32af0b667e4a31da63b21e307/diff:/var/lib/docker/overlay2/16697fbaa9ea59d792d7f21863ef66ded693b5ff291e302f4dbe77ca92f3fc8a/diff:/var/lib/docker/overlay2/39a1c848623e4afbf3fa317d171beb437846c58828a1b7b8c6a99a0e678b038f/diff:/var/lib/docker/overlay2/e3a4d9a8bdfba771ee4ae5ffc7597078a05e1dcd997c4817fd57ff57582666ca/diff:/var/lib/docker/overlay2/7f1c0f01e59dc19a1f47e4705fd8996ae2d6c3c64d10e5f5001fec68620e732b/diff:/var/lib/docker/overlay2/caf4bdc8d3187e34423da13ac5c54cadbd15e00c1b9662ef226f8104445ef58a/diff:/var/lib/docker/overlay2/3e59feaa3a07564c9c1adc619c8dcd90b09f9c22f2f3917ca6aab5cbe0e35f90/diff:/var/lib/docker/overlay2/0439536077e05dbc56ca4a5cda5293790810d7636cf0a80268f8bf60c853f205/diff:/var/lib/docker/overlay2/d8ea54aadc5d33745198dad0cea0b65a5bd1ab7457703a92ca44c18744c91de0/diff:/var/lib/docker/overlay2/e6dad91b1fc23e877cb6319f4d8a0769f27a4bc498835b423691e1630afc3962/diff:/var/lib/docker/overlay2/3855eaf3ef5b918d5aa06c146b2a0864293a9a84391bb1e60a25f8b797d85725/diff:/var/lib/docker/overlay2/6eb3f4f9a6c3a5183c40f5c8457eecba818d0d7a16f7228d27052cec5bacf080/diff:/var/lib/docker/overlay2/0b05408782816fdf2ad5ab6553b377c19726c19b7666a4e983989a3afe5c0888/diff:/var/lib/docker/overlay2/232fd554f3b57db9705a77ba7f3d1f99f7f23dfe2c0b8ad2626b0bc4171f6dcc/diff:/var/lib/docker/overlay2/a79dc2ea8b09d947b12d8beecec4a883e8a6e444db30ceec0d8272bc0b7fa755/diff",
                "MergedDir": "/var/lib/docker/overlay2/e5e7653cae559e0d2ac5dc4fd9bf6396b4a52ce715b965c064c99d04ee7551ce/merged",
                "UpperDir": "/var/lib/docker/overlay2/e5e7653cae559e0d2ac5dc4fd9bf6396b4a52ce715b965c064c99d04ee7551ce/diff",
                "WorkDir": "/var/lib/docker/overlay2/e5e7653cae559e0d2ac5dc4fd9bf6396b4a52ce715b965c064c99d04ee7551ce/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/docker/appdata/firefox-4-ssl",
                "Destination": "/config",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
        "Config": {
            "Hostname": "2e988c336416",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": true,
            "AttachStderr": true,
            "ExposedPorts": {
                "5800/tcp": {},
                "5900/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "DISPLAY_HEIGHT=1136",
                "DISPLAY_WIDTH=1593",
                "SECURE_CONNECTION_VNC_METHOD=TLS",
                "TZ=xxx/xxx",
                "DARK_MODE=1",
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/base/sbin:/opt/base/bin",
                "ENV=/root/.docker_rc",
                "USER_ID=1000",
                "GROUP_ID=1000",
                "SUP_GROUP_IDS=",
                "UMASK=0022",
                "LANG=en_US.UTF-8",
                "KEEP_APP_RUNNING=0",
                "APP_NICENESS=0",
                "INSTALL_PACKAGES=",
                "PACKAGES_MIRROR=",
                "CONTAINER_DEBUG=0",
                "SECURE_CONNECTION=1",
                "SECURE_CONNECTION_CERTS_CHECK_INTERVAL=60",
                "WEB_LISTENING_PORT=5800",
                "VNC_LISTENING_PORT=5900",
                "VNC_PASSWORD=xxx",
                "ENABLE_CJK_FONT=0",
                "FF_OPEN_URL=",
                "FF_KIOSK=0"
            ],
            "Cmd": [
                "/init"
            ],
            "Image": "jlesage/firefox:latest",
            "Volumes": {
                "/config": {}
            },
            "WorkingDir": "/tmp",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "com.docker.compose.config-hash": "39debf32e6bcb5bdebd83fe858ac7dc56a4a8728e09ca510bcbe5fb5a7198716",
                "com.docker.compose.container-number": "1",
                "com.docker.compose.depends_on": "",
                "com.docker.compose.image": "sha256:2b023766ce6cfac720ea99d5d30de787cdc863719eb05e8b570816b29cb7432e",
                "com.docker.compose.oneoff": "False",
                "com.docker.compose.project": "firefox-4-ssl",
                "com.docker.compose.project.config_files": "/data/compose/4/docker-compose.yml",
                "com.docker.compose.project.working_dir": "/data/compose/4",
                "com.docker.compose.service": "firefox",
                "com.docker.compose.version": "2.20.2",
                "org.label-schema.description": "Docker container for Firefox",
                "org.label-schema.name": "firefox",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vcs-url": "https://github.com/jlesage/docker-firefox",
                "org.label-schema.version": "24.04.1"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "b8a17066d3b421b878e25c9136e8972b8e0130ba810f8f347fafe84590d29496",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "5800/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "5814"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "5814"
                    }
                ],
                "5900/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "5914"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "5914"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/b8a17066d3b4",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "firefox-4-ssl_default": {
                    "IPAMConfig": {},
                    "Links": null,
                    "Aliases": [
                        "firefox-4-ssl-firefox-1",
                        "firefox",
                        "2e988c336416",
                        "e80c3f1c9ede"
                    ],
                    "NetworkID": "a7e23f3623bccad61d193186bebab2a123e80aa58150ab6172e1dbb7526deeb6",
                    "EndpointID": "e11bffa642c5093d522dac724d82ab688c74e9c5edb7fac06b37c71e409b7d03",
                    "Gateway": "172.21.0.1",
                    "IPAddress": "172.21.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:15:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]

Anything else?

My good ol' FF container, which is based on FF 109.0.1, is behaving as expected.

B-Down commented 1 week ago

For the sake of thoroughness, I tried deploying with version: '3.9' instead of version: '3', and accessing it through a browser rather than VNC, but got the same result.

jlesage commented 1 week ago

What Docker image version was working as expected ?

B-Down commented 1 week ago

What Docker image version was working as expected ?

For the FF 109.0.1 I mentioned in my ticket, it's 23.03.1.

On that subject, in case that can be of relevance, for the latest FF version (FF 125.0.3), org.label-schema.version is 24.04.1, while DOCKER_IMAGE_VERSION is 24.05.1. In the 109.0.1, both variables were set to the same value.

jlesage commented 6 days ago

The behaviour change has been introduced with Firefox 125 (docker image 24.05.1).

On that subject, in case that can be of relevance, for the latest FF version (FF 125.0.3), org.label-schema.version is 24.04.1, while DOCKER_IMAGE_VERSION is 24.05.1.

Looks good on my side:

$ docker inspect jlesage/firefox:v24.05.1 | grep org.label-schema.version
                "org.label-schema.version": "24.05.1"