Bagaimana cara memicu efek inversi warna untuk satu jendela?


21

Saya ingin memiliki efek warna terbalik (terang ke gelap) seperti 'negatif' di compiz, tetapi tanpa compiz, dan hanya untuk satu jendela (seperti compiz's Super+ N).

Apakah ada cara untuk mendapatkan efek yang serupa (lebih disukai oleh tombol kombo) tanpa compiz? Saya dapat membalikkan warna untuk seluruh desktop xcalib -I -a, tetapi saya tidak dapat membatasinya menjadi satu jendela.


Mungkin terkait dengan posting ini: unix.stackexchange.com/questions/20565/…
Sheljohn

Saya telah menggunakan opsi jendela negatif dari compiz window manager dan itu berfungsi dengan sangat baik juga.
stats-hb

Jawaban:


21

Sejauh yang saya tahu ... untuk mencapai itu, Anda akan memerlukan bantuan dari Window Compositor .
Anda dapat mencoba memasang komposer mandiri ringan seperti Compton .

Compton

Compton adalah komposer ringan untuk X, dan garpu xcompmgr-dana.

Menurut Man Pages, Compton memiliki opsi untuk membalikkan warna di jendela.

misalnya:

compton --invert-color-include <CONDITION>

Syaratnya bisa menjadi WM_CLASS dari sebuah jendela, untuk menemukan "WM_CLASS" di jendela Anda dapat menjalankan perintah xprop

  • xprop | grep WM_CLASS

Maka kursor akan menjadi "Cross" dan Anda dapat mengklik di jendela yang Anda inginkan, untuk menemukan WM_CLASS.

Sekarang Anda harus memiliki sesuatu seperti ini:

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

masukkan deskripsi gambar di sini

String kedua adalah WM_CLASS "Leafpad" .
Jadi, untuk membalikkan warna editor Leafpad Anda harus menjalankan:

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

Dalam beberapa kasus, Anda mungkin ingin membalik hanya beberapa jendela program (mis. Membalikkan jendela editor, tetapi bukan dialog "simpan file").
Untuk itu Anda dapat menggunakan yang pertama dari dua WM_CLASSstring (juga disebut "instance"):

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

Anda tidak perlu menjalankan compton setiap saat, Anda dapat menjalankannya saat Anda perlu membalikkan warna jendela.


CATATAN: Dalam contoh ini saya menjalankan Lubuntu 13.04 dengan openbox sebagai window manager tetapi tanpa compositor secara default.


Untuk menginstal Compton

Komponis ini memiliki PPA sendiri

1) Untuk menginstal compton, buka Terminal dan ketik:

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

Dalam contoh ini saya akan membuat skrip Bash dasar (saya bukan ahli skrip) untuk mendeteksi jendela aktif dan membalikkan warnanya.

2) Buat skrip.

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

Isi skrip:

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

Pada dasarnya skrip akan memeriksa apakah compton sedang berjalan, jika tidak berjalan xdotool akan menemukan id jendela dari jendela aktif, dengan id xprop akan menemukan WM_CLASS, kemudian dengan WM_CLASS akan menciptakan kondisi dan akhirnya akan menjalankan compton dengan kondisi sebagai argumen.

Jadikan skrip dapat dieksekusi.

  • chmod +x ~/Scripts/invert.sh

Dalam kasus saya, saya akan membuat tautan lunak ke direktori / usr / bin / dengan nama "invert-color"

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

3) buat Pintasan Keyboard
mis .: Ctrl+ Alt+ U (Di Lubuntu Anda harus mengedit file lubuntu-rc.xml)

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

Tambahkan Baris berikut:

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

Akhirnya Anda bisa Keluar dan Masuk untuk melihat perubahan pada pintasan keyboard.


Maksud saya adalah ketika saya perlu membalikkan warna di jendela aktif, saya dapat melakukannya dengan Shortcut Ctrl+ Alt+ U. Jika saya ingin kembali ke warna normal, saya akan menekan lagi pintasan dan skrip akan mendeteksi compton sedang berjalan karena itu perintah pkill akan mematikan proses compton.
Jadi dengan cara ini saya hanya akan menjalankan compositor ketika saya membutuhkannya.

Di sini Anda memiliki beberapa tangkapan layar:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Semoga ini bisa membantu.


Adakah cara untuk membuat ini berfungsi jika jendela layar penuh juga? Ini mungkin diinginkan ketika beralih di antara ruang kerja yang berbeda.
Toothrot

@Toothrot sudah berfungsi seperti yang diiklankan di sistem saya (menggunakan i3wm dan skrip yang sama persis dari jawaban)
sehe

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.