每日壁纸

Ubuntu 桌面与开发环境软件推荐

Published on
/24 mins read/---

装好 Ubuntu 之后,摆在眼前的是一套原生 GNOME 桌面:左上角的「活动」、工作区切换、dash-to-dock 之类的默认行为……说实话,用久了还是不太顺手。

于是我花了一晚上做了一轮配置,最后整套下来基本贴近 macOS 的手感了。

不过写到一半我意识到,单纯堆软件并不能让桌面变好用。真正决定体验的是四件事:

  • 视觉统一 —— 主题、图标、字体、窗口按钮位置看起来像一套东西
  • 操作顺手 —— 窗口布局、启动器、快捷键符合肌肉记忆
  • 开发高效 —— 命令行工具链和编辑器配置到位
  • 系统稳定 —— 少装常驻程序,不折腾出难排查的问题

这篇文章就按这四条来组织。每一款工具我都会说明为什么选它,也会写清楚它的坑在哪。

NOTE

这份清单是我个人的取舍,不一定适合所有人。终端、启动器和输入法部分尤其主观, 建议按自己的习惯挑着抄。

🎨 桌面美化

主题源:GNOME Look

GNOME 的主题、图标、扩展基本都能在 GNOME Look 找到,这是一个聚合社区,按分类浏览比较方便。

选用 WhiteSur

最终选的是 WhiteSur,一个高仿 macOS Big Sur 风格的 GTK 主题,配套的图标和扩展也很完整。

整体思路是:先让系统看起来像 Mac,再让操作习惯像 Mac。

不过这里有个重要提醒:WhiteSur 属于第三方 GTK 主题,GNOME 大版本更新之后可能出现样式不匹配,甚至和系统自带组件打架。

所以我的做法是先调系统设置,再决定要不要装全套主题:

  1. 先把 Dock 位置、窗口按钮位置、字体、图标、快捷键这些系统原生可调项改好
  2. 觉得还不够像,再装 WhiteSur

这样系统升级后排查问题会容易很多 —— 少一层第三方依赖,就少一层不确定性。

GNOME Tweaks

集中管理主题、图标、字体和窗口行为:

sudo apt update
sudo apt install gnome-tweaks

启动:

gnome-tweaks

TIP

Tweaks 里最常改的几项:外观里切换浅色/深色主题,字体里调整界面缩放, 顶栏里把「时钟」显示成秒,窗口里设置标题栏按钮位置为左侧(Mac 习惯)。

Extension Manager —— 扩展管理

GNOME 扩展直接从浏览器装比较零散,装多了也难以排查。 Extension Manager 提供图形界面来搜索、安装和管理扩展:

sudo apt install gnome-shell-extension-manager

IMPORTANT

不要一次性装十几个扩展。 扩展之间可能互相冲突,而且每次 GNOME Shell 大版本升级后,都可能有一批扩展直接失效。建议只保留真正在用的几个, 并且每次系统升级后花十分钟检查一遍。

🪟 窗口管理:Tiling Shell

这是我认为性价比最高的一个扩展。

Tiling Shell 让窗口按预设布局自动排列。写代码时一侧放 IDE、另一侧放终端或浏览器,比反复拖窗口省事得多 —— 这正是我原来在 macOS 上用窗口管理工具的痛点。

TIP

装好之后建议先设一个全局快捷键来切换平铺模式。 另外,GNOME 自带的工作区在多屏场景下也值得配合使用: 一个工作区放 IDE,一个放浏览器和终端。

如果你更追求纯键盘操作,也可以研究 PaperWM 这类更有个性的扩展。但 Tiling Shell 的「预设布局」对多数人来说已经够用了。

💻 终端

终端程序选择

Linux 上的终端选择实在太多,我简单对比了几个常见选项:

终端特点适合谁
kittyGPU 加速,渲染性能强,配置简单,无需登录追求性能与隐私的人
WarpRust 编写,颜值高,自带 AI 补全、块编辑等特性,需要登录账号愿意接受登录、想要现代体验的人
GhosttyZig 编写,跨平台原生外观,配置即代码在意「原生感」和性能的人
HyperElectron 实现,界面好看,插件丰富,但流畅度一般喜欢可定制 UI 的人
Terminator老牌分屏终端,外观朴素,但分屏功能稳定只需要分屏、不在乎外观的人

IMPORTANT

