M1gu3l4ngel/dotfiles-parrot
GitHub: M1gu3l4ngel/dotfiles-parrot
一套为Parrot OS渗透测试者设计的dotfiles,提供定制桌面环境和工作流集成以提升效率。
Stars: 1 | Forks: 0
# 🦜 dotfiles

[](LICENSE)



## 📸 演示
登录后您将看到:
- 与 [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, 个性化配置, 匿名网络, 渗透测试环境, 状态栏定制, 窗口管理, 终端美化, 编辑器配置, 键盘快捷键, 防火墙配置