Como disparar um efeito de inversão de cores para uma janela?

21

Eu quero ter um efeito de cor inverso (claro a escuro) como 'negativo' no compiz, mas sem o compiz e apenas para uma janela (como o compiz Super+ N).

Existe uma maneira de obter um efeito semelhante (alternado por uma combinação de teclas de preferência) sem compiz? Posso inverter cores para toda a área de trabalho xcalib -I -a, mas não posso restringi-las a uma única janela.

belacqua
fonte
Talvez relacionadas com este post: unix.stackexchange.com/questions/20565/...
Sheljohn
Eu tenho usado a opção de janela negativa do gerenciador de janelas compiz e funciona muito bem também.
stats-hb

Respostas:

21

Tanto quanto eu sei ... para conseguir isso, você precisará da ajuda de um compositor de janelas .
Você pode tentar instalar um compositor independente leve como o Compton .

Compton

O Compton é um compositor leve para o X e um fork do xcompmgr-dana.

De acordo com as páginas de manual, Compton tem a opção de inverter cores em uma janela.

por exemplo:

compton --invert-color-include <CONDITION>

A condição pode ser o WM_CLASS de uma janela. Para encontrar o "WM_CLASS" em uma janela, você pode executar o comando xprop

  • xprop | grep WM_CLASS

Em seguida, o cursor será uma "Cruz" e você poderá clicar na janela desejada para encontrar o WM_CLASS.

Agora você deve ter algo parecido com isto:

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

insira a descrição da imagem aqui

A segunda seqüência deve ser o WM_CLASS "Leafpad" .
Portanto, para inverter as cores do editor Leafpad, você deve executar:

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

Em alguns casos, convém inverter apenas algumas janelas de um programa (por exemplo, inverter a janela do editor, mas não a caixa de diálogo "salvar arquivo").
Para isso, você pode usar a primeira das duas WM_CLASScadeias (também chamada de "instância"):

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

Você não precisa executar o compton o tempo todo, pode executá-lo quando precisar inverter as cores de uma janela.


NOTA: Neste exemplo, estou executando o Lubuntu 13.04 com o openbox como gerenciador de janelas, mas sem o compositor por padrão.


Para instalar o Compton

Este compositor possui seu próprio PPA

1) Para instalar o compton, abra um terminal e digite:

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

Neste exemplo, criarei um script básico do Bash (não sou especialista em scripts) para detectar a janela ativa e inverter suas cores.

2) Crie o script.

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

O conteúdo do 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

Basicamente, o script verificará se o compton está em execução, se não estiver executando o xdotool, encontrará o ID da janela da janela ativa, com o id xprop encontrará o WM_CLASS, em seguida, com o WM_CLASS, criará a condição e, finalmente, executará o compton com o comando condição como argumento.

Torne o script executável.

  • chmod +x ~/Scripts/invert.sh

No meu caso, vou criar um link para o diretório / usr / bin / com o nome "invert-color"

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

3) crie um atalho de teclado,
por exemplo: Ctrl+ Alt+ U (No Lubuntu, você deve editar o arquivo lubuntu-rc.xml)

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

Adicione as seguintes linhas:

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

Finalmente, você pode efetuar logout e login para ver as alterações no atalho de teclado.


Minha intenção é que, quando eu precisar inverter as cores na janela ativa, eu possa fazê-lo com o atalho Ctrl+ Alt+ U. Se quiser voltar às cores normais, pressionarei novamente o atalho e o script detectará que o compton está sendo executado. o comando pkill matará o compton do processo.
Portanto, dessa maneira, executarei o compositor somente quando precisar.

Aqui você tem algumas capturas de tela:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Espero que ajude.

Roman Raguet
fonte
Existe alguma maneira de fazer isso funcionar se uma janela também estiver em tela cheia? Isso pode ser desejável ao alternar entre diferentes áreas de trabalho.
22716 Toothrot
O @Toothrot já funciona como anunciado no meu sistema (usando o i3wm e exatamente o mesmo script da resposta)
sehe
2

Uma extensão Gnome Shell "Invert Window Color" faz isso sem qualquer aborrecimento. Aqui está o link .

LostPolarBear
fonte