#git-status #command-line #prompt #bash #shell #user-name #display

nightly bin+lib statusline

简单快速的 bash PS1 行,具有实用功能

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 日

#111Unix APIs

Download history 114/week @ 2024-06-02 7/week @ 2024-06-09 1/week @ 2024-06-16 120/week @ 2024-06-23 7/week @ 2024-06-30 117/week @ 2024-07-14 97/week @ 2024-07-21 543/week @ 2024-07-28 4/week @ 2024-08-04

652 每月下载量

自定义许可CC-PDDC 许可证

105KB
2.5K SLoC

statusline

是 purplesyringa 的 shell 的快速继任者,用 Rust 重新编写。

要求

  • 兼容 Linux 的操作系统。其他操作系统未经过测试,但可能无法运行
  • Bash,用于 shell
  • (可选) Git,用于仓库信息
  • (x86 可选) SSSE3 支持或更好(推荐 AVX2)
  • Cargo,用于安装和更新

安装

  1. 安装 rustup 和 nightly rust。

    pacman -S rustup
    rustup toolchain add nightly
    

    访问 rustup.rs(如果不在 Arch-based 发行版上),了解如何在其他发行版上安装。您可能需要以超级用户权限运行 rustup 安装程序

  2. 从 cargo 安装 statusline

    cargo +nightly install statusline
    
  3. 检查 statusline 是否在路径中。

    statusline
    

    如果显示 "bash: statusline: 命令未找到",请检查您的 $PATH 和 ~/.bashrc,其中 cargo 安装放置 statusline 二进制文件应在该文件夹中。

    如果您不想将目录添加到 $PATH,您可以在下面的 statusline --env 中使用完整路径而不是短路径

  4. 设置首选状态行图标模式。不要添加此行以使用默认值!可用模式有

    • PS1_MODE=text:使用 ASCII 文本而不是图标
    • PS1_MODE=minimal:使用替代图标集,它相对简单,但可能令人困惑
    • 否则:使用默认 nerdfont 图标
    echo 'export PS1_MODE=minimal' >> ~/.bashrc
    
  5. 将状态行安装到 shell

    echo 'eval "$(statusline --env)"' >> ~/.bashrc
    
  6. 立即应用更改

    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