Ubuntu 24.04 GNOME 工作站美化方案
- 最终环境
这次最终环境是:
Ubuntu 24.04.5 LTS GNOME Shell 46 Wayland
确认命令:
cat /etc/os-release gnome-shell –version echo $XDG_SESSION_TYPE
目标:
Ubuntu 24.04.x GNOME Shell 46.x wayland
整体设计思路不是全黑主题,而是:
普通应用 → 浅色 GNOME Shell → Catppuccin 深色 Panel / Dock → 深色 + 半透明 图标 → Papirus Terminal → 深色 Catppuccin 风格 Shell → zsh + Starship CLI → eza / bat / zoxide / fzf / btop
核心关键词:
浅色工作区 + 深色桌面骨架 + Catppuccin + 克制的半透明。
这种方案比全局强制深色更适合白天长时间办公。
- Wayland
Ubuntu 登录界面选择:
Ubuntu
而不是:
Ubuntu on Xorg
确认:
echo $XDG_SESSION_TYPE
输出:
wayland
如果 /etc/gdm3/custom.conf 曾经为了搜狗等软件关闭 Wayland:
sudo nano /etc/gdm3/custom.conf
把:
WaylandEnable=false
恢复成:
#WaylandEnable=false
然后:
sudo reboot
- GNOME 基础工具
安装:
sudo apt update
sudo apt install -y
gnome-tweaks
gnome-shell-extension-manager
gnome-shell-extensions
启动:
gnome-tweaks extension-manager
- GNOME Extensions
最终最核心的是:
Blur my Shell Just Perfection
不要堆二三十个扩展。
工作机原则:
稳定性 > 美观 > 花活
Blur my Shell
最终建议:
Panel ON Overview ON
Applications OFF
Dock Blur 后来为了流畅度建议关闭:
Dash / Dock Blur OFF
特别是在:
Wayland + 150% fractional scaling
环境下,Dock 实时模糊会明显增加动画卡顿。
Blur 参数可从:
Sigma ≈ 25 Brightness ≈ 0.80
开始调。
- Just Perfection
主要用途不是疯狂隐藏 GNOME 元素,而是调整:
Panel 高度 Panel 图标尺寸 动画 UI 间距
比较舒服的范围:
Panel Height 3234
Panel Icon Size 1618
Activities、Workspace、Search、OSD 等功能建议保留。
动画速度后来发现不要调得太激进。
如果 Dock hover 显得僵硬,建议:
Animation Speed → 1.0x / Default
而不是全局强行 1.5x。
- Ubuntu Dock
把 Ubuntu 默认左侧 Dock 改到底部:
gsettings set org.gnome.shell.extensions.dash-to-dock dock-position ‘BOTTOM’
取消整条高度:
gsettings set org.gnome.shell.extensions.dash-to-dock extend-height false
图标大小:
gsettings set org.gnome.shell.extensions.dash-to-dock dash-max-icon-size 36
点击运行中的应用最小化:
gsettings set org.gnome.shell.extensions.dash-to-dock click-action ‘minimize’
隐藏挂载设备:
gsettings set org.gnome.shell.extensions.dash-to-dock show-mounts false
隐藏回收站:
gsettings set org.gnome.shell.extensions.dash-to-dock show-trash false
流畅度优化
动态透明后来发现不一定值得。
最终更倾向:
gsettings set org.gnome.shell.extensions.dash-to-dock transparency-mode ‘FIXED’
gsettings set org.gnome.shell.extensions.dash-to-dock background-opacity 0.82
缩短 Dock 动画:
gsettings set org.gnome.shell.extensions.dash-to-dock animation-time 0.15
如果自动隐藏仍然掉帧,可以直接固定:
gsettings set org.gnome.shell.extensions.dash-to-dock dock-fixed true
这套组合:
固定 Dock + 固定半透明 + 不做 Dock Blur + 短动画
是这次体验下来更适合工作机的方案。
- 系统应用保持浅色
我们最终没有走“所有应用全黑”的路线。
设置:
gsettings set org.gnome.desktop.interface color-scheme ‘prefer-light’
确认:
gsettings get org.gnome.desktop.interface color-scheme
应该是:
‘prefer-light’
这意味着:
Files Settings Calculator libadwaita Apps
继续使用浅色。
而 GNOME Shell 自己用深色主题。
- Catppuccin Shell
安装依赖:
sudo apt install -y
git
sassc
gtk2-engines-murrine
gnome-themes-extra
下载:
cd ~/Downloads
git clone
https://github.com/Fausto-Korpsvart/Catppuccin-GTK-Theme.git
cd Catppuccin-GTK-Theme
安装:
./install.sh
我们最终同时装了 Light 和 Dark 版本。
一个重要原则
没有使用:
./install.sh –libadwaita
因为我们不想强行覆盖 GNOME 46 的 GTK4/libadwaita 应用。
目标是:
GTK / libadwaita → 原生浅色 GNOME Shell → Catppuccin Dark
启用 User Themes:
gnome-extensions enable
user-theme@gnome-shell-extensions.gcampax.github.com
然后:
GNOME Tweaks → Appearance → Shell → Catppuccin Dark
最后确认:
gsettings get org.gnome.shell.extensions.user-theme name
- Papirus 图标
安装:
sudo apt install -y papirus-icon-theme
切换:
gsettings set org.gnome.desktop.interface icon-theme ‘Papirus’
确认:
gsettings get org.gnome.desktop.interface icon-theme
如果喜欢更深一点:
gsettings set org.gnome.desktop.interface icon-theme ‘Papirus-Dark’
因为应用保持浅色,所以普通 Papirus 实际上更协调。
- 字体踩坑总结
这是这次最值得记一笔的地方。
我们曾经设置:
gsettings set org.gnome.desktop.interface monospace-font-name
‘JetBrains Mono 11’
但系统一开始实际上并没有安装普通 JetBrains Mono:
fc-match “JetBrains Mono”
竟然返回:
DejaVu Sans
导致 GNOME Terminal 的字符单元格和实际字体 metrics 不匹配,结果出现:
字 符 间 距 巨 大
所以以后一定先验证:
fc-match “JetBrains Mono”
正确应该类似:
JetBrainsMono-Regular.ttf
Nerd Font
安装 Nerd Font 后:
fc-match “JetBrainsMono Nerd Font”
应该能正确找到:
JetBrainsMonoNerdFont-Regular.ttf
这套主要用于:
Starship Terminal 图标 开发 CLI
实际建议
GNOME 系统层别太执着换等宽字体。
如果出现字体异常,直接:
gsettings set org.gnome.desktop.interface monospace-font-name
‘Ubuntu Mono 13’
Ubuntu Mono 本身非常稳定。
Nerd Font 可以留给具体 Terminal 使用。
- Zsh
安装:
sudo apt install -y zsh
切默认 Shell:
chsh -s “$(which zsh)”
注销重新登录。
确认:
echo $SHELL ps -p $$ -o comm=
应该:
/usr/bin/zsh zsh
- Conda 与 Zsh
原有:
>>> conda initialize >>>
…
<<< conda initialize <<<
保持不动。
这是 Conda 自动维护的区域,不建议手改内部内容。
为了避免 Conda 自己的:
(base) (ct_env)
和 Starship 重复显示环境:
conda config –set changeps1 false
这样环境信息统一交给 Starship。
- Starship
安装:
curl -sS https://starship.rs/install.sh | sh
.zshrc 最后只保留一次:
eval “$(starship init zsh)”
我们实际踩过一个坑:
原来的 zsh adam1 theme 和 Starship 同时存在:
prompt_adam1_precmd prompt_starship_precmd
导致 Starship虽然启动了,却始终显示旧 prompt。
所以如果使用 zsh 内置 prompt:
prompt adam1
需要注释掉:
prompt adam1
如果用 Oh My Zsh:
ZSH_THEME=“”
让 Starship独占 prompt。
- 最终 Starship 配置
~/.config/starship.toml:
add_newline = true
format = “””
$hostname
$directory
$git_branch
$git_status
$conda
$python
$nodejs
$docker_context
$line_break
$character”“”
[hostname] ssh_only = true format = “[$hostname](bold yellow) “
[directory] style = “bold cyan” truncation_length = 3 truncate_to_repo = false read_only = “ ” format = “$path “
[git_branch] symbol = “ “ style = “bold purple” format = “$symbol$branch “
[git_status] style = “bold red” format = “$all_status$ahead_behind “
[conda] symbol = “ “ style = “bold green” format = “$symbol$environment “ ignore_base = true
[python] symbol = “ “ style = “yellow” format = “$symbol$version “ detect_extensions = [“py”] detect_files = [“pyproject.toml”, “requirements.txt”, “.python-version”]
[nodejs] symbol = “ “ style = “green” format = “$symbol$version “
[docker_context] symbol = “ “ style = “blue” format = “$symbol$context “
[character] success_symbol = “[❯](bold green)” error_symbol = “[❯](bold red)” vimcmd_symbol = “[❮](bold green)”
最终效果大约:
~/dev/ct_agent user/dyh/regression v3.13.13 ❯
SSH 时自动出现 hostname。
Conda 的 base 默认隐藏,进入具体环境才显示。
这比 Starship 默认那种满屏 emoji 和模块舒服很多。
- zoxide
Ubuntu 24.04 直接 apt 装:
sudo apt install -y zoxide
不建议非必要使用:
curl … | sh
我们实际遇到过 GitHub API rate limit。
.zshrc:
eval “$(zoxide init zsh)”
以后:
z blog z nginx z ct_agent
代替大量:
cd ../../xxx/xxx
- eza
用于替换 ls。
安装成功后:
eza -lah –icons
推荐 alias:
alias ll=‘eza -lah –icons –group-directories-first’ alias la=‘eza -a –icons’ alias ls=‘eza –icons’ alias tree=‘eza –tree –icons’
效果例如:
src ├── components ├── pages ├── package.json └── config
- bat
bat 可以理解成:
带语法高亮、行号、Git 信息的 cat。
Ubuntu 有些版本实际命令为:
batcat
如果如此:
mkdir -p ~/.local/bin ln -sf /usr/bin/batcat ~/.local/bin/bat
Alias:
alias cat=‘bat –paging=never’
保留原生 cat:
alias rawcat=‘/usr/bin/cat’
以后:
cat nginx.conf
自动获得高亮。
- fzf
安装:
sudo apt install -y fzf
主要价值:
Ctrl + R
搜索 Shell 历史。
如果系统存在脚本:
source /usr/share/doc/fzf/examples/key-bindings.zsh source /usr/share/doc/fzf/examples/completion.zsh
- btop
安装:
sudo apt install -y btop
使用:
btop
用于替代大部分日常 top 使用场景。
- 最终 .zshrc 结构
推荐结构:
===== Conda =====
>>> conda initialize >>>
conda 自动生成内容
<<< conda initialize <<<
===== CLI enhancement =====
alias ll=‘eza -lah –icons –group-directories-first’ alias la=‘eza -a –icons’ alias ls=‘eza –icons’ alias tree=‘eza –tree –icons’
alias cat=‘bat –paging=never’ alias rawcat=‘/usr/bin/cat’
alias grep=‘grep –color=auto’
alias ..=‘cd ..’ alias …=‘cd ../..’ alias ….=‘cd ../../..’
alias ports=‘ss -tulpn’
===== Shell tools =====
eval “$(zoxide init zsh)” eval “$(starship init zsh)”
注意:
zoxide init starship init
都只写一次。
我们之前重复初始化过,后来清理掉了。
- Terminal Catppuccin 配色
大方向:
Background #1E1E2E Foreground #CDD6F4 Cursor #F5E0DC
基础颜色:
Black #45475A Red #F38BA8 Green #A6E3A1 Yellow #F9E2AF Blue #89B4FA Magenta #F5C2E7 Cyan #94E2D5 White #BAC2DE
Bright:
Bright Black #585B70 Bright Red #F38BA8 Bright Green #A6E3A1 Bright Yellow #F9E2AF Bright Blue #89B4FA Bright Magenta #F5C2E7 Bright Cyan #94E2D5 Bright White #A6ADC8
最终视觉就和 Catppuccin Shell 基本统一了。
- Wayland + 150% 分数缩放注意事项
这是这次另外一个非常重要的经验。
你的环境:
Wayland 150% fractional scaling
原生 Wayland 应用清晰。
但部分 XWayland 应用会:
低分辨率渲染 → GNOME 放大到 150% → 整个窗口模糊
Chrome、VS Code 已经原生 Wayland,所以没问题。
飞书、ChatGPT 等 Electron 应用必要时可以测试:
application
–enable-features=UseOzonePlatform
–ozone-platform=wayland
–enable-wayland-ime
例如飞书:
/usr/bin/bytedance-feishu-stable
–enable-features=UseOzonePlatform
–ozone-platform=wayland
–enable-wayland-ime
如果确认清晰,再修改对应 .desktop。
但这里有一个重要原则:
不要为了强制 Wayland 到处乱改 StartupWMClass / desktop ID。
我们后来在 Termius 上验证了:乱复制/改名 .desktop 反而可能制造重复 Dock 图标。
应用图标匹配问题最好单独针对 app_id 排查。
- Fcitx5 + Rime Ice
虽然它不属于纯主题,但这次桌面迁移的一部分最终也落地了:
Fcitx5 + Rime + 雾凇拼音 + Wayland
候选数量可以:
nano ~/.local/share/fcitx5/rime/default.custom.yaml
写:
patch: “menu/page_size”: 9
然后:
fcitx5-remote -r
Fcitx5 候选框在 150% 分数缩放下如果有点糊,不是 Rime Ice 词库的问题,而主要是 Fcitx5 Classic UI / DPI 渲染问题。
- 最终完成效果
整套环境最后可以概括成:
Ubuntu 24.04
GNOME 46
Wayland
150% HiDPI
│
├── GNOME Shell
│ ├── Catppuccin Dark
│ ├── Blur My Shell
│ ├── Just Perfection
│ └── Papirus
│
├── Applications
│ └── 原生浅色 Yaru / libadwaita
│
├── Dock
│ ├── Bottom
│ ├── Floating
│ ├── Fixed transparency
│ ├── No blur
│ └── Faster animation
│
└── Terminal
├── zsh
├── Starship
├── zoxide
├── eza
├── bat
├── fzf
├── btop
└── Catppuccin Mocha
最终的审美原则我觉得也很适合写在博客结尾:
不要让每一个组件都“很炫”。
Shell、Dock 和 Terminal 负责氛围;应用窗口负责阅读和工作。 毛玻璃只用于静态 UI;高频动画区域优先保证流畅。 美化的终点不是“看起来改得很多”,而是每天打开电脑时觉得舒服,并且不会妨碍工作。
这套比传统那种“全透明 + 全黑 + Conky + 满屏动画”的 Linux rice 更适合长期工作机喵。