Compiz

出自 ArchWiki

根据维基百科

Compiz 是一个用于 X Window 系统合成窗口管理器,它使用 3D 图形硬件为窗口管理创建快速合成桌面效果。诸如最小化动画或立方体工作区之类的效果以可加载插件的形式实现。

安装

Compiz 有两个版本,0.8 系列(用 C 编写)和 0.9 系列(用 C++ 完全重写)。这两个系列都在积极开发中。Compiz 0.9 由 Compiz Maintainers 在 Launchpad 上开发,而 Compiz 0.8 由 Compiz Reloaded 项目在 GitLab 上开发。这两个系列不能并排安装。

0.9 系列

注意: 从 Compiz 0.9.8 开始,所有 Compiz 组件都作为一个单独的项目开发和分发。这意味着单个软件包可以提供所有 Compiz 组件。
  • Compiz — 带有 CCSM、插件和 GTK 窗口装饰器的 OpenGL 合成窗口管理器。
https://launchpad.net/compiz || compizAUR

0.8 系列

注意: GTK 窗口装饰器由 compiz-gtkAUR 提供,这是一个从 compiz-coreAUR 分离出来的软件包。

必需

  • Compiz Core — OpenGL 合成窗口管理器。
https://gitlab.com/compiz/compiz-core || compiz-coreAUR

强烈推荐

  • CompizConfig Settings Manager — Compiz 的图形设置管理器。
https://gitlab.com/compiz/ccsm || ccsmAUR[broken link: 软件包未找到]
  • Compiz Fusion Plugins Main — Compiz 的主要插件集合。
https://gitlab.com/compiz/compiz-plugins-main || compiz-fusion-plugins-mainAUR
  • Compiz Fusion Plugins Extra — Compiz 的额外插件集合。
https://gitlab.com/compiz/compiz-plugins-extra || compiz-fusion-plugins-extraAUR

可选

  • Compiz Fusion Plugins Experimental — 实验性 Compiz 插件(在 0.8.12 版本之前称为 Plugins Unsupported)。
https://gitlab.com/compiz/compiz-plugins-experimental || compiz-fusion-plugins-experimentalAUR

附加

注意: Emerald 从 0.8.12 版本开始,Fusion Icon 从 0.1.2 版本开始,都支持 Compiz 0.9 以及 Compiz 0.8。建议使用旧版本 Emerald 0.9.5 的 Compiz 0.9 用户切换到 Emerald 0.8.12 或 0.8 系列中的更高版本,因为 Emerald 0.9 不再积极开发。
  • Emerald — 用于 Compiz 的独立窗口装饰器。
https://gitlab.com/compiz/emerald || emeraldAUR
  • Emerald Themes — Emerald 窗口装饰器的额外主题。
https://gitlab.com/compiz/emerald-themes || emerald-themesAUR
  • Fusion Icon — 一个托盘小程序,用于启动 Compiz 和动态切换窗口管理器和装饰器。
https://gitlab.com/compiz/fusion-icon || fusion-iconAUR
  • Compiz Manager — 用于启动 Compiz 的包装脚本。
https://gitlab.com/compiz/compiz-manager || compiz-managerAUR
  • Simple CCSM — 简化的 Compiz 0.8 图形设置管理器。
https://gitlab.com/compiz/simple-ccsm || simple-ccsmAUR

开始使用

启用重要插件

提示: 根据您安装 Compiz 的软件包,其中一些插件可能已激活。

在启动 Compiz 之前,您应该激活一些插件以提供基本的窗口管理器行为,否则您将无法拖动、缩放或关闭任何窗口。重要的插件列在下面

  • 窗口装饰 - 提供窗口边框,请参阅 #窗口装饰
  • 移动窗口。
  • 调整窗口大小。
  • 放置窗口 - 配置窗口放置选项。
  • 应用程序切换器 - 提供一个 Alt+Tab 切换器 - 有许多替代应用程序切换器插件,例如:Shift Switcher、Static Application Switcher 等。并非所有插件都使用 Alt+Tab 快捷键绑定。

要能够切换到不同的视口,您需要启用以下插件之一

  • 桌面立方体 & 旋转立方体 - 提供旋转立方体,每个面都是不同的视口。
  • 桌面墙 - 视口彼此相邻排列 - 动画类似于 CinnamonGNOME Shell 中的工作区切换动画。
  • Expo - 当鼠标移动到左上角时,创建所有视口和窗口的视图 - 此插件可以单独使用,也可以与前两个插件中的任何一个结合使用。

窗口装饰

提示: 有关选择和管理主题的信息,请参阅:Compiz/Configuration#窗口装饰主题
注意: KDE 窗口装饰器与 KDE Plasma 5 不兼容。Compiz 0.8 上游在 2015 年 12 月从 Compiz Core 中删除了 KDE 窗口装饰器。[1]

