Как вызвать эффект инверсии цвета для одного окна?

18

Я хочу иметь обратный цветовой эффект (от света до темноты), например, «негатив» в compiz, но без компиляции и только для одного окна (например, Super > < kbd>).

Есть ли способ получить аналогичный эффект (желательно с помощью комбинации клавиш) без компиляции? Я могу инвертировать цвета для всего рабочего стола с xcalib -I -a , но я не могу ограничить его одним окном.

    
задан belacqua 09.05.2012 в 22:43
источник

1 ответ

17

Насколько я знаю ... для этого вам понадобится помощь Window Compositor .
Вы можете попробовать установить легкий автономный компоновщик, например Комптон .

Compton

  

Комптон - легкий композитор для X, а вилка   xcompmgr-ДАНА.

В соответствии с персональными страницами Compton имеет возможность инвертировать цвета в окно.

например:

compton --invert-color-include <CONDITION>

Условием может быть WM_CLASS окна, чтобы найти «WM_CLASS» в окне, в котором вы можете запустить команду xprop

  • xprop | grep WM_CLASS

Затем курсор будет «Крест» , и вы можете щелкнуть в нужном окне, чтобы найти WM_CLASS.

Теперь у вас должно получиться что-то вроде этого:

  

WM_CLASS (STRING)="листовая панель", "лист"

Вторая строка должна быть WM_CLASS «Лиф-панель» .
Итак, чтобы инвертировать цвета редактора Leafpad, вы должны запустить:

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

В некоторых случаях вам может потребоваться инвертировать только некоторые окна программы (например, инвертировать окно редактора, но не диалог «сохранить файл»).
Для этого вы можете использовать first из двух строк WM_CLASS (также называемых «экземпляром»):

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

Вам не нужно постоянно запускать compton, вы можете запускать его, когда вам нужно инвертировать цвета окна.

ПРИМЕЧАНИЕ. В этом примере я запускаю Lubuntu 13.04 с openbox в качестве диспетчера окон, но без компоновщика по умолчанию.

Чтобы установить 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 }')
        COND="class_g=${CLASS}"
        compton --invert-color-include "$COND" &
fi
exit
  

В основном скрипт проверяет, запущен ли коммон, если он не   running xdotool найдет идентификатор окна активного окна, с 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 + 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 . Если я хочу вернуться к обычным цветам, я снова нажму ярлык, и скрипт обнаружит, что комманд работает, поэтому команда pkill убьет процесс compton.
Таким образом, я буду запускать композитор только тогда, когда мне это нужно.

Здесь у вас есть несколько скриншотов:

Надеюсь, что это поможет.

    
ответ дан Roman Raguet 19.09.2013 в 22:15
источник