Skip to content
L Luka Piplica
linux bspwm dotfiles customization nord

打造精致北欧风桌面:Pop!_OS 上的 BSPWM 自定义指南

基于 Pop!_OS 的高能平铺窗口管理器环境搭建指南。融合 BSPWM、Polybar、Picom 及 ZSH,解锁优雅北欧色系极简工作流。

L

Luka Piplica

6 分钟阅读
等距视角 GIF 动画,展示了一个复古电脑屏幕外壳如何打开,并显现、部署其内置的机械键盘。

平铺窗口管理器(WMs)因其轻量化、极高定制潜力以及高效性而在 Unix 社区备受赞誉。通过使用键盘驱动的窗口管理取代传统的桌面环境,开发者能够实现高度优化的工作流程。

本指南将详细介绍基于 Pop!_OSBSPWM(二叉空间分割窗口管理器)构建自定义桌面环境的每一步配置。此设置以备受欢迎的**北欧(Nordic)**色调为基础,将极简主义美学与强大的实用功能完美结合。


工作区展示

以下是已完成环境的视觉总览,其中运行了各种自定义的系统和终端实用程序:

自定义北欧风桌面环境的组合视图


核心系统架构

为了复制这一环境,我们将 Pop!_OS 的标准 GNOME 桌面替换为由独立实用程序组成的模块化架构。下表列出了该环境的技术规格:

组件软件 / 项目描述
操作系统Pop!_OS基于 Debian/Ubuntu 的稳定 Linux 发行版
窗口管理器BSPWM二叉空间分割平铺窗口管理器
热键守护进程Sxhkd简单的 X 窗口热键守护进程
状态栏Polybar快速且易于使用的状态栏生成器
X 合成器Picom (ibhagwan 分支)支持圆角和双卡瓦塞模糊(dual-kawase blur)的合成器
应用启动器Rofi窗口切换器、应用程序启动器及 dmenu 替代方案
终端模拟器AlacrittyGPU 加速的终端模拟器
Shell 与主题Zsh + Powerlevel10k高性能交互式 Shell 环境
视觉主题Nordic Dark GTK灵感源自北极色彩的清爽暗色 GTK 主题
图标与光标Flattery Dark & Oreo Blue扁平化图标与时尚现代的光标指针
首选字体Source Code Pro针对代码可读性进行优化的等宽字体

分步安装与编译

本教程假设您是从全新的 Pop!_OS 系统开始搭建。为了确保对依赖项的绝对控制并获得最佳性能,我们将直接从源码编译几个核心组件。

1. 同步存储库与系统软件包

在下载依赖项之前,请确保您的本地软件包数据库已更新,并且所有基础系统程序都已完全升级:

sudo apt update
sudo apt upgrade -y

2. 安装与配置 BSPWM

BSPWM 是一款轻量级的平铺窗口管理器,它将窗口表示为满二叉树的叶子节点。

获取核心依赖项

通过安装必要的 XCB 和系统库,确保能够安全地编译并运行 BSPWM:

sudo apt install -y build-essential git vim xcb libxcb-util0-dev libxcb-ewmh-dev libxcb-randr0-dev libxcb-icccm4-dev libxcb-keysyms1-dev libxcb-xinerama0-dev libasound2-dev libxcb-xtest0-dev libxcb-shape0-dev

从源码编译

克隆官方代码仓库,编译二进制文件,并在全局系统范围内进行安装:

cd ~/Downloads
git clone https://github.com/baskerville/bspwm.git
cd bspwm
make
sudo make install

初始化配置

建立配置文件目录结构并复制默认的初始化脚本:

mkdir -p ~/.config/bspwm
cp examples/bspwmrc ~/.config/bspwm/
chmod +x ~/.config/bspwm/bspwmrc
cd ..

3. 设置简单 X 热键守护进程 (sxhkd)

与其他平铺窗口管理器不同,BSPWM 本身并不直接处理键盘输入。相反,它依赖一个独立的守护进程 sxhkd 来将按键与命令进行绑定。

编译 sxhkd

