2 unstable releases
| 0.2.0 | Jul 8, 2025 |
|---|---|
| 0.1.0 | Jul 8, 2025 |
#77 in macOS and iOS APIs
Used in ccn
11KB
155 lines
tnr
A macOS notification library and CLI tool that provides a simple interface to send notifications using terminal-notifier.
Features
- đ¯ Simple and intuitive API
- đ§ Both CLI tool and Rust library
- ⨠Support for different notification types (error, warning, info, success)
- đ Clickable notifications with URL support
- đĩ Custom sounds for different notification types
- đĻ Zero external dependencies (except terminal-notifier)
Prerequisites
This tool requires terminal-notifier to be installed on your macOS system:
brew install terminal-notifier
System Configuration
To use terminal-notifier, you need to configure macOS notification settings:
- Open System Preferences â Notifications
- Find and select terminal-notifier
- Check "Allow Notifications"
- Set notification style (Banner/Alert) as needed
Installation
As a CLI tool
cargo install tnr
As a library dependency
Add this to your Cargo.toml:
[dependencies]
tnr = "0.1.0"
CLI Usage
# Basic notification
tnr --message "Hello, World!"
# Notification with title and type
tnr --title "Build Status" --message "Build completed successfully" --type success
# Notification with clickable URL
tnr --message "Check the results" --url "https://github.com"
# Error notification
tnr --message "Something went wrong" --type error
CLI Options
--title <TITLE>: Notification title--message <MESSAGE>: Notification message (required)--type <TYPE>: Notification type (error, warning, info, success)--url <URL>: URL to open when notification is clicked
Library Usage
use tnr::{Notify, Type};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Basic notification
Notify::new("Hello from Rust!")
.send()?;
// Notification with all options
Notify::new("Task completed successfully!")
.with_title("Build Status")
.with_type(Type::Success)
.with_url("https://github.com")
.send()?;
// Error notification
Notify::new("Something went wrong")
.with_type(Type::Error)
.send()?;
Ok(())
}
Available Notification Types
Type::Error- â with "Sosumi" soundType::Warning- â ī¸ with "Funk" soundType::Info- âšī¸ with "Glass" soundType::Success- â with "Hero" sound
API Documentation
Notify
The main struct for creating and sending notifications.
Methods
new(message: impl Into<String>) -> Self- Create a new notification with a messagewith_title(self, title: impl Into<String>) -> Self- Set the notification titlewith_type(self, notification_type: Type) -> Self- Set the notification typewith_url(self, url: impl Into<String>) -> Self- Set a URL to open when clickedsend(&self) -> Result<(), TnrError>- Send the notification
Type
Enum representing different types of notifications with associated emojis and sounds.
Error Handling
The library uses TnrError enum for error handling:
TnrError::ExecutionFailed- terminal-notifier execution failedTnrError::CommandNotFound- terminal-notifier not found on system
Examples
See the examples/ directory for more usage examples.
License
MIT License - see the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Dependencies
~1â1.5MB
~28K SLoC