3 个不稳定版本
0.2.1 | 2024年1月3日 |
---|---|
0.2.0 | 2024年1月3日 |
0.1.0 | 2024年1月2日 |
93 在 可视化
150KB
559 代码行
媒体控制器
media-controller
提供一个始终位于顶部的具有透明度支持的 GTK-3 窗口,在相应地更改后立即显示当前的音量/亮度。
它使用 UNIX 套接字,因此如果在第一个实例运行时创建了另一个实例,它不会创建另一个窗口,而是简单地更新另一个实例的值,从而提供平滑的体验。
[演示中使用的选项:--color=#000000aa --font-description="BigBlueTerm437 Nerd Font Mono"
]
media-controller v0.2.1
Nuno David <email@ndavd.com>
USAGE:
media-controller [OPTIONS] v up|down|mute {number}
media-controller [OPTIONS] b up|down {number}
OPTIONS:
Format --{option}={value}
duration Lifespan of the window in seconds. Default: 2
width Width of the window in px. Default: 300
height Height of the window in px. Default: 20
bottom Offset from the bottom of the screen in px. Default: 100
color Color of the window in hex (#RRGGBB or #RRGGBBAA). Default: "#000000FF"
font-description Font used. Default: "Monospace 13"
filled Filled character used in the progress bar. Default: "█"
half-filled Half filled character used in the progress bar. Default: "▌"
empty Empty character used in the progress bar. Default: " "
为了在您的系统上运行它,只需创建一个新的 cargo 项目。添加库
cargo add media-controller
然后只需实现一些函数。您的 main.rs
应该看起来像这样
/// Should toggle mute.
fn toggle_mute() {
todo!();
}
/// Should return whether it's muted.
fn get_mute() -> bool {
todo!();
}
/// Should return the volume (0-100).
fn get_volume() -> u8 {
todo!();
}
/// Should return the brightness (0-100).
fn get_brightness() -> u8 {
todo!();
}
/// Should increment the volume. To decrement use a negative value.
fn inc_volume(value: i8) {
todo!();
}
/// Should increment the brightness. To decrement use a negative value.
fn inc_brightness(value: i8) {
todo!();
}
fn main() {
/// Pass `Some` to use custom options.
/// Pass `None` to manage them through command line arguments.
let custom_controller = None;
controller::MediaControllerApp {
toggle_mute,
get_mute,
get_volume,
get_brightness,
inc_volume,
inc_brightness,
custom_controller,
}
.run();
}
一个具体的例子可以在 src/main.rs 中找到,这是一个使用 wpctl
和 brightnessctl
的 Linux 系统的示例。
将 media-controller
映射到媒体键特别有用。使用 sxhkd
,它应该看起来像这样
# Volume Control
XF86AudioLowerVolume
media-controller v down 5
XF86AudioRaiseVolume
media-controller v up 5
XF86AudioMute
media-controller v mute
# Brightness Control
XF86MonBrightnessDown
media-controller b down 5
XF86MonBrightnessUp
media-controller b up 5
依赖项
~17MB
~403K SLoC