Noti is a lightweight desktop notification daemon for Wayland compositors. It offers a customizable and efficient notification experience, designed for modern Linux desktops.
- Native Wayland Support: Seamlessly integrated with Wayland
- Highly Configurable: Detailed customization options for appearance and behavior
- Per-App Styling: Unique notification styles for different applications
- Modern Design: Clean, minimalist approach to desktop notifications
The best way to get started with Noti is the book.
# Install directly from GitHub
cargo install --git https://github.com/noti-rs/noti/
# Or clone and install locally
git clone https://github.com/noti-rs/noti.git
cd noti
cargo install --path .
# Clone the repository
git clone https://github.com/noti-rs/noti.git
cd noti
# Build in release mode
cargo build --release
# Install the binary
cargo install --path .
Noti uses a TOML configuration file located at:
$XDG_CONFIG_HOME/noti/config.toml
~/.config/noti/config.toml
Example configuration:
[general]
font = "JetBrainsMono Nerd Font"
anchor = "top-right"
offset = [15, 15]
gap = 10
sorting = "urgency"
width = 300
height = 150
[display]
theme = "pastel"
padding = 8
timeout = 2000
[display.border]
size = 4
radius = 10
[display.image]
max_size = 64
margin = { right = 25 }
# For old computers you can use simplier resizing method
# resizing_method = "nearest"
[display.text]
wrap = false
ellipsize_at = "middle"
[display.title]
style = "bold italic"
margin = { top = 5 }
font_size = 18
[display.body]
justification = "left"
margin = { top = 12 }
font_size = 16
[[theme]]
name = "pastel"
[theme.normal]
background = "#1e1e2e"
foreground = "#99AEB3"
border = "#000"
[theme.critical]
background = "#EBA0AC"
foreground = "#1E1E2E"
border = "#000"
[[app]]
name = "Telegram Desktop"
[app.display]
border = { radius = 8 }
markup = true
[app.display.body]
justification = "center"
line_spacing = 5
Tip
Check the book for comprehensive configuration guide!
Want to change the banner layout?
The Noti
application offers a customizable layout using our file format, .noti
!
Example of layout configuration:
FlexContainer(
direction = vertical,
spacing = Spacing(
top = 10,
right = 15,
bottom = 10,
left = 15,
),
alignment = Alignment(
horizontal = center,
vertical = center,
),
border = Border(
size = 5,
radius = 10,
),
) {
Text(
kind = title,
wrap = false,
ellipsize_at = end,
justification = center,
)
Text(
kind = body,
style = bold-italic,
margin = Spacing(top = 12),
justification = center,
)
}
To enable this feature, write your own layout in file and in main config file write:
display.layout = "path/to/your/File.noti"
Read more about it here!
Having issues?
-
Set the
NOTI_LOG
environment variable todebug
ortrace
for detailed logs:NOTI_LOG=debug noti run >> debug.log
-
Open a GitHub issue and attach the log file. This will help us resolve the problem faster.
Interested in improving Noti? Here's how to contribute:
-
Fork the repo and create your branch:
git checkout -b feature/my-improvement
-
Make your changes and commit them:
git commit -am "feat: describe your changes"
-
Push your changes:
git push origin feature/my-improvement
-
Open a Pull Request
Note
For major changes, please open an issue first to discuss the changes you'd like to make.
Noti is licensed under the GNU General Public License v3.0 (GPL-3.0).
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
See the LICENSE file for complete details.
Have questions or need support? We're here to help! Open an issue on GitHub and we'll get back to you as soon as possible.