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

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

我想要一个像 compiz 中的“负片”一样的反转颜色效果(从亮到暗),但不使用 compiz,并且只针对一个窗口(像 compiz 的Super+一样N)。

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

答案1

据我所知...要实现这一点,你需要一个窗口合成器
您可以尝试安装一个轻量级的独立合成器,例如康普顿

康普顿

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

根据手册页康普顿有一个在窗口中反转颜色的选项。

例如:

compton --invert-color-include <CONDITION>

情况可能是消息类型窗口,要找到窗口中的“WM_CLASS”,您可以运行命令属性

  • xprop | grep WM_CLASS

然后光标将变成“叉”您可以单击所需的窗口来找到 WM_CLASS。

现在你应该有如下内容:

WM_CLASS(STRING) = "leafpad", "Leafpad"

在此处输入图片描述

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

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

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

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

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


笔记: 在这个例子中,我运行 Lubuntu 13.04,使用 openbox 作为窗口管理器,但默认情况下没有合成器。


安装康普顿

这个作曲家有自己的电力供应协议

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。

使脚本可执行。

  • chmod +x ~/Scripts/invert.sh

在本例中,我将创建一个名为 /usr/bin/ 目录的软链接“反转颜色”

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

3)创建键盘快捷键,
例如: Ctrl++AltU (在 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>

最后,您可以注销并登录来查看键盘快捷键的变化。


我的意图是,当我需要反转活动窗口中的颜色时,我可以使用快捷键 ++ 来实现 CtrlAlt如果U我想恢复正常颜色,我将再次按下快捷键,脚本将检测到 compton 正在运行,因此 pkill 命令将终止 compton 进程。
这样,我只会在需要时运行合成器。

这里有一些截图:

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

希望能帮助到你。

答案2

Gnome Shell 扩展“反转窗口颜色”可以轻松实现这一点。以下是关联

答案3

如果您使用 Kubuntu/KDE Plasma,您可以转到工作区行为>桌面效果>辅助功能并激活“反转”。

然后键命令 Ctrl+Meta+U 将反转活动窗口。

答案4

@Roman Raguet 的回答很好,但有一种方法可以避免重新启动 compton。检查源代码后,我发现有一个名为的字段invert_color_force由 D-Bus 设置。

  /// Override value of window color inversion state. Set by D-Bus method
  /// calls.
  switch_t invert_color_force;

事实上,在他们的官方仓库的例子中有一个颜色反转脚本 -https://raw.githubusercontent.com/chjj/compton/master/dbus-examples/inverter.sh

因此只需下载该脚本:

wget https://raw.githubusercontent.com/chjj/compton/master/dbus-examples/inverter.sh
chmod +x inverter.sh

并使用标志启动 compton --dbus

compton --dbus

之后,您可以使用以下命令切换窗口:

inverter.sh focused

我将其作为快捷方式添加到我的 openbox rc 中:

<keybind key="C-A-M">
  <action name="Execute">
    <command>inverter.sh focused</command>
  </action>
</keybind>

相关内容