跳转至内容

Xcompmgr

来自 ArchWiki

Xcompmgr 是一个简单的 合成管理器 (compositor),能够渲染阴影,并且在使用 transset 工具的情况下,可实现基础的窗口透明度。Xcompmgr 仅被设计为概念验证,是 Compiz 及类似合成管理器的轻量级替代方案。

由于它不替换任何现有的窗口管理器,因此对于寻求更优雅桌面的轻量级 窗口管理器 用户来说,这是一个理想的解决方案。

安装

在安装 Xcompmgr 之前,请确保您已安装并正确配置了 Xorg。为了确保 X Server 启用了 Composite 扩展,请运行

$ xdpyinfo | grep Composite
Composite

如果没有输出,请将 Composite 选项添加到 xorg.conf 的 Extensions 部分

/etc/X11/xorg.conf
Section "Extensions"
        Option  "Composite" "true"
EndSection

Xcompmgr 可以通过软件包 xcompmgr 安装。如需透明度功能,还请安装 transset-dfAUR。示例请参阅 Xterm#Automatic transparency

配置

要加载 xcompmgr,只需运行

$ xcompmgr -c

若要在会话启动时加载,请将以下内容添加到 xprofile

xcompmgr -c &

除了 -c,您还可以尝试其他开关来修改阴影甚至启用淡入淡出效果。以下是一个常用示例

xcompmgr -c -C -t-5 -l-5 -r4.2 -o.55 &

要查看完整的选项列表,请运行

$ xcompmgr --help

窗口透明度

尽管由于性能较低其实用性有限,但可以使用 transset-df 工具来设置单个窗口的透明度。

要设置程序窗口的透明度,请确保目标程序已在运行,然后执行

$ transset-df opacity

其中 opacity 是一个 01 之间的数字,0 为完全透明,1 为不透明。

执行后,鼠标光标将变为十字准星。点击一个窗口,其透明度将更改为指定的值。例如,transset-df 0.25 将把目标窗口设置为 25% 的不透明度(75% 的透明度)。

技巧与提示

按需启动/停止 Xcompmgr

此脚本允许方便地 (重新) 启动和停止合成管理器。

~/.bin/comp
#!/bin/bash
#
# Start a composition manager.
# (xcompmgr in this case)

comphelp() {
    echo "Composition Manager:"
    echo "   (re)start: COMP"
    echo "   stop:      COMP -s"
    echo "   query:     COMP -q"
    echo "              returns 0 if composition manager is running, else 1"
    exit
}

checkcomp() {
    pgrep xcompmgr &>/dev/null
}

stopcomp() {
    checkcomp && killall xcompmgr
}

startcomp() {
    stopcomp
    # Example settings only. Replace with your own.
    xcompmgr -CcfF -I-.015 -O-.03 -D6 -t-1 -l-3 -r4.2 -o.5 &
    exit
}

case "$1" in
    "")   startcomp ;;
    "-q") checkcomp ;;
    "-s") stopcomp; exit ;;
    *)    comphelp ;;
esac

为了方便使用,您可以使用例如 Xbindkeys 将此脚本绑定到热键。这样可以在需要时快速重启或临时移除合成效果,而不会干扰其他工作。

切换 Xcompmgr 状态

将以下脚本分配给任何热键

#!/bin/bash

if pgrep xcompmgr &>/dev/null; then
    echo "Turning xcompmgr OFF"
    pkill xcompmgr &
else
    echo "Turning xcompmgr ON"
    xcompmgr -c -C -t-5 -l-5 -r4.2 -o.55 &
fi

exit 0

故障排除

登录后背景短暂变为浅灰色(例如在 Openbox 中)

这个问题可以通过安装 hsetroot 并在 xcompmgr 之前执行 hsetroot -solid "#000000"(只需将 #000000 替换为您想要的颜色代码)来设置背景颜色。或者,如果 xcompmgr~/.xinitrcexec 之前被调用,您可以将 xcompmgr & 更改为 (sleep 1 && xcompmgr) &,这将分叉一个子 shell,允许 xcompmgr 在窗口管理器启动后再执行。

awesome 中的 BadPicture 请求

如果您在 awesome 中遇到以下错误

 error 163: BadPicture request 149 minor 8 serial 34943
 error 163: BadPicture request 149 minor 8 serial 34988
 error 163: BadPicture request 149 minor 8 serial 35033

只需安装 feh 并重启 awesome 即可。

awesome 在分辨率更改后屏幕不更新

使用外接显示器时,在自动更改显示分辨率时可能会遇到问题:屏幕的一部分变得“卡死”且不再更新。这个问题是由初始分辨率更改(发生在 Xcompmgr 启动之前)以及 awesome 通过 feh 设置背景引起的。

要解决此问题,您需要安装 hsetroot 并在 .xinitrcxcompmgr 之前加入以下行

hsetroot -solid "#000066"

(您可以将 #000066 替换为您喜欢的颜色)。

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.