4个版本
0.1.3 | 2022年12月29日 |
---|---|
0.1.2 | 2022年12月29日 |
0.1.1 | 2022年12月29日 |
0.1.0 | 2022年12月29日 |
#601 in 硬件支持
36KB
592 行
elem
罗技电池电量托盘指示器
在系统托盘显示您的无线罗技设备的电池电量。
名称来源于匈牙利语中的“电池”:elem。
用法
从crates.io安装
cargo install elem --force
下载预构建的二进制文件
要开始使用elem,请从发布页面下载并执行最新版本的可执行文件:Fuwn/elem/releases/latest。
自行构建
- 克隆此仓库:
git clone https://github.com/Fuwn/elem.git
- 导航到您的本地仓库:
cd elem
- 构建elem:
cargo build elem --release
- elem的可执行文件将位于
target/release/elem
注意
更新频率
默认情况下,elem每分钟获取一次所选设备的电池电量。考虑到罗技设备在节能方面的表现,这对于大多数人来说应该足够了。
如果您想增加--或减少--更新频率,您可以从命令行启动elem并传递一个以毫秒为单位的值,这将成为您的新更新频率。
$ ./elem 60000 # Updates every 60 seconds (60000ms / 1000ms = 60s)
$ ./elem 1000 # Updates every second (1000ms = 1s)
$ ./elem 120000 # Updates every two minutes (120000ms / 1000ms = 120s)
冻结了吗?
如果elem看起来冻结了,它并没有。它只是等待watchman(电池电量获取器)返回一个值。
解决方案
实际上编写这个项目很有趣。
我必须解决的主要问题是如何仅从数字显示电池电量。我的第一个想法是下载一堆图标并将它们与程序捆绑在一起。很快我就意识到,找到看起来不错的免费图标实际上并不容易。更重要的是,您真的想随身携带100多个图标只是为了显示一个数字吗?我放弃了这个想法,并开始走程序化的路线。我试图找到生成图像的Rust crate,但令人惊讶的是,我找不到。仅仅是数字到文本?还不是。这让我开始解决下一个问题:从数字生成图像。
我的第一个想法,也是最终实现的想法,是从数字生成ASCII艺术。出乎我的意料,我找不到一个可以直接完成这个任务的crate。(顺便说一句;我实际上找到了一个crate,它部分实现了这个功能,但当我找到它的时候,我自己的实现已经完成了。实际上,我更喜欢自己的实现,因为它给了我更多控制最终结果的能力。)使用Patrick Gillespie的文本转ASCII艺术生成器(TAAG),我提取了一些重要的ASCII艺术元素:从零到九的数字;最终,我还需要一个省略号、一个问号和一个笑脸。
使用这些基本元素,我能够编写一组函数来生成我想要的任何数字组合的ASCII艺术。这个功能的好处是它全部都是ASCII字符,这意味着我可以轻松地遍历每一行和每个字符,将其转换为临时的像素艺术。只需几个简单的步骤,我就可以将任何ASCII像素艺术转换为RGBA图像,步骤如下
- 找到ASCII艺术的宽度
- 去除换行符,使整个ASCII艺术位于一行上
- 遍历ASCII艺术中的每个字符,将相应的像素值写入图像缓冲区:对于空像素是
0 0 0 0
,而对于填充像素是255 255 255 255
(红、绿、蓝、透明度)。 - 将图像缓冲区保存到内存中,并将其用作托盘指示器的图标。:)
很酷,对吧?
将来,我会看看是否可以进一步优化这个过程,但由于主要瓶颈是罗技G HUB API,所以这并不是什么大问题。
许可证
本项目使用GNU通用公共许可证v3.0授权。
依赖项
~20–55MB
~697K SLoC