Discussion:
[shell-script] YAD: como matar o YAD_PID ao sair
Mono Vox monovox.art@gmail.com [shell-script]
2016-09-29 12:20:41 UTC
Permalink
Olá, atendendo ao pedido do mestre Júlio : tenho uma dúvida com YAD !


O man page diz que o pid está armazenado em YAD_PID, mas parece que a
var está sempre vazia.


function on_exit()
{
kill -USR2 $1;
}; export -f on_exit;


menus="" # aqui omiti os itens do menu


yad --separator="#" --notification --menu="$menus" --command="bash -c
'on_exit ${YAD_PID}' " &


Eu imagino que esteja fazendo alguma coisa muito imbecil e cansei de
tentar descobrir sozinho o que poderia ser! Pensei em matar o $$, mas
assim eu mataria somente o script, certo? E se acumulariam os 'yad'
(pgrep yad) .


Agradeço se puderem ajudar ou sugerir alguma coisa.


Aproveito para agradecer a presença do Júlio C Neves aqui no Fórum de
Tecnologia em Software Livre da UTFPR, valeu a pena negativar o banco
de horas do trabalho para ir lá assistir sua palestra!
--
Marcel Bonnet
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2016-09-29 12:33:00 UTC
Permalink
Fala Marcel,
estou cheio de pressa, então vou colar um script aqui para vc ver. Se não
entender, depois das 19:00h te explico.

*yad --form --text "Sistemas Operacionais em uso" \*

*--columns 2 --align right \*

*--field Sala:NUM '1!1..5!1' \*

*--field "Sist. Oper.:CB" '^Linux!Unix!rWindows' \*

*--field Sabor '' \*

*--field _Manda:FBTN 'echo %1 %2 %3' \*

*--field Sai:FBTN \*

*'@bash -c "kill -USR2 $YAD_PID"' \*

*--focus-field 3 --no-buttons*


[image: Imagem inline 1]


Abcs,
Julio
*@juliobash*

*Próximos cursos de Shell*
*Cidade Local Período*
*​*
*São Paulo 4Linux
<https://www.4linux.com.br/curso/programacao-em-shell-script> 05-09/12*
Dou treinamento de *Shell* em qualquer cidade.
Post by Mono Vox ***@gmail.com [shell-script]
Olá, atendendo ao pedido do mestre Júlio : tenho uma dúvida com YAD !
O man page diz que o pid está armazenado em YAD_PID, mas parece que a
var está sempre vazia.
function on_exit()
{
kill -USR2 $1;
}; export -f on_exit;
menus="" # aqui omiti os itens do menu
yad --separator="#" --notification --menu="$menus" --command="bash -c
'on_exit ${YAD_PID}' " &
Eu imagino que esteja fazendo alguma coisa muito imbecil e cansei de
tentar descobrir sozinho o que poderia ser! Pensei em matar o $$, mas
assim eu mataria somente o script, certo? E se acumulariam os 'yad'
(pgrep yad) .
Agradeço se puderem ajudar ou sugerir alguma coisa.
Aproveito para agradecer a presença do Júlio C Neves aqui no Fórum de
Tecnologia em Software Livre da UTFPR, valeu a pena negativar o banco
de horas do trabalho para ir lá assistir sua palestra!
--
Marcel Bonnet
[As partes desta mensagem que não continham texto foram removidas]
monovox.art@gmail.com [shell-script]
2016-09-30 20:40:30 UTC
Permalink
---Em shell-***@yahoogrupos.com.br, <***@...> escreveu:

Fala Marcel,
estou cheio de pressa, então vou colar um script aqui para vc ver. Se não
entender, depois das 19:00h te explico.

Blz, Julio, muito obrigado. Desculpe minha latência em responder.

Rodei seu exemplo sem problemas.

Comparando seu código me ajudou a confirmar o que eu pensava: que eu estava fazendo algo muito besta. Pois bem, eu inverti aspas simples com duplas e aí o shell não expandia o $YAD_PID :P

Antes:

# --command="bash -c 'on_exit $YAD_PID' " &

After help:

--command='bash -c "kill -USR2 $YAD_PID"' &

Agora ele pegou o PID. Apesar disso, o teu código mata o YAD_PID de boa. Mas o meu, apesar de pegar o PID do yad lança:

