GNOME 设定参考

To celebrate the release of GNOME 50 “Tokyo”

时常有朋友希望 replicate 我的桌面环境。最好的自然是甩过去一份 NixOS 配置1,次一点的则是谆谆告诫对方 Linux desktop 是自由的、应像探索自身 fetish 一般享受这种「折腾」过程。不过我想一般用家未必深谙此道,教师爷口气也颇令人反感,而手把手 setup 又纯纯浪费时间,于是开帖本文,也算是一种记录。

废话两则 #

点此跳过

为什么我们需要 「Hot Corner」? #

符合手感。

对于方形或长方形屏幕,无须注视屏幕计算移动距离,往大致方向甩鼠标一定可以正确定位或触发,是最直觉的操作。在 Windows 10 及之前的现代版本,开始菜单位于左下角,是该系统的标志性按钮;macOS 支持设定四个边角的功能,可以方便地呼出启动台、调度中心,亦或是锁定屏幕。

同样地,历史上 GNOME 2 将应用菜单放在了左上角,GNOME 3 及之后的版本则用于检视 Activities,与 Super 键对应,“在任何时候获得概览,切换或启动应用,搜索您计算机上的任何东西”2,其界面如下图所示。

Screenshot of GNOME Activities

Activities 可视作 macOS 调度中心、启动台、Dock 栏和 Spotlight 的集合,习惯后极为顺手且效率很高。「Type to search」的操作也被带到其它 GNOME 应用中,如在 Nautilus 浏览文件时,同样可以按任意键启动搜索,按下 /~ 输入路径。

Super 键有极高的使用频率,除了用于呼出概览及各种热键外,按住后可以左键移动窗口、滚轮切换工作区、右键调出菜单。

dconf #

类似 Windows 的注册表,作为 GSettings 的后端,集中存储 GNOME 桌面环境及部分软件的配置。一般位于 ~/.config/dconf/user 下,可使用 dconf-editordconf dump / 指令查看。建议定期备份。

基础设置 #

主题 #

图标包推荐 Tela-icon-theme,指针推荐 KDE Breeze 或 Capitaine 样式。

字体个人以 Noto Sans 为主,等宽使用 Fira Code,使用 200% 整数缩放并关闭 hinting,fontconfig 使用 ArchWiki 的示例。

对 GTK 2/3 应用维持默认 Adwaita 主题。Wayland 下 Qt 应用需要 QAdwaitaDecorations 以获得正确的 CSD 样式。

热键 #

可在 Settings > Keyboard 中逐一设置。

dconf 配置
 1[org/gnome/desktop/wm/keybindings]
 2close=['<Super>q']
 3maximize=['<Control><Super>Up']
 4minimize=['<Control><Super>Down']
 5move-to-monitor-down=['<Super><Shift>Down']
 6move-to-monitor-left=['<Super><Shift>Left']
 7move-to-monitor-right=['<Super><Shift>Right']
 8move-to-monitor-up=['<Super><Shift>Up']
 9move-to-workspace-down=['<Control><Shift><Alt>Down']
10move-to-workspace-left=['<Super><Shift>Page_Up', '<Super><Shift><Alt>Left', '<Control><Shift><Alt>Left']
11move-to-workspace-right=['<Super><Shift>Page_Down', '<Super><Shift><Alt>Right', '<Control><Shift><Alt>Right']
12move-to-workspace-up=['<Control><Shift><Alt>Up']
13show-desktop=['<Super>d']
14switch-applications=['<Super>Tab']
15switch-applications-backward=['<Shift><Super>Tab']
16switch-group=['<Super>Above_Tab', '<Alt>Above_Tab']
17switch-group-backward=['<Shift><Super>Above_Tab', '<Shift><Alt>Above_Tab']
18switch-panels=['<Control><Alt>Tab']
19switch-panels-backward=['<Shift><Control><Alt>Tab']
20switch-to-workspace-1=['<Super>Home']
21switch-to-workspace-last=['<Super>End']
22switch-to-workspace-left=['<Super>Left']
23switch-to-workspace-right=['<Super>Right']
24switch-windows=['<Alt>Tab']
25switch-windows-backward=['<Shift><Alt>Tab']
26toggle-maximized=['<Super>m']
27unmaximize=['<Super>Down']
28
29[org/gnome/mutter]
30overlay-key='Super_L'
31
32[org/gnome/mutter/keybindings]
33toggle-tiled-left=['<Control><Super>Left']
34toggle-tiled-right=['<Control><Super>Right']
35
36[org/gnome/mutter/wayland/keybindings]
37restore-shortcuts=@as []
38
39[org/gnome/settings-daemon/plugins/media-keys]
40custom-keybindings=['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/']
41home=['<Super>e']
42
43[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0]
44binding='<Control><Alt>t'
45command='ghostty'
46name='Terminal'
47
48[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1]
49binding='<Control><Super>t'
50command='ghostty'
51name='Terminal'
52
53[org/gnome/shell/keybindings]
54screenshot=['Print']
55show-screenshot-ui=['<Control><Alt>a']

