0xbbuddha/my-env-dotfiles

GitHub: 0xbbuddha/my-env-dotfiles

一套基于 Zellij、Helix、Yazi、Kitty 和 Fish 的个人终端 dotfiles,同时服务于日常编程开发与渗透测试任务,内置自动化命令日志记录功能。

Stars: 0 | Forks: 0

# my-env-dotfiles **一个用于编写代码和进行安全测试的终端工作站。** Zellij, Helix, Yazi, Kitty, Fish. zellij helix yazi fish
这套配置并非一蹴而就。它是几个月日常 使用的结果,每次遇到阻碍时都会进行微调,直到只保留下真正 有效的内容。 其背后的理念很简单:**编辑器负责编辑,多路复用器负责其余一切。** Zellij 负责处理文件树、终端和会话持久化,因此 helix 无需关心这些。 渗透测试布局的成长方式也是如此,一次解决一个痛点。那些 被反复用到的命令变成了自动记录功能。对于 shell 属于哪个作用域的疑问, 变成了状态栏中的永久指示器。这些都不是 提前规划好的。 ## 为什么选择这些工具 选择它们的原因相同:每一个都能开箱即用, 独立完成工作。 **Zellij。** tmux 也有会话功能,这不是区别所在。zellij 无需安装任何东西就自带 会话*恢复*(resurrection)、纯文件形式的布局,以及 一个能告诉你按键功能的状态栏。在 tmux 下,这些需要 tmux-resurrect 和 tmuxinator。它的 plugin API 也正是让状态栏能够显示作用域 指示器的原因。 **Helix。** 内置 LSP、tree-sitter、模糊查找器和格式化功能,无需 额外配置。整个配置就是一个单独的 TOML 文件,而在 vim 下要达到同样的 效果,意味着要维护一个会自我膨胀的配置文件。 **Yazi。** Helix 已经有了模糊查找器,所以那从来不是缺口。浏览 一个陌生的文件树是另一项任务,而这正是 yazi 的用武之地。 **Kitty。** GPU 渲染,以及 yazi 用于图像 预览的图形协议。Kittens 涵盖了其余部分。 **Fish。** 这个没什么可争辩的。我以前是 zsh 用户,偶然 用上了 fish,然后再也没找到回去的理由。自动补全和语法 高亮在空配置文件下就能工作,这就足够了。唯一的代价 是它不兼容 POSIX,这也是为什么 `hx-open` 是一个 bash 脚本。 出于显而易见的原因,我自己的 `config.fish` 并没有包含在内 :) 只包含了 函数部分。 ## 开发 IDE layout 左侧是 Yazi,右侧是 helix,下方是一个 shell。在文件树中按 Enter 键 会在**正在运行**的 helix 实例中打开它,而不是打开第二个实例。 ## 安全测试 Engagement layout 四个标签页:`recon`、`exploit`、`services`、`report`。在 `recon` 和 `exploit` 中输入的每一条命令都会被原样记录,并带有时间戳,无需进行任何额外操作。 ## 环境要求 | 工具 | 已测试版本 | |:--|:--| | zellij | 0.44.3 | | helix | 25.07.1 | | yazi | 26.5.6 | | fish | 4.8.1 | | kitty | any | | util-linux | `script`, `scriptreplay` | ## 安装 ``` git clone https://github.com/0xbbuddha/my-env-dotfiles cd my-env-dotfiles cp -r .config/* ~/.config/ mkdir -p ~/.local/bin cp .local/bin/hx-open ~/.local/bin/ && chmod +x ~/.local/bin/hx-open ``` `~/.local/bin` 必须位于你的 `PATH` 中。
状态栏(必需,没有它状态栏会保持空白) ``` mkdir -p ~/.local/share/zellij/plugins curl -fsSL -o ~/.local/share/zellij/plugins/zjstatus.wasm \ https://github.com/dj95/zjstatus/releases/latest/download/zjstatus.wasm ``` 然后授予该插件一次权限。提示渲染在 **plugin 窗格内部**,该窗格只有一行高,因此永远无法从状态栏本身进行回应, 状态栏会保持空白且没有错误消息。 ``` zellij plugin --floating -- file:$HOME/.local/share/zellij/plugins/zjstatus.wasm # 回答 "y",然后关闭该 pane ```
Yazi git 指示器 ``` ya pkg install ``` `.config/yazi/package.toml` 固定了确切的插件版本。
语言服务器 `.config/helix/languages.toml` 声明了 bash、python、toml 和 markdown。安装 你需要的那些,然后使用 `helix --health` 进行检查。
## 用法 ### 开发 ``` zellij --layout ide # from the project directory ``` ### 测试任务 ``` mission [date] # date defaults to today ``` 创建 `~/missions///` 目录,包含 `scope/`、`recon/`、`evidence/`、 `loot/`、`logs/`、`report/`,然后打开一个以客户名称命名的会话。再次 运行此命令可重新连接。 状态栏会显示位于测试任务根目录下的 `.engagement` 的内容,在 任务之外则什么都不显示。 ### 查看日志 ``` logclean logs/recon-scan.log # ANSI-stripped copy scriptreplay -m 1 logs/recon-scan.timing logs/recon-scan.log # replay ``` `-m` 限制了空闲间隔。没有它,`scriptreplay` 会以实时速度重放扫描等待时间,并且 看起来像是卡住了。 ## 快捷键 默认模式是 `locked`,因此每个按键都会直达编辑器。导航依然 有效: | 快捷键 | 动作 | |:--|:--| | `Alt+hjkl` | 在窗格之间移动,并在边缘切换标签页 | | `Alt+n` | 新建窗格 | | `Alt+f` | 浮动窗格 | | `Ctrl+g` | 锁定 / 解锁 | | `Ctrl+o` `d` | 分离 | 已设置 `clear-defaults=true`,因此 zellij 的默认绑定不适用。
标签:Dotfiles, Python安全, 命令记录, 开发环境, 效率工具, 终端工具