Instale o daemon kbdd que faz o trabalho.
Execute isso na inicialização:
kbdd
setxkbmap "us,ua" -option grp:scroll_toggle
Isso é tudo!
Para exibir seu layout em um widget, você pode encontrar este código Ruby útil:
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