martinrotter / rssguard

Feed reader (and podcast player) which supports RSS/ATOM/JSON and many web-based feed services.
GNU General Public License v3.0
1.64k stars 125 forks source link

[BUG]: Balloon notifications don't work correctly on Wayland #1494

Closed quardbreak closed 1 month ago

quardbreak commented 2 months ago

Brief description of the issue

Balloon notifications don't work correctly if the program started on Wayland. The problem does not appear on X11.

How to reproduce the bug?

  1. Enable "Custom notifications" option in Notifications settings.
  2. Change the position option to any value.
  3. Click Apply and wait for a notification pop-up.

What was the expected result?

Custom notifications settings are working on Wayland. Pop-ups appear with a specified position and opacity.

What actually happened?

An example popup will appear in the center of the screen. The opacity setting seems doesn't work too. Another probably related effect: example pop-up can't be closed before the program settings window closed first.

Debug log

rssguard.log

Operating system and version

quardbreak commented 2 months ago

Additional messages I received several times when I spammed notification settings changes.

Details ``` time=" 8.867" type="warning" -> Creating a popup with a parent, QWidgetWindow(0x5c5ebd54ba60, name="FormMainWindow") which does not match the current topmost grabbing popup, QWidgetWindow(0x5c5ebcfd7ae0, name="QMenuClassWindow") With some shell surface protocols, this is not allowed. The wayland QPA plugin is currently handling it by setting the parent to the topmost grabbing popup. Note, however, that this may cause positioning errors and popups closing unxpectedly. Please fix the transient parent of the popup. time=" 14.668" type="debug" -> network: Settings of BaseNetworkAccessManager loaded. time=" 15.391" type="debug" -> network: Destroying Downloader instance. time=" 15.391" type="debug" -> network: Destroying SilentNetworkAccessManager instance. time=" 29.085" type="debug" -> core: Syncing settings. time=" 29.086" type="debug" -> notifications: Starting timed closing for notification. time=" 31.245" type="debug" -> core: Syncing settings. time=" 31.245" type="warning" -> This plugin does not support setting window opacity time=" 31.267" type="debug" -> notifications: Starting timed closing for notification. time=" 36.053" type="debug" -> gui: Saving size for dialog 'FormSettings'. time=" 36.053" type="debug" -> gui: Destroying FormSettings distance. time=" 36.356" type="debug" -> notifications: Stopping timed closing for notification. time=" 36.783" type="debug" -> notifications: Stopping timed closing for notification. time=" 37.060" type="debug" -> notifications: Starting timed closing for notification. time=" 37.652" type="debug" -> notifications: Stopping timed closing for notification. time=" 42.018" type="warning" -> Creating a popup with a parent, QWidgetWindow(0x5c5ebd54ba60, name="FormMainWindow") which does not match the current topmost grabbing popup, QWidgetWindow(0x5c5ebcfd7ae0, name="QMenuClassWindow") With some shell surface protocols, this is not allowed. The wayland QPA plugin is currently handling it by setting the parent to the topmost grabbing popup. Note, however, that this may cause positioning errors and popups closing unxpectedly. Please fix the transient parent of the popup. time=" 47.580" type="debug" -> core: Syncing settings. time=" 47.581" type="debug" -> notifications: Starting timed closing for notification. time=" 51.092" type="debug" -> core: Syncing settings. time=" 51.092" type="warning" -> This plugin does not support setting window opacity time=" 51.114" type="debug" -> notifications: Starting timed closing for notification. time=" 54.268" type="debug" -> core: Syncing settings. time=" 54.290" type="warning" -> This plugin does not support setting window opacity time=" 54.291" type="debug" -> notifications: Starting timed closing for notification. time=" 57.668" type="debug" -> notifications: Stopping timed closing for notification. time=" 60.068" type="debug" -> core: Syncing settings. time=" 60.090" type="warning" -> This plugin does not support setting window opacity time=" 60.090" type="debug" -> notifications: Starting timed closing for notification. time=" 60.668" type="debug" -> notifications: Stopping timed closing for notification. time=" 62.412" type="debug" -> core: Syncing settings. time=" 62.413" type="debug" -> gui: Saving size for dialog 'FormSettings'. time=" 62.413" type="debug" -> gui: Destroying FormSettings distance. time=" 62.596" type="debug" -> notifications: Stopping timed closing for notification. time=" 63.212" type="debug" -> notifications: Starting timed closing for notification. time=" 63.236" type="debug" -> notifications: Stopping timed closing for notification. time=" 63.469" type="debug" -> notifications: Stopping timed closing for notification. ```
martinrotter commented 1 month ago

