1つのウィンドウで色反転効果をトリガーする方法は?


21

compizでは 'negative'のような逆色効果(明るい色から暗い色)が必要ですが、compizはなく、1つのウィンドウ(compizのSuper+のようなN)のみに使用します。

compizなしで同様の効果(できればキーコンボで切り替え)を取得する方法はありますか?でデスクトップ全体の色を反転できますがxcalib -I -a、1つのウィンドウに制限することはできません。


たぶん、この記事に関連する:unix.stackexchange.com/questions/20565/...
Sheljohn

私はcompizウィンドウマネージャからネガティブウィンドウオプションを使用してきましたが、非常にうまく機能します。
stats-hb

回答:


21

私の知る限り...それを達成するには、Window Compositorの助けが必要です。Comptonの
ような軽量のスタンドアロンコンポジターをインストールすることができます。

コンプトン

ComptonはX用の軽量なコンポジターであり、xcompmgr-danaのフォークです。

マンページによると、コンプトンにはウィンドウの色を反転するオプションがあります。

例えば:

compton --invert-color-include <CONDITION>

条件は、ウィンドウのWM_CLASSである可能性があります。ウィンドウで「WM_CLASS」を見つけるには、コマンドxpropを実行できます

  • xprop | grep WM_CLASS

カーソルが「クロス」になり、目的のウィンドウをクリックしてWM_CLASSを見つけることができます。

これで、次のようになります。

WM_CLASS(STRING)= "リーフパッド"、 "リーフパッド"

ここに画像の説明を入力してください

2番目の文字列はWM_CLASS "Leafpad"でなければなりません。
したがって、Leafpadエディターの色を反転するには、次を実行する必要があります。

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

場合によっては、プログラムの一部のウィンドウのみを反転することもできます(たとえば、エディターウィンドウを反転しますが、「ファイルの保存」ダイアログは反転しません)。
そのために、2つの文字列の最初WM_CLASS文字列(「インスタンス」とも呼ばれます)を使用できます。

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

コンプトンを常に実行する必要はありません。ウィンドウの色を反転する必要があるときに実行できます。


注: この例では、ウィンドウマネージャーとしてopenboxを使用してLubuntu 13.04を実行していますが、デフォルトではコンポジターは使用していません。


コンプトンをインストールするには

このコンポジターには独自のPPAがあります

1)コンプトンをインストールするには、ターミナルを開いて次を入力します:

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

この例では、アクティブなウィンドウを検出し、その色を反転させるための基本的なBashスクリプト(スクリプトの専門家ではありません)作成します。

2)スクリプトを作成します。

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

スクリプトの内容:

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

基本的に、スクリプトはコンプトンが実行されているかどうかをチェックし、実行されていない場合はxdotoolがアクティブウィンドウのウィンドウIDを見つけ、ID xpropがWM_CLASSを見つけ、次にWM_CLASSで条件を作成し、最後にcomptonを実行します引数としての条件。

スクリプトを実行可能にします。

  • chmod +x ~/Scripts/invert.sh

私の場合、「invert-color」という名前で/ usr / bin /ディレクトリへのソフトリンクを作成します

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

3)キーボードショートカットを作成します。
例: Ctrl+ Alt+ U (Lubuntuでは、lubuntu-rc.xmlファイルを編集する必要があります)

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

次の行を追加します。

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

最後に、ログアウトしてログインし、キーボードショートカットの変更を確認できます。


私の意図は、アクティブなウィンドウの色を反転する必要があるとき、ショートカット Ctrl+ Alt+でそれを行うことができますU。通常の色に戻りたい場合は、ショートカットをもう一度押すと、スクリプトがコンプトンが実行されていることを検出しますpkillコマンドはプロセスコンプトンを強制終了します。
このようにして、必要なときにのみコンポジターを実行します。

ここにいくつかのスクリーンショットがあります:

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

それが役に立てば幸い。


ウィンドウがフルスクリーンでもある場合、これを機能させる方法はありますか?これは、異なるワークスペースを切り替えるときに望ましい場合があります。
歯磨き

@Toothrotは私のシステムで宣伝されているように既に動作しています(i3wmと答えとまったく同じスクリプトを使用)
sehe

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.