diff options
Diffstat (limited to 'desktop/modules/mail/Accounts.qml')
| -rw-r--r-- | desktop/modules/mail/Accounts.qml | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/desktop/modules/mail/Accounts.qml b/desktop/modules/mail/Accounts.qml index 0ae6886..c2bc9d8 100644 --- a/desktop/modules/mail/Accounts.qml +++ b/desktop/modules/mail/Accounts.qml @@ -184,6 +184,28 @@ Singleton { accounts = next; } + // Recount whenever the notmuch database commits. Without this the counts + // were read only at shell start and when the mail page opened, so the + // tile drifted behind the real inbox for the rest of the session. + // + // The directory is watched, not a file: Xapian replaces its files on + // commit, which kills a watch held on any one of them. notmuch is asked + // for its own database path, so a moved database needs no edit here. + Process { + id: watcher + running: true + command: ["sh", "-c", + 'exec inotifywait -m -q -e close_write,moved_to --format x "$(notmuch config get database.path)/xapian"'] + // One commit touches several files; the timer turns that burst into + // one refresh. + stdout: SplitParser { onRead: debounce.restart() } + // A dead watcher is the original bug again, silently. Come back. + onExited: respawn.start() + } + + Timer { id: debounce; interval: 300; onTriggered: root.refresh() } + Timer { id: respawn; interval: 5000; onTriggered: watcher.running = true } + // Launching qtmaildir. It takes no arguments, so there is nothing to tell // it about the account or thread clicked. Process { id: openProc; command: [`${Quickshell.env("HOME")}/bin/qtmaildir`] } |
