← 返回博客

Linux美化日记

愿你归来半生,主题不是默认

2026-09-11约 9 分钟读完

Ubuntu 24.04 GNOME 工作站美化方案

  1. 最终环境

这次最终环境是:

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 + 克制的半透明。

这种方案比全局强制深色更适合白天长时间办公。


  1. 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


  1. GNOME 基础工具

安装:

sudo apt update

sudo apt install -y
gnome-tweaks
gnome-shell-extension-manager
gnome-shell-extensions

启动:

gnome-tweaks extension-manager


  1. 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

开始调。


  1. 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。


  1. 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 + 短动画

是这次体验下来更适合工作机的方案。


  1. 系统应用保持浅色

我们最终没有走“所有应用全黑”的路线。

设置:

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 自己用深色主题。


  1. 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


  1. 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 实际上更协调。


  1. 字体踩坑总结

这是这次最值得记一笔的地方。

我们曾经设置:

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 使用。


  1. Zsh

安装:

sudo apt install -y zsh

切默认 Shell:

chsh -s “$(which zsh)”

注销重新登录。

确认:

echo $SHELL ps -p $$ -o comm=

应该:

/usr/bin/zsh zsh


  1. Conda 与 Zsh

原有:

>>> conda initialize >>>

…

<<< conda initialize <<<

保持不动。

这是 Conda 自动维护的区域,不建议手改内部内容。

为了避免 Conda 自己的:

(base) (ct_env)

和 Starship 重复显示环境:

conda config –set changeps1 false

这样环境信息统一交给 Starship。


  1. 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。


  1. 最终 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 和模块舒服很多。


  1. 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


  1. 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


  1. 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

自动获得高亮。


  1. 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


  1. btop

安装:

sudo apt install -y btop

使用:

btop

用于替代大部分日常 top 使用场景。


  1. 最终 .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

都只写一次。

我们之前重复初始化过,后来清理掉了。


  1. 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 基本统一了。


  1. 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 排查。


  1. 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 渲染问题。


  1. 最终完成效果

整套环境最后可以概括成:

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 更适合长期工作机喵。

读到这里,谢谢你的时间。

如果还想继续读下去,
新的文章和闪念会送进 RSS。

订阅这本档案 ↗