Como ativar a janela de aplicativo mais recentemente focada em xfce4 / xfwm4?

0

Eu uso minhas teclas de função para aplicativos específicos (F1 chrome, F2 terminal, etc). Eu tenho um script vinculado a uma tecla de atalho para ativar o aplicativo certo, e isso funciona, mas não ativa a janela mais recentemente focada. O script lista janelas com wmctrl -lx , o que parece listar janelas por ordem de criação reversa. Existe alguma maneira de solicitar ou manter o controle da ordem em que janelas específicas são ativadas para que eu possa rotear "ativar a janela de terminal mais recente"?

Como alternativa, parece que se eu consegui manter a ordem da pilha de janelas mantida por xfwm4 (que é usada quando você percorre as janelas), parece que isso resolveria meu problema também, mas não vejo interface de linha de comando para chegar a essa ordem de pilha da janela.

    
por Peter Lyons 21.04.2018 / 00:49

1 resposta

1

Em um script, você pode usar wmctrl , xprop e awk para usar o tempo de ativação mantido pelo gerenciador de janelas. (Veja, por exemplo, wm-spec 1.5) . Por exemplo, use uma linha de comando (multilinha) como a seguinte:

W=$(wmctrl -l | \
    awk '$ ~ "Terminal" {print $1;}' | while read x ; do \
      echo "$x $(xprop -id $(xprop -id $x \
                             | awk '$1 ~ /_NET_WM_USER_TIME/ {print $NF}' \
                             ) \
                 | awk '{print $NF}' \
                 )" ; \
      done | awk '$2>t {i=$1; t=$2} END {print i}' \
    )

Em palavras:

  1. passa a lista wmctrl por meio de uma filtragem para selecionar os ids de janela do aplicativo nomeado ("Terminal" no exemplo acima); então
  2. transmita isso (mais interno) xprop para obter um ID de janela (fingido) para o último tempo de uso e
  3. usando outro (outer) xprop para obter esse registro de data e hora, que é a propriedade (única) da "janela fingida" do _NET_WM_USER_TIME_WINDOW da janela original; então
  4. transmitir todas as linhas de ID e registro de data e hora resultantes por meio de um filtro awk que informa o ID com o maior registro de data e hora.
por 21.04.2018 / 03:31

Tags