como lidar com a saída indesejada de um comando e sua saída no script bash

1

Eu fiz um script de um forro para ocultar automaticamente uma janela específica quando o mouse não está focalizado naquela janela. Obtém a posição do mouse e a geometria da janela e sua posição (topleftx, toplefty), adicionei sua geometria à posição inicial da janela para obter coordenadas (bottomrightx, bottomrighty) e compara se o mouse está sobre a janela. Se o mouse não estiver na janela, ele oculta a janela.

Funciona, mas apenas uma vez, porque o comando xprop window info que eu uso para extrair informações da janela no script falha se ele não encontrar o nome da janela na pilha de janelas. Ele envia uma mensagem de erro e a mensagem --help sai.

Eu preciso de xprop porque é o único comando de informações da janela que fornece informações sobre decoration id de qualquer janela. Porque as principais ferramentas de informação de janelas no Linux apenas imprimem geometria e posição de uma janela sem a sua decoração. Eu queria incluir a decoração da janela para completar.

Como posso fazer isso funcionar?

  while [ 1 ]
  do 
         string=$(xdotool getmouselocation 2>/dev/null | sed 's/x:\([0-9]\+\)[ \t]y:\([0-9]\+\)[ \t].*/;/' | tr ';' ',') 
         string2=$(xdotool getwindowgeometry $(xprop -name "kenn" | grep _COMPIZ_WINDOW_DECOR_INPUT_FRAME |  grep -Po ' # \K.*') | grep -Po ': \K.*' |cut -d" " -f1 | tr '\n' ',' | tr 'x' ','| sed 's/-[0-9][0-9]*/0/') 
         A="$string2$string" 
         IFS=, 
         set $A 
  if [[(( -lt $((+))))  && (( -gt ))]] && [[(( -lt $((+))))  && ((  -gt  ))]]
         then echo "mouse is on the window"
  else 
         then echo "mouse is out of the window"
  fi 
  done
    
por kenn 25.12.2015 / 19:42

1 resposta

1

Você pode tentar

(xprop -name "kenn" 2>/dev/null || echo "") |...

O redirecionamento stderr elimina o erro e a parte depois que || entra em ação se o xprop explodir.

    
por Harald 25.12.2015 / 19:52