Compiz/配置

出自 ArchWiki

本文详细介绍了 Compiz 的高级配置。假定您已成功安装 Compiz 并具有基本的工作配置。有关安装、基本配置和故障排除的信息,请参阅 Compiz 文章。

设置存储选项

配置后端

注意
  • 根据您安装的软件包,并非所有 Compiz 后端都可用。
  • GConf 后端已从 Compiz 0.9.12 中删除 (修订 3991)。

默认情况下,Compiz 将其配置设置存储在纯文本文件 ~/.config/compiz-1/compizconfig/Default.ini 中。在 CCSM 中,这被称为平面文件配置后端

Compiz 也可以将其设置存储在 GSettings 或 GConf 数据库中。要更改 Compiz 保存其设置的方式,请打开 CCSM 并单击左侧列中的首选项选项卡。然后从后端下的列表中选择所需的后端。

您也可以通过编辑 ~/.config/compiz-1/compizconfig/config 文件手动更改后端。

编辑以下行

backend = ini
  • ini = 平面文件配置后端
  • gsettings = GSettings 配置后端
  • gconf = GConf 配置后端

编辑并保存文件后,更改将立即生效。无需注销。

配置文件

配置文件允许您轻松地在不同的 Compiz 设置集之间切换。要创建新配置文件,请打开 CCSM 并单击首选项选项卡。在配置文件下,单击加号添加新配置文件或减号删除配置文件。在 CCSM 中所做的所有更改都将写入当前配置文件。

配置文件特定于您正在使用的后端。例如,如果您正在使用 GSettings 后端,那么您创建的任何新配置文件都将是 GSettings 配置文件。如果您切换到不同的后端,则您当前的配置文件将无法工作,您将自动切换到该后端可用的配置文件。

注意:如果您看到多个名为Default的配置文件,这可能是因为您使用了多个后端,例如,您将拥有 ini 的默认配置文件和 GSettings 或 GConf 的默认配置文件。

窗口装饰主题

Emerald

提示:有关安装 Emerald 的信息,请参阅 Compiz#Extras
注意:某些主题可能会导致 Emerald 在选择时崩溃。请参阅 Compiz#Emerald crashes when selecting a theme

许多 Emerald 主题可在 compiz-themes.org 上下载。可以使用 emerald-theme-manager 程序安装、选择、删除和编辑 Emerald 主题。对于下载的主题,解压缩 tarball,然后使用主题管理器中的导入选项安装它。

Emerald 主题存储在两个位置

  • /usr/share/emerald/themes -- 系统
  • ~/.emerald/themes -- 用户

当前选定的 Emerald 主题被复制到 ~/.emerald/theme 目录中。

Emerald 设置(如窗口按钮脉冲)可以在 emerald-theme-manager 中配置,并写入 ~/.emerald/settings.ini 文件。

GTK 窗口装饰器

注意:Compiz 不必使用 GConf 或 GSettings 后端才能读取存储在 GConf 或 GSettings 数据库中的 Metacity 设置。

GTK 窗口装饰器可以编译为支持 Metacity 或 Marco 窗口管理器(取决于 Compiz 版本)。如果它使用此支持编译,则 Metacity 或 Marco 使用的主题也将被 GTK 窗口装饰器使用。如果 GTK 窗口装饰器未使用 Metacity 或 Marco 支持编译,则将使用内置的回退主题。

许多 Metacity 主题可在 gnome-look.org 上下载。下载后,应将其解压缩到诸如 /usr/local/share/themes (用于 Metacity) 或 ~/.themes (用于 Marco) 的目录中。

Compiz 0.9

Compiz 0.9 提供的 GTK 窗口装饰器可以使用 Metacity (版本 3) 支持进行编译。假设已编译此支持,请使用以下命令更改 Metacity 主题

  • 在 GNOME Flashback 会话中

首先,确保主题类型设置为 metacity

$ gsettings set org.gnome.metacity.theme type metacity

然后可以使用以下命令设置主题

$ gsettings set org.gnome.metacity.theme name theme-name
  • 在 MATE 会话中

使用以下命令