杂项 #

启用中键粘贴
gsettings set org.gnome.desktop.interface gtk-enable-primary-paste true
wm 相关

可在 GNOME Tweaks 和 Settings > Multitasking 中对照设置。

 1[org/gnome/desktop/wm/preferences]
 2button-layout='close,minimize:'
 3num-workspaces=1
 4workspace-names=@as []
 5
 6[org/gnome/mutter]
 7attach-modal-dialogs=true
 8center-new-windows=true
 9dynamic-workspaces=true
10edge-tiling=true
11workspaces-only-on-primary=true

拓展 #

GNOME Shell 魅力时刻。原生 GNOME 算是开箱即用,克制的拓展能更进一步解决痛点、增强体验。

Tier 1: Must-have #

基于 AppIndicator 的托盘图标支持。

适用多显示器用户,个人习惯全部设置为「当前显示器 (Current)」。

移除 Window/App Switcher 的 0.15s 延迟。

GNOME Shell 自带拓展,启用即可。

个人习惯删除所有文件夹并按字母顺序排列应用。

临时不熄屏。

极简网速显示。

加回 GNOME 45 中移除的窗口标题,推荐设置如下:

1[org/gnome/shell/extensions/window-title-is-back]
2ease-time=0
3fixed-width=false
4show-app=true
5show-icon=false
6show-title=false

Tier 3: QoL Improvements #

Triple Buffering 一样,理论上能起到拉高 GPU 频率的效果。

KDE Connect 的兼容实现,好用。

Tier 4: Optional / Fancy #

增加类似 COSMIC Desktop 的窗口边框效果。

GNOME Shell 自带拓展,个人习惯。

向屏幕下方最小化窗口,非常漂亮的非线性动画。

1[org/gnome/shell/extensions/scale-minimize]
2animation-curve=0
3bounce-scale=1.0
4duration=200

在顶栏滚动切换工作区,省去按 Super 键。

Extra: For Laptop Users #

Quick Settings 中增加自动亮度开关。

Quick Settings 中 WiFi 菜单增加「断开连接」按钮。

基于 envycontrolNVIDIA Optimus 切换。

Extra: For Tablet Users #

非常好屏幕键盘,

使我的屏幕旋转。

TODO: CSD or SSD? #

树外补丁 #

GNOME 的发版周期非常稳定,但开发速度绝对算不上快,之前有过长期追踪一些待合并的特性、未发版的修复并给相应软件包打补丁的时间。

截至写作时 GNOME 50 处在相当完善的水平,仅对 gnome-shell 应用 !4035 提升动画效果。

碎碎念 #

完全使用 GNOME 已经有很多年了 (fr. Late 2019),中间也曾短暂尝试过 KDE 等桌面环境,最终还是回归 GNOME 的这套 workflow — my fingers are absolutely hardcoded to it3.

也许之后会迁移到 Niri,有类似的 overview 和工作区设计、能够兼容现有的热键,但也只是因为使用 GNOME 太久了,需要尝试一些新的环境作为备选,而非锁定在特定生态中。

同样地,对于看到这里的你,如果仍在使用专有操作系统,请一定要尝试一种 *nix 分支 for desktop computing,开放的源代码及生态能够带来更自由的体验。


  1. 笔者仍在使用 Arch Linux,尽管已经有一份 NixOS 实作,但 Nix 使用不算熟练 ↩︎

  2. 引自 gnome.org 的中文介绍 ↩︎

  3. quotes from Linus Torvalds when he talked about text editors ↩︎