介意隐私的话选 kitty。 Warp 需要登录才能使用,这本身就是一道信任门槛: 开源状态、账号要求、遥测和命令内容的处理是四个不同的问题, 不能用「它开源」来一笔带过。Warp 的官方隐私文档对崩溃报告、应用分析 以及相关隐私开关都有说明,且会随版本变化 —— 建议用之前先看一眼当前的 隐私政策和设置,再决定要不要用。kitty 则完全离线可用,没有任何账号或遥测。

我最后留在了 kitty —— 理由很简单:不想为了一个终端再注册一个账号。

TIP

顺带一提,站内也写过一篇 Ghostty 的深度剖析, 讲清楚了它「一套 Zig 核心 + 两套外壳」的架构, 对理解现代终端模拟器的取舍挺有帮助。

🐚 Shell:zsh + Oh My Zsh + Starship

默认的 bash 够用,但 zsh 的补全和主题生态更丰富。装 zsh:

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

安装脚本会自动把默认 shell 改成 zsh,重新登录后生效。

插件

Oh My Zsh 本身带了不少插件,但下面这两个是真正离不开的,需要手动克隆:

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
  • zsh-autosuggestions —— 根据历史命令给出灰色内联建议,按 → 或 End 补全。
  • zsh-syntax-highlighting —— 语法高亮,命令拼错会直接标红。

WARNING

两个插件的加载有顺序要求:zsh-autosuggestions 必须在 zsh-syntax-highlighting 之前加载, 否则高亮会覆盖掉补全建议的样式。

让 Starship 接管提示符

如果同时用 Node.js、Python、Go、Rust 这类多语言工具链,我会倾向于让 starship 来渲染提示符 —— 它能显示当前目录下的运行时版本。

安装:

curl -sS https://starship.rs/install.sh | sh

关键是把 Oh My Zsh 的主题置空,避免两套主题同时争夺提示符:

ZSH_THEME=""
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)

语法高亮插件继续放在插件列表末尾。

再补一个我常用的别名:

alias lsblk="lsblk -e 7"

lsblk -e 7 用于排除 loop 设备,减少 Snap 等场景下可能出现的循环设备信息。 如果还想过滤 RAM 块设备,需要另行指定对应的设备主号 —— -e 7 并不包含这一层含义。

⚡ Shell 工具链

NOTE

如果整篇文章只允许我加一组软件,我会选下面这些。 它们对每天写代码的帮助,往往比桌面动画或图标主题更大 —— 而且基本不依赖桌面环境,以后换成 Fedora、Arch 或者远程 Linux 服务器也能继续用。

fzf + zoxide —— 模糊搜索与目录跳转

fzf 是通用的命令行模糊查找器,zoxide 则会记住你常去的目录:

sudo apt install fzf
sudo apt install zoxide

zoxide 也可以按官方安装说明用脚本装,然后在 .zshrc 里启用:

eval "$(zoxide init zsh)"

日常效果就是可以直接 z project 跳到常用项目目录,不用再敲很长的 cd 路径。

ripgrep + fd + bat —— 搜索、查找、预览

  • rg(ripgrep):快速搜索代码内容
  • fd(fd):更顺手地查找文件
  • bat(bat):带语法高亮的文件查看器,可替代不少 cat 场景
sudo apt install ripgrep fd-find bat

TIP

Ubuntu 仓库里 fd 和 bat 的可执行文件名分别是 fdfind 和 batcat (避免和系统自带命令冲突),具体取决于发行版打包方式。加个别名就顺手了:

alias fd='fdfind'
alias bat='batcat'

mise —— 多语言运行时版本管理

mise 可以统一管理 Node.js、Python、Go 等工具的版本,并按项目指定版本。相比每种语言装一套独立版本管理器,集中管理会清爽很多。

curl https://mise.run | sh

NOTE

不过已有成熟的 nvm、pyenv、rustup 工作流,没必要全部推倒重来。 挑一个你用得最多的语言交给 mise 管理,其余保持原样即可。

btop —— 终端资源监控

sudo apt install btop

CPU、内存、磁盘、网络和进程信息一屏查看。相比反复打开多个图形监控工具,它更适合放在 kitty 的另一个分屏里。

一套可以直接参考的组合

场景推荐组合
Shellzsh + Oh My Zsh + Starship
命令提示zsh-autosuggestions + zsh-syntax-highlighting
文件和目录fd + fzf + zoxide
代码搜索ripgrep
文件预览bat
运行时管理mise,或保留现有方案
系统监控btop

🧰 效率工具

启动器:先用系统自带的 GNOME 搜索

按 Super 键打开概览,直接打字就能搜应用、搜文件、跑命令 —— 这已经是很多第三方启动器能做到的最好状态了。

