我已经使用纯 XMonad 一段时间了(没有与 KDE/GNome 结合使用)。目前,我只需通过全局组合键即可在键盘布局之间切换:
[ ((modMask , xK_Scroll_Lock ),
spawn "setxkbmap -layout us ; xmodmap ~/.Xmodmap")
, ((modMask .|. shiftMask, xK_Scroll_Lock),
spawn "setxkbmap -layout cz ; xmodmap ~/.Xmodmap") ]
但是这有点不方便。对于许多窗口(即浏览器、终端),我大多数时候都需要保留美国布局。99% 的情况下,我只需要文本编辑器的本地化布局。而且我经常切换窗口/工作区,所以几乎每次切换时我都必须手动切换布局。
理想情况下我想实现:
- 通过按下组合键,我为当前焦点窗口设置了某种标志。
- 当窗口焦点改变时,XMonad 会
spawn
根据标志自动调用命令。
怎么做(如果可能的话)?谢谢帮助。
(奖励:通过脚本中的某种命令从外部管理标志。)
答案1
安装知识库执行该工作的守护进程。
在启动时运行:
kbdd
setxkbmap "us,ua" -option grp:scroll_toggle
就这样!
要在小部件中显示布局,您会发现以下 Ruby 代码很有用:
interface = 'ru.gentoo.KbddService'
member = 'layoutChanged'
mon = open "| dbus-monitor --monitor \"sender='#{interface}',member='#{member}'\""
loop do
str = mon.gets
if str =~ /layoutChanged/
lang = mon.gets[/.\Z/] # lang is now either 0 or 1 depending on the current layout
end
end