$ gsettings set org.mate.Marco.general theme theme-name
  • 在任何其他会话中

使用以下命令

$ gsettings set org.gnome.desktop.wm.preferences theme theme-name
Compiz 0.8

Compiz-Reloaded 上游 (版本 0.8.10 及更高版本) 提供的 Compiz 中包含的 GTK 窗口装饰器可以使用 Marco 支持进行编译。假设已编译此支持,请使用以下命令更改 Marco 主题

$ gsettings set org.mate.Marco.general theme theme-name

原始 Compiz 上游 (版本 0.8.9 及更低版本) 提供的 Compiz 中包含的 GTK 窗口装饰器可以使用 Metacity (版本 2) 支持进行编译。此 GTK 窗口装饰器版本期望主题被定义为 GConf 设置。假设已编译此支持,请使用以下命令更改 Metacity 主题

$ gconftool-2 -s /apps/metacity/general/theme -t string theme-name

KDE 窗口装饰器

可以使用 KDE systemsettings 面板下载、安装和管理 Kwin 主题。

工作区和视口

注意:曾经在 CCSM -> 常规选项 -> 桌面尺寸下有一个桌面数量选项,该选项可以与视口一起使用多个工作区(尽管这与许多 Compiz 插件(如Cube)不兼容)。从 Compiz 0.9.11 (修订 3857) 开始,桌面数量选项已被删除。

与许多其他窗口管理器不同,Compiz 不使用多个工作区。相反,它使用一个工作区,但将其拆分为多个称为视口的部分。有关更多信息,请参阅 [1]

视口的数量和布局可以在 CCSM -> 常规选项 -> 桌面尺寸中配置。更改水平虚拟尺寸将更改一行中视口的数量。更改垂直虚拟尺寸将添加或删除视口行。

如果您正在使用桌面立方体插件,您将无法使用通过增加垂直虚拟尺寸添加的视口行。要利用多行视口,请改用桌面墙插件。

键盘快捷键

以下是 Compiz 的默认键盘快捷键列表。

  • 切换窗口 = Alt+Tab
  • 切换到下一个桌面 = Ctrl+Alt+←
  • 切换到上一个桌面 = Ctrl+Alt+→
  • 移动窗口 = Alt+Left click
  • 调整窗口大小 = Alt+Right click

更详细的列表可以在 Compiz wiki 的 CommonKeyboardShortcuts 中找到,或者您可以随时查看插件的配置。

可以使用 CCSM 中的命令插件添加额外的快捷键。

边缘绑定

除了鼠标和按键绑定外,Compiz 还可以将命令分配给涉及屏幕边缘的某些操作,例如:将窗口拖动到屏幕边缘。例如:旋转立方体插件有一个选项,如果将窗口拖动到屏幕边缘,则切换到下一个视口。通常可以通过 CCSM 禁用边缘绑定,方法是取消选中插件设置部分中的边缘翻转选项,或禁用相关插件的绑定部分中屏幕图标旁边的操作。

插件

几乎所有 Compiz 功能都是使用插件实现的。必须启用某些插件才能实现标准窗口管理器功能 - 请参阅 Compiz#Enabling important plugins。此处讨论提供超出标准窗口管理功能的额外功能的插件。

Grid

如果您想并排比较两个窗口,方法是将它们拖到屏幕边缘,类似于 Windows 7 中引入的“Aero Snap”功能,请在 CCSM 中启用 Grid 插件。如果您正在使用桌面墙旋转立方体插件,则禁用该插件部分中的边缘翻转选项,以确保窗口在拖动到屏幕边缘时不会移动到下一个桌面。

提示
  • CCSM 中标记为捕捉窗口的插件仅为屏幕边缘增加了阻力。它不会调整拖动到屏幕边缘的窗口的大小。
  • Compiz 0.8 中的 Grid 插件不支持通过将窗口拖动到屏幕边缘来调整窗口大小。只能通过使用键盘快捷键来比较窗口。

Scale

