¿Cómo activar un efecto de inversión de color para una ventana?

21

Quiero tener un efecto de color inverso (claro a oscuro) como 'negativo' en compiz, pero sin compiz, y solo para una ventana (como compiz's Super+ N).

¿Hay alguna manera de obtener un efecto similar (preferiblemente activado por una combinación de teclas) sin compiz? Puedo invertir colores para todo el escritorio xcalib -I -a, pero no puedo restringirlo a una sola ventana.

belacqua
fuente
Tal vez relacionado con esta publicación: unix.stackexchange.com/questions/20565/…
Sheljohn
He estado usando la opción de ventana negativa de compiz window manager y también funciona muy bien.
stats-hb

Respuestas:

21

Hasta donde yo sé ... para lograr eso, necesitarás la ayuda de un Compositor de ventanas .
Puede intentar instalar un compositor independiente liviano como Compton .

Compton

Compton es un compositor ligero para X y un tenedor de xcompmgr-dana.

De acuerdo con Man Pages, Compton tiene una opción para invertir colores en una ventana.

p.ej:

compton --invert-color-include <CONDITION>

La condición podría ser el WM_CLASS de una ventana, para encontrar el "WM_CLASS" en una ventana puede ejecutar el comando xprop

  • xprop | grep WM_CLASS

Entonces el cursor será una "Cruz" y puede hacer clic en la ventana que desee para encontrar el WM_CLASS.

Ahora deberías tener algo como esto:

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

ingrese la descripción de la imagen aquí

La segunda cadena debe ser el WM_CLASS "Leafpad" .
Entonces, para invertir los colores del editor de Leafpad, debe ejecutar:

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

En algunos casos, es posible que desee invertir solo algunas ventanas de un programa (por ejemplo, invertir la ventana del editor, pero no el cuadro de diálogo "guardar archivo").
Para eso puede usar la primera de las dos WM_CLASScadenas (también llamada "instancia"):

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

No necesita ejecutar compton todo el tiempo, puede ejecutarlo cuando necesita invertir los colores de una ventana.


NOTA: En este ejemplo, estoy ejecutando Lubuntu 13.04 con openbox como administrador de ventanas pero sin compositor por defecto.


Para instalar Compton

Este compositor tiene su propio PPA

1) Para instalar compton, abra una Terminal y escriba:

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

En este ejemplo, crearé un script Bash básico (no soy un experto en scripts) para detectar la ventana activa e invertir sus colores.

2) Crea el guión.

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

El contenido del guión:

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

Básicamente, el script verificará si se está ejecutando compton, si no se está ejecutando xdotool encontrará el id de la ventana de la ventana activa, con el id xprop encontrará el WM_CLASS, luego con el WM_CLASS creará la condición y finalmente ejecutará compton con el condición como argumento.

Haga que el script sea ejecutable.

  • chmod +x ~/Scripts/invert.sh

En mi caso, crearé un enlace suave al directorio / usr / bin / con el nombre "invert-color"

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

3) cree un atajo de teclado,
por ejemplo: Ctrl+ Alt+ U (en Lubuntu, debe editar el archivo lubuntu-rc.xml)

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

Agregue las siguientes líneas:

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

Finalmente, puede cerrar sesión e iniciar sesión para ver los cambios en el método abreviado de teclado.


Mi intención es que cuando necesite invertir los colores en la ventana activa, puedo hacerlo con el acceso directo Ctrl+ Alt+ U. Si quiero volver a los colores normales, presionaré nuevamente el acceso directo y el script detectará que el compton se está ejecutando. el comando pkill matará el proceso compton.
De esta manera, solo ejecutaré el compositor cuando lo necesite.

Aquí tienes algunas capturas de pantalla:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Espero eso ayude.

Raguet romano
fuente
¿Alguna forma de hacer que esto funcione si una ventana también está en pantalla completa? Esto puede ser deseable al cambiar entre diferentes espacios de trabajo.
Toothrot
@Toothrot ya funciona como se anuncia en mi sistema (usando i3wm y que exactamente la misma secuencia de comandos de la respuesta)
sehe
2

Un "Invertir color de ventana" de Gnome Shell Extension lo hace sin problemas. Aquí está el enlace .

LostPolarBear
fuente