窗口装饰器是为窗口提供边框的程序。与 Kwin 或 Xfwm 等仅提供一个装饰器的窗口管理器不同,Compiz 用户可以选择三个装饰器:GTK 窗口装饰器、KDE 窗口装饰器和 Emerald。GTK 窗口装饰器和 KDE 窗口装饰器包含在 Compiz 源代码中,可以在构建 Compiz 时选择性地编译。另一方面,Emerald 是一个单独的独立装饰器。CCSM 中的窗口装饰插件必须勾选,否则不会启动任何窗口装饰器。

选择装饰器

将要启动的窗口装饰器在 CCSM -> 效果 -> 窗口装饰 -> 命令 下指定。默认命令是 compiz-decorator,这是一个脚本,它将尝试查找 emeraldgtk-window-decorator 可执行文件(如果您使用的是 Compiz 0.9,则还会查找 kde4-window-decorator 可执行文件)。然后,它将根据脚本中指定的搜索顺序和条件(例如会话检测)启动找到的第一个装饰器。请注意,Compiz 0.8 提供的脚本与 Compiz 0.9 提供的脚本有很大不同,因此行为可能会有所不同。

compiz-decorator 命令可以替换为上面列出的可执行文件之一。如果您发现您首选的装饰器未启动,请尝试将 --replace 开关附加到命令,例如:emerald --replace

Compiz 启动

注意: 某些 Compiz 版本可能需要您在启动时手动加载 CCP 插件:compiz --replace ccp [2]

您可以使用以下命令启动 Compiz

$ compiz --replace

有关更多选项,请参阅 compiz --help

Fusion Icon

提示:#在桌面环境中自动启动 Compiz 时,可以将 fusion-icon 设置为默认命令,而不是 compiz

要使用 Fusion Icon 启动 Compiz,请执行以下命令

$ fusion-icon

为确保 fusion-icon 随后启动 Compiz,请右键单击面板中的图标,然后转到选择窗口管理器。如果尚未选择 Compiz,请选择它。

在桌面环境中自动启动 Compiz

请参阅 桌面环境#使用不同的窗口管理器

将 Compiz 用作独立窗口管理器

使用显示管理器启动会话

可以从显示管理器启动独立的 Compiz 会话。对于大多数显示管理器 - 例如 LightDM - 所需的只是在 /usr/share/xsessions 中创建一个执行 compiz(如果需要命令行选项)或 fusion-icon.desktop 文件。请参阅您的显示管理器的文章。有关创建 .desktop 文件的信息,请参阅 桌面条目

使用显示管理器时自动启动程序

当从显示管理器启动 Compiz 会话时,您可以使用 xprofile 文件来启动程序。另一种选择是让 /usr/share/xsessions 中的 .desktop 文件不直接执行 compiz,而是执行一个脚本,该脚本启动您希望启动的程序并启动 Compiz。

使用 startx 启动会话

可以使用 startx 启动 Compiz 会话。在您的 .xinitrc 文件中定义 compizfusion-icon。有关更多详细信息,请参阅 xinitrc 文章。

允许用户关机/重启

请参阅 Allow users to shutdown#使用 systemd-logind:您可以使用 CCSM 中的 Commands 插件为 systemctl 命令分配键盘快捷键。

技巧与诀窍

恢复原生窗口管理器

您可以使用以下命令切换回桌面环境的默认窗口管理器

wm_name --replace

例如使用 kwinmetacityxfwm4 代替 wm_name

启用 Alt+F2 运行对话框

GNOME 面板

在 CCSM 中启用 Gnome Compatibility 插件。

MATE 面板

有两种方法可以在 Compiz 中启用 MATE 面板的运行对话框。您可以

  • 在 CCSM 中启用 MATE Compatibility 插件(对于缺少 MATE 插件的旧版本 Compiz,请使用 Gnome Compatibility 插件)。
  • 使用 CCSM 中的 Commands 插件将以下命令映射到 Alt+F2 组合键。
mate-panel --run-dialog
LXDE 面板

使用 CCSM 中的 Commands 插件将以下命令映射到 Alt+F2 组合键。

lxpanelctl run
Xfce Appfinder

当 Compiz 在 Xfce 会话中使用时,运行对话框(由 xfce4-appfinder 提供)应该无需干预即可工作。如果您在独立的 Compiz 会话中使用 Xfce Appfinder,请使用 CCSM 中的 Commands 插件将以下命令映射到 Alt+F2 组合键。

xfce4-appfinder --collapsed
其他运行对话框

使用 CCSM 中的 Commands 插件将您选择的运行对话框的命令映射到 Alt+F2 组合键。

移除最大化窗口的标题栏