Additional messages I received several times when I spammed notification settings changes. Details

time="     8.867" type="warning" -> Creating a popup with a parent, QWidgetWindow(0x5c5ebd54ba60, name="FormMainWindow") which does not match the current topmost grabbing popup, QWidgetWindow(0x5c5ebcfd7ae0, name="QMenuClassWindow") With some shell surface protocols, this is not allowed. The wayland QPA plugin is currently handling it by setting the parent to the topmost grabbing popup. Note, however, that this may cause positioning errors and popups closing unxpectedly. Please fix the transient parent of the popup.
time="    14.668" type="debug" -> network: Settings of BaseNetworkAccessManager loaded.
time="    15.391" type="debug" -> network: Destroying Downloader instance.
time="    15.391" type="debug" -> network: Destroying SilentNetworkAccessManager instance.
time="    29.085" type="debug" -> core: Syncing settings.
time="    29.086" type="debug" -> notifications: Starting timed closing for notification.
time="    31.245" type="debug" -> core: Syncing settings.
time="    31.245" type="warning" -> This plugin does not support setting window opacity
time="    31.267" type="debug" -> notifications: Starting timed closing for notification.
time="    36.053" type="debug" -> gui: Saving size for dialog 'FormSettings'.
time="    36.053" type="debug" -> gui: Destroying FormSettings distance.
time="    36.356" type="debug" -> notifications: Stopping timed closing for notification.
time="    36.783" type="debug" -> notifications: Stopping timed closing for notification.
time="    37.060" type="debug" -> notifications: Starting timed closing for notification.
time="    37.652" type="debug" -> notifications: Stopping timed closing for notification.
time="    42.018" type="warning" -> Creating a popup with a parent, QWidgetWindow(0x5c5ebd54ba60, name="FormMainWindow") which does not match the current topmost grabbing popup, QWidgetWindow(0x5c5ebcfd7ae0, name="QMenuClassWindow") With some shell surface protocols, this is not allowed. The wayland QPA plugin is currently handling it by setting the parent to the topmost grabbing popup. Note, however, that this may cause positioning errors and popups closing unxpectedly. Please fix the transient parent of the popup.
time="    47.580" type="debug" -> core: Syncing settings.
time="    47.581" type="debug" -> notifications: Starting timed closing for notification.
time="    51.092" type="debug" -> core: Syncing settings.
time="    51.092" type="warning" -> This plugin does not support setting window opacity
time="    51.114" type="debug" -> notifications: Starting timed closing for notification.
time="    54.268" type="debug" -> core: Syncing settings.
time="    54.290" type="warning" -> This plugin does not support setting window opacity
time="    54.291" type="debug" -> notifications: Starting timed closing for notification.
time="    57.668" type="debug" -> notifications: Stopping timed closing for notification.
time="    60.068" type="debug" -> core: Syncing settings.
time="    60.090" type="warning" -> This plugin does not support setting window opacity
time="    60.090" type="debug" -> notifications: Starting timed closing for notification.
time="    60.668" type="debug" -> notifications: Stopping timed closing for notification.
time="    62.412" type="debug" -> core: Syncing settings.
time="    62.413" type="debug" -> gui: Saving size for dialog 'FormSettings'.
time="    62.413" type="debug" -> gui: Destroying FormSettings distance.
time="    62.596" type="debug" -> notifications: Stopping timed closing for notification.
time="    63.212" type="debug" -> notifications: Starting timed closing for notification.
time="    63.236" type="debug" -> notifications: Stopping timed closing for notification.
time="    63.469" type="debug" -> notifications: Stopping timed closing for notification.

These are really not a problem.

So ordinary notifications during program (like new articles) are misplaced too?

martinrotter commented 1 month ago

Sadly.

https://bugreports.qt.io/browse/QTBUG-110119 https://gitlab.freedesktop.org/wayland/wayland/-/issues/183

quardbreak commented 1 month ago

Hey, thanks for answering! Is there a way to make native notifications interactive to compensate? Maybe by including a button to quickly open article or unread articles window?