Pra quem não sabe, é possível controlar as funções do
amarok usando somente a linha-de-comando.
"Mas pra quê isso? Se eu tenho um rato à minha disposição, cheio de botõezinhos?"
Bem, espero ter, no final desta dica, convencido você que os famigerados "comandos" tem lá alguma (toda) utilidade.
Muitos diriam: amarok -f; amarok -p; amarok -r. Mas esta solução não é muito agradável ao meu ver. Não é difícil acontecer de aparecer mais de um processo do programa, o que gera uma confusão danada.
O que proponho é usar o DCOP (Desktop COmmunication Protocol), que nada mais é do que um sistema que que possibilita a integração e comunicação entre os programas do KDE (diz se que será substituído pelo dbus no kde4), para fazer esta tarefa.
Nota: Dizem as más línguas que é possível controlar quase todos programas do KDE com esse recurso, inclusive modificar o papel de parede. Eu não testei com todos. Se alguém testar e der certo, me comunique.
Bem, vamos deixar de enrolação.
Vamos começar com esse comando:
$ dcop amarok player play
Apareceu uma mensagem de erro? Esse sistema só funciona se o serviço (amarok) estiver em execução.
O comando acima executa a função play. Sem comentários.
Nos exemplos a seguir, para agilizar as coisas, direi somente o que faz cada tarefa somente pelo último campo (no caso acima, play):
- play : Executar a canção, por assim dizer;
- showOSD : Mostra a informação da música na tela;
- volumeUp : Aumenta o volume;
- volumeDown : Diminui o volume;
- stop : Para de tocar;
- prev : Música anterior na lista;
- next : Próxima música da lista;
- mute : Mudo ;)
- pause : Pausa;
- seek <inteiro> : onde <inteiro> é a posição na música onde você quer ir (em segundos);
- lyrics: Exibe a letra da música, numa sintaxe ao estilo XML, que pode ser usado de vários modos (não vou explicar aqui, pois eu não sei muito sobre XML.. rsrsrs).
Estas são as funções básicas, mas é possível fazer mais, muito mais, basta um pouco de paciência e compreensão (e quem não precisa?).
Agora execute os comando num terminal, só de bobeira:
$ echo "Eu estou escutando agora: `dcop amarok player nowPlaying`"
$ echo "Uma música do ano de `dcop amarok player year`"
$ echo "O nome da música é `dcop amarok player title` e quem canta é `dcop amarok player artist`"
$ echo "o amarok está usando o mecanismo `dcop amarok player engine`"
$ xv `dcop amarok player coverImage`
$ echo "Há atualmente `dcop amarok playlist getTotalTrackCount` músicas na lista de reprodução do amarok"
Bem, acho que já dá pra entender o o poder dessa ferramenta pelos exemplos acima.
Ela pode ser usada, por exemplo, naqueles temas do superkaramba, para mostrar a música atual, é o mecanismo usado naquele plugin do amsn que exibe a música atual e tal.
Se você quiser uma maneira gráfica de fazer isso (o que foge um pouco ao escopo desta dica), navegue graficamente pela árvore do dcop com o comando:
$ kdcop
A utilização é trivial: click, click-click, tec-tec.
No que este recurso foi útil para mim?
Vocês sabem aqueles teclados multimídia, com aquela centena de botões, mas que vêm com aquela maldita etiqueta com um logo do Windows? Com uma ajudinha do xbindkeys, a humanidade vai ao longe... rsrs.
Ah, para saber exatamente todas as funções que podem ser executadas, dê o comando:
$ dcop amarok player
ou
$ dcop amarok ## para opções mais "abrangentes"
Você verá um monte de coisas escritas do tipo:
Tipo1 funcao(Tipo2 var2, Tipo3 var3)
Isso significa que "funcao", quando executada, devolve um determinado dado do Tipo1.
Quem programa em C sabe do que se trata:
- int: devolve um número inteiro (-1,5,10,100,...)
- bool: devolve "true" ou "false" - verdadeiro ou falso ;)
- void: Não devolve nada. É um comando que você passa para o programa fazer.
E há outros tipos, alguns mais complexos, mas não é difícil de entender.
Algumas funções precisam de um ou mais parâmetros, do Tipo2, Tipo3, etc.. Para executá-las, passe corretamente o tipo correto de valor, senão aparecerá uma mensagem de erro.
O legal é utilizar esses recursos também em scripts em shell.
Por exemplo:
Como deu para ver, isso é um típico caso de looping infinito sem utilidade alguma.
Bem, chegamos ao fim de mais uma dica, espero ter conseguido passar a "mensagem" que queria. Não, não ache que isso é tudo sobre o dcop, pois para falar tudo, seria necessário um artigo bem complexo... E ainda sei muita pouca coisa sobre ele. Mas encorajo você a "fuçar" mais, e o que descobrir, postar aqui no VOL.
Obs:
-- Para mudar o papel de parede, faça:
$ dcop kdesktop KBackgroundIface setWallpaper "/caminho da imagem.png" 1
-- Todo programa do KDE tem uma função...
$ dcop <programa> MainApplication-Interface quit
... que finaliza o mesmo.
Leitura recomendada:
Links de programas citados nesta dica:
Bem povo, até a próxima, e muito obrigado.