我想要一个像 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>
最后,您可以注销并登录来查看键盘快捷键的变化。
我的意图是,当我需要反转活动窗口中的颜色时,我可以使用快捷键 ++ 来实现 Ctrl。Alt如果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>