aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/modules/mail/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/modules/mail/README.md')
-rw-r--r--desktop/modules/mail/README.md38
1 files changed, 21 insertions, 17 deletions
diff --git a/desktop/modules/mail/README.md b/desktop/modules/mail/README.md
index 2349da6..5083c34 100644
--- a/desktop/modules/mail/README.md
+++ b/desktop/modules/mail/README.md
@@ -156,15 +156,19 @@ login. The same applies to a restart, so mail that arrived while it was down is
never notified. The drawer count is still right and still shows it,
so nothing is lost but a stale popup.
-The notification is sent with dunstify. The icon is passed as an **absolute
-path** to the active icon theme's `mail-unread-multiple`, because this dunst
-resolves an icon *name* only through the `icon_path` in `dunstrc`, and that
-path holds no mail icon, so a name renders no icon at all. The click action
-(`-A default,open`) makes dunst prepend an `(A)` action indicator when
-`show_indicators` is on, so `dunstrc` sets `show_indicators = no`. A middle
-click (dunst's `do_action`) opens qtmaildir, but not the account it belongs
-to: `qtmaildir` takes no arguments and `startup_account` is a static setting
-rather than a flag, the same limitation the thread rows have.
+The notification is sent with `notify-send` (libnotify 0.8), whose `-A
+NAME=Text` prints the picked action's name; dunstify is not installed. The
+icon is passed as an **absolute path** to the active icon theme's
+`mail-unread-multiple`, so it does not depend on how the daemon resolves icon
+names.
+
+Each listed thread is an action, keyed by its thread id, and the account is
+the `default` one. A click on the balloon offers them in the notifications'
+picker. The picked one runs `mail-open.sh`: the account opens qtmaildir on that
+account, a thread on its newest unread message. Thread ids rather than
+Message-IDs are the keys because they are hex, so a key never carries the `=`
+that separates it from its label; the message is looked up when the action is
+picked, and if it was read in the meantime the whole thread opens instead.
`test-mail-notify.sh` is the check. It sources the script as a library and
asserts on the functions that only move text around, so it needs no mail and no
@@ -191,15 +195,15 @@ respected.
`Keys.onEscapePressed` on a `PanelWindow` never fires, so the focus sits on an
inner `Item`.
-## Thread rows are read-only
+## Opening mail from the page
-Each account shows its three newest unread threads as author, relative date and
-subject. Clicking one launches qtmaildir and nothing more, because `qtmaildir`
-accepts no command line arguments: there is no way to tell it which thread to
-open. `startup_account` in its config is a static setting, not a flag, so
-"open on this account" is unavailable for the same reason. Marking read from
-here was rejected rather than deferred: it would write the database behind a
-possibly running client.
+A click on an account's header opens qtmaildir on that account, and a click on
+a thread row opens that thread's newest unread message, through the same
+`mail-open.sh` the notifications use. qtmaildir hands a second launch's
+selectors to the running window, so neither opens a second client. Launches
+are detached: a first launch *is* the client, and a reused `Process` would kill
+it on the next click. Marking read from here was rejected rather than
+deferred: it would write the database behind a possibly running client.
"Open qtmaildir" launches the client. There is no "Sync now" button: the
watcher triggers a sync the moment mail lands, the cron tick is the backstop,