From a880134140f7ab8195c6651c2f64f614855c8dce Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Sun, 18 Oct 2026 11:00:53 +0200 Subject: mail: open accounts and messages in qtmaildir from the drawer and notifications qtmaildir now takes --account, --thread and --message, and hands them to a running window over its socket, so the drawer and the notifications can open the exact thing they show instead of just launching the client. mail-open.sh is the one place that turns an account and a thread into selectors, shared by both callers. It looks up the thread's newest unread message at click time rather than when the row or notification was built: by then it may have been read, and an empty lookup falls back to the whole thread instead of a miss in qtmaildir's status bar. The notification never had a working click: dunstify is not installed, so mail-notify.sh always took its notify-send fallback, which carried no action. It now uses notify-send -A NAME=Text, one action per listed thread (keyed by thread id, which is hex and so never holds the "=" separator) plus the account as default. The round trip through notifyd was checked: notifyctl action makes notify-send print the picked name. On the page, the account header opens the account and a thread row its newest unread message. Rows use TapHandler and HoverHandler because a MouseArea cannot fill a Column. Launches are detached: a first launch is the client itself, and the old reused Process would have killed it on the next click. Opening anything now closes the drawer rather than going back. Co-Authored-By: Claude Opus 5.5 --- desktop/modules/mail/mail-notify.sh | 73 +++++++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 28 deletions(-) (limited to 'desktop/modules/mail/mail-notify.sh') diff --git a/desktop/modules/mail/mail-notify.sh b/desktop/modules/mail/mail-notify.sh index 968799c..0052a8d 100755 --- a/desktop/modules/mail/mail-notify.sh +++ b/desktop/modules/mail/mail-notify.sh @@ -32,6 +32,7 @@ set -u STATE="${MAIL_NOTIFY_STATE:-$HOME/.local/state/mail-notify.lastmod}" CONFIG="${MAIL_NOTIFY_CONFIG:-$HOME/.config/qtmaildir/qtmaildir.conf}" SCOPE='tag:unread and tag:inbox' +OPEN="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")/mail-open.sh" # How many threads a notification body lists before eliding into "+N more". # Three matches the drawer's own --limit=3. @@ -119,6 +120,25 @@ build_body() { printf '\n' } +# One action per listed thread, "=