diff options
| author | Danilo M. <danix@danix.xyz> | 2026-10-18 11:00:53 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-10-18 11:00:53 +0200 |
| commit | a880134140f7ab8195c6651c2f64f614855c8dce (patch) | |
| tree | d4cacc3777bb0bbef636c96894791661af456ce8 /desktop/modules/mail/test-mail-notify.sh | |
| parent | b2fd9aba5711a5863c8700c8b21c83c53e14b39d (diff) | |
| download | quickshell-a880134140f7ab8195c6651c2f64f614855c8dce.tar.gz quickshell-a880134140f7ab8195c6651c2f64f614855c8dce.zip | |
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 <noreply@anthropic.com>
Diffstat (limited to 'desktop/modules/mail/test-mail-notify.sh')
| -rwxr-xr-x | desktop/modules/mail/test-mail-notify.sh | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/desktop/modules/mail/test-mail-notify.sh b/desktop/modules/mail/test-mail-notify.sh index 1c3e01a..4ca5d00 100755 --- a/desktop/modules/mail/test-mail-notify.sh +++ b/desktop/modules/mail/test-mail-notify.sh @@ -119,6 +119,19 @@ check "a newline in a subject stays on one row" \ "• Alice Example — line one line two" \ "$(build_body '[{"authors":"Alice Example","subject":"line one\nline two"}]' 1)" +check "one action per thread, then the account as default" \ + "00a1=Alice Example — First subject +default=Open Work" \ + "$(build_actions '[{"thread":"00a1","authors":"Alice Example","subject":"First subject"}]' Work)" + +check "a thread id that is not hex gets no action" \ + "default=Open Work" \ + "$(build_actions '[{"thread":"x=y","authors":"A","subject":"B"}]' Work)" + +check "malformed json still leaves the account action" \ + "default=Open Work" \ + "$(build_actions 'not json' Work)" + # A scratch state file, removed at exit. Never the real one: that is the # user's live notification position, and a test must not move it. tmpstate="$(mktemp)" |
