# 6.9 GNOME

> **警告**
>
> 目前因 [Bug 287955 - x11/gdm: The user cannot log in; the system hangs at the login screen in gdm 47](https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=287955)，gdm 无法正常使用，会卡在登录界面，`startx` 正常。
>
> 虚拟机正常。

GNOME 过去曾是 GNU 项目的组成部分，旨在开发一套功能完备的桌面环境，目前主要由红帽公司主导开发与维护。作为 Linux 与类 Unix 系统中广泛采用的主流桌面环境之一，GNOME 以其简洁现代的设计理念著称。需注意的是，在英语发音中，GNOME 的首字母 `G` 不发音（音标为 /ˈnoʊm/）。

## 安装

* 使用 pkg 安装：

```sh
# pkg install xorg gnome noto-sc
```

* 或使用 Ports 安装：

```sh
# cd /usr/ports/x11/xorg/ && make install clean
# cd /usr/ports/x11/gnome/ && make install clean
# cd /usr/ports/x11-fonts/noto-serif-sc/ && make install clean
```

* 软件包说明：

| 软件      | 用途         |
| ------- | ---------- |
| xorg    | X11        |
| gnome   | GNOME 主程序  |
| noto-sc | 思源黑体（简体中文） |

### 附录：精简安装

* 使用 pkg 安装：

```sh
# pkg install xorg-minimal gnome-lite wqy-fonts xdg-user-dirs
```

* 或者使用 Ports 安装：

```sh
# cd /usr/ports/x11/xorg-minimal/ && make install clean
# cd /usr/ports/x11/gnome/ && make install clean
# cd /usr/ports/x11-fonts/wqy/ && make install clean
# cd /usr/ports/devel/xdg-user-dirs/ && make install clean
```

* 软件包解释

| 包名             | 作用           |
| -------------- | ------------ |
| `xorg-minimal` | 精简版 X 图形环境   |
| `gnome-lite`   | 精简版 GNOME 桌面 |

#### 附录：对 GNOME 完整版本的精简

如果安装了完整版本，也可以使用 pkg 包管理器卸载自带的游戏软件：

```sh
# pkg delete gnome-2048 gnome-klotski gnome-tetravex gnome-mines gnome-taquin gnome-sudoku gnome-robots gnome-nibbles lightsoff tali quadrapassel swell-foop gnome-mahjongg five-or-more iagno aisleriot four-in-a-row
```

![Gnome 精简安装](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-8ac6cf719e96023d4606d285127f285b63276c02%2Fgnome-lite.png?alt=media)

## 配置

还需要编辑文件系统挂载信息。

挂载 proc 文件系统，在 `/etc/fstab` 文件中添加内容如下：

```ini
proc /proc procfs rw 0 0
```

配置启动项：

```sh
# service dbus enable   # 设置 D-Bus 服务开机自启
# service gdm enable    # 设置 GDM 显示管理器开机自启
```

输入以下命令，将 GNOME 会话命令写入 `~/.xinitrc`，以便 `startx` 启动 GNOME：

```sh
$ echo "/usr/local/bin/gnome-session" > ~/.xinitrc
```

![FreeBSD Gnome](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-57b2df9e5402f073cb764589d6b2b8b3ef64d97a%2Fgnome1.png?alt=media)

默认情况下禁止 root 登录。

![FreeBSD Gnome](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-7d1c621248353e76aeb167730657b211d572e419%2Fgnome2.png?alt=media)

默认壁纸就是这样。

![FreeBSD Gnome](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-ca87237bb6ce019ec4b2044b8c346bf0b656df81%2Fgnome3-1.png?alt=media)

## 中文化

### GNOME 界面

本小节配置参数与用户 shell 无关，即使是 csh 也应如此配置。

使用文本编辑器打开 GDM 本地化配置文件 `/usr/local/etc/gdm/locale.conf` 以修改语言设置。

将原有内容替换如下：

```sh
LANG="zh_CN.UTF-8"         # 设置系统默认语言为简体中文 UTF-8
LC_CTYPE="zh_CN.UTF-8"     # 设置字符类型和编码为简体中文 UTF-8
LC_MESSAGES="zh_CN.UTF-8"  # 设置系统消息显示语言为简体中文 UTF-8
```

### 中文输入法

