#fetch #execution #tool #linux #execution-time #neofetch #logo

应用 rsfetch

用 Rust 编写的类似 neofetch 的工具

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 每月下载次数

MIT 许可证

165KB
1.5K SLoC

logo

快速(约 1 毫秒执行时间)且相对(?)最小化的 Rust 编写抓取程序。

crates.io version GitHub code size in bytes lines of code GitHub GitHub last commit GitHub issues

目录

前言

我最初为什么要制作它: 我过去经常使用 neofetch、ufetch 和 aurafetch,然后这让我开始思考。我有编写自己脚本的技能,为什么不呢?最初,它只是一个简单的 BASH 脚本。然后我决定想尝试 Rust,因为它已经让我感兴趣了一段时间。所以...这就是最终的结果。我欢迎任何批评。毕竟,我希望使它变得更好(以及提高我的 Rust 技能)。

为什么我想继续改进它: 当这个项目最初开始时,它只是一个学习如何用 Rust 编码的简单宠物项目。现在,既然有人帮助我进行这个项目,我非常希望看到它成为 neofetch/ufetch/screenfetch 的有价值的替代品。请,如果您认为这个项目缺少任何东西,请提出问题。我很乐意听听人们对这个项目的看法。

另一个注意: 如果您在任何地方展示了 rsfetch,请告知 /u/Valley6660 或在此处提出问题。他绝对希望看到 rsfetch 被除他以外的其他人使用。如果您分享,您的截图有很大可能性被包含在 README 中!(我绝对没有试图贿赂人们使用它,悄悄的。)

须知事项

  1. 如果您计划提供帮助,请注意缩进使用 4 个空格。它曾经是制表符,但有人告诉我,空格是 Rust 社区中首选的缩进。任何新的更改都应记录在 CHANGELOG.md

  2. 以下是当前支持的包管理器。如果遗漏了任何,请在此 问题 中报告。

    • pacman
    • apt
    • xbps
    • dnf
    • eopkg
    • pkg
    • rpm
    • apk
    • portage(注意:需要安装 portage-utils,因为它使用 qlist)
    • cargo
    • pip
  3. 音乐信息通过本地运行的 mpd 服务器使用 mpc 获取信息。如果您想支持更多的音乐源,请通过提交问题告诉我。

安装

在发布标签中为不希望从源代码构建的人提供了预构建的二进制文件,否则您可以这样做。

先决条件

  • Rust 编译器工具链
  • GNU Make(makefile 与 bmake 不兼容!)

您有两种从源代码构建的方法

make

(选择3或4,但不要两者都做。)

  1. 克隆仓库
  2. cdrsfetch
  3. sudomake install
  4. 或者使用 make DESTDIR="/home/$USER" PREFIX=".cargo/" install 将其安装到 $HOME/.cargo/bin

使用 sudo make uninstall 卸载。

cargo
  1. 克隆仓库
  2. cdrsfetch
  3. cargo安装 --路径 .
  4. sudo cp rsfetch.1 /usr/share/man/man1/ (可选的manpage,如果不需要则跳过)

使用 cargo uninstall rsfetch 卸载。

发行版仓库

Packaging status

如果您使用的是基于 Arch 的发行版,您可以使用以下 AUR 软件包中的任何一个

  • rsfetch-git (因为它是从源代码构建的,所以需要 Rust。)
  • rsfetch-bin (从发布中抓取最新的二进制文件。)

如果您在使用 BSD,它位于 Fresh Ports 中(感谢维护该软件包的人,当我看到它时非常兴奋)

  • rsfetch (因为它是从源代码构建的,所以需要 Rust 和 pkgconf。)

如果您在使用 Gentoo,您可以从我共同创建的覆盖中安装它

  1. 安装 p6nc-overlay
  2. 确保仓库和覆盖已同步: sudo emerge --sync
  3. sudoemerge -atvrsfetch

cargo

如果您已经设置了 rustcargo,您可以使用以下命令安装它
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 样式输出
rsfetch-style

neofetch 样式输出
neofetch-style

Phate6660 偏好的选项
rsfetch-valley

基准测试

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”。任何人都可以使用此存储库中的任何内容,前提是如果他们选择重新分发,则应包括许可证。 查看许可证

变更日志

依赖关系

~14-25MB
~361K SLoC