Jak wywołać efekt odwrócenia koloru dla jednego okna?


21

Chcę mieć odwrotny efekt koloru (od jasnego do ciemnego), taki jak „ujemny” w compizie, ale bez compiz i tylko dla jednego okna (jak compiz's Super+ N).

Czy istnieje sposób na uzyskanie podobnego efektu (najlepiej przełączanego przez kombinację klawiszy) bez kompizowania? Mogę odwracać kolory na całym pulpicie xcalib -I -a, ale nie mogę ograniczać go do jednego okna.


Być może związane z tym postem: unix.stackexchange.com/questions/20565/…
Sheljohn

Korzystałem z opcji negatywnego okna z menedżera okien Compiz i działa to również bardzo dobrze.
stats-hb

Odpowiedzi:


21

O ile wiem ... aby to osiągnąć, będziesz potrzebować pomocy Window Compositor .
Możesz spróbować zainstalować lekki, samodzielny kompozytor, taki jak Compton .

Compton

Compton jest lekkim kompozytorem dla X i widelcem xcompmgr-dana.

Według Man Pages Compton ma opcję odwracania kolorów w oknie.

na przykład:

compton --invert-color-include <CONDITION>

Warunkiem może być WM_CLASS okna, aby znaleźć „WM_CLASS” w oknie, możesz uruchomić polecenie xprop

  • xprop | grep WM_CLASS

Następnie kursor będzie „Krzyżem” i możesz kliknąć w oknie, które chcesz, aby znaleźć WM_CLASS.

Teraz powinieneś mieć coś takiego:

WM_CLASS (STRING) = „Leafpad”, „Leafpad”

wprowadź opis zdjęcia tutaj

Drugim ciągiem powinna być „Leafpad” WM_CLASS .
Aby odwrócić kolory edytora Leafpad, należy uruchomić:

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

W niektórych przypadkach możesz chcieć odwrócić tylko niektóre okna programu (np. Odwrócić okno edytora, ale nie okno dialogowe „Zapisz plik”).
W tym celu możesz użyć pierwszego z dwóch WM_CLASSciągów (zwanych również „instancją”):

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

Nie musisz cały czas uruchamiać Comptona, możesz go uruchomić, gdy chcesz odwrócić kolory okna.


UWAGA: W tym przykładzie używam Lubuntu 13.04 z openbox jako menedżerem okien, ale domyślnie bez kompozytu.


Aby zainstalować Compton

Ten kompozytor ma własny PPA

1) Aby zainstalować compton, otwórz terminal i wpisz:

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

W tym przykładzie utworzę podstawowy skrypt Bash (nie jestem ekspertem od skryptów), aby wykryć aktywne okno i odwrócić jego kolory.

2) Utwórz skrypt.

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

Treść skryptu:

#! /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

Zasadniczo skrypt sprawdzi, czy compton jest uruchomiony, jeśli go nie uruchomi, xdotool znajdzie identyfikator okna aktywnego okna, o identyfikatorze xprop znajdzie WM_CLASS, następnie przy WM_CLASS stworzy warunek i na końcu uruchomi compton z warunek jako argument.

Spraw, by skrypt był wykonywalny.

  • chmod +x ~/Scripts/invert.sh

W moim przypadku utworzę miękkie łącze do katalogu / usr / bin / o nazwie „invert-color”

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

3) utwórz skrót klawiaturowy,
np .: Ctrl+ Alt+ U (W Lubuntu powinieneś edytować plik lubuntu-rc.xml)

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

Dodaj następujące linie:

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

Wreszcie możesz się wylogować i zalogować, aby zobaczyć zmiany w skrócie klawiaturowym.


Mam zamiar, kiedy muszę odwrócić kolory w aktywnym oknie, mogę to zrobić za pomocą skrótu Ctrl+ Alt+. UJeśli chcę wrócić do normalnych kolorów, ponownie nacisnę skrót, a skrypt wykryje, że compton działa. polecenie pkill zabije komponent procesu.
W ten sposób uruchomię kompozytor tylko wtedy, gdy go potrzebuję.

Oto kilka zrzutów ekranu:

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Mam nadzieję, że to pomoże.


Jakiś sposób, aby to zadziałało, jeśli okno ma również pełny ekran? Może to być pożądane przy przełączaniu między różnymi obszarami roboczymi.
Toothrot

@Toothrot już działa jak reklamowane w moim systemie (przy użyciu i3wm i że dokładnie ten sam scenariusz z odpowiedzią)
sehe

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.