some_configs配置仓库整理
这篇文章整理一下我的 some_configs 配置仓库。仓库里的配置按 GNU Stow 的方式组织,每个顶层目录基本就是一个可以链接到 $HOME 的配置包。本文只说明仓库里各组件的职责、配置路径和基本安装方式,实际启用哪些组件取决于使用的系统、桌面会话和个人工作流;下面的分类不是安装顺序,也不是偏好排序。
AIGC:这篇文章由AI生成
同类组件不要重复启用
这个仓库不是一套“全部装上就完事”的配置,而是把不同桌面环境、不同启动器、不同通知组件和不同 shell 提示符都放在一起保存。同一功能的多个组件通常不在同一个会话里同时启用,否则可能出现重复进程、快捷键冲突或多个界面同时接管同一类功能。
| 功能 | 仓库中对应的软件 |
|---|---|
| Wayland 窗口管理 | niri |
| X11 窗口管理 | i3wm |
| macOS 窗口管理 | aerospace |
| 状态栏 | waybar、i3blocks、i3status、polybar |
| 启动器 | walker、fuzzel、rofi |
| 通知 | swaync、mako |
| 锁屏 | swaylock、i3lock 脚本 |
| shell 提示符 | powerlevel10k、starship |
| 壁纸 | swaybg 启动项、swaybg.service |
仓库安装和 Stow 管理
仓库地址:
https://github.com/NakanoMiku39/some_configs
以下安装命令以 Fedora/dnf 为例。其他发行版或系统需要替换为对应的软件包管理器和包名。
先安装 Git 和 GNU Stow:
1 | sudo dnf install git stow |
克隆仓库:
1 | mkdir -p ~/codes |
这个仓库的组织方式是:顶层目录是 Stow package,目录内部路径相对 $HOME。例如:
| Stow 包 | 链接后的目标 |
|---|---|
niri/.config/niri/config.kdl |
~/.config/niri/config.kdl |
waybar/.config/waybar/config.jsonc |
~/.config/waybar/config.jsonc |
zsh/.zshrc |
~/.zshrc |
tmux/.config/tmux/tmux.conf |
~/.config/tmux/tmux.conf |
正式写入前可以先预览。下面的包名只是示例,实际使用时按需要替换为对应的顶层目录:
1 | stow -nv -t "$HOME" niri waybar walker swaync swaylock alacritty zsh tmux git gtk |
确认没有冲突后再应用:
1 | stow -v -t "$HOME" niri waybar walker swaync swaylock alacritty zsh tmux git gtk |
如果 $HOME 里已经有同名文件,需要先备份或移动,再重新运行预览命令。撤销链接可以用:
1 | stow -Dv -t "$HOME" niri waybar walker swaync swaylock alacritty zsh tmux git gtk |
Wayland 桌面
Niri
Niri 配置在 niri/.config/niri/config.kdl。
Fedora/dnf 示例:
1 | sudo dnf install niri waybar alacritty swaylock swayidle swaybg fcitx5 brightnessctl wl-clipboard grim slurp pavucontrol |
这份 Niri 配置的截图标注快捷键会调用 $HOME/.cargo/bin/satty。如果需要这项功能,可以通过 Cargo 安装:
1 | cargo install satty |
这份 Niri 配置包含:
- 输入:键盘布局使用
us,触摸板启用 tap 和 natural scroll。 - 布局:窗口间距为
6,初始列宽是屏幕宽度的一半,焦点环使用蓝色。 - 自启动:启动
waybar、swaync、elephant、walker --gapplication-service、fcitx5、swayidle,并用swaybg设置壁纸。 - 快捷键:
Mod+T打开 Alacritty,Mod+D打开 Walker,Super+Alt+L锁屏,Mod+N打开通知中心,Mod+Shift+S区域截图并进入 Satty 标注。 - 窗口规则:Alacritty 透明度为
0.9,窗口圆角为8,并启用prefer-no-csd。
使用这份配置时有两个依赖关系需要检查:
第一,配置里会启动 elephant。如果系统里没有这个组件,或者不使用它,可以把这一行注释掉:
1 | spawn-at-startup "elephant" |
第二,Niri 里已经有:
1 | spawn-sh-at-startup "swaybg -i ~/Pictures/wallpaper.png -m fill" |
这和 systemd/.config/systemd/user/swaybg.service 都会启动 swaybg。同一个会话里保留其中一种启动方式即可,否则会重复启动壁纸进程。
状态栏
Waybar
Waybar 配置文件在 waybar/.config/waybar/config.jsonc,样式在 waybar/.config/waybar/style.css,电源菜单在 waybar/.config/waybar/power-menu.xml。
Fedora/dnf 示例:
1 | sudo dnf install waybar pavucontrol |
这份 Waybar 配置是顶部栏,模块包括:
- 左侧:电源菜单和托盘。
- 中间:时钟,时区是
Asia/Shanghai。 - 右侧:通知数量、网络、蓝牙、音量、电池。
- 电源菜单:调用
swaylock、niri msg action quit、systemctl suspend/reboot/poweroff。 - 通知模块:通过
swaync-client获取通知数量,左键打开通知中心,右键切换勿扰。
Waybar 依赖 Nerd Font 图标显示,字体配置是 FiraCode Nerd Font。如果图标显示成方块,需要检查字体是否安装。
启动器
Walker
Walker 配置在 walker/.config/walker/config.toml,主题样式在 walker/.config/walker/themes/niri/style.css。这份 Niri 配置把 Mod+D 绑定为启动 Walker。
Walker 配置里启用了应用启动、计算器、网页搜索等 provider,并设置了一些前缀:
| 前缀 | 功能 |
|---|---|
> |
运行命令 |
= |
计算器 |
@ |
网页搜索 |
$ |
窗口切换 |
bt: |
蓝牙设备 |
安装 Walker 的方式随发行版而定。软件源里没有对应包时,可以使用项目提供的发行版包或自行构建。装好后用 Stow 链接:
1 | stow -v -t "$HOME" walker |
Fuzzel
仓库里也保留了 Fuzzel 配置:fuzzel/.config/fuzzel/fuzzel.ini。
这份 Fuzzel 配置包括:
- 使用
FiraCode Nerd Font:size=13。 - 默认终端为
alacritty -e。 match-mode=fzf。- 居中显示,12 行结果,启用图标。
Fedora/dnf 示例:
1 | sudo dnf install fuzzel |
如果把 Niri 启动器切换为 Fuzzel,需要把相关快捷键改成:
1 | Mod+D hotkey-overlay-title="Run an Application: fuzzel" { spawn "fuzzel"; } |
Walker、Fuzzel 和 Rofi 都能承担应用启动器功能。同一个会话里通常只绑定一个启动器入口,否则会出现多个快捷键或菜单入口指向同类功能。
通知
SwayNC
SwayNC 配置在 swaync/.config/swaync/config.json,样式在 swaync/.config/swaync/style.css。
Fedora/dnf 示例:
1 | sudo dnf install swaynotificationcenter |
这份 SwayNC 配置包含:
- 右上角通知弹窗。
- 右上角控制中心,宽度
420,高度720。 - 勿扰开关。
- MPRIS 媒体控制。
- 音量控制,支持显示每个应用的音频流。
- 按钮网格:隐藏通知、锁屏、睡眠。
这份 Waybar 的通知模块会调用 swaync-client。如果通知组件换成其他实现,需要同步调整 Waybar 的通知模块命令。
Mako
仓库里还保留了 Mako 配置:mako/.config/mako/config。
Fedora/dnf 示例:
1 | sudo dnf install mako |
Mako 配置里设置了右上角位置、圆角、边框、图标、历史数量、低优先级和严重通知的不同颜色。
swaync 和 mako 都是通知守护进程。同一个会话里同时启动二者会让通知行为变得不明确。如果从 SwayNC 切换到 Mako,需要把 Niri 自启动里的 swaync 改为 mako,并同步调整 Waybar 里调用 swaync-client 的通知模块。
锁屏和空闲管理
Swaylock
Wayland 锁屏使用 Swaylock,配置在 swaylock/.config/swaylock/config。
Fedora/dnf 示例:
1 | sudo dnf install swaylock swayidle |
Swaylock 配置里使用 ~/Pictures/wallpaper.png 作为锁屏背景,启用圆形输入指示器、Caps Lock 提示、失败次数显示,并使用和 Waybar/Alacritty 接近的一组颜色。
Swayidle
Niri 里通过 swayidle 做自动锁屏和关屏:
1 | spawn-at-startup "swayidle" "-w" \ |
这表示 300 秒锁屏,600 秒关闭显示器,恢复输入时重新点亮显示器。
i3lock 脚本
X11/i3 锁屏脚本保存在 scripts/.config/scripts/lock。它调用的是 i3lock,对应 X11 锁屏链路;Wayland 会话通常使用 swaylock 这类 Wayland 锁屏工具。
终端、Shell 和复用工作区
Alacritty
Alacritty 配置在 alacritty/.config/alacritty/alacritty.toml。
Fedora/dnf 示例:
1 | sudo dnf install alacritty |
这份配置设置了:
TERM=xterm-256color。- 窗口透明度
0.92。 - padding 为
14。 - 选择文本自动保存到剪贴板。
- 光标为闪烁方块。
- 字体为
FiraCode Nerd Font。 - 颜色和 Waybar/Swaylock 保持一致。
Zsh + Oh My Zsh + Powerlevel10k
Zsh 配置在 zsh/.zshrc,Powerlevel10k 配置在 zsh/.p10k.zsh。
Fedora/dnf 示例:
1 | sudo dnf install zsh zoxide eza |
安装 Oh My Zsh、Powerlevel10k 和两个插件:
1 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" |
仓库里的 .zshrc 启用了:
- Powerlevel10k instant prompt。
git、zsh-autosuggestions、zsh-syntax-highlighting插件。zoxide智能跳转。eza替代ls、ll、la、lt。$HOME/.cargo/bin和$HOME/.local/binPATH。
切换默认 shell 的命令是:
1 | chsh -s "$(which zsh)" |
Starship
Starship 配置在 starship/.config/starship.toml。
Fedora/dnf 示例:
1 | sudo dnf install starship |
这份 Starship 配置使用 Catppuccin Mocha 调色板,会显示 OS、用户名、目录、Git 状态、语言版本、命令耗时和右侧时间。
仓库里的 .zshrc 加载的是 Powerlevel10k,没有启用 Starship。如果改用 Starship,需要在 .zshrc 里加入:
1 | eval "$(starship init zsh)" |
Powerlevel10k 和 Starship 都会接管 prompt,同一个 shell 配置里只应保留一套 prompt 初始化逻辑。
Tmux
Tmux 配置在 tmux/.config/tmux/tmux.conf,仓库里还保留了兼容老路径的 tmux/.tmux.conf。
Fedora/dnf 示例:
1 | sudo dnf install tmux |
这份配置把 prefix 改成 C-g,启用鼠标、vi 模式、从当前路径打开新 pane/window,并给状态栏设置了和终端一致的深色主题。
编辑器和开发工具
Emacs
Emacs 配置在 emacs/.emacs.d/init.el,拆分配置在 emacs/.emacs.d/lisp。之前已经单独写过一篇 Emacs实用插件分享,这篇只做简单归档。
Fedora/dnf 示例:
1 | sudo dnf install emacs ripgrep fd-find |
仓库里的 Emacs 配置包括:
straight.el+use-package管理插件。- 启动阶段调高 GC 阈值,并启用
gcmh。 yaml-mode、json-mode、markdown-mode、org-mode。vertico、orderless、marginalia做补全。consult、embark、deadgrep做搜索和动作菜单。dirvish增强 Dired。avy、ace-window做快速跳转和窗口切换。magit、git-gutter、diff-hl做 Git 集成。rainbow-delimiters、highlight-indent-guides、hl-todo等视觉增强。
需要注意的是,emacs 包会链接常规 ~/.emacs.d。仓库里也保留了旧的 emacs/.spacemacs,但它和 ~/.emacs.d 是两套不同的 Emacs 配置入口,同一个用户目录里通常只保留一套生效配置。
Vim
Vim 配置在 vim/.vimrc。
Fedora/dnf 示例:
1 | sudo dnf install vim |
这份 Vim 配置比较基础,包括 UTF-8 编码、行号、相对行号、括号匹配、自动缩进、搜索高亮、当前行高亮、简单括号补全等。
最后设置了:
1 | colorscheme molokai |
如果没有安装 Molokai 或 vim-airline,启动 Vim 时可能会报主题不存在。处理方式是安装对应插件,或者注释掉这两行。
Git
Git 配置在 git/.gitconfig。
这个文件目前只设置了用户名和邮箱。如果别人复用这套配置,应该先改成自己的身份信息,再用 Stow 链接:
1 | git config --global user.name "你的名字" |
仓库本身还带了 secret 检查脚本:.githooks/check-secrets 和 GitHub Actions 配置。本地启用 Git hooks:
1 | git config core.hooksPath .githooks |
X11/i3
i3wm
i3 相关配置主要用于 X11 环境。完整 i3 配置在 i3wm/.config/i3wm/config。
Fedora/dnf 示例:
1 | sudo dnf install i3 i3status i3blocks rofi picom feh playerctl dex xss-lock nm-connection-editor |
如果使用 i3lock-color,包名可能随发行版不同而不同,需要按自己的软件源安装。
i3 配置里包含:
$mod为Mod4。rofi -show run作为启动器。xss-lock调用~/.config/scripts/lock。nm-applet网络托盘。- 多媒体键通过
pactl和playerctl控制。 feh设置壁纸。picom -f做 X11 合成。polybar -q作为状态栏。
i3blocks
i3blocks 状态栏配置在 i3blocks/.config/i3blocks/i3blocks.conf。
这份配置包含电池、磁盘和时间模块。如果要使用它,需要把 i3 配置里的 bar status command 指向:
1 | i3blocks -c ~/.config/i3blocks/i3blocks.conf |
i3status
i3status 状态栏配置在 i3status/.config/i3status/i3status.conf。
它会显示无线网络、有线网络、电池、磁盘、内存和本地时间。i3blocks 和 i3status 都是 i3 状态栏方案,实际使用时选一个即可。
Rofi
i3 配置里使用 rofi -show run 作为启动器。仓库没有单独保存 Rofi 配置,只是在 i3wm/.config/i3wm/config 里绑定了启动命令。
Rofi 和 Walker、Fuzzel 都是启动器。在哪个会话里使用哪个启动器,取决于对应窗口管理器配置和快捷键绑定。
Picom
Picom 配置在 picom/.config/picom/picom.conf。
picom 是 X11 合成器。Wayland/Niri 会话不使用 X11 合成器。
Polybar
i3 配置里有:
1 | exec_always polybar -q |
仓库里没有单独的 Polybar 配置文件。如果系统没有安装或不使用 Polybar,需要把这一行注释掉。i3blocks、i3status 和 Polybar 都会提供状态栏或状态信息入口,同一会话里同时启动多个状态栏会产生多个栏。
i3lock 脚本
i3lock 锁屏脚本在 scripts/.config/scripts/lock。
它用于 X11/i3 环境,功能上和 Wayland 下的 Swaylock 重叠。不同会话需要使用对应协议和锁屏工具。
macOS
AeroSpace
AeroSpace 配置在 aerospace/.config/aerospace/aerospace.toml。
这是 macOS 上的平铺窗口管理配置,和 Linux 下的 Niri/i3 属于不同系统环境。安装 AeroSpace 后,可以把配置链接到用户目录。
如果使用 Homebrew,可以按 AeroSpace 官方文档安装对应 cask,然后运行:
1 | stow -v -t "$HOME" aerospace |
这份配置里:
start-at-login = true。- 默认布局是
tiles。 - gap 为
10。 alt-enter打开 Alacritty。alt-c打开 Clash Verge。alt-s打开 Safari。alt-1到alt-9切换 workspace。alt-shift-1到alt-shift-9移动窗口到 workspace。alt-f全屏,alt-q关闭窗口。
GTK 小配置
GTK 3.0
GTK 配置在 gtk/.config/gtk-3.0/settings.ini。
内容很简单,就是把 GTK tooltip 延迟设为 0:
1 | gtk-tooltip-timeout=0 |
这个配置主要是为了让 Waybar 和其他 GTK3 界面的提示响应更快,不是必须项。
安装组合示例
下面是按功能组合列出的 Fedora/dnf 示例,不表示优先级。实际安装时需要按系统、桌面会话和需要启用的组件增删包名。
Niri/Wayland 相关组件示例:
1 | sudo dnf install git stow niri waybar alacritty swaylock swayidle swaybg fcitx5 brightnessctl wl-clipboard grim slurp pavucontrol zsh zoxide eza tmux emacs vim |
然后链接:
1 | cd ~/codes/some_configs |
如果不链接 Emacs/Vim,可以从 Stow 命令里去掉 emacs vim。如果不链接 Git 全局身份配置,也可以去掉 git,避免把固定用户名邮箱链接到当前用户。
i3/X11 相关组件示例:
1 | sudo dnf install git stow i3 i3status i3blocks rofi picom feh playerctl dex xss-lock alacritty zsh tmux |
最后再强调一次:这个仓库是配置集合,不是每个目录都要安装。实际使用时应按系统、桌面会话和组件职责选择 Stow 包,尤其是启动器、通知守护进程、状态栏、锁屏和 shell prompt 这些功能重复的部分。
