Come attivare un effetto di inversione del colore per una finestra?


21

Voglio avere un effetto di colore inverso (da chiaro a scuro) come 'negativo' in compiz, ma senza compiz, e solo per una finestra (come il compiz Super+ N).

C'è un modo per ottenere un effetto simile (attivato da una combinazione di tasti preferibilmente) senza compiz? Posso invertire i colori per l'intero desktop con xcalib -I -a, ma non posso limitarlo a una singola finestra.



sto usando l'opzione negativa della finestra da Compiz Window Manager e funziona anche molto bene.
stats-hb

Risposte:


21

Per quanto ne so ... per riuscirci, avrai bisogno dell'aiuto di un compositore di finestre .
Puoi provare a installare un compositore autonomo leggero come Compton .

Compton

Compton è un compositore leggero per X e un fork di xcompmgr-dana.

Secondo Man Pages Compton ha un'opzione per invertire i colori in una finestra.

per esempio:

compton --invert-color-include <CONDITION>

La condizione potrebbe essere il WM_CLASS di una finestra, per trovare il "WM_CLASS" in una finestra è possibile eseguire il comando xprop

  • xprop | grep WM_CLASS

Quindi il cursore sarà una "Croce" e puoi fare clic nella finestra che desideri, per trovare WM_CLASS.

Ora dovresti avere qualcosa del genere:

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

inserisci qui la descrizione dell'immagine

La seconda stringa dovrebbe essere il "Leafpad" WM_CLASS .
Quindi, per invertire i colori dell'editor Leafpad devi eseguire:

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

In alcuni casi, potresti voler invertire solo alcune finestre di un programma (ad es. Inverti la finestra dell'editor, ma non la finestra di dialogo "salva file").
Per questo puoi usare la prima delle due WM_CLASSstringhe (detta anche "istanza"):

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

Non è necessario eseguire Compton tutto il tempo, è possibile eseguirlo quando è necessario invertire i colori di una finestra.


NOTA: In questo esempio sto eseguendo Lubuntu 13.04 con openbox come gestore di finestre ma senza compositore per impostazione predefinita.


Per installare Compton

Questo compositore ha il proprio PPA

1) Per installare compton aprire un Terminale e digitare:

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

In questo esempio creerò uno script Bash di base (non sono un esperto di script) per rilevare la finestra attiva e invertirne i colori.

2) Crea lo script.

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

Il contenuto della sceneggiatura:

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

Fondamentalmente lo script verificherà se compton è in esecuzione, se non in esecuzione xdotool troverà l'id della finestra della finestra attiva, con l'id xprop troverà WM_CLASS, quindi con WM_CLASS creerà la condizione e infine eseguirà compton con il condizione come argomento.

Rendi eseguibile lo script.

  • chmod +x ~/Scripts/invert.sh

Nel mio caso, creerò un collegamento soft alla directory / usr / bin / con il nome "invert-color"

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

3) creare una scorciatoia da tastiera,
ad es .: Ctrl+ Alt+ U (in Lubuntu è necessario modificare il file lubuntu-rc.xml)

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

Aggiungi le seguenti righe:

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

Infine puoi disconnettersi e accedere per vedere le modifiche nella scorciatoia da tastiera.


La mia intenzione è quando ho bisogno di invertire i colori nella finestra attiva, posso farlo con la scorciatoia Ctrl+ Alt+ U. Se voglio tornare ai colori normali, premerò di nuovo la scorciatoia e lo script rileverà che il compton è in esecuzione quindi il comando pkill ucciderà il processo compton.
Quindi in questo modo eseguirò il compositore solo quando ne avrò bisogno.

Ecco alcuni screenshot:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Spero che sia d'aiuto.


Un modo per farlo funzionare anche se una finestra è a schermo intero? Ciò può essere desiderabile quando si passa da un'area di lavoro a un'altra.
Toothrot,

@Toothrot funziona già come pubblicizzato sul mio sistema (usando i3wm e lo stesso identico script della risposta)
visto il

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.