レイアウトを切り替えるときにi3blockをどのように更新しますか?

レイアウトを切り替えるときにi3blockをどのように更新しますか?

2つのキーボードレイアウトがあり、それらを切り替えることができます。Ctrl+Shift。 i3blocksを使って現在のレイアウトを表示したいです。今では、次のように現在のレイアウトを返す非常に小さな1行のスクリプトがあります。

xkb-switch

しかし、キーボードの切り替え時に情報をどのように更新しますか?私が試したこと:

試み #1

設定により、情報を正常に更新できます。i3blocks.conf:

[language]
interval=1

...私のブロックがミリ秒ごとにスクリプトを実行するように強制します。うまくいきますが、これが正しいアプローチであるかどうかはわかりません。特にラップトップではさらにそうです。

試み #2

また、押したときにブロックに信号を送信しようとしました。Ctrl+Shift中にこんなものがあります。i3/構成:

bindsym --release Control+Shift exec --no-startup-id pkill -RTMIN+8 i3blocks

そして次の行でi3blocks.conf:

[language]
interval=once
signal=8

しかし、私はそれを動作させることはできません。キーをまたはControl+Shift他のキーに変更すると正常に機能します。 (私の言葉は、信号を送ってブロックを更新することを意味します。$mod+Shift+zCapsLockControl+1Ctrl+Shiftそれから押してください変調+Shift+zまたは大文字ロックまたはCtrl+1シグナルを送信してi3blockを更新すると、言語ブロックが変更されます。

その他

私は見たこれ郵便はがき。また、レイアウトの切り替えについてです。しかし、私はそれを私の問題に関連付けることはできません。私は最高のbashプログラマーではなく、このkbddスクリプトで何が起こっているのかわかりません。私が理解する限り、私の問題はこれとは何の関係もありません。

答え1

いい奴が入るReddit問題を解決するのに役立ちました。ここに彼の答えをコピーして貼り付けます。主なコマンド:

xkb-switch -W

次の行でi3blocks.confすべてが夢のようです。

# AUR package: xkb-switch-git
[keymap]
label=⌨
command=xkb-switch -W
#or
#command=bash -c 'xkb-switch;xkb-switch -W'
interval=persist
border=#0d5eaf

答え2

私はあなたの質問を見ましたここCTRLi3を使用している場合は、+のキーマップを編集してSHIFT(キーマップはi3設定ファイルにもあります~/.config/i3/config)、レイアウトと通知バーを変更するスクリプトを実行できることを確認してください。

関連情報