(yad:7091): Gtk-CRITICAL **: IA__gtk_dialog_response: assertion 'GTK_IS_DIALOG (dialog)' failed

Aí fiquei pensando: tem algo a ver pelo meu código usar --notification ? Ou por não chamar de um botão, sei lá... O teu usa --form ... e funcionou certinho.

Resumindo, meu código está assim:

function on_exit()
{
echo "Recebi $1"
kill -USR2 $1
}; export -f on_exit;


menus="..." #omiti para limpeza

yad --separator="#" --notification --menu="$menus" --command='bash -c "kill -USR2 $YAD_PID"' &
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2016-09-30 21:34:46 UTC
Permalink
​​
Xiii, vou ter de escrever o que escrevi há poucos dias: esses problemas de
GTK no YAD, o único cara que conheço que conhece isso é o Victor
Ananjevisk, aka Anasik, que é o principal desenvolvedor do YAD. Ele
responde na boa na lista yad-***@googlegroups.com, que é especializada
em YAD

Abcs,
Julio
*@juliobash*

*Próximos cursos de Shell*
*Cidade Local Período*
*​*
*São Paulo 4Linux
<https://www.4linux.com.br/curso/programacao-em-shell-script> 05-09/12*
Dou treinamento de *Shell* em qualquer cidade.
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Fala Marcel,
estou cheio de pressa, então vou colar um script aqui para vc ver. Se não
entender, depois das 19:00h te explico.
Blz, Julio, muito obrigado. Desculpe minha latência em responder.
Rodei seu exemplo sem problemas.
Comparando seu código me ajudou a confirmar o que eu pensava: que eu
estava fazendo algo muito besta. Pois bem, eu inverti aspas simples com
duplas e aí o shell não expandia o $YAD_PID :P
# --command="bash -c 'on_exit $YAD_PID' " &
--command='bash -c "kill -USR2 $YAD_PID"' &
Agora ele pegou o PID. Apesar disso, o teu código mata o YAD_PID de boa.
(yad:7091): Gtk-CRITICAL **: IA__gtk_dialog_response: assertion
'GTK_IS_DIALOG (dialog)' failed
Aí fiquei pensando: tem algo a ver pelo meu código usar --notification ?
Ou por não chamar de um botão, sei lá... O teu usa --form ... e funcionou
certinho.
function on_exit()
{
echo "Recebi $1"
kill -USR2 $1
}; export -f on_exit;
menus="..." #omiti para limpeza
yad --separator="#" --notification --menu="$menus" --command='bash -c
"kill -USR2 $YAD_PID"' &
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2016-10-03 14:29:17 UTC
Permalink
Fala Marcel,
Não consegui reproduzir esse erro. Aqui rodou 100% certo.

Acho que vc só conseguirá ajuda para isso em: yad-***@googlegroups.com

Abcs,
Julio
*@juliobash*

*Próximos cursos de Shell*
*Cidade Local Período*
*​*
*São Paulo 4Linux
<https://www.4linux.com.br/curso/programacao-em-shell-script> 05-09/12*
Dou treinamento de *Shell* em qualquer cidade.
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Fala Marcel,
estou cheio de pressa, então vou colar um script aqui para vc ver. Se não
entender, depois das 19:00h te explico.
Blz, Julio, muito obrigado. Desculpe minha latência em responder.
Rodei seu exemplo sem problemas.
Comparando seu código me ajudou a confirmar o que eu pensava: que eu
estava fazendo algo muito besta. Pois bem, eu inverti aspas simples com
duplas e aí o shell não expandia o $YAD_PID :P
# --command="bash -c 'on_exit $YAD_PID' " &
--command='bash -c "kill -USR2 $YAD_PID"' &
Agora ele pegou o PID. Apesar disso, o teu código mata o YAD_PID de boa.
(yad:7091): Gtk-CRITICAL **: IA__gtk_dialog_response: assertion
'GTK_IS_DIALOG (dialog)' failed
Aí fiquei pensando: tem algo a ver pelo meu código usar --notification ?
Ou por não chamar de um botão, sei lá... O teu usa --form ... e funcionou
certinho.
function on_exit()
{
echo "Recebi $1"
kill -USR2 $1
}; export -f on_exit;
menus="..." #omiti para limpeza
yad --separator="#" --notification --menu="$menus" --command='bash -c
"kill -USR2 $YAD_PID"' &
Loading...