feat: native desktop notifications (experimental) (#59)

* desktop notification by entering `Mode::DONE` for `countdown` and `pomodoro`

* remove redundant `on_done_called` check

* remove build warning (release only)

* log notification errors

* cli arg to enable desktop notifications

* persistant notification settings

* ctrl shortcut

* update changelog

* max timer notification
This commit is contained in:
Jens Krause
2025-01-28 19:28:34 +01:00
committed by GitHub
parent 97787f718d
commit d3c436da0b
14 changed files with 957 additions and 221 deletions

View File

@@ -1,5 +1,5 @@
use crate::{
common::{Content, Style},
common::{Content, Notification, Style},
duration,
};
use clap::Parser;
@@ -23,7 +23,7 @@ pub struct Args {
)]
pub pause: Option<Duration>,
#[arg(long, short = 'd', help = "Whether to show deciseconds or not.")]
#[arg(long, short = 'd', help = "Show deciseconds.")]
pub decis: bool,
#[arg(long, short = 'm', value_enum, help = "Mode to start with.")]
@@ -32,9 +32,17 @@ pub struct Args {
#[arg(long, short = 's', value_enum, help = "Style to display time with.")]
pub style: Option<Style>,
#[arg(long, value_enum, help = "Whether to open the menu or not.")]
#[arg(long, value_enum, help = "Open the menu.")]
pub menu: bool,
#[arg(long, short = 'r', help = "Reset stored values to default.")]
#[arg(long, short = 'r', help = "Reset stored values to default values.")]
pub reset: bool,
#[arg(
long,
short,
value_enum,
help = "Toggle desktop notifications on or off. Experimental."
)]
pub notification: Option<Notification>,
}