Comment déclencher un effet d'inversion de couleur pour une fenêtre?

21

Je veux avoir un effet de couleur inverse (clair à foncé) comme «négatif» dans compiz, mais sans compiz, et seulement pour une fenêtre (comme compiz's Super+ N).

Existe-t-il un moyen d'obtenir un effet similaire (basculé par un combo de touches de préférence) sans compiz? Je peux inverser les couleurs de l'ensemble du bureau avec xcalib -I -a, mais je ne peux pas le limiter à une seule fenêtre.

belacqua
la source
Peut-être lié à ce message: unix.stackexchange.com/questions/20565/…
Sheljohn
j'ai utilisé l'option de fenêtre négative du gestionnaire de fenêtres compiz et cela fonctionne très bien aussi.
stats-hb

Réponses:

21

Pour autant que je sache ... pour y parvenir, vous aurez besoin de l'aide d'un Window Compositor .
Vous pouvez essayer d'installer un compositeur autonome léger comme Compton .

Compton

Compton est un compositeur léger pour X et un fork de xcompmgr-dana.

Selon le Man Pages, Compton a la possibilité d'inverser les couleurs dans une fenêtre.

par exemple:

compton --invert-color-include <CONDITION>

La condition pourrait être le WM_CLASS d'une fenêtre, pour trouver le "WM_CLASS" dans une fenêtre, vous pouvez exécuter la commande xprop

  • xprop | grep WM_CLASS

Le curseur sera alors un "Cross" et vous pourrez cliquer dans la fenêtre de votre choix, pour trouver la WM_CLASS.

Maintenant, vous devriez avoir quelque chose comme ça:

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

entrez la description de l'image ici

La deuxième chaîne doit être le " Leafpad " WM_CLASS .
Donc, pour inverser les couleurs de l'éditeur Leafpad, vous devez exécuter:

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

Dans certains cas, vous souhaiterez peut-être inverser uniquement certaines fenêtres d'un programme (par exemple, inverser la fenêtre de l'éditeur, mais pas la boîte de dialogue "enregistrer le fichier").
Pour cela, vous pouvez utiliser la première des deux WM_CLASSchaînes (également appelée "instance"):

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

Vous n'avez pas besoin d'exécuter compton tout le temps, vous pouvez l'exécuter lorsque vous devez inverser les couleurs d'une fenêtre.


REMARQUE: dans cet exemple, j'utilise Lubuntu 13.04 avec openbox comme gestionnaire de fenêtres mais sans compositeur par défaut.


Pour installer Compton

Ce compositeur possède son propre PPA

1) Pour installer compton, ouvrez un terminal et tapez:

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

Dans cet exemple, je vais créer un script Bash de base (je ne suis pas un expert en scripts) pour détecter la fenêtre active et inverser ses couleurs.

2) Créez le script.

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

Le contenu du script:

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

Fondamentalement, le script vérifiera si compton est en cours d'exécution, s'il ne fonctionne pas, xdotool trouvera l'id de la fenêtre de la fenêtre active, avec l'id xprop trouvera le WM_CLASS, puis avec le WM_CLASS il créera la condition et enfin exécutera compton avec le condition comme argument.

Rendez le script exécutable.

  • chmod +x ~/Scripts/invert.sh

Dans mon cas, je vais créer un lien logiciel vers le répertoire / usr / bin / avec le nom "invert-color"

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

3) créer un raccourci clavier,
par exemple: Ctrl+ Alt+ U (Dans Lubuntu, vous devez éditer le fichier lubuntu-rc.xml)

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

Ajoutez les lignes suivantes:

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

Enfin, vous pouvez vous déconnecter et vous connecter pour voir les modifications apportées au raccourci clavier.


Mon intention est quand j'ai besoin d'inverser les couleurs dans la fenêtre active, je peux le faire avec le raccourci Ctrl+ Alt+ U.Si je veux revenir aux couleurs normales, j'appuierai à nouveau sur le raccourci et le script détectera que le compton fonctionne donc la commande pkill va tuer le processus compton.
Ainsi, de cette façon, je n'exécuterai le compositeur que lorsque j'en aurai besoin.

Voici quelques captures d'écran:

entrez la description de l'image ici

entrez la description de l'image ici

entrez la description de l'image ici

entrez la description de l'image ici

J'espère que cela aide.

Roman Raguet
la source
Est-il possible de faire fonctionner cela si une fenêtre est également en plein écran? Cela peut être souhaitable lors du basculement entre différents espaces de travail.
Toothrot
@Toothrot fonctionne déjà comme annoncé sur mon système ( en utilisant i3wm et de la réponse exacte même script)
sehe
2

Une extension Gnome Shell «Invert Window Color» le fait sans aucun problème. Voici le lien .

LostPolarBear
la source