我在 Ubuntu 16.04 上安装了全新的 i3 版本 4.11(2015-09-30,分支“4.11”)。实际上,我需要使用 3 种不同的键盘布局en
,fr
并ru
可以使用一些键盘快捷键在它们之间切换。
我尝试了一些方法,但都不完全令人满意:
- 使用
ibus-daemon
几乎可以起作用,但我不能使用任何快捷方式来更改布局。 我的实际设置是
setxkbmap
在启动时配置的i3
:exec --no-startup-id "setxkbmap -model pc105 -layout fr,us,ru -option grp:alt_shift_toggle"
因此我可以在布局之间切换,但有时我不知道我实际使用的是哪种布局,因为此设置中没有任何托盘图标。
总结一下我的需求是:
可以通过按一些热键来切换布局。
我实际正在使用的布局的一些指示(最好是托盘图标)。
有没有什么办法可以解决这个问题?或者也许有一些 i3 插件可以真正完成这项工作?一些第三方软件?
答案1
你可以这样做xkblayout-state
和i3blocks
为了xkblayout-state
:
我认为你已经有了git
。
~$ git clone https://github.com/nonpop/xkblayout-state.git
~$ cd xkblayout-state
~$ make
现在将编译好的文件复制xkblayout-state
到你的某个位置PATH
,例如:
~$ `cp xkblayout-state /usr/local/bin/`
现在i3blocks
:
sudo apt-get install i3blocks
cp /etc/i3blocks.conf ~/.i3blocks.conf
在您的i3
配置文件(〜/ .config / i3 / config)中替换i3status
为i3blocks
,
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
status_command i3blocks
tray_output primary
}
# in case of layout change event - send signal to i3blocks
bindsym ISO_Next_Group exec pkill -RTMIN+1 i3blocks
然后重新启动i3wm
(mod+shift+R),您现在应该可以看到i3blocks
出现了。
打开您的~/.i3blocks.conf
并添加某处(例如,[VOLUME] 部分正上方):
#Language indicator
[language]
#label=LNG
command=xkblayout-state print %s | awk '{print toupper($0)}'
interval=once
signal=1
再次重新启动 i3wm(mod+shift+R),您应该会在状态栏中看到您的语言环境正在切换。
检查一下 xkblayout-state --help
,有很多不同输出的选项。
答案2
跟进@aring 的回答:
你可以使用 xkblayout-state 和 i3blocks 来实现
使用 在两种语言之间来回切换xkblayout-state
,将其放入您的~/.config/i3/config
文件中:
bindsym $mod+b exec xkblayout-state set $(( $(xkblayout-state print %c) ^ 1 ))