GNOME 自带的搜索器(GNOME Shell 的搜索)能力其实很完整:

  • 搜应用:输入应用名首字母即可,不需要记全名
  • 搜文件:基于 Tracker 索引,能按文件名和内容找东西
  • 搜设置:设置项也能直接搜到,改个选项不用翻层级菜单
  • 直接算数:输入 1024*1024 会给出计算结果
  • 快捷键优先:可以自定义 Super 键行为,或用 Alt+Space 单独唤起搜索

TIP

我的建议是先用系统自带的,别急着装第三方。 少一个常驻进程,就少一点内存占用和 Wayland 兼容性的麻烦; 而且 GNOME 搜索跟概览、通知这些原生组件的配合是最顺滑的。 如果用了几天确实觉得不够用,再往下看 —— 换启动器很容易,养成新习惯很难。

如果系统自带的不够用:Albert 或 Ulauncher,选一个

只有当系统搜索满足不了需求时(比如想要全局快捷键更自由、书签和计算器插件、或者自定义动作脚本),才需要换第三方启动器。

这两个定位几乎重合,二选一就够了,别同时装一堆启动器。

  • Albert —— 输入几个字母就能搜到应用、文档、书签,还能直接执行计算(输入 1024*1024 直接出结果)
  • Ulauncher —— 扩展生态更活跃,模糊搜索和自定义动作做得很细

Albert 在 Ubuntu 上可以通过 openSUSE 的 OBS 源安装:

https://software.opensuse.org/download.html?project=home:manuelschneid3r&package=albert

装好后建议去设置里启用 Dracula 主题,跟整体配色更搭。

Flameshot —— 截图标注

Flameshot 是我使用频率最高的工具之一。支持区域截图、箭头、画笔、马赛克、文字标注,截图后可以直接复制到剪贴板。

sudo apt install flameshot

IMPORTANT

Wayland 下的行为要靠自己验证。 Flameshot 官方文档仍把 GNOME Wayland 支持 列为需要留意的兼容场景,记录了截图权限、门户服务(portal)和快捷键相关问题。 所以装完不要假定一切正常:先确认 Ubuntu 和 GNOME 版本,再配置快捷键, 然后实际测试一遍截图和区域选择是否工作。

另外,Wayland 下普通应用无法直接「读」别的窗口内容, 需要走 GNOME 的截图管道,这和 X11 下的机制不同。

如果经常需要滚动截图或长网页截图,可以另外比较 ksnip;如果只是普通区域截图和标注,Flameshot 没必要换。

录屏动图:Kooha

Kooha 是一个基于 GTK 的录屏工具,可以直接导出 GIF,也支持 WebM、MP4 和 Matroska。

sudo apt install kooha

至于选哪个,其实按需求来:

  • 只是想要个轻量录屏工具、直接出图 → Kooha
  • 需要更完整的直播、编码和录制控制 → OBS

CopyQ —— 剪贴板历史

CopyQ 用来管理剪贴板历史,复制过的东西都能翻出来,支持搜索、分类和脚本。写文档时经常需要复用前面复制过的片段,这工具能省下不少来回切换的功夫。

sudo apt install copyq

同样支持 Dracula 主题。

WARNING

剪贴板管理器是敏感信息的主要泄漏点之一。 建议专门配置一下: 不要长期保存密码、访问令牌、SSH 私钥等敏感内容,定期清理历史记录, 并确认剪贴板管理器是否会把内容持久化落盘 —— 而不是只存在内存里。

⌨️ 输入法:Fcitx5

这是整套配置里最值得单独说的一块。

Ubuntu 默认的 ibus 在几个场景下体验很差:

  • Wayland 下候选框位置经常飘
  • VSCode、Electron 这类应用里候选框显示异常,甚至直接输入失灵
  • 自定义词库、皮肤等配置项少得可怜

Fcitx5 提供了模块化的输入引擎和多种前端,适合需要自定义拼音、Rime 词库及快捷键的用户。

安装:

sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk3 fcitx5-frontend-qt5
im-config
fcitx5-configtool

配置要点

  1. im-config 选定 fcitx5 —— 运行 im-config 后在弹出的界面里选择 Fcitx5,确定。
  2. 注销重登 —— 这一步不能省,im-config 的改动要重新登录才会生效。
  3. 配置面板里添加输入引擎 —— 运行 fcitx5-configtool,在「输入法」标签页里添加「拼音」或「Rime(中州韵)」。
  4. 设置切换快捷键 —— 默认是 Ctrl+Space,可以在「全局快捷键」里改成顺手的组合。

NOTE

