Bir pencere için renk inversiyonu efekti nasıl tetiklenir?


21

Derlemede 'negatif' gibi ters bir renk efektinin (açıktan koyuya) olmasını istiyorum, ancak derlemesiz ve yalnızca bir pencere için (derlemenin Super+ gibi N) istiyorum.

Benzer bir etki (tercihen bir anahtar combo ile değiştirilir) derleme yapmadan benzer bir etki elde etmenin bir yolu var mı? Tüm masaüstünün renklerini ters çevirebilirim xcalib -I -a, ancak tek bir pencereyle sınırlayamıyorum.


Belki bu yazıyla
Sheljohn

compiz pencere yöneticisindeki negatif pencere seçeneğini kullanıyorum ve çok iyi çalışıyor.
stats-hb

Yanıtlar:


21

Bildiğim kadarıyla ... bunu başarmak için, bir Pencere Bestecisinin yardımına ihtiyacın olacak . Compton
gibi hafif bir bağımsız besteci kurmayı deneyebilirsiniz .

Compton

Compton, X için hafif bir besteci ve bir xcompmgr-dana çatalıdır.

Göre Man Pages Compton bir pencerede renkleri tersine çevirmek için bir seçenek vardır.

Örneğin:

compton --invert-color-include <CONDITION>

Durum olabilir WM_CLASS bir pencerenin, komut çalıştırabilirsiniz bir pencerede "WM_ CLASS" bulmak için xprop

  • xprop | grep WM_CLASS

Ardından imleç bir "Çapraz" olacaktır ve WM_CLASS'i bulmak için istediğiniz pencereye tıklayabilirsiniz.

Şimdi böyle bir şeye sahip olmalısınız:

WM_CLASS (STRING) = "yaprak defteri", "Yaprak defteri"

görüntü tanımını buraya girin

İkinci dize WM_CLASS "Leafpad" olmalıdır .
Bu nedenle, Leafpad editörünün renklerini ters çevirmek için çalıştırmalısınız:

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

Bazı durumlarda, bir programın yalnızca bazı pencerelerini ters çevirmek isteyebilirsiniz (örneğin, editör penceresini ters çevir, ancak "dosyayı kaydet" iletişim kutusunu değil).
Kullanabileceğiniz Bunun için ilk iki WM_CLASS(aynı zamanda "örnek" olarak adlandırılır) dizeleri:

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

Her zaman compton çalıştırmanıza gerek yoktur, pencerenin renklerini tersine çevirmeniz gerektiğinde çalıştırabilirsiniz.


NOT: Bu örnekte Lubuntu 13.04'ü openbox ile pencere yöneticisi olarak çalıştırıyorum, ancak varsayılan olarak besteci olmadan çalışıyorum.


Compton'ı yüklemek için

Bu bestecinin kendi PPA'sı var.

1) compton'u kurmak için bir Terminal açın ve şunu yazın:

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

Bu örnekte , aktif pencereyi tespit etmek ve renklerini tersine çevirmek için temel bir Bash betiği (scriptlerde uzman değilim) oluşturacağım.

2) Komut dosyasını oluşturun.

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

Komut dosyasının içeriği:

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

Temelde komut dosyası comptonun çalışıp çalışmadığını kontrol eder, xdotool çalışmıyorsa etkin pencerenin pencere kimliğini bulur, id xprop kimliği WM_CLASS'i bulur, sonra WM_CLASS ile koşulu oluşturur ve son olarak da comptonu çalıştırır argüman olarak koşul.

Komut dosyasını çalıştırılabilir hale getirin.

  • chmod +x ~/Scripts/invert.sh

Benim durumumda "usvert-color" ismiyle / usr / bin / dizinine yumuşak bir link oluşturacağım.

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

3)
örneğin bir Klavye Kısayolu oluşturun : Ctrl+ Alt+ U (Lubuntu'da lubuntu-rc.xml dosyasını düzenlemeniz gerekir)

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

Aşağıdaki Satırları ekleyin:

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

Son olarak, klavye kısayolundaki değişiklikleri görmek için Oturumu Kapat ve Giriş yapabilirsiniz.


Niyetim, aktif penceredeki renkleri ters çevirmem gerektiğinde Kısayol Ctrl+ Alt+ ile yapabilirim U. Normal renklere dönmek istersem tekrar kısayol tuşuna basacağım ve komut dosyası comptonun çalıştığını tespit edecek pkill komutu işlem comptonunu öldürür.
Böylece bu şekilde besteciyi ancak ihtiyacım olduğunda işleteceğim.

Burada birkaç ekran görüntüsünüz var:

görüntü tanımını buraya girin

görüntü tanımını buraya girin

görüntü tanımını buraya girin

görüntü tanımını buraya girin

Umarım yardımcı olur.


Bir pencere de tam ekran ise, bu işi yapmak için herhangi bir yolu? Farklı çalışma alanları arasında geçiş yaparken bu arzu edilebilir.
Toothrot

(İ3wm ve cevap o tam aynı komut dosyası kullanarak) sistemimde reklamı olarak @Toothrot zaten çalışır
sehe

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.