Scale 插件提供了一个选项,用于查看当前视口中所有窗口的缩略图,类似于 KDE 中的“Present Windows”功能或 GNOME Shell 中的“Overview Mode”。启用插件后,可以通过将鼠标光标移动到屏幕的右上角来访问视图。可以在插件设置部分的绑定选项卡中配置活动角。

Widget Layer

Widget Layer 插件允许您将某些窗口定义为小部件。小部件窗口显示在屏幕的单独“层”上。当小部件层隐藏时,所有定义为小部件窗口的窗口都将图标化。默认情况下,小部件层使用 F9 键显示和隐藏。

要将窗口定义为小部件,请打开 CCSM 并导航到 Widget Layer 插件。单击行为选项卡,然后单击小部件窗口字段旁边的加号按钮。在出现的对话框中,从类型菜单中选择窗口标题。在字段中,输入您希望定义为小部件的窗口的标题,例如:galculator

屏幕放大

有两个 Compiz 插件可以提供放大功能。第一个是 Magnifier,它的作用很像放大镜(矩形框内的所有内容都将被放大)。可以通过在 CCSM 中启用插件并按 Super+m 来使用放大镜。

另一个插件称为增强桌面缩放。启用此插件后,按 Super 键并滚动鼠标中键将放大鼠标光标下方的桌面部分。

崩溃处理程序

最好在 CCSM 中启用崩溃处理程序插件。此插件确保,如果由于任何原因,Compiz 无法随会话启动或在会话期间的某个时刻崩溃,则将转储崩溃日志,并启动备用窗口管理器。要在发生崩溃时指定可以替换 Compiz 的窗口管理器,请单击崩溃处理程序插件,然后勾选启动其他窗口管理器选项。然后,在窗口管理器命令行字段中,输入启动所选窗口管理器的命令,例如:xfwm4 --replace

不使用 CCSM 配置 Compiz

Compiz 不必通过 CCSM 进行配置。可以通过直接编辑配置文件来更改设置。对于平面文件配置文件,这意味着对 ~/.config/compiz-1/compizconfig/Default.ini 文件或类似文件进行编辑更改。对于 GSettings 或 GConf 配置文件,这意味着使用 gsettingsgconftool-2 工具对 DConf 或 GConf 数据库进行更改。

平面文件示例配置

此示例配置的特性

  • Ctrl+Alt+[小键盘] 排列当前窗口。
  • 左下角和右下角显示任务栏。
  • 鼠标控制一切(除了打字)。
  • 一些效果。
[core]
as_active_plugins = core;session;glib;grid;notification;workarounds;place;put;wall;regex;blur;dbus;fs;inotify;widget;animation;resize;text;mousepoll;obs;expo;fade;move;staticswitcher;mag;scale;scaleaddon;
s0_hsize = 2
s0_vsize = 2

[wall]
as_show_switcher = false
s0_edgeflip_dnd = true
as_flip_down_edge = 

[expo]
as_reflection = false
as_vp_brightness = 100.000000
as_expo_edge = 
as_expo_button = Button9
as_mipmaps = true
as_zoom_time = 0.150000
as_vp_distance = 0.000000

[scale]
as_initiate_edge = 
as_initiate_all_button = Button8
s0_darken_back = false
s0_opacity = 100
s0_overlay_icon = 0
s0_multioutput_mode = 1
as_show_desktop = false
s0_hover_time = 100
s0_spacing = 4
s0_timestep = 0.100000
s0_speed = 2.615500

[scaleaddon]
s0_window_highlight = true
s0_highlight_color = #ffffff08
s0_window_title = 0

[mag]
as_zoom_in_button = <TopEdge>Button4
as_zoom_out_button = <TopEdge>Button5
s0_mode = 2
s0_radius = 600

[place]
s0_multioutput_mode = 3
s0_mode = 2

[workarounds]
as_notification_daemon_fix = true
as_firefox_menu_fix = true
as_legacy_fullscreen = true
as_qt_fix = true
as_convert_urgency = true

[move]
as_opacity = 85 

[blur]
s0_filter = 1
s0_independent_tex = true
s0_mipmap_lod = 1.700000
s0_gaussian_radius = 7
s0_alpha_blur_match = (any) & !(class=Conky)

