5 Commits

Author SHA1 Message Date
6d8672537f fix: set messages next to crash during build 2026-10-03 21:37:45 +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
5 changed files with 44 additions and 20 deletions

View File

@@ -27,9 +27,11 @@ Available at [github pages](https://szymon-jozef.github.io/libnotify-rs/libnotif
## Add to project
Type in:
```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
For nix users, there is also a flake inside. If you want to use it add this to your flake:

View File

@@ -2,7 +2,9 @@ use std::env;
use std::path::PathBuf;
fn main() {
let library = pkg_config::Config::new().probe("libnotify").unwrap();
let library = pkg_config::Config::new()
.probe("libnotify")
.expect("Cannot locate libnotify. Is it installed?");
let paths = library
.include_paths
@@ -17,7 +19,8 @@ fn main() {
.generate()
.expect("Unable to generate bindings");
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
let out_path =
PathBuf::from(env::var("OUT_DIR").expect("Out $OUT_DIR not set. Perhaps a bindgen error?"));
bindings
.write_to_file(out_path.join("bindings.rs"))

View File

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

View File

@@ -10,7 +10,7 @@
//!
//! # Features
//!
//! - clap – enables [clap] support for `Urgency` and `Timeout` enums
//! - clap – enables [clap] support for `Urgency`
//!
#![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)]

View File

@@ -34,42 +34,62 @@ impl<'a> NotificationBuilder<'a> {
}
/// 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>>>(
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)
}
/// 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>>>(
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)
}
/// 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>>>(
mut self,
category: T,
) -> Result<Self, LibnotifyError> {
if let Some(category) = category.into() {
self.notification.set_category(category)?;
}
Ok(self)
}
/// Set hint for this specific notification
pub fn set_hint(
mut self,
key: &str,
value: HintValue,
) -> Result<Self, Box<dyn std::error::Error>> {
pub fn set_hint(mut self, key: &str, value: HintValue) -> Result<Self, LibnotifyError> {
self.notification.set_hint(key, value)?;
Ok(self)
}
/// 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 {
if let Some(timeout) = timeout.into() {
self.notification.set_timeout(timeout);
}
self
}
/// 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 {
if let Some(urgency) = urgency.into() {
self.notification.set_urgency(urgency);
}
self
}