如何触发一个窗口的颜色反转效果?


21

我想在compiz中具有像'negative'一样的反色效果(从浅到深),但是没有compiz,并且仅对于一个窗口(如compiz的Super+ N)。

有没有办法获得类似效果(最好通过组合键切换)而无需补偿?我可以使用来反转整个桌面的颜色xcalib -I -a,但不能将其限制在单个窗口中。



我一直在使用compiz窗口管理器中的负窗口选项,它的效果也很好。
stats-hb

Answers:


21

据我所知...要实现这一点,您将需要Window Compositor的帮助。
您可以尝试安装轻巧的独立合成器,例如Compton

康普顿

Compton是X的轻量级合成器,是xcompmgr-dana的分支。

根据手册页,康普顿可以选择反转窗口中的颜色。

例如:

compton --invert-color-include <CONDITION>

条件可能是窗口的WM_CLASS,要在窗口中找到“ WM_CLASS”,可以运行命令xprop

  • xprop | grep WM_CLASS

然后,光标将是“ Cross”交叉),您可以在所需的窗口中单击以找到WM_CLASS。

现在,您应该具有以下内容:

WM_CLASS(STRING)=“叶垫”,“叶垫”

在此处输入图片说明

第二个字符串应该是WM_CLASS “ Leafpad”
因此,要反转Leafpad编辑器的颜色,应运行:

  • compton --invert-color-include 'class_g="Leafpad"'

在某些情况下,您可能只想反转程序的某些窗口(例如,反转编辑器窗口,而不是“保存文件”对话框)。
为此,您可以使用两个字符串中的第一个WM_CLASS(也称为“实例”):

  • compton --invert-color-include '(class_g="Leafpad" && class_i="leafpad")'

您不需要一直运行compton,可以在需要反转窗口颜色时运行它。


注意: 在此示例中,我正在运行带有openbox作为窗口管理器的Lubuntu 13.04,但默认情况下没有合成器。


安装Compton

该合成器具有自己的PPA

1)要安装compton,请打开终端并输入:

  • sudo add-apt-repository ppa:richardgv/compton
  • sudo apt-get update && sudo apt-get install compton

在此示例中,我将创建一个基本的Bash脚本(我不是脚本专家)来检测活动窗口并反转其颜色。

2)创建脚本。

  • sudo apt-get install xdotool
  • mkdir ~/Scripts
  • nano ~/Scripts/invert.sh

脚本的内容:

#! /bin/bash

if [ "$(pidof compton)" ];
    then
            pkill compton
    else

        ID=$(xdotool getactivewindow)
        CLASS=$(xprop -id "$ID"  | grep "WM_CLASS" | awk '{print $4}')
        COND="class_g=${CLASS}"
        compton --invert-color-include "$COND" &
fi
exit

基本上,脚本将检查compton是否正在运行,如果未运行,则xdotool将找到活动窗口的窗口ID,ID xprop将找到WM_CLASS,然后使用WM_CLASS将创建条件,最后将使用compton运行compton。条件作为参数。

使脚本可执行。

  • chmod +x ~/Scripts/invert.sh

就我而言,我将创建一个到/ usr / bin /目录的软链接,其名称为“ invert-color”

  • sudo ln -s ~/Scripts/invert.sh /usr/bin/invert-color

3)创建一个键盘快捷方式,
例如: Ctrl+ Alt+ U (在Lubuntu中,您应该编辑lubuntu-rc.xml文件)

  • leafpad ~/.config/openbox/lubuntu-rc.xml

添加以下行:

<!-- Launch invert-color activewindow on Ctrl + Alt + U-->
<keybind key="C-A-U">
  <action name="Execute">
    <command>invert-color</command>
  </action>
</keybind>

最后,您可以注销和登录以查看键盘快捷键中的更改。


我的意图是当我需要反转活动窗口中的颜色时,可以使用“快捷键 Ctrl+ Alt+”来实现U。如果我想返回到正常颜色,我将再次按下快捷键,脚本将检测到compton正在运行。 pkill命令将杀死进程compton。
因此,以这种方式,我只会在需要时运行合成器。

这里有一些截图:

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

希望能帮助到你。


如果窗口也全屏显示,还有什么方法可以使它起作用?在不同的工作空间之间切换时,这可能是理想的。
Toothrot '16

@Toothrot已经可以在我的系统上做广告了(使用i3wm和答案中完全相同的脚本)
sehe

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.