bitwarden / clients

Bitwarden client apps (web, browser extension, desktop, and cli).
https://bitwarden.com
Other
9.07k stars 1.2k forks source link

Popups not working under Wayland #9045

Open tobih7 opened 5 months ago

tobih7 commented 5 months ago

Steps To Reproduce

  1. Run Chromium-based browser on Wayland, instead of X11 (--ozone-platform=wayland)
  2. Try to open any Popup, for example:
    • The main popup from the extension menu on the top left
    • Clicking on "Unlock" when trying to autofill while the extension is still locked
    • Trying to log in with passkeys
    • Generally everything that requires a popup does not work

Expected Result

A popup should appear

Actual Result

No popup appears

Screenshots or Videos

No response

Additional Context

In the console of background.html this always appears: Unchecked runtime.lastError: Invalid value for bounds. Bounds must be at least 50% within visible screen space.

When trying to log in with passkeys this also appears, but I don't know whether this is relevant: [Fido2Client] Aborted by user: TypeError: Cannot read properties of undefined (reading 'id')

I know this may not be an issue with the Bitwarden browser extension, but rather with chromium or wayland in general, but I'm really not sure.

Operating System

Linux

Operating System Version

Fedora 40 (Up-to-date)

Web Browser

Brave

Browser Version

1.65.126 Chromium: 124.0.6367.118

Build Version

2024.4.1

Issue Tracking Info

tobih7 commented 5 months ago

I also just realized that the WebSocket is not properly connecting under Wayland.

sammbw commented 5 months ago

Hi there,

I am unable to reproduce this issue, it has been escalated for further investigation. If you have more information that can help us, please add it below.

Thanks!

LookedPath commented 4 months ago

I am also experiencing this on PopOS 22.04 with Chrome on Wayland. The error displayed in the developer console is: Unchecked runtime.lastError: Invalid value for bounds. Bounds must be at least 50% within visible screen space.

I can reproduce this issue every single time Bitwarden needs to open a pop-up of any kind for instance when clicking on the "Unlock account" option in the autocomplete dropdown and when it tries to handle Fido2 authentications. Is there any other info we can provide?

brynblack commented 3 months ago

Same here, getting the same error as @LookedPath, but under Brave browser. Seems like after updating my system it won't work anymore. Forcing X11 with --ozone-platform=x11 seems to work though.

On NixOS unstable, pin 2741b4b489b55df32afac57bc4bfd220e8bf617e

bakakaba commented 2 months ago

Issue looks like it is only related to multi monitor setups.

// background.js

static openPopout(e, t={}) {
                    return jC(this, void 0, void 0, (function*() {
                        const {senderWindowId: i, singleActionKey: r, forceCloseExistingWindows: n, windowOptions: a} = t
                          , s = {
                            type: "popup",
                            focused: !0,
                            width: 380,
                            height: 630
                        }
                          , o = s.width
                          , l = yield xC.getWindow(i)
                          , c = Object.assign(Object.assign(Object.assign({
                            left: l.left + l.width - o - 15,
                            top: l.top + 90
                        }, s), a), {
                            url: DC.buildPopoutUrl(e, r)
                        });
                        if (!(yield DC.isSingleActionPopoutOpen(r, c, n)) || n)
                            return yield xC.createWindow(c)
                    }
                    ))
                }

image

c has left specified at 3445 l is reported as left 0 and width 3840

This makes it think that the popup is created off the screen. Actual error is:

Invalid value for bounds. Bounds must be at least 50% within visible screen space.

If you move the browser window to the left top screen, the popup appears although still at some random location outside the window.

kieled commented 2 months ago

Issue looks like it is only related to multi monitor setups.

// background.js

static openPopout(e, t={}) {
                    return jC(this, void 0, void 0, (function*() {
                        const {senderWindowId: i, singleActionKey: r, forceCloseExistingWindows: n, windowOptions: a} = t
                          , s = {
                            type: "popup",
                            focused: !0,
                            width: 380,
                            height: 630
                        }
                          , o = s.width
                          , l = yield xC.getWindow(i)
                          , c = Object.assign(Object.assign(Object.assign({
                            left: l.left + l.width - o - 15,
                            top: l.top + 90
                        }, s), a), {
                            url: DC.buildPopoutUrl(e, r)
                        });
                        if (!(yield DC.isSingleActionPopoutOpen(r, c, n)) || n)
                            return yield xC.createWindow(c)
                    }
                    ))
                }

image

c has left specified at 3445 l is reported as left 0 and width 3840

This makes it think that the popup is created off the screen. Actual error is:

Invalid value for bounds. Bounds must be at least 50% within visible screen space.

If you move the browser window to the left top screen, the popup appears although still at some random location outside the window.

same issue. after disconnecting other monitors all works fine