Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Island: expanded notification popups swallow the first click anywhere on screen

Closed Beginner friendly
#3,915 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
77/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Domain
backend, desktop

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
  1. Hyprland, a bar in island mode, Notifications → Expand by default on.
  2. notify-send test "click elsewhere now"
  3. While the popup is visible, click a button in another window.
  4. 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

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from AvengeMedia/DankMaterialShell

All issues in AvengeMedia/DankMaterialShell

Similar issues

More Backend & API Design issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.