Como criar layouts de teclado por janela com o XMonad simples?

6

Eu tenho usado o XMonad simples há algum tempo (não combinado com o KDE / GNOME). Atualmente, estou alternando entre layouts de teclado simplesmente por uma combinação de teclas globalmente:

[ ((modMask , xK_Scroll_Lock ),
    spawn "setxkbmap -layout us ; xmodmap ~/.Xmodmap")
, ((modMask .|. shiftMask, xK_Scroll_Lock),
    spawn "setxkbmap -layout cz ; xmodmap ~/.Xmodmap") ]

No entanto, isso é um pouco inconveniente. Para muitas janelas (por exemplo, navegador, terminal), preciso manter o layout dos EUA na maior parte do tempo. Preciso do layout localizado apenas para editores de texto em 99% dos casos. E eu mudo janelas / espaços de trabalho muito, então eu tenho que mudar os layouts manualmente quase toda vez que eu troco.

Idealmente, gostaria de alcançar:

  • Ao pressionar a combinação de teclas, defino um tipo de sinalizador para a janela atualmente focada.
  • O XMonad chama os comandos spawn automaticamente de acordo com os sinalizadores quando o foco da janela é alterado.

Como fazer isso (se for possível)? Obrigado pela ajuda.

(Bônus: Gerencie os sinalizadores externamente por algum tipo de comando de scripts.)

    
por Petr Pudlák 11.10.2012 / 09:41

2 respostas

4

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
    
por 05.05.2013 / 15:53
2

Você pode querer dar uma olhada em scim e / ou ibus . Ambos os daemons podem ser iniciados em um .Xsession . Pela minha experiência, o ibus é o caminho a seguir, mas pode não ter suporte para o seu método de entrada.

Uma configuração de exemplo está documentada para xfce .

Disclaimer: Eu teria adicionado isso como um comentário, em vez de uma resposta.

    
por 24.01.2013 / 23:46