5 Commits

Author SHA1 Message Date
043b6e93c8 fix: compile only on linux 2026-10-03 21:24:05 +02:00
0e2e97bf66 feat: add optional arguments to the builder 2026-10-03 20:50:56 +02:00
025ab6af68 fix: remove clap from timeout 2026-10-03 20:25:33 +02:00
034a302f3b docs: update readme with installation instruction correction 2026-10-03 20:19:51 +02:00
Szymon
987cd449c5 Merge pull request #5 from szymon-jozef/feat/clap
feat: add clap feature
2026-10-03 20:16:49 +02:00
4 changed files with 42 additions and 18 deletions

View File

@@ -27,9 +27,11 @@ Available at [github pages](https://szymon-jozef.github.io/libnotify-rs/libnotif
## Add to project ## Add to project
Type in: Type in:
```bash ```bash
cargo add --git "https://github.com/szymon-jozef/libnotify-rs" cargo add --git "https://github.com/szymon-jozef/libnotify-rs" --tag <desired version>
``` ```
Tag argument is optional, but encouraged.
### Nix flake ### Nix flake
For nix users, there is also a flake inside. If you want to use it add this to your flake: For nix users, there is also a flake inside. If you want to use it add this to your flake:

View File

@@ -47,7 +47,6 @@ pub enum HintValue {
/// Notification timeout, until close /// Notification timeout, until close
#[derive(Debug, Clone, Copy)] #[derive(Debug, Clone, Copy)]
#[cfg_attr(feature = "clap", derive(clap::ValueEnum))]
pub enum Timeout { pub enum Timeout {
#[allow(missing_docs)] #[allow(missing_docs)]
Default, Default,

View File

@@ -10,13 +10,16 @@
//! //!
//! # Features //! # Features
//! //!
//! - clap – enables [clap] support for `Urgency` and `Timeout` enums //! - clap – enables [clap] support for `Urgency`
//! //!
#![allow(non_upper_case_globals)] #![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)] #![allow(non_camel_case_types)]
#![allow(non_snake_case)] #![allow(non_snake_case)]
#![warn(missing_docs)] #![warn(missing_docs)]
#[cfg(not(target_os = "linux"))]
compile_error!("Libnotify-rs only supports linux");
/// Basic libnotify rust wrapper /// Basic libnotify rust wrapper
pub mod api; pub mod api;
/// Higher level abstraction over api /// Higher level abstraction over api

View File

@@ -34,42 +34,62 @@ impl<'a> NotificationBuilder<'a> {
} }
/// Sets app name for this specific notification. /// Sets app name for this specific notification.
pub fn set_app_name(mut self, app_name: &str) -> Result<Self, LibnotifyError> { pub fn set_app_name<T: Into<Option<&'a str>>>(
self.notification.set_app_name(app_name)?; mut self,
app_name: T,
) -> Result<Self, LibnotifyError> {
if let Some(app_name) = app_name.into() {
self.notification.set_app_name(app_name)?;
}
Ok(self) Ok(self)
} }
/// Sets app icon fot this specific notification. /// Sets app icon fot this specific notification.
pub fn set_app_icon(mut self, app_icon: &str) -> Result<Self, LibnotifyError> { pub fn set_app_icon<T: Into<Option<&'a str>>>(
self.notification.set_app_icon(app_icon)?; mut self,
app_icon: T,
) -> Result<Self, LibnotifyError> {
if let Some(app_icon) = app_icon.into() {
self.notification.set_app_icon(app_icon)?;
}
Ok(self) Ok(self)
} }
/// Sets category for this specific notification /// Sets category for this specific notification
pub fn set_category(mut self, category: &str) -> Result<Self, LibnotifyError> { pub fn set_category<T: Into<Option<&'a str>>>(
self.notification.set_category(category)?; mut self,
category: T,
) -> Result<Self, LibnotifyError> {
if let Some(category) = category.into() {
self.notification.set_category(category)?;
}
Ok(self) Ok(self)
} }
/// Set hint for this specific notification /// Set hint for this specific notification
pub fn set_hint( pub fn set_hint(mut self, key: &str, value: HintValue) -> Result<Self, LibnotifyError> {
mut self,
key: &str,
value: HintValue,
) -> Result<Self, Box<dyn std::error::Error>> {
self.notification.set_hint(key, value)?; self.notification.set_hint(key, value)?;
Ok(self) Ok(self)
} }
/// Set timeout until close /// Set timeout until close
pub fn set_timeout(mut self, timeout: Timeout) -> Self { pub fn set_timeout<T: Into<Option<Timeout>>>(mut self, timeout: T) -> Self {
self.notification.set_timeout(timeout); if let Some(timeout) = timeout.into() {
self.notification.set_timeout(timeout);
}
self self
} }
/// Set notification urgency level /// Set notification urgency level
pub fn set_urgency(mut self, urgency: Urgency) -> Self { pub fn set_urgency<T: Into<Option<Urgency>>>(mut self, urgency: T) -> Self {
self.notification.set_urgency(urgency); if let Some(urgency) = urgency.into() {
self.notification.set_urgency(urgency);
}
self self
} }