org.gnome.desktop.wm.preferences
是 GNOME 桌面环境中用于管理窗口管理器(Window Manager)配置的 GSettings schema。它定义了窗口管理器的核心行为和视觉样式,是 GNOME 桌面环境与窗口管理器(如 Mutter 或 Metacity)交互的关键配置接口。
核心作用
该 schema 通过 GSettings API 存储和管理窗口管理器的全局设置,包括但不限于:
- 标题栏字体:控制窗口标题栏的字体、大小和样式(如
titlebar-font
)。 - 按钮布局:定义最小化、最大化、关闭按钮的排列顺序和位置(如
button-layout
)。 - 工作区设置:管理默认工作区数量、命名和切换行为(如
num-workspaces
、workspace-names
)。 - 交互行为:配置双击标题栏、鼠标中键粘贴等操作的响应方式(如
action-double-click-titlebar
)。 - 主题与样式:关联窗口边框、按钮样式等视觉元素(如
theme
)。
底层实现
- GSettings Schema 文件:
- 定义在
/usr/share/glib-2.0/schemas/org.gnome.desktop.wm.preferences.gschema.xml
。 - 包含键值对的类型、默认值和描述,例如:
<key name="titlebar-font" type="s"> <default>'Cantarell Bold 10'</default> <summary>Titlebar font</summary> <description>Font used for window titlebars.</description> </key>
- 定义在
- 窗口管理器集成:
- GNOME 的默认窗口管理器(如 Mutter)会读取此 schema 的配置,动态调整窗口装饰(标题栏、按钮等)。
- 修改配置后,需重启窗口管理器(如通过
Alt+F2
输入r
)或重新登录系统生效。
- 用户交互工具:
- 命令行:通过
gsettings
工具直接读写配置(如gsettings set org.gnome.desktop.wm.preferences titlebar-font 'Ubuntu Bold 12'
)。 - 图形界面:使用
dconf-editor
或 GNOME Tweaks 工具可视化调整设置。
- 命令行:通过
关键配置项示例
配置项 | 类型 | 默认值 | 作用 |
---|---|---|---|
titlebar-font | 字符串 | 'Cantarell Bold 10' | 控制标题栏字体 |
button-layout | 字符串 | ':minimize,maximize,close' | 定义按钮顺序和位置(冒号分隔左右区域) |
num-workspaces | 整数 | 4 | 默认工作区数量 |
action-double-click-titlebar | 字符串 | 'toggle-maximize' | 双击标题栏的动作(最大化/还原) |
与 Qt 应用的兼容性
Qt 应用默认使用系统标题栏,但若应用通过代码隐藏系统标题栏(如使用 Qt::FramelessWindowHint
),则需手动同步系统设置:
- Qt 代码示例:
// 读取系统标题栏字体 QFont systemFont; systemFont.fromString(QGuiApplication::style()->standardFont().toString()); titleLabel->setFont(systemFont); // 手动设置按钮尺寸 QPushButton* closeBtn = new QPushButton("×", this); closeBtn->setFixedSize(40, 30); // 宽度40px,高度30px
总结
org.gnome.desktop.wm.preferences
是 GNOME 桌面环境中窗口管理器的核心配置接口,通过 GSettings 管理全局设置。用户可通过命令行或图形工具调整标题栏字体、按钮布局等参数,部分设置需重启窗口管理器或系统生效。对于自定义标题栏的 Qt 应用,需手动同步系统配置以确保一致性。