Compiz/Configuration
本文档详细介绍了 Compiz 的进阶配置。假设您已经成功安装了 Compiz 并拥有一个基础、可用的配置。有关安装、基础配置和故障排除的信息,请查阅 Compiz 条目。
设置存储选项
配置后端
- 根据您安装的软件包,并非所有的 Compiz 后端都可用。
- GConf 后端已从 Compiz 0.9.12 版本中移除(修订版 3991)。
默认情况下,Compiz 将其设置存储在一个纯文本文件 ~/.config/compiz-1/compizconfig/Default.ini 中。在 CCSM 中,这被称为“平面文件配置后端”(Flat-file Configuration Backend)。
Compiz 也可以将其设置存储在 GSettings 或 GConf 数据库中。若要更改 Compiz 保存设置的方式,请打开 CCSM 并点击左侧栏的“首选项”(Preferences)选项卡。然后从“后端”(Backend)列表下选择您所需的后端。
您也可以通过编辑 ~/.config/compiz-1/compizconfig/config 文件来手动更改后端。
编辑以下行
backend = ini
- ini = 平面文件配置后端
- gsettings = GSettings 配置后端
- gconf = GConf 配置后端
一旦编辑并保存该文件,更改将立即生效。无需注销。
配置文件
配置文件(Profiles)允许您在不同的 Compiz 设置集之间轻松切换。若要创建新配置文件,请打开 CCSM 并点击“首选项”选项卡。在“配置文件”下,点击加号以添加新配置文件,或点击减号以删除配置文件。在 CCSM 中所做的所有更改都将写入当前的配置文件中。
配置文件特定于您当前使用的后端。例如,如果您正在使用 GSettings 后端,那么您创建的任何新配置文件都将是 GSettings 配置文件。如果您切换到不同的后端,您当前的配置文件将无法工作,系统将自动切换到该后端可用的配置文件。
窗口装饰主题
Emerald
许多 Emerald 主题可在 compiz-themes.org 下载。Emerald 主题可以通过 emerald-theme-manager 程序进行安装、选择、删除和编辑。对于下载的主题,请解压 tarball,然后使用主题管理器中的“导入”(Import)选项进行安装。
Emerald 主题存储在两个位置
/usr/share/emerald/themes-- 系统级~/.emerald/themes-- 用户级
当前选中的 Emerald 主题会被复制到 ~/.emerald/theme 目录中。
诸如窗口按钮脉冲(window button pulse)之类的 Emerald 设置可以在 emerald-theme-manager 中配置,并写入 ~/.emerald/settings.ini 文件。
GTK 窗口装饰器 (GTK Window Decorator)
GTK 窗口装饰器可以编译为支持 Metacity 或 Marco 窗口管理器(取决于 Compiz 版本)。如果编译时包含此支持,Metacity 或 Marco 使用的主题也将被 GTK 窗口装饰器使用。如果未编译此支持,则会使用内置的后备主题。
许多 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 上游提供的 Compiz 所包含的 GTK 窗口装饰器(版本 0.8.10 及更高)可以编译为支持 Marco。假设已编译此支持,请使用以下命令更改 Marco 主题
$ gsettings set org.mate.Marco.general theme theme-name
原始 Compiz 上游提供的 Compiz 所包含的 GTK 窗口装饰器(版本 0.8.9 及更低)可以编译为支持 Metacity (版本 2)。此版本的 GTK 窗口装饰器要求将主题定义为 GConf 设置。假设已编译此支持,请使用以下命令更改 Metacity 主题
$ gconftool-2 -s /apps/metacity/general/theme -t string theme-name
KDE 窗口装饰器
Kwin 主题可以使用 KDE 的“系统设置”(systemsettings)面板进行下载、安装和管理。
工作区与视口
与其他许多窗口管理器不同,Compiz 不使用多个工作区。相反,它使用一个工作区,但将其拆分为多个称为视口(viewports)的部分。有关更多信息,请参阅 [1]。
视口的数量和布局可以在 CCSM -> “常规选项” -> “桌面尺寸”中进行配置。更改“水平虚拟尺寸”(Horizontal Virtual Size)将更改每行的视口数量。更改“垂直虚拟尺寸”(Vertical Virtual Size)将添加或删除视口行。
如果您正在使用“桌面立方体”(Desktop Cube)插件,您将无法使用通过增加“垂直虚拟尺寸”添加的视口行。若要利用多行视口,请改用“桌面墙”(Desktop Wall)插件。
键盘快捷键
以下是 Compiz 的默认键盘快捷键列表。
- 切换窗口 =
Alt+Tab。 - 切换到下一个桌面 =
Ctrl+Alt+←。 - 切换到上一个桌面 =
Ctrl+Alt+→。 - 移动窗口 =
Alt+鼠标左键。 - 调整窗口大小 =
Alt+鼠标右键。
更详细的列表可以在 Compiz wiki 的 CommonKeyboardShortcuts 页面找到,或者您随时可以查看插件的配置。
额外的快捷键可以使用 CCSM 中的“命令”插件添加。
边缘绑定
除了鼠标和按键绑定外,Compiz 还可以将命令分配给涉及屏幕边缘的某些操作,例如:将窗口拖动到屏幕边缘。例如:“旋转立方体”插件有一个选项,当窗口被拖动到屏幕边缘时切换到下一个视口。边缘绑定通常可以通过 CCSM 禁用,方法是取消勾选插件设置部分中的“边缘翻转”(Edge Flip)选项,或在相关插件的“绑定”(Bindings)部分中禁用屏幕图标旁的操作。
插件
几乎所有的 Compiz 功能都是通过插件实现的。某些插件必须启用以实现标准的窗口管理器功能 - 请参阅 Compiz#Enabling important plugins。此处讨论的是提供超出标准窗口管理功能之外的额外功能的插件。
网格 (Grid)
如果您想通过将窗口拖动到屏幕边缘来并排比较两个窗口(类似于 Windows 7 中引入的“Aero Snap”功能),请在 CCSM 中启用“网格”(Grid)插件。如果您使用的是“桌面墙”或“旋转立方体”插件,请禁用该插件部分中的“边缘翻转”选项,以确保当窗口拖动到屏幕边缘时不会移动到下一个桌面。
- CCSM 中标记为“吸附窗口”(Snapping Windows)的插件仅增加了屏幕边缘的阻力。它不会调整拖动到屏幕边缘的窗口大小。
- Compiz 0.8 中的“网格”插件不支持通过将窗口拖动到屏幕边缘来调整窗口大小。只能通过键盘快捷键来比较窗口。
缩放 (Scale)
“缩放”(Scale)插件提供了一种查看当前视口中所有窗口缩放缩略图的选项,类似于 KDE 中的“展示窗口”(Present Windows)功能或 GNOME Shell 中的“概览模式”(Overview Mode)。插件启用后,可以通过将鼠标光标移至屏幕右上角来访问此视图。活动角落可以在插件设置部分的“绑定”选项卡中进行配置。
Widget 层
“Widget 层”插件允许您将某些窗口定义为 Widget。Widget 窗口显示在屏幕的一个单独的“层”上。当 Widget 层隐藏时,所有定义为 Widget 的窗口都将被图标化。默认情况下,使用 F9 键显示和隐藏 Widget 层。
若要将窗口定义为 Widget,请打开 CCSM 并导航到“Widget 层”插件。点击“行为”(Behaviour)选项卡,点击“Widget 窗口”字段旁边的加号按钮。在出现的对话框中,从“类型”(Type)菜单中选择“窗口标题”(Window Title)。在“值”(Value)字段中输入您希望定义为 Widget 的窗口标题,例如:galculator。
屏幕放大
有两个 Compiz 插件可以提供放大功能。第一个是“放大镜”(Magnifier),其作用就像放大镜一样(矩形框内的所有内容都将被放大)。可以通过在 CCSM 中启用该插件并按下 Super+m 来使用放大镜。
另一个插件称为“增强桌面缩放”(Enhanced Desktop Zoom)。当启用此插件后,按下 Super 键并滚动鼠标中键,将放大鼠标光标下的桌面部分。
崩溃处理程序
建议在 CCSM 中启用“崩溃处理程序”(Crash handler)插件。该插件可确保如果由于某种原因 Compiz 未能随会话启动或在会话期间崩溃,将转储崩溃日志并启动替代窗口管理器。若要指定在崩溃时可以替换 Compiz 的窗口管理器,请点击“崩溃处理程序”插件并勾选“启动其他窗口管理器”(Start Other Window Manager)选项。然后,在“窗口管理器命令行”字段中,输入启动所需窗口管理器的命令,例如:xfwm4 --replace。
在不使用 CCSM 的情况下配置 Compiz
Compiz 不必通过 CCSM 进行配置。可以通过直接编辑配置文件来更改设置。对于平面文件配置文件,这意味着需要编辑 ~/.config/compiz-1/compizconfig/Default.ini 文件或类似文件。对于 GSettings 或 GConf 配置文件,这意味着使用 gsettings 或 gconftool-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 模式(schemas)是可重定位的。这意味着需要提供路径以及模式名称本身 - 在这种情况下,是 Compiz 配置文件的路径,例如:
:/org/compiz/profiles/Default/plugins/。 - 安装了 Compiz 插件的模式并不保证插件本身已安装。
列出所有可用的 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 插件模式
$ 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']"
参见
- Compiz Wiki, (wiki 已停止维护)
- Compiz-Themes.org,包括 Emerald 主题、Metacity 主题、Kwin 主题等