启动 CCSM 并导航到 Window Decoration 插件。然后在装饰窗口字段中,将 any 更改为 !state=maxvert[3]

故障排除

缺少 GLX_EXT_texture_from_pixmaps

ATI 显卡

ATI 显卡上 GLX_EXT_texture_from_pixmap 的一个可能问题是显卡只能间接渲染它。如果是这样,您必须将选项传递给您的 libgl,如下所示

LIBGL_ALWAYS_INDIRECT=1 compiz --replace &

Intel 芯片

使用以下命令启动 Compiz(每次都必须使用此命令)。

LIBGL_ALWAYS_INDIRECT=true compiz --replace --sm-disable &

在使用 NVIDIA 闭源驱动时 Compiz 启动时没有窗口边框

首先,确保您的窗口装饰器设置配置正确 - 请参阅 #窗口装饰。如果窗口边框仍然没有启动,请尝试将 Option "AddARGBGLXVisuals" "True"Option "DisableGLXRootClipping" "True" 添加到您的 /etc/X11/xorg.conf.d/20-nvidia.conf 中的 "Screen" 部分。如果窗口边框仍然无法加载,并且您在 /etc/X11/xorg.conf.d/ 中的其他位置使用了其他选项,请尝试注释掉它们,仅使用上述 ARGBGLXVisuals 和 GLXRootClipping 选项。

在使用 NVIDIA 闭源驱动从挂起到内存恢复时黑屏

如果您在恢复时收到带有响应光标的黑屏,请尝试禁用同步到垂直空白。为此,请打开 CCSM,导航到 OpenGL 插件,然后取消选中同步到垂直空白选项。

性能强大的显卡性能低下

NVIDIA 和 Intel 芯片:如果一切配置正确,但某些效果仍然性能低下,请尝试禁用 CCSM > 通用选项 > 显示设置 > 检测刷新率,而是手动选择一个值。

仅 NVIDIA 芯片:使用检测刷新率时刷新率不足可能是由于默认启用的名为 DynamicTwinView 的选项,该选项在准确报告您的显卡和显示器支持的最大刷新率方面起作用。您可以通过将以下行添加到 /etc/X11/xorg.conf.d/20-nvidia.conf 的 "Device" 或 "Screen" 部分来禁用 DynamicTwinView,然后重启您的计算机

Option "DynamicTwinView" "False"

使用 NVIDIA 显卡时屏幕闪烁

要修复此行为,请创建以下文件

/etc/modprobe.d/nvidia.conf
options nvidia NVreg_RegistryDwords="PerfLevelSrc=0x2222"

视频撕裂

如果您在使用 Compiz 时遇到视频撕裂,请尝试在 CCSM 中启用 Workarounds 插件。启用后,确保在 Workarounds 中启用以下选项:Force complete redraw on initial damageForce full screen redraws (buffer swap) on repaint

如果您使用的是Intel 显卡,并且上述解决方法无法修复视频撕裂,请参阅 Intel graphics#撕裂

另请参阅 #性能强大的显卡性能低下

Fusion Icon 启动失败

如果您从命令行获得如下输出

$ fusion-icon
* Detected Session: gnome
* Searching for installed applications...
Traceback (most recent call last):
  File "/usr/bin/fusion-icon", line 57, in <module>
    from FusionIcon.interface import choose_interface
  File "/usr/lib/python2.5/site-packages/FusionIcon/interface.py", line 23, in <module>
    import start
  File "/usr/lib/python2.5/site-packages/FusionIcon/start.py", line 36, in <module>
    config.check()
  File "/usr/lib/python2.5/site-packages/FusionIcon/util.py", line 362, in check
    os.makedirs(self.config_folder)
  File "/usr/lib/python2.5/os.py", line 172, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/home/andy/.config/compiz'

问题出在 ~/.config/compiz/ 的权限上。要修复它,请使用

# chown -R username /home/username/.config/compiz/

Alt+F4 快捷键绑定不起作用 (Xfce)

如果 Compiz 在登录时替换了 Xfwm4,则可能导致 Alt+F4 快捷键绑定变得无法使用。为避免此问题,请确保仅在登录时启动 Compiz - 请参阅 Xfce#使用不同的窗口管理器

选择主题时 Emerald 崩溃

您可能会发现,在选择某些主题(尤其是使用旧引擎的主题)时,Emerald 会崩溃。如果发生这种情况,请在 Emerald 主题管理器中选择另一个主题,然后运行命令 emerald --replace

Compiz 运行时没有系统提示音

您可能会发现,如果 Compiz 正在运行,系统提示音(例如在 GNOME 或 MATE 终端中在行首按退格键时播放的滴答声)将不会响起。请参阅以下上游错误报告

