M1gu3l4ngel/dotfiles-parrot

GitHub: M1gu3l4ngel/dotfiles-parrot

一套为Parrot OS渗透测试者设计的dotfiles,提供定制桌面环境和工作流集成以提升效率。

Stars: 1 | Forks: 0

# 🦜 dotfiles ![预览](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/ed2652b517053436.png) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) ![平台](https://img.shields.io/badge/platform-Parrot%20%7C%20Debian%20%7C%20Ubuntu-blue) ![Shell](https://img.shields.io/badge/shell-zsh-89e051) ![状态](https://img.shields.io/badge/status-mantenido-success) ## 📸 演示 登录后您将看到: - 与 [dotfiles-windows](https://github.com/M1gu3l4ngel/dotfiles-windows) 统一的 **Monokai Soda** 配色方案(背景色 `#1A1A1A`,在 kitty、polybar 和 Windows Terminal 中保持一致)。 - 浮动的多条状态栏:工作区(中上)、VPN 状态(左侧)、以太网 IP(左侧)、渗透测试目标(右侧)以及电源菜单按钮(右上角)。 - 工作区带视觉指示器:蓝色圆点表示当前所在工作区,**黄色**表示有打开窗口但非当前活动工作区,灰色表示空工作区。 - 通过 picom 实现圆角、透明和阴影效果。 - 使用 capr4n 主题的 oh-my-posh 提示符:显示退出状态(`✓`/`✗`)、git 分支及待提交更改(`✎`)、领先/落后提交数(`↑ N` / `↓ N`)。 - 用 `bat`/`lsd` 替换 `cat`/`ls` 的别名(带有颜色和 Nerd Font 图标)。 - 与状态栏集成的 `settarget` 和 `cleartarget` 函数:在解析目标机器时,其 IP/名称会显示在 polybar 上。 ## 📋 前置条件 如果您是从头开始(全新安装 Parrot 或尚未配置相关环境),请遵循以下步骤。**如果已有环境**(如上文迁移情况),请直接跳到步骤 1。 ### 1. 系统软件包 (apt) ``` sudo apt update && sudo apt install -y \ bspwm sxhkd polybar picom rofi kitty zsh feh dunst \ bat lsd tmux git stow keychain \ zsh-autosuggestions zsh-syntax-highlighting \ ufw anonsurf unattended-upgrades pass \ fzf ``` ### 2. Neovim (官方二进制文件,**非** apt 包) apt 包通常已过时。我们移除旧版并安装官方版: ``` sudo apt purge -y neovim curl -L -o /tmp/nvim-linux-x86_64.tar.gz \ https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz sudo tar -C /opt -xzf /tmp/nvim-linux-x86_64.tar.gz sudo ln -sf /opt/nvim-linux-x86_64/bin/nvim /usr/local/bin/nvim ``` ### 3. oh-my-posh + fzf ``` # 跨平台提示符(Windows 和 Parrot 使用相同的二进制文件和主题) curl -s https://ohmyposh.dev/install.sh | bash -s # 模糊查找器(历史记录中的 Ctrl+R) git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf ~/.fzf/install --all ``` ### 4. Hack Nerd Font 或 CaskaydiaCove Nerd Font capr4n 主题使用 Nerd Font 图标。两者均可,但 **CaskaydiaCove** 是 dotfiles-windows 使用的字体,为保持视觉一致性推荐: ``` wget -P /tmp \ https://github.com/ryanoasis/nerd-fonts/releases/latest/download/CascadiaCode.zip sudo unzip -o /tmp/CascadiaCode.zip -d /usr/local/share/fonts/ sudo fc-cache -fv ``` polybar 使用的字体(Iosevka, Hurmit, Helvetica, Montserrat)已包含在 `polybar/.config/polybar/fonts/` 中。 ### 5. (可选) i3lock-fancy 用于 Super+Shift+X 快捷键(模糊锁屏): ``` sudo apt install -y i3lock-fancy ``` ### 6. (可选) SSH 密钥 `.zshrc` 包含一个条件行,使用 `keychain` 缓存您的 SSH 密钥(仅在密钥存在时执行)。用于避免每次 `git push` 或远程 SSH 时输入密码短语。 SSH 密钥有什么用? - **GitHub / GitLab:** 使用 `git clone git@github.com:...` 克隆私有仓库,推送时无需每次输入凭据。 - **远程服务器:** SSH 连接至 VPS、实验室机器等。 如果**还没有密钥**,请使用以下命令创建: ``` ssh-keygen -t ed25519 -C "tu_email@example.com" # 保存在 ~/.ssh/id_ed25519(私钥)和 ~/.ssh/id_ed25519.pub(公钥)中。 # 公钥是你粘贴到 GitHub → 设置 → SSH 和 GPG 密钥中的那个。 ``` 如果您的密钥**命名不同**(例如 `id_rsa`),请编辑 `zsh/.zshrc` 中 `keychain` 那一行,替换为正确的名称。 ## 🚀 安装 ### 步骤 1 — 克隆仓库 ``` git clone https://github.com/M1gu3l4ngel/dotfiles-parrot.git ~/dotfiles cd ~/dotfiles ``` ### 步骤 2 — 运行安装脚本 ``` ./install.sh ``` 该脚本会: - **自动备份**您当前的配置(添加 `.pre-dotfiles.bak` 后缀)。 - 从 `~/.config/` 和 `~/` 创建指向仓库文件的符号链接。 - **仅在**您当前没有壁纸时,将仓库的默认壁纸链接到 `~/.config/wallpaper.jpg`(不会覆盖个人壁纸)。 - 创建空的 `~/.config/bin/target` 文件,确保 polybar 的目标模块首次运行时不报错。 - **幂等性**:可多次运行而不损坏任何内容。 ### 步骤 3 — 配置防火墙和匿名性(可选但推荐) 如果您需要基准防火墙 (`ufw`) 和用于匿名性切换 (`Super+A`) 的 `sudoers` 规则,请运行: ``` sudo ./system/setup.sh ``` 该脚本会: - 安装 `/etc/sudoers.d/anon_toggle`(权限 0440),用您当前用户名替换 `__USER__` 占位符,并用 `visudo -c` 验证。 - 应用 `ufw` 基准规则:`default deny incoming`,`default allow outgoing`,`allow in on lo`,`allow in on tun+`(用于 HTB/THM VPN)。 - 检查 `/etc/default/ufw` 中是否有 `IPV6=yes`(如果没有则强制设置)。 - 启用 `ufw` 并设置开机自启。 - 如果 Firefox 的 `pentest` 配置文件已存在,则复制 `user.js` 到其中(否则会提示如何创建)。 - 安装 `/etc/apt/apt.conf.d/52parrot-hardening.conf`,将 `unattended-upgrades` 限制为 `parrot-security`,并屏蔽关键工具(tor, anonsurf, nmap, msf, burp, kernel)。 该脚本**幂等**:多次运行不会破坏任何内容。详见 [`system/README.md`](system/README.md)。 ### 步骤 4 — 将 shell 更改为 zsh ``` chsh -s $(which zsh) ``` 注销并重新登录以使更改生效。首次打开 zsh 时,oh-my-posh 将直接从 `~/dotfiles/oh-my-posh/capr4n.omp.json` 加载 capr4n 主题(无需向导或初始配置)。 ### 步骤 5 — 在 bspwm 中测试 注销图形界面,在登录管理器中选择 **bspwm**,然后重新登录。开始使用的关键快捷键: - **Super + Enter** → 打开 kitty - **Super + D** → 应用程序启动器 (rofi) - **Super + Shift + R** → 重启 bspwm - **Super + Escape** → 重载 sxhkd(编辑快捷键后) ## ⌨️ 基础快捷键 ### 应用程序与系统 | 快捷键 | 操作 | |---|---| | `Super + Enter` | 打开终端 (kitty) | | `Super + D` | rofi 启动器 | | `Super + A` | 切换匿名模式 (Tor + anonsurf) | | `Super + Shift + F` | 个人 Firefox (default-esr 配置文件,保持原样) | | `Super + Shift + P` | 渗透测试 Firefox (隔离配置文件 + user.js 加固) | | `Super + Shift + X` | 锁屏 (i3lock-fancy) | | `Super + Escape` | 重载 sxhkd | | `Super + Shift + R` | 重启 bspwm | | `Super + Shift + Q` | 退出 bspwm (注销) | ### 窗口管理 | 快捷键 | 操作 | |---|---| | `Super + Q` | 关闭窗口 (友好) | | `Super + Shift + Q` | 强制关闭窗口 | | `Super + ←/↓/↑/→` | 移动焦点 | | `Super + Shift + ←/↓/↑/→` | 移动浮动窗口 | | `Super + Alt + ←/↓/↑/→` | 调整窗口大小 | | `Super + T` | 平铺模式 | | `Super + S` | 浮动模式 | | `Super + F` | 全屏 | | `Super + M` | 切换 monocle / 平铺模式 | | `Super + G` | 与最大窗口交换 | ### 工作区 | 快捷键 | 操作 | |---|---| | `Super + 1..9, 0` | 切换到工作区 N | | `Super + Shift + 1..9, 0` | 将窗口发送到工作区 N | | `Super + [` / `Super + ]` | 上一个 / 下一个工作区 | | `Super + Tab` | 上一个访问的工作区 | ### Kitty (终端内) | 快捷键 | 操作 | |---|---| | `Ctrl + Shift + Enter` | 在同一目录打开新窗口 | | `Ctrl + Shift + T` | 在同一目录打开新标签页 | | `Ctrl + Shift + Z` | 切换布局 (堆叠) | | `Ctrl + Shift + F5` | 重载 kitty 配置 | ## 🎯 渗透测试工作流 此配置原生集成了活动目标跟踪功能(适用于 HTB/THM)。 ### `settarget` 和 `cleartarget` ``` # 将机器设为活跃目标: settarget 10.10.11.42 Cerberus # 清理目标: cleartarget ``` `settarget` 将 IP + 名称写入 `~/.config/bin/target`。`victim_to_hack.sh` 脚本(通过 polybar 每 2 秒运行)读取该文件并在顶部状态栏右侧显示信息: ``` 🎯 10.10.11.42 - Cerberus ``` 如果没有目标,则显示 `🎯 No target`。 ### VPN 状态 (HTB / THM) 左侧状态栏显示 VPN 状态。自动检测 `tun0` 接口(OpenVPN 创建的接口): - **已连接:** `📡 10.10.14.x` - **未连接:** `📡 Disconnected` 如果您的 VPN 使用其他接口(WireGuard、多隧道),请调整 `scripts/.config/scripts/vpn_status.sh` 脚本。 ### 以太网状态 左侧另一个小状态栏显示以太网接口的 IP(默认为 `ens33`,虚拟机中常见)。要更改,请编辑 `scripts/.config/scripts/ethernet_status.sh`。 ### 匿名模式 (Tor + anonsurf) `Super + A` 启用/禁用通过 Tor 的所有流量。`scripts/.config/scripts/toggle_anonymity.sh` 脚本负责: 1. `anonsurf start` 通过 iptables 将 TCP + DNS 流量重定向到 Tor。 2. `ip6tables -P OUTPUT DROP` 阻止 IPv6(anonsurf 仅覆盖 IPv4)。 3. `iptables OUTPUT -p icmp -j DROP` 阻止 ping/traceroute 泄露。 4. 在宣布成功前,`curl https://check.torproject.org/api/ip` 验证 `"IsTor":true`。如果失败,自动完全回滚。 polybar 中的 `anon_status` 模块在灰色关闭图标(OFF)和绿色用户密钥图标(ON)之间切换。左键单击也可用作切换。 **前置条件:** 运行一次 `sudo ./system/setup.sh` 安装 sudoers 规则,允许脚本无密码执行 `anonsurf`/`ip6tables`/`iptables`。 **手动验证:** ``` curl --max-time 15 -s https://check.torproject.org/api/ip # {"IsTor":true,"IP":"x.x.x.x"} 如果一切正常 ``` ### Firefox 隔离 (pentest 配置文件) 为避免个人身份(Gmail、个人 GitHub)与渗透测试工作之间的关联,使用两个独立的 Firefox 配置文件: | 配置文件 | 快捷键 | Polybar | 何时使用 | |---|---|---|---| | `default-esr` | `Super + Shift + F` | 红色狐狸 | 个人用途(邮件、GitHub、银行、日常) | | `pentest` | `Super + Shift + P` | 绿色虫子 | 目标、OSINT、可疑链接、实验环境 | `pentest` 配置文件应用了 `user.js`(位于 `system/firefox/pentest.user.js`)进行轻度加固: - 禁用 WebRTC(防止通过 JS 泄露 IP,即使使用 VPN)。 - 关闭 Mozilla 遥测。 - 不保存密码或自动填充。 - 仅 HTTPS 模式。 - 关闭 Firefox 时清除 cookie、缓存和历史记录。 - **通过 sxhkd/polybar 启动器中的 `TZ=UTC` 强制时区为 UTC**。即使系统使用本地时间,JS 在 `new Date().getTimezoneOffset()` 中也报告 UTC,避免通过时区进行地理关联。个人 Firefox 配置文件**不受影响**(您在那里使用真实身份登录,隐藏时区会破坏 Gmail/日历且不增加匿名性)。 启动器中的 `--no-remote` 允许两个配置文件同时运行,而 Firefox 不会在第一个实例中打开新标签页。 **初始设置(运行一次):** ``` firefox -CreateProfile pentest # crea el profile vacío sudo ./system/setup.sh # paso 5 copia el user.js al profile ``` polybar `launchers` 栏中的两个图标(在目标左侧)也可通过单击触发相应配置文件。 **完全匿名组合:** `Super + A`(开启)+ `Super + Shift + P`(pentest Firefox)= 通过 Tor 的流量 + 隔离配置文件 + 加固。这是不使用 Tor 浏览器情况下的最强配置。 **用于真正的匿名性(暗网、国家行为体目标):** 请使用 Tor 浏览器,而非普通 Firefox。pentest 配置文件**故意**不抵抗强指纹识别(`resistFingerprinting` 会破坏许多目标网站)。 ### 真实使用流程 `Super+A` 不是始终开启的。Tor 增加 3 跳(延迟 500-2000ms),许多网站阻止出口节点(Cloudflare、银行、Google),HTB/THM VPN 在 Tor 下无法工作,`apt update` 会变得极其缓慢。它是一个特定场景下的工具,而非 24/7 防护罩。(要实现“始终在线”,正确的架构是 Whonix/Tails,而非在虚拟机中使用 anonsurf。) | 您要做的事情 | 匿名性 | Firefox 配置文件 | VPN | |---|---|---|---| | Gmail、个人 GitHub、银行、日常浏览 | 关闭 | 个人 | — | | HTB / THM 实验环境 (教学用靶机) | 关闭 | 个人 或 Pentest | HTB VPN (tun0) | | 对真实个人/公司进行 OSINT | **开启** | Pentest | — | | 与客户进行正式的渗透测试 | 关闭 | Pentest | 客户要求固定 IP 时使用客户 VPN | | 点击可疑链接 / 钓鱼 / 恶意软件沙盒分析 | **开启** | Pentest | — | | 调查暗网 | **开启** + Tor 浏览器 | (不使用普通 Firefox) | — | | `apt update`、下载工具 | 关闭 | — | — | **启用 `Super+A` 的简单规则:** - 目标不应看到您的真实 IP,**并且** - 您没有该项目专用的 VPN,**并且** - 您要做的事情不需要低延迟或高带宽。 其他所有情况:关闭匿名性。常见的错误是将 Tor 视为“开启 = 安全,关闭 = 不安全”——实际上是“开启 = 以牺牲速度/功能为代价隐藏 IP”。您应根据上下文,在每个时刻做出选择。 ### 使用 `pass` 进行密钥管理 Unix 风格的密码管理器。每个令牌/凭证作为单独文件,使用 GPG 加密(与提交签名“Verified”使用的密钥相同)存储在 `~/.password-store/` 下。它会自动将该目录转换为 git 仓库,因此您拥有变更历史记录,并可选择在不同机器间同步——一切都是加密的。 **为什么不在 `.zshrc` 中:** 一个 `export GITHUB_TOKEN=ghp_xxx` 会以明文形式存在,出现在系统备份、VMware 共享文件夹中,并且如果您不小心提交了 `.zshrc`,还可能出现在 git 中。使用 `pass`,令牌仅在使用的那一刻以明文形式出现。 **初始设置(每台机器一次):** ``` sudo apt install -y pass # ya está en pre-requisitos pass init # del Tier 2 #5 (ver `gpg --list-secret-keys`) pass git init # versionar el store con historial automático ``` **日常命令:** | 命令 | 作用 | |---|---| | `pass insert <名称>` | 输入值(两次),加密并保存 | | `pass <名称>` | 解密并显示(gpg-agent 可能要求输入密码短语) | | `pass -c <名称>` | 复制到剪贴板,45 秒后自动清除 | | `pass ls` | 列出所有密钥的完整树结构 | | `pass edit <名称>` | 在 `$EDITOR` 中打开,保存时重新加密 | | `pass rm <名称>` | 删除(要求确认) | | `pass mv <旧名> <新名>` | 重命名/移动 | | `pass git log` | 存储库的变更历史 | **组织约定:** ``` ~/.password-store/ ├── api/ # tokens de servicios externos │ ├── shodan │ ├── github-pat │ └── virustotal ├── htb/ # creds que encontrás en boxes de HackTheBox ├── clients/ # engagements reales con clientes (rotar al cierre) └── personal/ # uso diario (gmail, github, etc.) ``` **无需明文传递即可使用值:** ``` # 代替: curl -H "Authorization: Bearer ghp_xxxxxxxxxxxx" ... # token visible en history # 你使用: curl -H "Authorization: Bearer $(pass api/github-pat)" ... # nunca aparece ``` `$(pass ...)` 在运行时求值:令牌被解密,传递给命令,zshrc 中的 `HISTORY_IGNORE`(匹配 `Authorization`)将其从 `~/.zsh__history` 中屏蔽。 **可选:在另一台机器间同步:** `pass git remote add origin <仓库>` + `pass git push`。由于所有内容都是加密的,该仓库**可以是**公开的(尽管通常出于习惯使用私有仓库)。 ## 🎨 快速自定义 ### 更改 oh-my-posh 主题 (提示符) 直接编辑 `~/dotfiles/oh-my-posh/capr4n.omp.json`,或替换为其他主题: ``` # 列出内置主题: ls ~/.cache/oh-my-posh/themes/ # 测试主题而不修改仓库: eval "$(oh-my-posh init zsh --config ~/.cache/oh-my-posh/themes/dracula.omp.json)" # 永久更改: # 编辑 ~/dotfiles/zsh/.zshrc 并更改 oh-my-posh eval 行中的路径。 ``` ### 更改壁纸 ``` cp /ruta/a/tu/wallpaper.jpg ~/.config/wallpaper.jpg # 重新加载 bspwm: bspc wm -r ``` ### 更改 polybar 主题 (深色 ↔ 浅色 ↔ 默认) ``` # 切换到深色主题: cp ~/dotfiles/polybar/.config/polybar/colors_dark.ini \ ~/dotfiles/polybar/.config/polybar/colors.ini ~/.config/polybar/launch.sh # 切换到浅色主题: cp ~/dotfiles/polybar/.config/polybar/colors_light.ini \ ~/dotfiles/polybar/.config/polybar/colors.ini ~/.config/polybar/launch.sh ``` ### 更改 rofi 主题 `rofi/.config/rofi/themes/` 中有 25+ 个主题。编辑 `rofi/.config/rofi/config.rasi`,替换 `@theme` 后面的名称: ``` @theme "themes/spotlight-dark" // ejemplo ``` ### 更改 Neovim 主题 ``` :Telescope themes " o desde mappings: th ``` 或在 `nvim/.config/nvim/lua/chadrc.lua` 中永久设置: ``` M.base46 = { theme = "monekai" } -- cambia por: tokyonight, gruvbox, etc. ``` ### 更改终端字体 编辑 `kitty/.config/kitty/kitty.conf`: ``` font_family JetBrains Mono Nerd Font font_size 14 ``` ### 添加新的快捷键绑定 按照以下格式编辑 `sxhkd/.config/sxhkd/sxhkdrc`: ``` super + shift + n notify-send "hola" ``` 使用 `Super + Escape` 重载。无需重启会话。 ## 📂 仓库结构 ``` dotfiles/ ├── bspwm/ → ~/.config/bspwm/ (bspwmrc + scripts/) ├── sxhkd/ → ~/.config/sxhkd/ (sxhkdrc) ├── polybar/ → ~/.config/polybar/ │ ├── current.ini → bars activos (log, vpn, ethernet, target, launchers, primary) │ ├── workspace.ini → bar central de workspaces │ ├── colors.ini → paleta activa (Monokai Soda — sobrescribir con colors_dark/light si quieres) │ ├── launch.sh → mata y relanza todas las barras │ ├── scripts/ → launcher, powermenu (no scripts pentest) │ └── fonts/ → Iosevka, Hurmit, Helvetica, etc. ├── picom/ → ~/.config/picom/ ├── rofi/ → ~/.config/rofi/ (config.rasi + themes/) ├── kitty/ → ~/.config/kitty/ (kitty.conf + color.ini) ├── nvim/ → ~/.config/nvim/ (NvChad como base) ├── oh-my-posh/ → ~/dotfiles/oh-my-posh/ (capr4n.omp.json, sincronizado con dotfiles-windows) ├── scripts/ → ~/.config/scripts/ │ ├── ethernet_status.sh → IP Ethernet (polybar) │ ├── vpn_status.sh → estado VPN (polybar) │ ├── victim_to_hack.sh → lee target activo (polybar) │ ├── toggle_anonymity.sh → toggle Tor + anonsurf (Super+A) │ ├── anon_module.sh → estado anon para polybar │ ├── firefox_personal_module.sh → icono launcher Firefox personal │ └── firefox_pentest_module.sh → icono launcher Firefox pentest ├── zsh/.zshrc → ~/.zshrc ├── assets/ → preview.png + wallpaper.jpg default ├── system/ → configs de /etc + hardening Firefox + apt │ ├── README.md │ ├── setup.sh → instalador idempotente (sudoers + ufw + Firefox + apt) │ ├── sudoers.d/ │ │ └── anon_toggle → template con __USER__ placeholder │ ├── firefox/ │ │ └── pentest.user.js → hardening para profile Firefox "pentest" │ └── apt/ │ └── 52parrot-hardening.conf → unattended-upgrades para parrot-security ├── install.sh → instalador idempotente ├── CONTRIBUTING.md → convenciones del proyecto (guía para PRs) ├── LICENSE → MIT └── README.md → este archivo ``` ## 🩺 故障排除 ### "提示符不出现或显示为纯文本" 检查 oh-my-posh 是否已安装并可访问: ``` ls -la ~/.local/bin/oh-my-posh oh-my-posh --version ``` 如果不存在,请重新安装: ``` curl -s https://ohmyposh.dev/install.sh | bash -s ``` ### "提示符图标显示为小方块" 您的字体没有 Nerd Font 字形。安装 CaskaydiaCove 或 Hack: ``` wget -P /tmp \ https://github.com/ryanoasis/nerd-fonts/releases/latest/download/CascadiaCode.zip sudo unzip -o /tmp/CascadiaCode.zip -d /usr/local/share/fonts/ sudo fc-cache -fv ``` 然后在 `kitty/.config/kitty/kitty.conf` 中配置 kitty 使用该字体: ``` font_family CaskaydiaCove Nerd Font ``` ### "polybar 不显示工作区" 检查 `bspwm` 是否正在运行 (`bspc query -W`) 并重启 polybar: ``` ~/.config/polybar/launch.sh ``` ### "目标未显示在状态栏中" 检查文件是否存在且正在更新: ``` cat ~/.config/bin/target settarget 10.10.10.1 TestMachine cat ~/.config/bin/target # debe mostrar "10.10.10.1 TestMachine" ``` 如果模块仍显示 "No target",检查 polybar 是否有读取权限(正常使用时不应有问题)。 ### "VPN 状态显示 Disconnected,尽管 VPN 已激活" 脚本假设接口名为 `tun0`。使用 `ip link` 验证: ``` ip link | grep -i 'tun\|wg' ``` 如果您的 VPN 使用其他接口(例如 `wg0`、`tun1`),请编辑 `~/.config/scripts/vpn_status.sh` 并替换 `tun0`。 ### "keychain 在每个终端都要求输入密码短语" 检查密钥是否存在: ``` ls ~/.ssh/id_ed25519 ``` 如果您有其他密钥(如 `id_rsa`),请编辑 `.zshrc`: ``` [ -f "$HOME/.ssh/id_rsa" ] && eval $(keychain --eval --quiet id_rsa) ``` ### "以 root 用户登录时 capr4n 主题不显示" 默认情况下,root 用户没有安装 oh-my-posh(它位于用户的 `~/.local/bin/` 中,而非 root 的)。`.zshrc` 会检测到这一点并静默跳过初始化。要让 root 也拥有该主题: ``` # 符号链接到用户二进制文件: sudo mkdir -p /root/.local/bin sudo ln -sfn /home/$USER/.local/bin/oh-my-posh /root/.local/bin/oh-my-posh # 符号链接到 dotfiles 仓库: sudo ln -sfn /home/$USER/dotfiles /root/dotfiles ``` ### "kitty 的光标是竖线而不是下划线(或反之)" `kitty.conf` 将其设置为 `beam`(竖线),覆盖了 `color.ini` 设置的 `Underline`。如果您想要 `Underline`,请注释掉 `kitty.conf` 中的 `cursor_shape beam` 行。 ### "Super + Alt + 箭头键无法调整大小" 检查脚本是否存在且有执行权限: ``` ls -la ~/.config/bspwm/scripts/bspwm_resize ``` 如果不存在,请重新运行 `./install.sh`(它是指向仓库的符号链接)。 ### "编辑文件出错导致 bspwm 无法启动" 您之前的配置已备份,后缀为 `.pre-dotfiles.bak`: ``` ls -la ~/.config/bspwm/*.bak ~/.zshrc.pre-dotfiles.bak 2>/dev/null ``` 如果要恢复,请将 `.bak` 文件重命名为原始名称。 ## 📐 项目约定 如果您要贡献代码、改编仓库或提交 PR,样式规则、提交格式和受保护文件的文档在 [`CONTRIBUTING.md`](CONTRIBUTING.md) 中。根目录的 `.editorconfig` 还会使您的编辑器自动遵循正确的缩进。 ## 🙏 致谢 初始设置基于 **[S4vitar](https://github.com/s4vitar)** 的 Linux 个性化课程。**bspwm**、**sxhkd**、**polybar** 和 **picom** 的配置源于他的风格和教学方法。 提示符和视觉配色方案(Monokai Soda + capr4n 主题)与我在 Windows 上的并行设置 [dotfiles-windows](https://github.com/M1gu3l4ngel/dotfiles-windows) 对齐——使用 oh-my-posh 实现跨平台相同的提示符。 由 **[M1gu3l4ng3l](https://github.com/M1gu3l4ngel)** 为个人渗透测试工作流进行改编和维护。 ## 📜 许可证 [MIT](LICENSE) — 自由使用、复制、修改。如果对您有帮助,一个 ⭐ 总是 appreciated。 由 **[M1gu3l4ng3l](https://github.com/M1gu3l4ngel)** 用 🦜 制作。
标签:bat命令替代, bspwm窗口管理器, dotfiles配置文件, dunst通知, feh图像查看器, fzf模糊查找器, kitty终端模拟器, lsd命令替代, Monokai主题, neovim编辑器, oh-my-posh提示符, Parrot OS, picom窗口合成器, polybar状态栏, rofi启动器, Shell环境优化, sxhkd热键管理器, tmux终端复用器, zsh shell, 个性化配置, 匿名网络, 渗透测试环境, 状态栏定制, 窗口管理, 终端美化, 编辑器配置, 键盘快捷键, 防火墙配置