Shell-Script

切換佈局時如何更新 i3blocks?

  • May 7, 2017

我有兩種不同的鍵盤佈局,我用Ctrl+Shift在它們之間切換。我想用 i3blocks 顯示我目前的佈局。現在我有一個超小的單行腳本,它使用以下命令返回目前佈局:

xkb-switch

但是在鍵盤之間切換時如何更新資訊?我試過的:

嘗試#1

我可以通過設置i3blocks.conf成功更新資訊:

[language]
interval=1

…這迫使我的塊每毫秒執行一次腳本。它工作正常,但我真的不確定這是不是正確的方法,特別是在筆記型電腦上。

嘗試#2

我還嘗試在i3/config中按**Ctrl+Shift時向塊發送信號:

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

並在i3blocks.conf中使用以下行:

[language]
interval=once
signal=8

但我無法讓它工作。如果我將Control+Shift鍵更改為任何其他鍵(例如$mod+Shift+zorCapsLockControl+1),它可以正常工作。(我的意思是,它發送一個信號並更新塊。如果我用Ctrl+Shift切換鍵盤,然後按Mod+Shift+zCapsLockCtrl+1,它將發送一個信號,更新 i3blocks 並且語言塊會改變)。

其他

我看到了這個文章。這也是關於切換佈局。但我無法將這與我的問題聯繫起來。我不是最好的 bash 程序員,也不明白這個 kbdd 腳本中發生了什麼。據我了解,我的問題沒有任何問題。

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

我在這裡看到了你的問題,如果你確實在使用 i3,我很確定你可以編輯CTRL+SHIFT的鍵盤映射(鍵盤映射也在 i3 配置文件中~/.config/i3/config)來執行你的腳本,改變佈局的腳本AND 通知酒吧。

引用自:https://unix.stackexchange.com/questions/363003