git clone https://github.com/baskerville/sxhkd.git
cd sxhkd
make
sudo make install

配置快捷键

创建配置目录并暂存示例热键定义文件:

mkdir -p ~/.config/sxhkd
cp ../bspwm/examples/sxhkdrc ~/.config/sxhkd/
cd ..

配置说明: 如果你修改了 ~/.config/sxhkd/sxhkdrc,请务必核实其中定义的终端模拟器是否正确。如果你在正式切换环境之前,想先在标准的 GNOME 桌面环境中进行测试,请将默认的终端命令块修改为调用 gnome-terminal


4. 编译用于状态显示的 Polybar

Polybar 是一款高度模块化的工具,用于生成时尚且可高度定制的状态栏。

获取构建依赖项

sudo apt install -y cmake cmake-data pkg-config python3-sphinx libcairo2-dev libxcb1-dev libxcb-util0-dev libxcb-randr0-dev libxcb-composite0-dev python3-xcbgen xcb-proto libxcb-image0-dev libxcb-ewmh-dev libxcb-icccm4-dev libxcb-xkb-dev libxcb-xrm-dev libxcb-cursor-dev libasound2-dev libpulse-dev libjsoncpp-dev libmpdclient-dev libcurl4-openssl-dev libnl-genl-3-dev

编译与安装

git clone --recursive https://github.com/polybar/polybar
cd polybar
mkdir build
cd build
cmake ..
make -j$(nproc)
sudo make install
cd ../..

5. 编译支持实验性后端的 Picom

标准的桌面环境使用合成系统来管理窗口。对于 BSPWM,我们使用由 ibhagwan 维护的 Picom 自定义分支,它支持丝滑的双卡瓦塞模糊(dual-kawase blur)、活动窗口透明度以及优雅的圆角窗口。

获取依赖项

sudo apt install -y meson libxext-dev libxcb1-dev libxcb-damage0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-render-util0-dev libxcb-render0-dev libxcb-randr0-dev libxcb-composite0-dev libxcb-image0-dev libxcb-present-dev libxcb-xinerama0-dev libpixman-1-dev libdbus-1-dev libconfig-dev libgl1-mesa-dev libpcre2-dev libevdev-dev uthash-dev libev-dev libx11-xcb-dev

使用 Ninja 生成二进制文件

git clone https://github.com/ibhagwan/picom.git
cd picom
git submodule update --init --recursive
meson --buildtype=release . build
ninja -C build
sudo ninja -C build install
cd ..

6. 核心桌面组件:Rofi 与 Alacritty

随着核心窗口管理架构的安装完毕,接下来我们将获取应用程序菜单和主终端环境:

sudo apt install -y rofi alacritty

设置自定义配置

我们拉取预先配置好的 dotfiles 仓库,以提取我们定制的配置文件:

git clone https://github.com/lukapiplica/nordic-bspwm-dotfiles
mkdir -p ~/.config/alacritty
cp nordic-bspwm-dotfiles/alacritty/alacritty.yml ~/.config/alacritty/

硬件加速提示: 如果你在旧显卡或虚拟环境中遇到 GLSL 3.30 is not supported 错误,可以通过修改 Alacritty 的桌面配置文件来强制启用软件光栅化:

sudo nano /usr/share/applications/com.alacritty.Alacritty.desktop

Exec=alacritty 这一行替换为 Exec=bash -c "LIBGL_ALWAYS_SOFTWARE=1 alacritty"


界面美化与环境调优

现在我们来配置 ZSH、主题、字体、壁纸和锁屏,将整个北欧风工作区的美学融为一体。

1. 排版与字体缓存

导入主要的等宽代码字体,以确保符号和终端字符能够正确渲染:

sudo cp -r ~/Downloads/nordic-bspwm-dotfiles/Source_Code_Pro /usr/share/fonts/
fc-cache -fv

2. 通过 Feh 设置壁纸

为了在登录时通过程序自动设置壁纸,请安装 feh 命令行工具:

