5 个稳定版本
1.3.0 | 2021 年 12 月 19 日 |
---|---|
1.0.3 | 2021 年 4 月 11 日 |
#531 在 硬件支持
99KB
2.5K SLoC
rog-anime
rog-anime
是一个用于与内置 AniMe 矩阵显示屏的 ASUS 笔记本电脑一起使用的 crate。此 crate 可以与 zbus 一起使用,以与该项目中的 asusd
守护程序进行通信,或者它也可以独立使用,通过使用内置函数将数据转换为 USB HID 数据包来直接将数据写入 USB。
目前支持的内容
- 数据序列
- 数据可以是
- 图像
- ASUS 风格的 gif
- 纯图像类型的 gif
- 暂停
- 图像
- 创建用于写入设备的 USB HID 数据包
此 crate 主要为与 asus-nb-ctrl
一起使用而构建,后者是 ASUS ROG/TUF 机器上 Linux 的完整守护程序和工具集,但也可以用于通用目的,例如为 Windows 操作系统构建新的控制器。
功能启用
dbus
默认启用 - 这使用 zvariant
在 dbus 接口上启用发送一些类型。
示例
use std::{
env, error::Error, f32::consts::PI, path::Path, process::exit, thread::sleep, time::Duration,
};
use rog_anime::{
AniMeDataBuffer, {AniMeImage, Vec2},
};
use rog_dbus::AuraDbusClient;
fn main() -> Result<(), Box<dyn Error>> {
let (client, _) = AuraDbusClient::new().unwrap();
let mut image = AniMeImage::from_png(
Path::new("./doom.png"),
0.9, // scale
0.0, // rotation
Vec2::new(0.0, 0.0), // position
0.3, // brightness
)?;
loop {
image.angle += 0.05;
if image.angle > PI * 2.0 {
image.angle = 0.0
}
image.update();
client
.proxies()
.anime()
.write(<AniMeDataBuffer>::from(&image))
.unwrap();
sleep(Duration::from_micros(500));
}
}
示例,USB HID
let mut image = AniMeImage::from_png(
Path::new("./doom.png"),
0.9, // scale
0.0, // rotation
Vec2::new(0.0, 0.0), // position
0.3, // brightness
)?;
// convert to intermediate packet format
let buffer = <AniMeDataBuffer>::from(&image)
// then to USB HID
let data = AniMePacketType::from(buffer);
// and then write direct
for packet in data.iter() {
write_usb(packet); // some usb call here
}
数据
data/controller.gif
是一个示例 ASUS 对角线方向的 gif。data/diagonal-template.*
是对角线图像或 gif 的模板。
有关对角线布局的详细信息,请参阅 https://blog.joshwalsh.me/asus-anime-matrix/。
diagonal-template.*
由上述网站提供。最好将最终文件导出为 36 像素的高度 - 对于对角线显示屏,asusd 或 rog-anime crate 不执行缩放。
待办事项
- 对角字体和文本
- 通用字体和文本
- Linux 和 Windows 的系统信息
- Linux 和 Windows 的音频 EQ 可视化
- 时间和日期显示
依赖项
~5MB
~137K SLoC