38 个版本
0.17.4 | 2024 年 7 月 28 日 |
---|---|
0.17.0 | 2024 年 6 月 25 日 |
0.16.0 | 2024 年 2 月 19 日 |
0.15.0 | 2023 年 10 月 14 日 |
0.2.2 | 2023 年 7 月 25 日 |
#111 在 Unix APIs
652 每月下载量
105KB
2.5K SLoC
statusline
是 purplesyringa 的 shell 的快速继任者,用 Rust 重新编写。
要求
- 兼容 Linux 的操作系统。其他操作系统未经过测试,但可能无法运行
- Bash,用于 shell
- (可选) Git,用于仓库信息
- (x86 可选) SSSE3 支持或更好(推荐 AVX2)
- Cargo,用于安装和更新
安装
-
安装 rustup 和 nightly rust。
pacman -S rustup rustup toolchain add nightly
访问 rustup.rs(如果不在 Arch-based 发行版上),了解如何在其他发行版上安装。您可能需要以超级用户权限运行 rustup 安装程序
-
从 cargo 安装 statusline
cargo +nightly install statusline
-
检查 statusline 是否在路径中。
statusline
如果显示 "bash: statusline: 命令未找到",请检查您的 $PATH 和 ~/.bashrc,其中 cargo 安装放置 statusline 二进制文件应在该文件夹中。
如果您不想将目录添加到 $PATH,您可以在下面的
statusline --env
中使用完整路径而不是短路径 -
设置首选状态行图标模式。不要添加此行以使用默认值!可用模式有
PS1_MODE=text
:使用 ASCII 文本而不是图标PS1_MODE=minimal
:使用替代图标集,它相对简单,但可能令人困惑- 否则:使用默认 nerdfont 图标
echo 'export PS1_MODE=minimal' >> ~/.bashrc
-
将状态行安装到 shell
echo 'eval "$(statusline --env)"' >> ~/.bashrc
-
立即应用更改
source ~/.bashrc
别忘了检查 PATH 并不时更新。
您可能需要添加以下命令来cargo install statusline
,以便于打包和分发。出于简单使用的考虑,这可以忽略,因为statusline默认会为当前机器编译,以最大程度地提高速度,而不会抛出随机的SIGILL信号。RUSTFLAGS="-C target-feature=+avx2"
功能
- 彩色用户名和主机名,以防止在statusline安装在多个设备上时混淆——特别是通过SSH连接时。红色保留给root用户。
- Git状态显示,立即显示仓库的“持久”信息以及当前状态(变基、合并等),几乎立即显示状态。此外,最深层git仓库内部的工作目录路径的一部分被突出显示。
- 机架图标,用于显示主机设备的类型,其获取速度与systemd一样快。
- 构建工具显示,告知可以在工作目录中执行哪些命令来“制作”项目。支持的Makefile、./configure、CMake、purplesyringa的./jr、qbs、qmake和cargo。
- 简化路径,使路径更具信息性。当前用户的家目录变为
~
,其他用户的变为~username
。一些路径被忽略,以避免混淆。 - 等等,如“只读”显示、退出代码可视化、作业计数和提示时间。
这与purplesyringa的shell有何不同?
- 小。它依赖于少量的外部库——与“shell”中的大量依赖项相比。可执行文件大小小于1兆字节,其唯一依赖项是libc。
- 快,即使在慢设备上也是如此。我记得在使用“shell”之前,等待提示符出现要超过5秒钟。我已经修补了它,以便在“重”数据到达之前至少显示一些有用的信息。但令我惊讶的是,在不到四分之一秒内,我就得到了几乎相同的信息。
- 维护。只有两个人使用purplesyringa的shell:我和她。在我对“shell”的速度感到失望后,我开始着手这个项目,她放弃了她的一个,转而使用这个。
- 更少的错误。例如,“kill: no process found”、“为什么按下make newer会提示错误”,以及其他一些——这些都不是设计上存在的。
- 更多的图标。几乎每个图标都已被更换为更合适、更干净的图标。
- 更好的git状态。适当的提交缩写、处理“detached head”、这里的图标等等……那天我几乎整夜没睡。
命令行选项
statusline
Display simple message "how to use". Useless, but may be used to check if statusline is in path
statusline --env
Print commands for `.bashrc`
statusline --run [return_code:N/A [jobs_count:0 [elapsed_time:N/A]]]
Print statusline as PS1 prompt. Is not meant to be invoked directly, however---
Expects third fd to exist, will kill itself when something passed to it
statusline --colorize <str>
Colorize <str> like hostname and username. Can be used to choose hostname which has the color
you want
这应该有一些更好的格式化,但我太懒了。
依赖关系
~8–17MB
~242K SLoC