以下 `ibus`、`fcitx5` 二选一即可。

#### ibus

GNOME 捆绑的输入法框架是 `ibus`。

```sh
# pkg install zh-ibus-libpinyin
```

或者

```sh
# cd /usr/ports/chinese/ibus-libpinyin/
# make install clean
```

安装后运行初始化命令 `ibus-setup`。

然后：设置 → 键盘 → 输入源，点击“添加输入源”，选择“汉语（中国）”，加入“中文（智能拼音）”。

#### fcitx 5

参见输入法相关章节。

> **警告**
>
> IBus 是 GNOME 的依赖，不能卸载。也就是说可以不使用 IBus，但不能将其卸载，否则将卸载 GNOME 本体。

![FreeBSD Gnome](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-71f26da7c30725e637aca9a8d3f17c3b61aa81dd%2Fgnome4-1.png?alt=media)

## 优化系统

```sh
# pkg install gnome-tweaks
```

或者：

```sh
# cd /usr/ports/deskutils/gnome-tweaks/ 
# make install clean
```

## 一些不符合常规使用习惯的设置调整

GNOME 一直以不符合部分用户使用习惯著称，例如桌面不允许放置图标、右上角没有托盘等。~~这是不是和垃圾桶不能有垃圾、人不能在床上、门不能关、桌子上不能放东西有异曲同工之妙？~~

### 恢复 GNOME 顶栏的托盘图标

需要安装 Firefox 浏览器 `www/firefox` 及 Port `x11-chrome-gnome-shell`。

由于 [TopIcons Plus](https://extensions.gnome.org/extension/1031/topicons/) 已长期未更新，因此只能使用 [AppIndicator and KStatusNotifierItem Support](https://extensions.gnome.org/extension/615/appindicator-support/) 了。

![Gnome 恢复 GNOME 顶栏的托盘图标](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-7ced3722f9b238fe9eb2dc896875b570c1079932%2Fgnome3.png?alt=media)

![Gnome 恢复 GNOME 顶栏的托盘图标](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-9537161b3337d73a33c89af24e8ddadecebe3bd3%2Fgnome4.png?alt=media)

![Gnome 恢复 GNOME 顶栏的托盘图标](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-6669ca49ab1aaa54d4b0ced1851448f88a7c8512%2Fgnome5.png?alt=media)

![Gnome 恢复 GNOME 顶栏的托盘图标](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-43f009cf694d196b2c4cb8d215c4f7d9ebd085b1%2Fgnome6.png?alt=media)

![Gnome 恢复 GNOME 顶栏的托盘图标](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-cf44c292925d646370e3bca2c74637f90871b6eb%2Fgnome7.png?alt=media)

![Gnome 恢复 GNOME 顶栏的托盘图标](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-507186875900edc61d4f3fa5412becd6d10be1aa%2Fgnome8.png?alt=media)

#### 参考文献

* Abhishek Prakash. Getting the Top Indicator Panel Back in GNOME\[EB/OL]. \[2026-03-25]. <https://itsfoss.com/enable-applet-indicator-gnome>. 提供了恢复 GNOME 顶栏托盘图标显示的详细步骤与扩展安装指南。

### 在桌面放图标

扩展 [gnome-shell-extension-desktop-icons](https://extensions.gnome.org/extension/1465/desktop-icons/) 已经长期未更新，项目地址为：[Desktop Icons](https://gitlab.gnome.org/World/ShellExtensions/desktop-icons)。

可以使用 [Desktop Icons NG (DING)](https://extensions.gnome.org/extension/2087/desktop-icons-ng-ding/) 解决。安装方式同上。

![Gnome 在桌面放图标](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-2c8333ec111b87b10fa1fba379dc9581f8af8034%2Fgnome9.png?alt=media)

壁纸是我自己设置的。其他是默认的。

## 课后习题

1. 查找 GNOME 桌面环境的 Port 构建过程，分析其与 systemd 环境的历史关联，在 QEMU 中验证其在 FreeBSD 非 systemd 环境下的适配实现。
2. 选取 GNOME 的 IBus 输入法框架集成机制，重构最小化输入配置使其原生适配 Fcitx。
3. 修改 GNOME 桌面的默认扩展管理权限，验证其功能扩展行为变化。
