xdg-ninja
因为你不会让任何人随意进入你的 $HOME
一个检查你的 $HOME
目录中不需要的文件和目录的 shell 脚本。
当 xdg-ninja
遇到它已知的文件或目录时,它会告诉你是否可以将其移动到适当的位置,以及如何操作。
这些配置来自 arch wiki 上的 XDG_BASE_DIR 页面、antidot(感谢 Scr0nch 编写的转换工具),以及其他用户的众包贡献。
安装
手动安装
克隆仓库,然后运行 ./xdg-ninja.sh
脚本。
git clone https://github.com/b3nj5m1n/xdg-ninja
cd xdg-ninja
./xdg-ninja.sh
这将运行默认配置中的所有测试。
Nix
启用 flakes,然后运行以下命令:
nix run github:b3nj5m1n/xdg-ninja
Homebrew
[!注意] 由于
xdg-ninja
的开发方式,不会发布版本,所以 Homebrew 提供的是旧版本,因此你必须从 git HEAD 安装和升级xdg-ninja
。参考:#204运行通用的
brew upgrade
时,Homebrew 不会升级xdg-ninja
,你必须从 git HEAD 专门升级xdg-ninja
,见下文
安装:
brew install xdg-ninja --HEAD
升级:
brew upgrade xdg-ninja --fetch-HEAD
其他包管理器
xdg-ninja
在许多其他包管理器中都可用。
完整列表可在 repology 页面 上查看。
按照你的包管理器的说明安装 xdg-ninja
。
贡献
依赖
可选
- glow 用于在终端中渲染 Markdown(bat、pygmentize 或 highlight 可作为备选,但 glow 的输出更清晰,因此推荐使用 glow)
配置
配置在 ./programs/
目录中完成,该目录应与 xdg-ninja.sh
脚本位于同一工作目录。这可以通过 XN_PROGRAMS_DIR
环境变量进行覆盖。
你定义一个程序,然后列出该程序无情地放入你的 $HOME
目录的文件和目录。
对于每个文件/目录,你需要指定它是否可以被(重新)移动。
如果可以,你还需要用 Markdown 格式指定如何实现这一点的说明。 此目录中的文件可以使用任何名称,但建议使用程序的名称。
自动生成配置
对于x86_64 Linux系统,你可以从releases页面下载xdgnj
二进制文件。
或者,你可以使用cabal
或stack
从源代码构建,使用nix flake或使用提供的docker镜像。
需要明确的是,这只是一个帮助你自动生成配置文件的工具,你仍然只需要你的shell来运行测试
可用命令
xdgnj add # 添加新配置
xdgnj prev programs/FILE.json # 预览程序的配置
xdgnj edit programs/FILE.json # 编辑程序的配置
xdgnj run # 大致相当于运行shell脚本
预构建二进制文件
[!重要] 这些二进制文件只能在x86_64 Linux系统上运行。
curl -fsSL -o xdgnj https://github.com/b3nj5m1n/xdg-ninja/releases/latest/download/xdgnj
chmod +x xdgnj
从源代码构建
你可以使用cabal build
或stack build
Nix
nix run github:b3nj5m1n/xdg-ninja#xdgnj-bin ...
Docker
使用./haskell/build/
中提供的dockerfile。
手动创建配置
我们将以git
为例。
默认情况下,它会将文件.gitconfig
放在$HOME
中。
幸运的是,git支持XDG规范,所以我们只需将文件移动到$XDG_CONFIG_HOME/git/config
即可。
我们可以使用最后一句话作为我们的指示。在这种情况下,没有换行符,所以将此字符串转义为json格式很简单,但是,这是你通常应该采用的方法:
echo "幸运的是,git支持XDG规范,所以我们只需将文件移动到_$XDG_CONFIG_HOME/git/config_即可。" | jq -aRs .
让我们看看这个命令对于更复杂的内容会输出什么。
这是一个示例文件:
cat example.md
目前无法修复。
_(但你可能只需删除该目录)_
以下是将此文件输入到jq
的结果:
cat example.md | jq -aRs .
"目前无法修复。\n\n_(但你可能只需删除该目录)_\n"
现在,我们可以组装我们的最终json文件:
{
"name": "git",
"files": [
{
"path": "$HOME/.gitconfig",
"movable": true,
"help": "幸运的是,git支持XDG规范,所以我们只需将文件移动到_$XDG_CONFIG_HOME/git/config_即可。\n"
}
]
}
将此内容保存为./programs/
目录中的git.json
,脚本就会读取并检查该文件。
如果你为官方存储库中尚未包含的文件创建了配置,请确保创建一个拉取请求,以便其他人也能从中受益。