Estou tentando colocar uma notificação para quando ligar o computador, com uma opção “Modo de estudos”. O intento é simples, sempre que iniciar o sistema gostaria que abrisse uma janela perguntando se quero ativar esse modo de estudos, e se sim, abrir o spotify e um link. Para tal
#!/bin/bash
zenity --question --width 300 --text "Deseja ativar modo estudos?"
if [ $? -eq "0" ]
then
spotify && gnome-terminal
else
exit
Contudo não funciona, executei via terminal para ver o que acontecia, mas não consegui entender o que acontece. Após o if o terminal retorna tudo com um “>” sem executar. Enfim, o que poderia estar errado na minha sintaxe?
Adicionalmente, gostaria de sabe como colocar um atraso na inicialização do script se ele ficar pronto algum dia. E também executar “dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Play” com um delay de 15 segundos após o spotify iniciar.
Estou vendo e são informações muito interessantes, utilizarei em outro projeto inclusive. Contudo, a parte do Zenity está caminhando até bem, o script engasga na parte do if.
Agora sim o script é executado, fiz algumas alterações a partir do que entendi também do que @anon17586640 disse.
#!/bin/bash
zenity --title="Modo de estudo" --question --width 300 --text "Deseja ativar modo estudos?"; echo $?
if [ $? -eq 0 ]
then
spotify && gnome-terminal && --delay 300 dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Play
else
zenity --info --title="Modo de estudos" --text="Ok"
fi
exit
Da maneira como está, ele executa a janela eu consigo selecionar um campo. Entretanto, independente da minha escolha o programa é executado. Ou seja, mesmo falando para não entrar em modo de estudo, ele entra.
Agora sim entendi a que você estava se referindo. Resolveu!
Adicionalmente, o que posso fazer para que o comando “dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Play” espere um tempo antes de ser executado? Ele que dará play no spotify, mas precisa de um tempinho para o programa abrir…
Desresolvi, na verdade agora o script está travado.
Quando o executo, o comportamento esperado é:
Abrir o spotify;
Esperar 60 segundos;
Dar play;
Abrir o webapp dos arquivos que utilizarei.
Todavia, ele só passa para a próxima ação depois que eu fecho o programa anterior. Na prática -> abre o spotify, para, quando eu fecho o spotify ele abre a pasta. E eu já mudei os && para ; e não mudou. O que poderia fazer?
#!/bin/bash
# Ativar modo de estudos?
zenity --title="Modo de estudo" --question --width 235 --text "Deseja ativar modo estudos?"
#Opções
case $? in
0)
/opt/brave.com/brave/brave-browser --profile-directory=Default --app-id=aghbiahbpaijignceidepookljebhfak ; spotify ; sleep 60 ; dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Play
;;
1)
exit;;
-1)
exit;;
esac
O bash tem muito recursos, extremamente poderoso, porém ele não é intuitivo. Caso realmente queira saber como fazer seus próprios scripts precisará de tempo e dedicação, não só para aprender alguns pontos, mas aprender com a base sólida.
Pretendo fazer isso sim, já separei alguns textos, tutoriais básicos e a documentação do bash, além de videos. Se tiver recomendações também estou aceitando.
Eu mudei e funcionou, agr é só acertar os delay’s para dar tudo certo. Estava usando o && para demorar um pouco mais e dar tempo do “play” funcionar. Mas acho que o que estava quebrando era o atalho para o webapp, ele dá erro em 3 GTK modules, e spotify também dá um erro de multi-thread ao iniciar. Via terminal os comandos seguiam, mas no script, depois do primeiro erro ele cancelava o resto.
Eu aprendi na época de tutorial via PDF nos cds que vinham em revistas!
Conheço desse cara que está montando agora uma turma para dar aula em BASH e está disponibilizando as aulas no youtube. Estou aproveitando para lustrar meus conhecimentos e posso afimar: o cara é fera! Fica o link da playlist que ele está fazendo.