[put]
as_put_next_output_button = Button10
s0_speed = 10.441400
s0_timestep = 0.100000 

[obs]
s0_opacity_matches = type=dock | Tooltip | Menu | PopupMenu | DropdownMenu;(any) & !(class=Whaawmp.py | class=Gimp | class=Inkscape | class=Xfdesktop | class=Ristretto);
s0_opacity_values = 70;90;

[animation]
s0_close_effects = animation:Dream;animation:Fade;animation:Fade;
s0_open_effects = animation:Magic Lamp;animation:Fade;animation:Fade;
s0_focus_effects = animation:Dodge;
s0_open_durations = 150;100;100;
s0_close_durations = 150;100;100;
s0_minimize_durations = 150;
s0_shade_durations = 150;
s0_focus_durations = 150;

[widget]
s0_bg_brightness = 100
s0_fade_time = 0.250000
s0_match = type=Dock
as_toggle_edge = BottomLeft|BottomRight
s0_end_on_click = false

[staticswitcher]
s0_highlight_mode = 2
s0_highlight_rect_hidden = 2
as_next_key = Disabled
as_next_no_popup_key = <Alt>Tab
as_prev_all_key = Disabled

GSettings 配置

注意
  • 大多数 Compiz schema 都是可重定位的。这意味着需要提供路径以及 schema 名称本身 - 在这种情况下,Compiz 配置文件的路径,例如::/org/compiz/profiles/Default/plugins/
  • 安装 Compiz 插件的 schema 并不能保证插件本身已安装。

列出所有可用的 Compiz 配置文件

$ gsettings list-recursively org.compiz | grep existing-profiles

显示活动的 Compiz 配置文件

$ gsettings list-recursively org.compiz | grep current-profile

设置活动的 Compiz 配置文件

$ gsettings set org.compiz current-profile profile-name

列出所有可用的 Compiz 插件 schema

$ gsettings list-relocatable-schemas | grep org.compiz

查看 Compiz 插件的所有可用设置及其值(此示例将显示静态应用程序切换器的设置)

$ gsettings list-recursively org.compiz.staticswitcher:/org/compiz/profiles/Default/plugins/staticswitcher/

查看特定 Compiz 设置的值(此示例检查静态应用程序切换器中的图标选项是否已启用)

$ gsettings get org.compiz.staticswitcher:/org/compiz/profiles/Default/plugins/staticswitcher/ icon

更改 Compiz 插件设置的值(这将禁用静态应用程序切换器中的图标)

$ gsettings set org.compiz.staticswitcher:/org/compiz/profiles/Default/plugins/staticswitcher/ icon false

使用 GSettings 启用或禁用 Compiz 插件

提示
  • 覆盖 active-plugins 值时,请不要忘记在数组周围放置引号,例如 "['core']"
  • 如果您输入无效的插件名称或未安装的插件名称,该命令将完成而不会出错,但无效名称将自动从数组中删除。

需要两个步骤。首先,使用以下命令获取活动 Compiz 插件的列表

$ gsettings get org.compiz.core:/org/compiz/profiles/Default/plugins/core/ active-plugins

这应返回类似于以下内容的输出

['core', 'composite', 'opengl', 'compiztoolbox', 'decor', 'vpswitch', 'snap', 'mousepoll', 'resize', 'place', 'move', 'wall', 'grid', 'regex', 'imgpng', 'session', 'gnomecompat', 'animation', 'fade', 'workarounds']

复制并粘贴输出并将其添加到用于设置活动插件的命令中,根据需要从数组中添加或删除插件。以下示例将启用静态应用程序切换器:

$ gsettings set org.compiz.core:/org/compiz/profiles/Default/plugins/core/ active-plugins "['core', 'composite', 'opengl', 'compiztoolbox', 'decor', 'vpswitch', 'snap', 'mousepoll', 'resize', 'place', 'move', 'wall', 'grid', 'regex', 'imgpng', 'session', 'gnomecompat', 'animation', 'fade', 'workarounds', 'staticswitcher']"

参见