Script Zenity: ignorar janela com botão fechar (x) ou Esc

1

Seguindo esta solução Eu tenho um script zenity para pergunte-me o que fazer ao clicar em um script executável no Thunar ou um arquivo da área de trabalho nos arquivos do Pantheon:

#!/bin/bash

zenity --question --text="What to do?" \
       --ok-label=Run \
       --cancel-label=Edit

case $? in
    0)thunar ""
    ;;
    1)gedit 
    ;;
esac

E isso mostra isso:

Mas há uma pequena falha: você não pode ignorar a caixa de diálogo neste ponto: usando o botão fechar janela, Esc ou Alt + F4 equivale à opção --cancel-label no script e abrirá o arquivo no editor de texto.

Como eu poderia editar o script para que, quando Esc fosse pressionado, as janelas do zenity fossem fechadas sem ação adicional?

Editar após comentário:

Eu tenho isso em um comentário:

  

deixe o diálogo --question --timeout para obter um terceiro valor de retorno (5)

De fato, --timeout=4 fechará a caixa de diálogo após esse número de segundos.

  

ou você pode ir para o diálogo de múltipla escolha por --list - radiolist

O que isso significa?

    
por cipricus 02.03.2017 / 14:39

2 respostas

1

Exemplo simples de um radiolista

Existe um exemplo simples de um radiolista neste link,

link

Exemplo com --list

Acho mais fácil usar uma lista simples (com a opção --list , mas sem --radiolist )

$ ans=$(zenity  --list  --title "What to do?"  --column "What to do?" Run Edit 2> /dev/null); echo "ans=$ans"
ans=Run
$ ans=$(zenity  --list  --title "What to do?"  --column "What to do?" Run Edit 2> /dev/null); echo "ans=$ans"
ans=Edit
$ ans=$(zenity  --list  --title "What to do?"  --column "What to do?" Run Edit 2> /dev/null); echo "ans=$ans"
ans=

    
por sudodus 02.03.2017 / 19:50
0

Um script simplificado que usa yad pode ser uma solução alternativa para que a janela seja descartada como pretendido; rótulos são 'OK' para execução e 'Cancelar' para edição.

sudo apt install yad

E o script é:

#!/bin/bash

yad --text="Execute the file? (press 'Cancel' to edit)" 

case $? in
    0)thunar ""
    ;;
    1)gedit 
    ;;
esac

Uma versão do script inicial (melhorada com base no comentário), que, mesmo na ausência de ação, fechará a janela após alguns segundos:

#!/bin/bash

zenity --question --text="Press RUN to execute -- Press EDIT, ESC or close (x) to open as text -- or WAIT 7 seconds to dismiss" \
       --ok-label=RUN \
       --cancel-label=EDIT \
       --timeout=7

case $? in
    0)thunar 
    ;;
    1)gedit 
    ;;
esac 

    
por cipricus 02.03.2017 / 16:10