sudo apt install feh -y
mkdir -p ~/Wall
cp -r ~/Downloads/nordic-bspwm-dotfiles/Wallpapers/ ~/Wall/

将背景启动命令注入到你的 bspwmrc 中,以便在窗口管理器初始化时运行:

echo 'feh --bg-fill $HOME/Wall/Wallpapers/wallpaper2.jpeg &' >> ~/.config/bspwm/bspwmrc

3. 激活自定义 Polybar 主题

导出我们自定义的 Polybar 设置,并复制所需的 TrueType 字体以支持状态栏图标:

mkdir -p ~/.config/polybar
cp -r ~/Downloads/nordic-bspwm-dotfiles/polybar/* ~/.config/polybar/
echo '~/.config/polybar/./launch.sh &' >> ~/.config/bspwm/bspwmrc
sudo cp ~/.config/polybar/fonts/* /usr/share/fonts/truetype/
fc-cache -fv

4. 交互式 Shell 优化 (ZSH & Powerlevel10k)

将默认的 Shell 环境从标准的 Bash 切换到 ZSH,然后下载 Oh-My-ZSH 框架:

sudo apt install zsh -y
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

应用 Powerlevel10k 提示符

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

修改环境配置:

  1. 打开你的终端配置文件(nano ~/.zshrc)。
  2. 将激活的主题行设置为:ZSH_THEME="powerlevel10k/powerlevel10k"
  3. 保存并关闭。运行 source ~/.zshrc 或输入 p10k configure 来逐步运行可视化设置助手。

5. 在 Vim 中开发:集成北欧风(Nordic)主题

将北欧风色彩矩阵移植到 Vim 中,并安装美观的 Vim-Airline 状态栏实用程序:

mkdir -p ~/.vim/colors
cp ~/Downloads/nordic-bspwm-dotfiles/nord.vim ~/.vim/colors/

克隆 Airline 扩展:

git clone https://github.com/vim-airline/vim-airline.git ~/Downloads/vim-airline
cp -r ~/Downloads/vim-airline/* ~/.vim/

在你的编辑器配置文件中激活这些配置规则:

echo 'colorscheme nord' >> ~/.vimrc
echo "let g:airline_theme='base16'" >> ~/.vimrc

6. Rofi 应用程序菜单自定义

复制 Nord 主题文件并将其配置为主界面:

mkdir -p ~/.config/rofi/themes
cp ~/Downloads/nordic-bspwm-dotfiles/nord.rasi ~/.config/rofi/themes/
rofi-theme-selector

主题激活: 在选择器中导航至 Nord theme,按下 Enter 键进行预览,然后按下 Alt + a 将其应用到全局。

要将 Rofi 绑定为默认的应用程序启动器,请更新你的快捷键绑定:

nano ~/.config/sxhkd/sxhkdrc

将用于启动应用程序的组合键从 dmenu_run 修改为 rofi -show drun


工作区效率与 CLI 实用程序

为了构建一个功能完备的开发工作站,我们安装了几个命令行程序和可视化实用程序,以丰富我们自定义的工作区。

展示高级系统监视器和可视化工具的北欧风定制桌面

自定义 CLI 套件安装

使用标准软件包仓库安装现代可视化工具、系统硬件监视器和文件管理器:

# 系统监视器 (Htop)
sudo apt install htop -y

# 矩阵下雨屏幕特效 (Cmatrix)
sudo apt install cmatrix -y

# 轻量级图片查看器 (Sxiv)
sudo apt install sxiv -y

# 基于终端的文件导航器 (Ranger)
sudo apt install ranger -y

# 终端数字时钟 (Tty-clock)
sudo apt install tty-clock -y

高级可视化工具与系统信息引擎

CAVA (基于控制台的音频可视化工具)

编译 CAVA 以根据实时 ALSA/PulseAudio 输入信号生成条形波形可视化工具:

sudo add-apt-repository ppa:hsheth2/ppa -y
sudo apt update
sudo apt install cava -y

pfetch (极简系统信息获取工具)

git clone https://github.com/dylanaraps/pfetch.git ~/Downloads/pfetch
sudo install ~/Downloads/pfetch/pfetch /usr/local/bin/

Chafa (终端字符艺术引擎)

Chafa 可以解析标准图像,并将其转换为高度细腻的、由终端渲染的字符艺术:

git clone https://github.com/hpjansson/chafa.git ~/Downloads/chafa
cd ~/Downloads/chafa
./autogen.sh
make
sudo make install
cd ~

Snake (经典游戏的终端复刻版)

使用 python-pygame 库复刻经典的诺基亚贪吃蛇游戏:

sudo apt install python3-pip -y
python3 -m pip install -U pygame --user
git clone https://github.com/Unixado/Snake.git ~/Downloads/Snake

直接从终端会话运行该游戏:

python3 ~/Downloads/Snake/src/game.py

在自定义环境中运行的终端贪吃蛇游戏

Lollypop (现代桌面音频播放器)

sudo add-apt-repository ppa:gnumdk/lollypop -y
sudo apt update
sudo apt install lollypop -y

自定义 GTK 与 Firefox 视觉美感

为了让操作系统界面呈现统一的视觉效果,应用程序和网页浏览器必须共享相同的配色方案。

1. 通过 Lxappearance 集成桌面界面

为了在轻量级窗口管理器上加载并应用自定义的小部件样式、图标包和光标,需要安装 LXAppearance:

sudo apt install lxappearance -y

打开 lxappearance 来选择并应用已下载的北欧风(Nordic)设计资产:

2. 极简浏览器主题定制 (Firefox & Minimal Functional Fox)

下载自定义的极简 userChrome 设置,以移除标准标题栏、居中网页元素,并使浏览器边框与北欧风(Nordic)配色方案相得益彰:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/mut-ex/minimal-functional-fox/master/install.sh)"
cp -r ~/Downloads/nordic-bspwm-dotfiles/.firefoxthemes ~/
  1. 启动 Firefox
  2. 导航至 设置 > 主页 (Settings > Home)。
  3. 找到 主页和新窗口 (Homepage and new windows),选择 自定义 URL (Custom URLs),并输入指向你本地起始页的目标路径: file:///home/<YOUR_USERNAME>/.firefoxthemes/startpage/Startpage/index.html
  4. 重启应用程序以初始化布局更改。

键盘快捷键与桌面导航

平铺窗口管理器通过让你的双手保持在键盘的主键行上来优化工作效率。Windows/Super 键 (super) 被配置为主修饰键。

以下是默认和自定义桌面热键的标准参考列表:

组合键目标事件 / 操作
super + Enter启动一个 GPU 加速的 Alacritty 终端实例
super + Space打开 Rofi 应用程序菜单以启动 GUI 工具
super + Escape立即重新加载 sxhkd 配置规则
super + Alt + r重启 BSPWM 窗口管理器
super + w销毁/关闭当前聚焦的窗口
super + [1-0]在工作区 1 到 10 之间进行导航
super + g将当前聚焦的窗口与主 master 框架进行交换
super + m切换全屏布局放大模式
super + [h,j,k,l]按方向移动窗口焦点(左、下、上、右)
super + Alt + [h,j,k,l]向外扩展当前聚焦窗口的边界
super + Alt + Shift + [h,j,k,l]向内收缩当前聚焦窗口的边界
super + s切换所选窗口的浮动模式
super + Ctrl + [方向键]跨坐标移动浮动窗口

结语与专业回顾

从模块化的 CLI 实用程序重新构建桌面环境,展示了 Linux 系统的灵活性和深度。除了干净、极简的北欧风(Nordic)设计之外,这个 BSPWM 和 Pop!_OS 工作区还带来了显着的性能优势:降低了 CPU/内存开销,实现了对热键映射的绝对控制,并提供了一个为高级软件开发工作流量身定制的高响应工作区。

无论你是开发人员、系统管理员还是 Linux 爱好者,打造一个属于自己的键盘驱动型工作区,都是对日常开发体验和操作效率的一笔非常值得的回报。

返回博客
分享:

保持关注

第一时间获取最新文章、思考及动态。