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


21

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

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


Может быть связано с этим постом: unix.stackexchange.com/questions/20565/…
Sheljohn

я использовал отрицательную опцию окна из оконного менеджера compiz, и она также работает очень хорошо.
stats-hb

Ответы:


21

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

Комптон

Compton - это легкий композитор для X и ответвление от xcompmgr-dana.

Согласно Man Pages, у Compton есть возможность инвертировать цвета в окне.

например:

compton --invert-color-include <CONDITION>

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

  • xprop | grep WM_CLASS

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

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

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

введите описание изображения здесь

Вторая строка должна быть WM_CLASS "Leafpad" .
Итак, чтобы инвертировать цвета редактора 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 в качестве оконного менеджера, но по умолчанию без композитора.


Установить Комптон

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

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

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

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


Есть ли способ заставить это работать, если окно также полноэкранное? Это может быть желательно при переключении между различными рабочими пространствами.
Toothrot

@ Tootrot уже работает так, как объявлено в моей системе (с использованием i3wm и того же самого сценария из ответа)
sehe

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.