Island: expanded notification popups swallow the first click anywhere on screen
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 77/100
Research direction
Start with quickshell/Modules/DIsland/DIslandHostWindow.qml and quickshell/Modules/DIsland/IslandFreeHostWindow.qml, where the issue identifies the dismiss window visibility conditions. Compare how each host handles expanded notifications and panels opened by the user. Done means notification popups no longer intercept clicks outside them, while user opened panels retain click outside to close; verify both bar hosted and free floating hosts.
Written by the indexing model from the issue text.
Description
Compositor
Hyprland
Distribution
CachyOS
If Other, please specify
No response
Select your Installation Method
Distro Packaging
Was this your original Installation method?
Yes
If no, specify
No response
dms doctor -vC
Click to expand
The shell paths point to ~/.local/share/dms-shell-patched because I'm running the stock v2.0.0 UI with the workaround below applied. The bug reproduces on the unmodified embedded UI.
DMS Doctor Report
System
- [ok] Operating System: CachyOS
- ID: cachyos, Version: rolling, Arch: amd64
- [ok] Architecture: amd64
- [ok] Display Server: Wayland
- WAYLAND_DISPLAY=wayland-1
Versions
- [ok] DMS CLI: dms v2.0.0
- /usr/bin/dms
- [ok] Quickshell: Quickshell 0.3.2 (revision , distributed by Arch Linux)
- /usr/bin/qs
- [ok] DMS Shell: v2.0.0
- ~/.local/share/dms-shell-patched
Installation
- [ok] DMS Configuration: Found
- ~/.local/share/dms-shell-patched
- [ok] shell.qml: Present
- ~/.local/share/dms-shell-patched/shell.qml
- [info] Install Type: System package
- ~/.local/share/dms-shell-patched
Compositor
- [ok] Hyprland: 0.56.2
- /usr/bin/hyprland
- [info] Active: Hyprland
- [ok] Background Blur: Supported
- Compositor supports ext-background-effect-v1
Quickshell Features
- [ok] Polkit: Available
- Authentication prompts
- [ok] IdleMonitor: Available
- Idle detection
- [ok] IdleInhibitor: Available
- Prevent idle/sleep
- [ok] ShortcutInhibitor: Available
- Allow shortcut management (niri, Aqueous)
- [ok] BackgroundBlur: Available
- Background blur API support in Quickshell
Optional Features
- [ok] accountsservice: Available
- User accounts
- [ok] power-profiles-daemon: Available
- Power profile management
- [ok] logind: Available
- Session management
- [warn] cups-pk-helper: Not available (install cups-pk-helper)
- Printer management
- [ok] I2C/DDC: 1 monitor(s) detected
- External monitor brightness control
- [ok] qt6-imageformats: Installed (4 formats)
- Formats: WebP, TIFF, GIF, ICNS (/usr/lib/qt6/plugins/imageformats:/usr/lib/qt/plugins/imageformats:/usr/lib64/qt6/plugins/imageformats)
- [ok] kimageformats: Installed (4 formats)
- Formats: AVIF, HEIF, JXL, EXR (/usr/lib/qt6/plugins/imageformats:/usr/lib64/qt6/plugins/imageformats)
- [ok] Terminal: ghostty, kitty, alacritty
- [ok] Network: NetworkManager
- NetworkManager present. Using NM API.
- [ok] matugen: Installed
- Dynamic theming
- [ok] cava: Installed
- Audio visualizer
- [info] khal: Not installed
- Calendar events
- [ok] danksearch: Installed
- File search
- [info] dankcalendar: Not installed
- Calendar app
- [info] fprintd: Not installed
- Fingerprint auth
- [ok] adw-gtk3: Installed
- GTK3 dynamic theming (system copy, applied on next theme apply)
Config Files
- [ok] settings.json: Present
- ~/.config/dms/settings.json
- [info] clsettings.json: Not yet created
- ~/.config/dms/clsettings.json
- [ok] plugin_settings.json: Present
- ~/.config/dms/plugin_settings.json
- [ok] session.json: Present
- ~/.local/state/dms/session.json
- [ok] dms-colors.json: Present
- ~/.cache/dms/dms-colors.json
Services
- [warn] dms.service: Disabled
- Nothing starts dms.service with hyprland-session.target. Run 'dms systemd enable'.
- [ok] greetd: enabled
- [ok] xdg-desktop-portal: Settings portal reachable
Environment
- [info] QT_QPA_PLATFORMTHEME: gtk3
- [ok] gtk3 plugin (Qt6): Installed
- /usr/lib/qt6/plugins/platformthemes/libqgtk3.so
- [info] QT_QPA_PLATFORMTHEME_QT6: gtk3
- [info] QS_ICON_THEME: Not set
- [warn] XDG_MENU_PREFIX: Not set
- Dolphin file associations and 'Open with…' dialog may be empty. Set XDG_MENU_PREFIX=plasma- in your compositor's environment block.
Fonts
- [ok] Normal Font: Google Sans Flex
- ~/.local/share/dms-shell-patched/DCommon/assets/fonts/google-sans-flex/GoogleSansFlex.ttf
- [ok] Monospace Font: Fira Code
- ~/.local/share/dms-shell-patched/DCommon/assets/fonts/nerd-fonts/FiraCodeNerdFont-Regular.ttf
- [ok] Display Font: DM Serif Display
- ~/.local/share/dms-shell-patched/DCommon/assets/fonts/dm-serif-display/DMSerifDisplay-Regular.ttf
Summary: 0 error(s), 3 warning(s), 37 ok
Description
With Notifications → Expand by default on, every arriving notification opens the island expanded. An expanded island raises the full-screen dismiss layer (dms:dankisland:dismiss), so while the popup is on screen the first click anywhere else is caught by that layer. It collapses the island and never reaches the window or widget under the cursor. Every notification costs a wasted click.
This is the click half of #3380. 602c20e6a ("island: stop forwarding wheel from the dismiss layer to the bar") fixed the scrolling, and #3380 was closed, but the layer still comes up for notifications on current master. That is option 1 from @avesst's comment there, and it hasn't been done yet.
Turning Expand by default off isn't a workaround on a vertical bar, where the compact notification face is only the app icon.
Expected Behavior
A notification popup is passive. Clicks outside it go to whatever is under the cursor, and the popup times out by itself (or on hover-out) as it does now. Click-outside-to-close stays for panels the user opens (launcher, control center, notification center…).
Steps to Reproduce
- Hyprland, a bar in island mode, Notifications → Expand by default on.
notify-send test "click elsewhere now"- While the popup is visible, click a button in another window.
- The click does nothing except collapse the island. A second click is needed.
hyprctl layers while the popup is visible shows a monitor-sized dismiss layer on each output:
namespace: dms:dankisland, xywh: 0 0 845 1440
namespace: dms:dankisland:dismiss, xywh: 0 0 2560 1440
namespace: dms:dankisland, xywh: 2560 0 845 1080
namespace: dms:dankisland:dismiss, xywh: 2560 0 1920 1080
Error Messages/Logs
No response
Screenshots/Recordings
No response
Workaround / possible fix
Keeping the dismiss window down while the island is showing a notification fixes it for me, both in the bar-hosted and the free-floating host. Panels opened on purpose keep click-outside-to-close:
--- a/quickshell/Modules/DIsland/DIslandHostWindow.qml
+++ b/quickshell/Modules/DIsland/DIslandHostWindow.qml
@@ PanelWindow { id: dismissWindow
- visible: !!root.body && root.body.expanded && !PopoutManager.screenshotActive
+ visible: !!root.body && root.body.expanded && !PopoutManager.screenshotActive && root.islandController?.activeActivity !== "notification"
--- a/quickshell/Modules/DIsland/IslandFreeHostWindow.qml
+++ b/quickshell/Modules/DIsland/IslandFreeHostWindow.qml
@@ PanelWindow { id: dismissWindow
- visible: root.expanded && !body.inputSuspended
+ visible: root.expanded && !body.inputSuspended && body.islandController.activeActivity !== "notification"
I checked this with DMS_SHELL_DIR pointing at a patched copy of the v2.0.0 UI. The expanded notification still renders, no dismiss layer appears, and the popup still times out. Notifications don't take the focus grab (requestNotification() clears keyboardDismissRequested), so the dismiss window is the only part that catches input.
- Dominant language
- QML
- Stars
- 8.4k
- Forks
- 549
- PR merge metrics
- No merged PRs in 30d
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from AvengeMedia/DankMaterialShell
-
Enhancement
Difficulty 1/5 1-3 hours Newbie friendliness 66/100
AvengeMedia/DankMaterialShell#3975 ·
-
clicking on Screen Time widget in dash overview island should switch to Digital Wellbeing modalOpen
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
AvengeMedia/DankMaterialShell#3971 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
AvengeMedia/DankMaterialShell#3970 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
AvengeMedia/DankMaterialShell#3963 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
AvengeMedia/DankMaterialShell#3959 ·
All issues in AvengeMedia/DankMaterialShell
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
containerd/containerd#14476 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
hackclub/hcb#15454 · 3 comments ·
Maintainers usually reply within 1 day
-
area: server priority: P3 type: bug
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
appandflow/stim#4538 ·
Maintainers usually reply within 1 day
-
[BUG] Published Docker images lack the redis extra: HEADROOM_COMPRESS_SESSION_STORE stops startupPossibly taken @AlessandroSpallina claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
headroomlabs-ai/headroom#4513 ·
Maintainers usually reply within 1 day
-
kind/bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
ome-projects/ome#1242 ·
Maintainers usually reply within 1 day