Sempre achei aquela notificação auditiva de determinado SO proprietário muito útil e elegante, no caso de inserção e remoção de dispositivos USB. Tive então a idéia de reproduzi-la no Linux. No meu caso, usuário Fedora, a inserção de um dispositivo USB de armazenamento de dados, como um "PenDrive", por exemplo, invoca um script que pede ao usuário a ação a ser tomada, como no sistema proprietário, porém sem o apelo do áudio. Então, para implementar este recurso no Linux, devemos:
Criar uma regra UDEV/HotPlug (se sua distro já manipula o UDEV, tanto melhor, pois sendo só uma dica, não nos deteremos em minúcias - forneço o código da regra do UDEV pronto.) que detecte a inserção / remoção do dispositivo; e invocar, a partir da regra casada, um script que acione o som correspondente (Inserir / Remover).
Observe que é chamado, nos scripts respectivos, o comando "play" para execução dos sons.
Seguem abaixo os códigos:
Regras do UDEV:
# 49udev-usb.rules - copie-o na pasta de regras UDEV de sua distro
# (normalmente /etc/udev/rules.d)
BUS=="usb", ACTION=="add", SUBSYSTEM=="usb_device", DRIVER!="", RUN+="/scripts/toca.usb.add.sh"
Duas coisas sobre arquivos de regras UDEV: cada declaração deve ocupar uma linha e a extensão é - obrigatoriamente - .rules - senão o UDEV não a processa.
Este outro script, toca.usb.rem.sh, faz o contrário, ou seja, toca um som na remoção de dispositivo USB. Lembre-se de colocar, na regra UDEV, o caminho certo dos scripts, no parâmetro RUN+ e lembre-se, claro, de torná-los executáveis.
Testando vários dispositivos, como chaveiros (Pendrives), tocadores MP4, videocâmeras e discos rígidos (gavetas), todos foram detectados e executaram os sons de acordo com a ação (Inserir / Remover), dando um retorno auditivo bastante agradável. Se não gostar dos sons que utilizei, pode mudá-los, é claro, nos scripts.
[3] Comentário enviado por intpa em 30/04/2007 - 17:54h
Excelente dica.
Pena que o udev em si não executa programas gráficos colocados nestes scripts.
Caso contrário ao inserir um pendrive, o udev poderia executar um script que, tocaria o som de inserção de hardware, e logo após abriria uma gerenciador de arquivos (como o Konqueror, Nautilus, Thunar, etc), por exemplo.
Tomara que o udev seja capaz um dia de executar programas graficos pelos scripts, sem a necessidade de rodar um segundo script em background que monitora o que o udev faz, economizando assim processamento.
[9] Comentário enviado por morvan em 19/07/2007 - 15:19h
Olá.
Apesar da felicidade por ter implementado, para mim e para outros usuários, esta pequena função, estava bastante insatisfeito, pois o comando invocado pelo parâmetro +RUN executava tão poucas coisas! Porque não executá-lo "In Line", ou seja, em linha? Pesquisando nas próprias regras do UDEV, observei que, sendo poucos os comandos, a própria regra faz a execução em linha. No caso da regra com o evento Add, por exemplo, ficaria assim:
RUN+="/bin/bash -c '/usr/bin/play /usr/share/sounds/KDE_Dialog_Appear.wav &'"
Observe as aspas duplas envolvendo todo o comando, o interpretador (Bash), logo no início do comando, em seguida o parâmetro "-c", indicativo dos parâmetros do próprio comando para o Bash e as aspas simples a envolver o comando passado para o Bash. A vantagem desta implementação é a não-dependência de um arquivo exterior à regra, o que simplifica bastante.
[10] Comentário enviado por ricardospimentel em 04/03/2010 - 10:41h
Um grande olá a todos.
Sei que este tópico não caminha já há três anos. Uma pena, já que este assunto é muito útil e interessante, pois imagino que esta função não venha ativada no linux por causa dos direitos autorais da "microsoft". Assim acredito.
Eu utilizei esta técnica muito útil no Kubuntu 9.10 com KDE4, mas só consegui fazê-lo funcionar deixando o arquivo *.rules assim:
..retirei da linha "add" as opções "SUBSYSTEM=="usb_device", DRIVER!=""", pois não fazia som algum ao inserir dispositivos USB e só ao remover, entretanto, quando eu insiro ou removo um dispositivo, ele repete váaaarias vezes o arquivo de som e ainda não consegui resolver este probleminha.
Tambeém descobri que sem o "sox" instalado, a função "/usr/bin/play" do script não fununcia. Resolvido com apt-get install.
Ah! Alterei também o meu script e eles ficaram assim:
Este é o "ADD"-
#!/bin/sh
# toca.usb.add.sh
/usr/bin/play /usr/share/sounds/KDE-usb-add.ogg & - o detalhe é que este arquivo de som não
vem com a distribuição e eu peguei um arquivo "ogg" qualquer e o nomeei assim.
E este é o meu arquivo "REM"-
#!/bin/sh
# toca.usb.rem.sh
/usr/bin/play /usr/share/sounds/KDE-usb-add.ogg reverse & - o detalhe aqui é que ele reproduz o arquivo de trás para frente, bem interessante.
Descobri também que é possível reproduzir um som diferente para cada tipo de dispositivo USB inserido, basta ter criatividade.
Ainda estou a resolver o problema de tocar o som várias vezes ao inserir um dispositivo.
[11] Comentário enviado por morvan em 04/08/2024 - 10:26h
..retirei da linha "add" as opções "SUBSYSTEM=="usb_device", DRIVER!=""", pois não fazia som algum ao inserir dispositivos USB e só ao remover, entretanto, quando eu insiro ou removo um dispositivo, ele repete váaaarias vezes o arquivo de som e ainda não consegui
Bom dia. Obrigado pelo comentário. Eu deixei de manter essa implementação por dois motivos:
1- Eu já tava entediado de ter que reescrever as Regras do UDEV. Houve bastante mudanças;
2- essa função de notificação sonora, felizmente, já vem habilitada no Plasma, do 6.1?? em diante. Parece, não me detive a estudar o tópico, utiliza os próprios semáforos do KDE Plasma. 100% funcional.
Quanto a "repetir várias vezes...", você pode criar uma regra que verifique se não há instância daquele dispositivo já instalada, tanto pelo Driver como pelo serial.
E ainda, quanto a reproduzir um som diferente, dependendo do dispositivo, o próprio UDEV pode fazer isso, tanto pelo Driver ("k") do UDEV, como pelo serial do device. A robustez do Sistema UDEV é assustadora.