web-dev-qa-db-ja.com

キーボードカーソルの入力言語のインジケーター(またはカーソルの色)

キーボードカーソル(またはその近く)で入力言語を示すことや、入力言語に応じてカーソルの色を変更することは可能ですか?

複数の言語を使って入力する人にとっては素晴らしい追加になると思います。

3
GLaz

確かに可能ですが、私が思いついた解決策は非常にveryいです。

まず、独自の色で独自のカーソルテーマを作成する必要があります。 /usr/share/iconscursor.themeファイルを含むフォルダーを確認)にあるものをユーザー~/.iconsフォルダーにコピーし、選択して名前を変更し、色付けすることができます。概念実証のために、システムで既に利用可能なはずのカーソルテーマを使用するだけで、残りを紹介します。 「DMZ-White」と「DMZ-Black」としましょう。

カーソルの色付けについては、GIMPで行うことができ、「色付け」関数/フィルターですが、すべてのレイヤー(異なるサイズ)に適用してから、それらのファイルを.xmc拡張子でエクスポートしてからその拡張子を取り除くと、名前は元のソーステーマのようになります。


さまざまなデスクトップ環境には、現在のキーボードレイアウトを格納するためのさまざまなメソッドがあり、作業中のキーボードレイアウト(MATE)に対して、Niceメソッドを理解することさえできなかったため、非常に無意味なxset -qを使用する必要がありましたキーボードレイアウトごとに異なる「マスク」。

キーボードレイアウトを切り替えた後、このコマンドを実行してみてください。

xset -q | grep -A 0 'LED' | cut -c59-67

1つのレイアウトに「00000002」、もう1つのレイアウトに「00001002」のようなものが表示されます。これらの値は後で必要になります。


次に、環境でコマンドを使用してカーソルテーマを変更する方法を理解する必要があります。

MATEで機能するものは次のとおりです。

gsettings set org.mate.peripherals-mouse cursor-theme 'DMZ-Black'

...そしてこれはおそらくGNOMEで動作するはずです:

gsettings set org.gnome.desktop.interface cursor-theme 'DMZ-Black'

カーソルテーマの適切な名前がわからない場合は、GUIで切り替えて確認してください:

gsettings get org.mate.peripherals-mouse cursor-theme
gsettings get org.gnome.desktop.interface cursor-theme

そして今...最もuい部分-それをすべてまとめて、xsetの値に従ってカーソルを変更する所定の間隔でループ上でスクリプトを実行します。これを行う簡単なものを次に示します。

#!/bin/bash

current=$(gsettings get org.mate.peripherals-mouse cursor-theme)
echo "STARTING WITH: $current"

while [ "true" ]; do

    xval=$(xset -q | grep -A 0 'LED' | cut -c59-67)

    if [ "$xval" == "00000002" ]; then

        if [ "$current" != "'DMZ-Black'" ]; then

            current="'DMZ-Black'"
            echo "CHANGING TO: $current"
            gsettings set org.mate.peripherals-mouse cursor-theme $current

        fi

    Elif [ "$xval" == "00001002" ]; then

        if [ "$current" != "'DMZ-White'" ]; then

            current="'DMZ-White'"
            echo "CHANGING TO: $current"
            gsettings set org.mate.peripherals-mouse cursor-theme $current

        fi

    fi

    sleep 1 # one-second interval between each re-check

done

このスクリプトをいくつかのファイルに入れ、chmod +xを適用し(実行可能アクセス許可)、状況に応じて構成し、ターミナルでテストした後(fe bash /home/glaz/my-dynamic-cursor-script)、自動起動に追加して〜ビオラ〜

たぶん最も良い解決策ではないかもしれませんが、それは仕事をします-少なくとも私にとっては:)


ああ...また、その機能を使用している場合にも機能します。これにより、ウィンドウごとに異なる入力レイアウトが可能になるため、別のウィンドウにフォーカスを変更するとカーソルも更新されます。独自のカスタムカーソルを使用している-このような場合、他のアイデアが必要になります:リアルタイムでカーソルを追跡し、その横にオーバーレイをレンダリングするが、これほど簡単ではないと思います...それを実行する特殊なアプリ/デーモンをコーディングする必要があるかもしれません。

3
GreggD