
私は数年前から Ubuntu を使っていて、とても気に入っています。生計を立てるために PHP と Javascript でソフトウェアを開発しています。
私が感じる唯一の小さな不満は、PC のメイン キーボード言語を英語に戻してほしいということです。ヘブライ語で入力し忘れてしまうことがあるので、シェル コマンドを入力したりロックを解除したりするために戻ったときに、Enter キーを押した後に別の言語になっていることに気付くからです。
これは本当に特殊なケースだと無視されるかもしれませんが、キーボードが一定時間操作されない場合 (電子書籍を読んでいるときやマウスを使用しているときなど) にキーボード設定のデフォルトの言語 (英語) に戻るタイマーを設定するスクリプトを作成できるかどうか興味があります。
ボーナスとしては、矢印キーや Page Down キーなどの類似のキーをスクリプトから除外し、それらのキーが押されたときにタイマーが動き続けるようにすることができればよいでしょう。
答え1
xprintidle
これは、現在のアイドル時間を返す を使用したバックグラウンド スクリプトの助けを借りれば、十分に可能です。
まずこれをインストールする必要があります:
sudo apt-get install xprintidle
以下のスクリプトは、コマンドの出力を読み取りxprintidle
、設定された時間が経過するたびにキーボードを設定します。
キーボードの設定方法(インデックス)
正しいコマンドを作成するには、スクリプトが対象のキーボードのインデックスを認識している必要があります。それを取得するには、次のコマンドを実行します。
gsettings get org.gnome.desktop.input-sources sources
出力は次のようになります。
[('xkb', 'us+intl'), ('xkb', 'us'), ('xkb', 'nl')]
ここで、x 時間後に最後の項目を設定する場合、リストの最初の項目は常に 0 であるため、そのインデックスは 2 になります。
スクリプトの使い方
- 前述のように、まずインストールします
xprintidle
- 以下のスクリプトを空のファイルにコピーします
- スクリプトのヘッドセクションで、次のように設定します。
- 上で説明したように、対象となるキーボード言語のインデックス
- キーボード言語を変更するまでのアイドル時間(秒単位)
- スクリプトを
change_kb.py
次のコマンドでターミナルからテスト実行します。
python3 /path/to/change_kb.py
すべてが期待通りに動作する場合は、スタートアップアプリケーションに追加します: ダッシュ > スタートアップアプリケーション > 追加
スクリプト
#!/usr/bin/env python3
import subprocess
import time
#---
kb_id = 2 # set the targeted keyboard index (first = 0)
set_time = 300 # idle tim in seconds
#---
get_t = lambda cmd: subprocess.check_output(cmd).decode("utf-8").strip()
t1 = int(get_t(["xprintidle"]))
idle_t = set_time*1000
while True:
time.sleep(1)
t2 = int(get_t(["xprintidle"]))
if all([t1<idle_t, t2>idle_t]):
cmd = "gsettings set org.gnome.desktop.input-sources current "+str(kb_id)
subprocess.Popen(["/bin/bash", "-c", cmd])
else:
pass
t1 = t2