Como posso obter uma notificação na tela usando o notify-osd quando conecto / desconecto o carregador?
battery
notification
notify-osd
kernel_panic
fonte
fonte
Respostas:
Alternar entre energia CA e energia da bateria deve gerar um evento no barramento do sistema D-Bus . Execute
dbus-monitor --system
e observe quais eventos são gerados no seu sistema.Se você tem upower em execução, recebe notificações mais especializadas
upower -m
.Você também pode obter eventos de
acpi_listen
.Execute esse script quando desejar começar a ver notificações ou adicione-o à inicialização da sessão.
fonte
dbus
Algumas pessoas relataram que minha solução udev anterior enviou a notificação muitas vezes quando o cabo de alimentação foi conectado. Não pude reproduzir isso, mas escrevi esse script python para utilizar o dbus em vez do udev. Salve-o como um
.py
arquivo em algum lugar do seu disco rígido. Marque o arquivo executável executando:e adicione-o aos seus aplicativos de inicialização, conforme descrito aqui . Este script requer que o pacote
acpi
esteja instalado.udev
Com um pouco de experimentação (e uma pequena ajuda), pude utilizar um udev regra do para fazer isso. Algumas pessoas relataram que às vezes envia a notificação mais de uma vez, mas não tive nenhum problema. YMMV.
Crie um script com o seguinte conteúdo:
substituindo
some_user
pelo seu nome de usuário. Marque o arquivo executável executando:substituindo
/path/to/script.sh
pelo caminho para onde você salvou o script.Em seguida, crie um arquivo
/etc/udev/rules.d
nomeado10-power.rules
com o conteúdo:novamente substituindo
/path/to/script.sh
pelo caminho para o script que você criou anteriormente.Agora recarregue as regras do udev executando:
Desconecte o cabo de alimentação. Você deve receber uma notificação.
fonte
XAUTHORITY
com alguns gerenciadores de exibição como o gdm.dbus-monitor
. Veja minha resposta.Origem do Script
Obtendo o script
O script também é adicionado ao meu github ; essa versão será atualizada e desenvolvida um pouco mais.
Você pode obtê-lo fazendo o seguinte:
sugo apt-get install git
cd /opt
git clone https://github.com/SergKolo/sergrep.git
O script estará no
/opt/sergrep
diretório chamadonotify_ac_change.sh
Conceito / Design
As principais perguntas são "Como verificamos a presença do adaptador CA?" e "Como detectamos alterações?"
Bem, esse problema foi resolvido há muito tempo por outros desenvolvedores. O Ubuntu vem por padrão com um script chamado on_ac_power , que é armazenado em
/usr/bin/on_ac_power
. O adaptador de energia pode ser mencionado em diferentes subsistemas no kernel (ACPI ou APM), mas esse script simplifica nosso trabalho - os autores abordaram muitas variações possíveis. Ele retorna apenas o status de saída, portanto, é apropriado para uso emif
instruções.Por que é
on_ac_power
uma boa escolha? Porque depende da verificação de vários subsistemas. Ele também fornece um comando bastante simples para trabalhar - o resultado é verdadeiro ou falso.Portanto, temos a ferramenta de detecção de presença, mas e a lógica? Precisamos pesquisar a presença e detectar mudanças no estado. O que podemos fazer é armazenar o status de saída
on_ac_power
e comparar continuamente o estado atual com o que salvamos, uma vez que ele muda - envie uma notificação, salve o status novamente e continue comparando novamente, fazendo um loop. A idéia básica é o uso de bandeiras.Em resumo, inicializamos um instantâneo do estado e, em seguida, pesquisamos continuamente as alterações a partir do instantâneo; depois que a alteração ocorrer - notifique e redefina o instantâneo.
fonte