换输入法不等于所有 Wayland 问题都能解决。不同桌面会话、应用工具包 和版本之间仍然可能存在兼容性差异,隐私表现也要结合具体的 输入引擎和配置来判断 —— 装了之后自己测一遍最靠谱。

TIP

VSCode 里输入法不生效? 这多半是 Electron 应用读不到 Fcitx5 环境变量导致的。 可以试试安装 fcitx5-frontend-gtk4,或者在启动 VSCode 前手动导出 GTK_IM_MODULE=fcitx 和 QT_IM_MODULE=fcitx 两个环境变量。

💻 编辑器与开发环境

VS Code / VSCodium

如果日常用 VS Code,建议单独配一下:

  • VS Code —— 官方发行版,扩展兼容性、调试和远程开发体验完整
  • VSCodium —— 社区构建版本,默认不包含微软发行版的部分专有定制,但部分微软扩展的获取和兼容性需要留意

我的建议:以开发效率为主选 VS Code;以开源构建、减少特定厂商集成为主,再考虑 VSCodium。

TIP

VS Code 的快捷键和设置我整理过一份,可以直接参考这里。

Docker 与 Dev Containers

对开发机来说,这比再换一个终端更能提升效率。

Docker 用于容器化运行服务;Dev Containers 则能让每个项目使用独立的开发环境,避免不同项目的 Node.js、Python、系统依赖互相污染。项目依赖复杂、经常切换仓库时尤其值得配置。

sudo apt install docker.io
sudo usermod -aG docker $USER

WARNING

把用户加入 docker 组基本等同于给了该用户 root 权限 —— 因为可以挂载宿主机根目录进容器。这一点要清楚,再决定要不要加。

日常的 Linux 运维命令,可以看这份整理。

📦 应用分发与权限管理

Flatpak 可以作为 Ubuntu 原生 APT、Snap 之外的补充分发方式;Flatseal 则能图形化查看和调整 Flatpak 应用的权限。

sudo apt install flatpak
sudo apt install flatseal

NOTE

不建议为了追求统一而强制所有软件都走一种渠道。 系统组件优先用 Ubuntu 官方仓库,桌面应用则按更新速度、 沙箱需求和兼容性来选。

🔄 同步与备份

Syncthing 适合在 Linux、macOS 和其他设备间同步项目资料、配置文件及个人文档 —— 点对点同步,不经过中心服务器。

sudo apt install syncthing

WARNING

同步不等于备份。 Syncthing 是点对点同步,误删和错误覆盖也会同步过去 —— 一台机器上误删了文件,另一台跟着一起没了。重要数据仍然要配合 独立的备份方案,比如定期快照或异地备份。

代码本身则交给 Git 管理,本地提交 + 远端仓库双保险。

🔐 多设备 SSH

多台设备之间互相 SSH,密钥、Agent、ssh_config 怎么组织才不用反复重配? 我已经把这部分单独写成一篇文章:

TIP

👉 多设备 SSH 鉴权:一次配置,处处通行 一把密钥 + 一个 Agent + 一份共享配置,覆盖 ~/.ssh/ 目录结构、公钥私钥分发、Agent 免密和 ssh_config 组织。

📋 最终配置清单

按前面的取舍收敛下来,我最终留下的组合是这样:

场景最终选择
主题WhiteSur + GNOME Tweaks
窗口管理Tiling Shell 或原生平铺功能
启动器系统自带 GNOME 搜索;不够用再换 Albert/Ulauncher
终端kitty
Shellzsh + Oh My Zsh + Starship
命令行效率fzf + zoxide + ripgrep + fd + bat
剪贴板CopyQ
编辑器VS Code + Dev Containers
多设备 SSH一把 ed25519 密钥 + ssh-agent + 共享 ssh_config
备份同步Git + 独立备份方案;跨设备同步可选 Syncthing

小结

整套配置下来,Ubuntu 桌面基本能让我忘记自己在用 Linux:

  • 视觉上:WhiteSur + GNOME Tweaks 调出 macOS 的观感
  • 操作上:Tiling Shell 管窗口,kitty + zsh 管终端
  • 开发上:fzf + zoxide + ripgrep + fd + bat 这套命令行工具链,才是每天敲代码时真正天天用得上的部分
  • 连接上:多设备 SSH 单独写了一篇专门的方案,换机器不用重新配
  • 输入上:Fcitx5 缓解了 Wayland 和 Electron 下的老大难问题

想记住的不是这份清单本身,而是那个取舍原则:先把系统原生能调的调好,再考虑第三方;少装常驻程序;每个工具都问一遍「它解决了我什么具体问题」。

安装快乐