Alterna rapidamente a troca de chaves Alt / Win sem recorrer a uma GUI?

0

Eu tenho emparelhamento meu laptop com um teclado sem fio da Apple quando estou ligado a mesa. Toda vez que eu conecto / desconecto, eu uso o Gnome Tweak Tool para trocar / desmembrar as teclas Alt e Win.

Eu queria uma maneira rápida de alternar isso da linha de comando, então escrevi uma função Bash que aproveita gsettings . A configuração relevante,

$ gsettings get org.gnome.desktop.input-sources xkb-options

é uma lista que pode estar vazia (caso em que é representada com uma anotação @as type),

@as []

pode conter um único valor,

['caps:ctrl_modifier']

ou pode conter vários valores,

['caps:ctrl_modifier', 'shift:both_capslock']

Meu toggle adiciona / remove a entrada 'altwin:swap_alt_win' da / da lista, mas como é apenas Bash, recorre a truques de expansão de parâmetro (como substituição de padrões ) para manter uma lista bem formada.

super_swap() {
  local old new swap

  old=$(gsettings get org.gnome.desktop.input-sources xkb-options)
  old="${old/#@as /}"  # remove type annotation

  swap="'altwin:swap_alt_win'"

  if grep -q "$swap" <<< "$old"; then
    new="${old//$swap}"      # remove swap
  else
    new="${old/%]/, $swap]}" # append swap
  fi

  new="${new/#[, /[}"  # remove leading comma
  new="${new/%, ]/]}"  # remove trailing comma
  new="${new//, ,/,}"  # remove embedded comma

  gsettings set org.gnome.desktop.input-sources xkb-options "$new"
}

Isso funciona, e eu não tenho vergonha disso, mas gostaria de pensar que há um jeito melhor. Existe?

Eu dei uma olhada no código-fonte do Gnome Tweak Tool. Eu suponho que se eu desmembrar minhas habilidades em Python, eu poderia construir uma solução mais limpa, mas isso parece ser muito trabalhoso para o que estou tentando fazer aqui.

    
por ivan 04.11.2017 / 15:44

0 respostas