私はしばらくの間プレーン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%の場合、テキストエディタにのみローカライズされたレイアウトが必要です。また、ウィンドウやワークスペースを頻繁に切り替えるため、切り替えるたびに手動でレイアウトを切り替える必要があります。
理想的には、次のことを達成したいと思います。
spawn
コマンドを自動的に呼び出します。それを行う方法(可能であれば)?手伝ってくれてありがとう。
(ボーナス:スクリプトからのある種のコマンドによって外部からフラグを管理します。)
インストールkbddジョブを実行するデーモン。
起動時にこれを実行します。
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