4 个稳定版本
2.0.2 | 2020 年 4 月 5 日 |
---|---|
2.0.1 | 2020 年 4 月 2 日 |
2.0.0 | 2020 年 3 月 19 日 |
1.9.0 | 2019 年 6 月 4 日 |
#12 in #neofetch
23 每月下载次数
165KB
1.5K SLoC
快速(约 1 毫秒执行时间)且相对(?)最小化的 Rust 编写抓取程序。
目录
前言
我最初为什么要制作它: 我过去经常使用 neofetch、ufetch 和 aurafetch,然后这让我开始思考。我有编写自己脚本的技能,为什么不呢?最初,它只是一个简单的 BASH 脚本。然后我决定想尝试 Rust,因为它已经让我感兴趣了一段时间。所以...这就是最终的结果。我欢迎任何批评。毕竟,我希望使它变得更好(以及提高我的 Rust 技能)。
为什么我想继续改进它: 当这个项目最初开始时,它只是一个学习如何用 Rust 编码的简单宠物项目。现在,既然有人帮助我进行这个项目,我非常希望看到它成为 neofetch/ufetch/screenfetch 的有价值的替代品。请,如果您认为这个项目缺少任何东西,请提出问题。我很乐意听听人们对这个项目的看法。
另一个注意: 如果您在任何地方展示了 rsfetch
,请告知 /u/Valley6660 或在此处提出问题。他绝对希望看到 rsfetch
被除他以外的其他人使用。如果您分享,您的截图有很大可能性被包含在 README 中!(我绝对没有试图贿赂人们使用它,悄悄的。)
须知事项
-
如果您计划提供帮助,请注意缩进使用 4 个空格。它曾经是制表符,但有人告诉我,空格是 Rust 社区中首选的缩进。
任何新的更改都应记录在 CHANGELOG.md。 -
以下是当前支持的包管理器。如果遗漏了任何,请在此 问题 中报告。
- pacman
- apt
- xbps
- dnf
- eopkg
- pkg
- rpm
- apk
- portage(注意:需要安装 portage-utils,因为它使用 qlist)
- cargo
- pip
-
音乐信息通过本地运行的
mpd
服务器使用mpc
获取信息。如果您想支持更多的音乐源,请通过提交问题告诉我。
安装
在发布标签中为不希望从源代码构建的人提供了预构建的二进制文件,否则您可以这样做。
先决条件
- Rust 编译器工具链
- GNU Make(makefile 与
bmake
不兼容!)
您有两种从源代码构建的方法
make
(选择3或4,但不要两者都做。)
- 克隆仓库
cdrsfetch
sudomake install
- 或者使用
make DESTDIR="/home/$USER" PREFIX=".cargo/" install
将其安装到$HOME/.cargo/bin
使用 sudo make uninstall
卸载。
cargo
- 克隆仓库
cdrsfetch
cargo安装 --路径 .
sudo cp rsfetch.1 /usr/share/man/man1/
(可选的manpage,如果不需要则跳过)
使用 cargo uninstall rsfetch
卸载。
发行版仓库
如果您使用的是基于 Arch 的发行版,您可以使用以下 AUR 软件包中的任何一个
- rsfetch-git (因为它是从源代码构建的,所以需要 Rust。)
- rsfetch-bin (从发布中抓取最新的二进制文件。)
如果您在使用 BSD,它位于 Fresh Ports 中(感谢维护该软件包的人,当我看到它时非常兴奋)
- rsfetch (因为它是从源代码构建的,所以需要 Rust 和 pkgconf。)
如果您在使用 Gentoo,您可以从我共同创建的覆盖中安装它
- 安装 p6nc-overlay
- 确保仓库和覆盖已同步:
sudo emerge --sync
sudoemerge -atvrsfetch
cargo
如果您已经设置了 rust
和 cargo
,您可以使用以下命令安装它
cargo安装 rsfetch
如果您需要 manpage
sudocurl -sSLhttps://raw.githubusercontent.com/rsfetch/rsfetch/master/rsfetch.1 -o/usr/share/man/man1/rsfetch.1
使用
rsfetch 2.0.0
An fetch tool for Linux. Fast (~1ms execution time) and somewhat(?) minimal.
All options are off by default.
Accepted values for the package manager are "pacman", "apt", "xbps", "dnf", "pkg", "eopkg", "rpm", "apk", "pip",
"portage", and "cargo".
USAGE:
rsfetch [FLAGS] [OPTIONS]
FLAGS:
-P, --cpu Turn CPU information on.
--credits List of past and current contributors for this project.
-d, --distro Turn distro name on.
-e, --editor Turn default editor name on. (Must have $EDITOR/$VISUAL variable set.)
--help Prints help information
-h, --host Turn device name on.
-H, --hostname Turn hostname on.
-i, --ip-address Turn ip address display on.
-k, --kernel Turn kernel version on.
-l, --logo Turn the logo or ascii art on.
-r, --memory Turn memory information on.
-M, --minimal Turn minimal-style output mode on.
-N, --neofetch Turn neofetch-style output mode on.
-b, --no-bold Turn bold for field titles off.
-B, --no-borders Turn borders off.
-c, --no-caps Turn all caps off.
-s, --shell Turn default shell name on.
-t, --terminal Turn terminal name on.
-u, --uptime Turn uptime info on.
-U, --user Turn user name on.
-@, --userat Turn 'user@hostname' style on (only applicable if both 'user' and 'hostname' are enabled!).
-V, --version Prints version information
-w, --wm Turn WM or DE name on.
OPTIONS:
-C, --corners <CHARACTER> Specify the corner character. Only used when borders are enabled.
-L, --logofile <FILE> Specify the file from which to read a custom ASCII logo.
-m, --music <SOURCE> Choose where to get music info. The only supported options is "mpd".
-p, --packages <PKG MNGR> Turn total package count on.
屏幕截图
rsfetch 样式输出
neofetch 样式输出
Phate6660 偏好的选项
基准测试
TODO:更新基准测试。它们已经过时了。我最新的 hyperfine 运行结果显示 rsfetch 的结果时间为 1.1ms,但我目前没有其他抓取工具进行比较。
这是一个详细的基准测试;与 ufetch、pfetch、aurafetch、Neofetch 和 ScreenFetch 进行比较
Benchmark #1: target/release/rsfetch -NcldkuUH@swp apt
Time (mean ± σ): 20.5 ms ± 20.2 ms [User: 10.8 ms, System: 5.3 ms]
Range (min … max): 14.4 ms … 117.2 ms 25 runs
Warning: The first benchmarking run for this command was significantly slower than the rest (117.2 ms). This could be caused by (filesystem) caches that were not filled until after the first run. You should consider using the '--warmup' option to fill those caches before the actual benchmark. Alternatively, use the '--prepare' option to clear the caches before each timing run.
Benchmark #2: ufetch
Time (mean ± σ): 180.4 ms ± 10.4 ms [User: 154.4 ms, System: 24.9 ms]
Range (min … max): 171.4 ms … 211.9 ms 14 runs
Benchmark #3: pfetch
Time (mean ± σ): 146.2 ms ± 3.7 ms [User: 123.5 ms, System: 19.1 ms]
Range (min … max): 141.4 ms … 155.9 ms 19 runs
Benchmark #4: aura -n "term"
Time (mean ± σ): 138.4 ms ± 3.5 ms [User: 109.6 ms, System: 26.0 ms]
Range (min … max): 132.2 ms … 145.8 ms 21 runs
Benchmark #5: neofetch --disable resolution --disable theme --disable icons --disable term --disable cpu --disable memory
Time (mean ± σ): 454.2 ms ± 23.6 ms [User: 327.3 ms, System: 101.6 ms]
Range (min … max): 427.6 ms … 507.6 ms 10 runs
Benchmark #6: screenfetch -d "-gtk;-res;-disk;-mem;-cpu"
Time (mean ± σ): 647.4 ms ± 33.1 ms [User: 480.3 ms, System: 133.6 ms]
Range (min … max): 622.5 ms … 731.6 ms 10 runs
Summary
'target/release/rsfetch -NcldkuUH@swp apt' ran
6.76 ± 6.67 times faster than 'aura -n "term"'
7.14 ± 7.05 times faster than 'pfetch'
8.81 ± 8.71 times faster than 'ufetch'
22.19 ± 21.93 times faster than 'neofetch --disable resolution --disable theme --disable icons --disable term --disable cpu --disable memory'
31.63 ± 31.25 times faster than 'screenfetch -d "-gtk;-res;-disk;-mem;-cpu"'
许可证
- 许可证已设置为“MIT”。任何人都可以使用此存储库中的任何内容,前提是如果他们选择重新分发,则应包括许可证。 查看许可证
变更日志
- 变更日志是由 github_changelog_generator 生成的(因为我太懒了)。查看变更日志
依赖关系
~14-25MB
~361K SLoC