使用 i3 切换键盘布局

使用 i3 切换键盘布局

我在 Ubuntu 16.04 上安装了全新的 i3 版本 4.11(2015-09-30,分支“4.11”)。实际上,我需要使用 3 种不同的键盘布局enfrru可以使用一些键盘快捷键在它们之间切换。

我尝试了一些方法,但都不完全令人满意:

  • 使用ibus-daemon几乎可以起作用,但我不能使用任何快捷方式来更改布局。
  • 我的实际设置是setxkbmap在启动时配置的i3

    exec --no-startup-id "setxkbmap -model pc105 -layout fr,us,ru -option grp:alt_shift_toggle"
    

因此我可以在布局之间切换,但有时我不知道我实际使用的是哪种布局,因为此设置中没有任何托盘图标。

总结一下我的需求是:

  • 可以通过按一些热键来切换布局。

  • 我实际正在使用的布局的一些指示(最好是托盘图标)。

有没有什么办法可以解决这个问题?或者也许有一些 i3 插件可以真正完成这项工作?一些第三方软件?

答案1

你可以这样做xkblayout-statei3blocks

为了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)中替换i3statusi3blocks

# 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 ))

相关内容