PulseAudio 用户可以强制 PulseAudio 处理系统提示音作为一种解决方法,请参阅 PulseAudio#X11 Bell Events

启用 Gnome Compatibility 插件 (GSettings 后端) 时 Compiz 崩溃

如果您正在使用 GSettings 后端,您可能会发现,如果您尝试启用 Gnome Compatibility 插件,Compiz 会崩溃。为了在使用 GSettings 后端时启用此插件,您需要打开 CCSM 并导航到首选项。在标题集成下,取消选中标记为启用集成到桌面环境的框。取消选中此选项后,您应该可以启用 Gnome Compatibility 插件。

窗口在取消最小化时失去焦点

您可能会发现,某些窗口(例如 Chromium 窗口)在取消最小化时会失去焦点。请参阅以下上游错误报告。一种可能的解决方案是启用 Workarounds 插件中的保留最小化窗口的预览选项。

注意: 如果您使用 Chrome/Chromium 浏览器并启用此解决方法,您将需要确保启用 Chrome 中的使用系统标题栏和边框选项。如果在 Chrome 自己的标题栏与保留最小化窗口的预览 Compiz 解决方法一起使用,则当 Chrome 最小化时,下方的桌面将变得无响应。

Compiz 运行时弹出窗口偏移

您可能会发现,对于放置在屏幕底部的面板,弹出窗口会偏移几个像素,从而使窗口看起来漂浮在面板上方。已知此问题会影响 Xfce 和 KDE,并且可能也会影响其他桌面。下面列出了一些可能修复某些情况的解决方法。

  • 将面板放在屏幕顶部而不是底部 - 这应该在大多数情况下都有效。
  • 禁用 Place Windows 插件 - 这对于 Xfce Whisker Menu 插件有效,但可能在其他地方无效。
  • 使用固定窗口放置来确定窗口的位置。这可以从 Place Windows 插件中设置。例如,对于 Whisker Menu,指定标题为 Whisker Menu 的窗口应出现在 (-1, -1) 处。

有关更多信息,请参阅以下上游错误报告

Alt-Tab 切换器没有背景 (Emerald)

您可能会发现,当也使用 Emerald 时,Alt-Tab 切换器(由 staticswitcher 或 switcher 插件提供)具有完全透明的背景。这会使窗口缩略图与它们后面的桌面背景难以区分。从 Compiz 0.9.12 开始 (修订版 3975) 一种解决方法可用。在 CCSM 中,导航到应用程序切换器静态应用程序切换器,具体取决于您正在使用的插件。对于前者,背景设置位于通用下,对于后者,设置位于外观下。找到设置后,确保选中设置背景颜色框。默认设置为深灰色,可以有选择地更改。

或者,使用 GTK 窗口装饰器而不是 Emerald,或使用不同的窗口切换器,例如 shift switcher。请注意,即使您正在使用 GTK 窗口装饰器,您仍然可以如上所述更改背景颜色。

启动时鼠标光标不可见或呈 X 形

请参阅 Cursor themes#更改 X 形默认光标

已知问题

Compiz 0.8 中的插件在 Compiz 0.9 中不存在

为了完成 OpenGL ES 支持,Compiz 0.8 中流行的某些插件在 Compiz 0.9.8 及更高版本中被禁用。自那以后,一些禁用的插件已被重新启用;例如,Animations Add-On 插件已在 Compiz 0.9.13.0 版本中重新启用。其他当前禁用的插件如果收到此问题的补丁,也很有可能在未来的版本中重新启用。有关更多信息,请参阅 Compiz 0.9.8 发行说明

同样,Compiz Plugins Unsupported(包含 Atlantis 等插件的软件包)在最近的 Compiz 0.9 版本中不可用。自 Compiz 0.9.5 以来,它尚未针对 Compiz 0.9 系列进行开发,并且不再成功构建。

Xfce 面板问题

Xfce 工作区切换器宽高比错误

当 Compiz 与 Xfce Panel 4.11 及更高版本一起使用时,工作区分页器将仅使用一个工作区的宽度,但会根据 Compiz 指定的视口数量将此空间划分为越来越小的条。可以通过将 xfce4-panel 替换为 xfce4-panel-compizAUR 来修复此问题,后者合并了此问题的补丁。有关更多信息,请参阅以下上游错误报告

启用 D-Bus 插件时 Compiz 崩溃

如果与某些其他插件(例如 Cube 插件)结合使用,D-Bus 插件将导致 Compiz 崩溃。请参阅以下上游错误报告

工作区分页器和窗口按钮问题

只有少数任务栏与 Compiz 的视口兼容。不兼容的面板和停靠栏可能会显示诸如在所有工作区中显示所有窗口按钮的问题,或者工作区分页器可能仅显示一个可用的工作区。已知以下面板兼容

参见