Skip to content

Latest commit

 

History

History
218 lines (159 loc) · 4.52 KB

README.md

File metadata and controls

218 lines (159 loc) · 4.52 KB

⚡ Noti

Noti is a lightweight desktop notification daemon for Wayland compositors. It offers a customizable and efficient notification experience, designed for modern Linux desktops.

🌟 Features

  • 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

🚀 Getting Started

The best way to get started with Noti is the book.

📥 Installation

1. Install via Cargo (Recommended)

# 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 .

2. Build from Source

# 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 .

🛠️ Configuration

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!

🔧 Custom layout

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!

🐛 Troubleshooting

Having issues?

  • Set the NOTI_LOG environment variable to debug or trace 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.

🤝 Contributing

Interested in improving Noti? Here's how to contribute:

  1. Fork the repo and create your branch:

    git checkout -b feature/my-improvement
  2. Make your changes and commit them:

    git commit -am "feat: describe your changes"
  3. Push your changes:

    git push origin feature/my-improvement
  4. Open a Pull Request

Note

For major changes, please open an issue first to discuss the changes you'd like to make.

📄 License

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.

📬 Contact

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.