11 个版本
0.1.10 | 2024 年 7 月 4 日 |
---|---|
0.1.9 | 2024 年 7 月 3 日 |
0.1.5 | 2024 年 6 月 26 日 |
#58 在 GUI
73 每月下载量
7.5MB
906 行
Eww 通知守护进程(Rust 版)
一个用 Rust 编写的 Linux 通知守护进程。受 end 启发。
周围有几个优秀的通知守护进程。不幸的是,它们都使用自己的配置语言。如果你已经使用了 eww 来配置你的小部件,那么能否只用它来配置通知会不是很好吗?
功能
- 使用 eww 显示通知
- 可自定义的通知外观
- 可自定义的通知持续时间
- 通知历史记录
- 通知动作
- 回复通知(不在 freedesktop 通知规范中)
入门
你可以自己构建项目,或者使用来自 crates.io 的预构建二进制文件。
从源代码构建
克隆仓库并运行以下命令进行构建。
git clone https://github.com/Dr-42/end-rs
cd end-rs
cargo build --release
这将创建在 target/release
下的可执行文件。将其复制到所需位置。
从 Crates.io 安装
cargo install end-rs
这将安装可执行文件到 ~/.cargo/bin
。确保已将其添加到你的路径中。有关安装 Rust 和 Cargo 的更多详细信息,请参阅 rustup。
使用方法
守护进程
要启动通知守护进程,请在你的 WM 的初始化文件中使用守护进程参数进行自动启动。
hyprland 的示例
exec-once = ~/.cargo/bin/end-rs daemon
有关配置的更多详细信息,可以在可执行文件中使用 -h 或 --help 参数。
Eww 配置
可以通过运行生成命令来生成默认的 yuck 和 scss 文件。
yuck
end-rs generate yuck
scss
end-rs generate scss
两者都生成
end-rs generate all
这将创建在 eww 配置目录下的 end.yuck
和 end.scss
文件。
要使用它们,只需在 eww 配置文件中包含它们即可。
(include "end.yuck")
@import "end.scss";
命令
键入 end-rs
将显示包含所有可用命令的帮助信息。
$ end-rs --help
end-rs <version>
Usage: end-rs [OPTIONS] <COMMAND> <args>
Options:
-h, --help - Print this help message
-v, --version - Print version information
Commands:
daemon - Start the notification daemon
close <id> - Close a notification with the given ID
history <open|close|toggle> - Open, close or toggle the notification history
action <id> <action> - Perform an action on a notification with the given ID
generate [css|yuck|all] - Generate the eww config files
除了生成命令外,所有命令都需要守护进程正在运行。
配置
检查结束 $XDG_CONFIG_HOME/end-rs
(可能是 ~/.config/end-rs
)中的 config.toml
文件。如果找不到文件,它将使用默认值创建一个。
所有字段都是必填的,与原始的end不同。
配置文件的结构如下。
### Path to the eww binary
eww_binary_path = "~/.local/bin/eww"
### Where to find the icons for the notifications
icon_dirs = [
"/usr/share/icons",
"/usr/share/pixmaps",
]
### The theme to use for the icons
icon_theme = "Adwaita"
### The default notification window
eww_notification_window = "notification-frame"
### The default notification widget
eww_notification_widget = "end-notification"
### The variable which contains the literal for the notifications
eww_notification_var = "end-notifications"
### The default history window
eww_history_window = "history-frame"
### The default history widget
eww_history_widget = "end-history"
### The variable which contains the literal for the history
eww_history_var = "end-histories"
### The default reply window
eww_reply_window = "reply-frame"
### The default reply widget
eww_reply_widget = "end-reply"
### The variable which contains the literal for the replies
eww_reply_var = "end-replies"
### The variable which contains content for the reply text
eww_reply_text = "end-reply-text"
### Max notifications to be preserved in history. In case of 0, all notifications will be preserved.
max_notifications = 10
### The orientation of the notifications. Can be either "v" or "h" or "vertical" or "horizontal" (Basically the eww orientation value)
notification_orientation = "v"
### The timeouts for different types of notifications in seconds. A value of 0 means that the notification will never timeout
[timeout]
low = 5
normal = 10
critical = 0
图片
自由桌面规范定义了3种在通知中包含图片的方法。
- image-path:图片文件的路径
- image-data:以base64格式的图片数据
- image_path:图片文件的路径(这已被弃用,但某些原因,一些应用程序仍在使用它)
End-rs支持所有3种方式。如果它检测到路径,它将从该路径显示图片。如果它检测到符合图标主题的有效图标,它将显示该图标。如果它检测到base64编码的图片,它将把图片写入临时文件,保存在/tmp/end-data/...
中,并从该位置显示图片,因为eww不支持base64编码的图片。
在yuck中,它将设置通知的图片字段为图片文件的路径。
屏幕截图
简单通知
历史记录
回复
许可
本项目采用BSD 2-Clause License许可 - 有关详细信息,请参阅LICENSE文件。
常见问题解答
为什么选择Rust?
Rust是一种非常适合系统编程的语言。它速度快,安全,并且有一个优秀的社区。它也是编写CLI工具的绝佳语言。而且,毕竟,谁不喜欢Rust呢?
为什么不直接使用end?
End是一个出色的通知守护进程。我基本上有两个原因要写这个。
- 自定义eww二进制路径 - 据说由于某种原因,hyprland没有从我的zshrs加载路径,所以我必须进入源代码,编译自己的版本,然后使用它。我想要能够在配置文件中设置eww二进制文件的路径。
- image_path - kdeconnect使用image_path而不是image-path。End不支持这一点。这让我陷入了困境,因为我不知道haskell。所以我想为什么不重写为RustTM呢。
- In-reply - 我想能够回复通知。我知道这不在freedesktop通知规范中,但我想有这个功能。我仅在kdeconnect通知上测试了它,并且它工作正常。如果您在其他通知上使用它,请让我知道是否有任何问题。
为什么不直接分叉end?
如我所说,我不知道haskell。我知道Rust。所以我把它重写为Rust。
为什么不直接使用dunst?
我使用eww来制作我的小部件。我想用它来制作我的通知。此外,我想让我的整个桌面都使用与壁纸相匹配的颜色,我使用一个python脚本来从颜色壁纸生成颜色,并将其馈送到eww。因此,这个设置。
我遇到了一个问题
请在github存储库中打开一个问题。我会尽力帮助你。
我想做出贡献
请在github存储库中打开一个PR。我会审查它,如果它很好,我会合并它。请在打开PR之前运行cargo fmt
。
我有功能请求
请在github存储库中打开一个问题。如果可行,我会尝试实现它。
致谢
依赖项
~13–25MB
~389K SLoC