diff --git a/README.md b/README.md index edca0e3..cfb3a61 100644 --- a/README.md +++ b/README.md @@ -398,6 +398,20 @@ Supported platforms: GNU/Linux, FreeBSD. `${down_b}`, `${up_b}`, `${down_kb}`, `${up_kb}`, `${down_mb}`, `${up_mb}`, `${down_gb}`, `${up_gb}`. +### vicious.widgets.notmuch + +Provides a message count according to an arbitrary Notmuch query. + +Supported platforms: platform independent. + +Argument: the query that is passed to Notmuch. For instance: +`tag:inbox AND tag:unread` returns the number of unread messages with +tag "inbox". + +Returns a table with string keys containing: +* `${count}`: the count of messages that match the query + + ### vicious.widgets.org Provides agenda statistics for Emacs org-mode. diff --git a/widgets/notmuch_all.lua b/widgets/notmuch_all.lua new file mode 100644 index 0000000..47f5295 --- /dev/null +++ b/widgets/notmuch_all.lua @@ -0,0 +1,38 @@ +-- notmuch_all - count messages that match a notmuch query +-- Copyright (C) 2019 Enric Morales +-- +-- This file is part of Vicious. +-- +-- Vicious is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as +-- published by the Free Software Foundation, either version 2 of the +-- License, or (at your option) any later version. +-- +-- Vicious is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU Affero General Public License for more details. +-- +-- You should have received a copy of the GNU Affero General Public License +-- along with Vicious. If not, see . + +local tonumber = tonumber +local helpers = require("vicious.helpers") +local spawn = require("vicious.spawn") + + +local notmuch = {} + +local function parse(stdout, stderr, exitreason, exitcode) + local output = { count = "N/A" } + if exitcode == 0 then output.count = tonumber(stdout) end + return output +end + +function notmuch.async(format, warg, callback) + local cmd = ("notmuch count '^%s'"):format(warg) + + spawn.easy_async(cmd, function (...) callback(parse(...)) end) +end + +return helpers.setasyncall(notmuch)