From 0e91d08286c97810af6f557a065a75aca2a49a54 Mon Sep 17 00:00:00 2001 From: Malte Brandy Date: Fri, 22 Jun 2018 23:27:05 +0200 Subject: [PATCH] Show kassandra results by popup --- .../packages/rust-scripts/src/kassandra.rs | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/home-manager/packages/rust-scripts/src/kassandra.rs b/home-manager/packages/rust-scripts/src/kassandra.rs index 410bb1d9..2e02d466 100644 --- a/home-manager/packages/rust-scripts/src/kassandra.rs +++ b/home-manager/packages/rust-scripts/src/kassandra.rs @@ -16,7 +16,7 @@ use dialog::errors::ErrorKind as DEK; use update::{update_tasks, process_task}; use error::{Result, ResultExt, ErrorKind as EK, Error}; -use hotkeys::str2cmd; +use hotkeys::{term_cmd, str2cmd}; use tasktree::{TreeCache, TaskNode}; use well_known::{INBOX, ACCOUNTING, TREESORT, PRIVATE_MAILBOX, KIVA_MAILBOX, AK_MAILBOX, SORT_INBOX, SORT_INBOX_AK, SORT_INBOX_KIVA}; @@ -973,6 +973,27 @@ Do you want to change the state? (Esc to cancel)", } } +fn notify_result(result: Result<()>) -> Result<()> { + fn show(msg: &str) -> Result<()> { + let msg = format!("message='{}'", msg); + str2cmd("eventc notification kassandra") + .arg("-d") + .arg("title='Kassandra'") + .arg("-d") + .arg(&msg) + .output()?; + Ok(()) + } + match result { + Err(Error(EK::DialogError(DEK::InputCanceled), _)) => Ok(()), + Err(err) => { + show(&format!("{}", err))?; + Err(err) + } + Ok(()) => show("Kassandra finished"), + } +} + pub fn change_state() -> Result<()> { Kassandra::new()?.confirm_state() } @@ -982,5 +1003,5 @@ pub fn new_tasks() -> Result<()> { } pub fn kassandra() -> Result<()> { - Kassandra::new()?.run() + notify_result(Kassandra::new()?.run()) }