Desligando o seu computador com o dedão do pé

Publicado por Leandro Santiago em 19/01/2007

[ Hits: 10.806 ]

Blog: http://leandrosan.wordpress.com

 


Desligando o seu computador com o dedão do pé



Se você é daqueles que gosta de praticidade, aqui vai um truque legal para agilizar o desligamento do computador.

Quem aqui não tem o costume de ligar o PC com o dedão do pé? E por quê não usar este mesmo processo no desligamento?

Antes de tudo, o processo descrito a seguir funciona em placas mãe com fonte ATX. Todos nós sabemos que não é muito legal fazer isso com fontes AT. Afinal, as primeiras surgiram para isso mesmo, não?

Nota: Esta dica foi testada no Slackware 11.0 e com algumas modificações, certamente funcionará em outras distros.

Bem, primeiro, tenha certeza de estar com o kernel compilado com suporte a acpi ou com esse módulo compilado.

Se você estiver usando o kernel original do Slackware, que já tem suporte a acpi como módulo, basta adicionar a seguinte linha no arquivo /etc/rc.d/rc.modules:

/sbin/modprobe button

Se você está com o kernel compilado já com suporte a acpi, este passo acima não são necessários - óbvio.

Em seguida, dê permissão de execução ao arquivo /etc/rc.d/rc.acpid:

# chmod +x /etc/rc.d/rc.acpid

Reinicie o computador.

Nota: Para isso, tenha certeza de estar com o pacote acpid corretamente instalado. Se você fez a instalação full, ele está. Senão, procure no cd de instalação do Slackware.

Pronto! Aperte o botão power do gabinete do seu computador e voiala... Ele explode!!! Brincadeira. Ele simplesmente é desligado, executando todas as tarefas necessárias (desmontar partições, finalizar serviços, etc).

Bem, agora imagine que você está fazendo algo importantíssimo no computador, e quem surge do nada? O seu irmãozinho de cinco anos, que "sem querer" aperta o botão power... Adeus o que você estava fazendo, pois não há confirmação alguma do desligamento do sistema.

Pensando nisso, eu primeiro bolei uma solução para esse problema.

Importante: Ela, por enquanto, funciona somente para usuários do ambiente gráfico KDE.

Funciona assim:

Abra o arquivo /etc/acpi/acpi_handler.sh para edição:

# vim /etc/acpi/acpi_handler.sh

Localize nele a linha 10 (:10) e deixe ela com essa cara:

power) su - <usuário> -c "export DISPLAY=:0; /opt/kde/bin/dcop kdesktop KDesktopIface logout"

Onde <usuário> é o nome de login que você usa no computador.

Salve e feche o arquivo (:x!) e reinicie o acpid:

# /etc/rc.d/rc.acpid restart

Aperte o botão power e aparecerá um diálogo perguntando se você quer desligar seu computador. Como se pode ver, essa é uma solução bem lusitana, e não é difícil perceber suas falhas:
  1. Se você decidir um dia iniciar no modo texto, ou que não seja KDE, o botão power não servirá para nada.
  2. Se a máquina for utilizada por mais de um usuário, esse recurso de desligar funcionará somente para um deles - o definido no arquivo.
  3. Se tiver mais de uma sessão gráfica em execução, esse recurso de desligar funcionará somente para uma delas - a :0.
  4. Outras falhas, que com certeza existirão, e que ajudarão a comprovar que esse método não funciona muito bem... ;)

Pensando mais um pouco, eu bolei outra solução, que embora seja muito parecida com a primeira, tem menos falhas. Ela é basicamente um script que tem a seguinte lógica, quando você aperte o power:

Se o KDM estiver em execução, então:
   Se o último usuário logado pelo KDM estiver usando o KDE, então:
      Executa o processo de confirmação para este usuário.
   Senão, desliga pelo processo sem confirmação.
Senão, desliga pelo processo sem confirmação.

Como deu para ver, esse truque precisa do KDM para funcionar. Mas não se preocupe, pois se você usa o KDE, provavelmente está usando o KDM também.

O conteúdo do script está na seguinte página:
Salve o conteúdo desta página num arquivo com o nome de acpi_handler.sh, no diretório /etc/acpi/ (antes crie uma cópia de backup do arquivo existente).

Dê permissão de execução à ele:

# chmod +x /etc/acpi/acpi_handler.sh

Em seguida, abra o arquivo /etc/acpi/events/default:

# vim /etc/acpi/events/default

E localize nele a linha 17 (:17), deixando-a assim:

event=button power.*

Salve e feche o arquivo (:x!) e reinicie o acpid:

# /etc/rc.d/rc.acpid restart


Eu ainda estou procurando um jeito de melhorar este script, mas ele já se encontra funcional, e você pode melhorá-lo, se quiser. E poste aqui no VOL. Eu cheguei até a escrever um diálogo em Tk, mas não ficou muito bom, pois é necessário usar o sudo, além de o Tk (8.5a4) estar atualmente quase tão pesado quanto um GTK+ ou Qt.

Links:
Nota: Não tenho nada contra os portugueses. "Solução lusitana" é só maneira de falar. Tudo bem?

Nota final: Eu procurei esta solução por ter visto algo assim no GDM do Ubuntu e no M$ WindowsXP. Então pensei: Se o Windows é capaz de fazer, por que não o Linux? Acredite: o Windows muitas vezes serve como fonte de inspiração. Se é bom, vamos imitar!! ;)

Muito obrigado, espero ter ajudado aos que tiveram o mesmo problema que eu, e até a próxima.

Outras dicas deste autor

Acessando mais que 9 parâmetros em shell script

Seu Linux falando português nativamente

Criando um planeta só seu.. no GIMP

Ativando a correção ortográfica em português no KDE

Ouça o que diz a Vaca

Leitura recomendada

Entra no ar a mais nova comunidade sobre Linux e Fedora Core em língua portuguesa

Compartilhar rapidamente um diretório como se fosse uma página web

Habilitar/desabilitar bordas de janelas no Fluxbox

Economizando espaço nos seus screenshots

Criando músicas no formato AAC (m4a) utilizando o NeroAac

  

Comentários
[1] Comentário enviado por abeljnr em 20/01/2007 - 12:46h

Nosssa....

tentei fazer essa paradinha ia....

mas nao sei se fiz algo errado... ou seial.. no meu nao deu mto certo nao...rsrs

flws

[2] Comentário enviado por tenchi em 20/01/2007 - 13:38h

... abeljnr, você tentou isso em que distro?

Tente usar o primeiro método (o lusitano) e veja se funciona. Se não funcionar, é possível que o KDM não esteja em execução.
Faça o seguinte: digite o comando num terminal gráfico (konsole, xterm, etc):
$ kdmctl list

Se este comando exibir uma saída de erro, é porque o KDM não está em execução.

Hum... o acpid está rodando corretamente?

Que runlevel do init você está usando?
Execute o seguinte comando:
$ grep initdefault /etc/inittab | cut -f2 -d:

Se a saída não for 4, é porque provavelmente o KDM não está em execução (a não ser que vc tenta modificado alguns scripts).

Enfim, detalhe melhor o erro para eu poder te ajudar, blz?



Obs: Eu estou escrevendo um outro script, para sanar as deficiencias deste que coloquei para download. Quando estiver melhor, eu posto ele aki no VOL, e vc testa, para ver se funciona melhor.

Falow.

[3] Comentário enviado por removido em 21/01/2007 - 14:07h

"cerveja" só.....

Quando a gente pensa que já viu de tudo no linux (quanta pretensão a minha, hein???) vem um cidadão com esse troço de dedão do pé!!!...

Sinceramente!

Vai ser preguiçoso assim lá na China...hua, hua, hua, hua...

[4] Comentário enviado por oscarcosta em 21/01/2007 - 16:55h

hauhau... O titulo ganhou de todos....

[5] Comentário enviado por tenchi em 21/01/2007 - 18:08h

Opa pessoal, valew pelos comentários...
Eu ainda estou tentando escrever uma outra versão do script que comentei aki... Eu já mandei ele pra moderação daqui do VOL (estará disponível pelo link: http://www.vivaolinux.com.br/scripts/verScript.php?codigo=2500 ).
Agora só resta ele ser publicado.
Mas eu já coloquei o conteúdo dele no seguinte link: http://www.din.uem.br/~lssilva/programs/acpi_handler-2.0.html .
Desculpem se ele não estiver muito legível (Pra um pré-programador, estar funcionando já é uma maravilha.. rsrs). Desculpem também por não colocar nenhum ToDo, nem um Changelog.. ;)

Falow...

Ah, ncionando já é uma maravilha.. rsrs). Desculpem também por não colocar nenhum ToDo, nem um Changelog.. ;)

Esse recurdo que eu usei às vezes simplismente não funciona (estou sendo sincero com vcs). Não, não é nada de errado com ele (acho), mas uma falha do KDM mesmo..rss

Para ter certeza disso, execute o comando:
$ kdmctl list

Se não aparacer nada na primeira vez qu evc executa esse comando, acreditem, esse é o erro.. rsrs

Execute esse comando até dar certo. (acho que na segunda ou terceira vez). Não sei pq isso acontece, mas às vezes acontece.

Ah acvsilva, a preguiça fala mais alto mesmo. Tem dias que a gente acorda e já liga o computador sem nem mesmo perceber. Sim... e com o dedão do pé! Felizmente a anatomia humana do dedão do pé adapta-se ergonomicamente ao botão power do gabinete... (de onde tirei isso?)..

Falow...




[6] Comentário enviado por tenchi em 22/01/2007 - 14:06h

KKKKK... sei que ninguém está lendo esse negócio aki..., mas já foi resolvido o problema do 'kdmctl list'...
O conteúdo do arquivo acpi_handler.sh está no link:
http://www.din.uem.br/~lssilva/programs/acpi_handler-2.0.html

Pra resolver, foi necessário somente um until.. rsrs
Já está praticamente perfeito....


Falow... e por favor respondam, pra eu saber se está dando certo na máquina de vcs.

Valew novamente e falow.

[7] Comentário enviado por lokitakkk em 24/09/2009 - 20:26h

Maldito dedão do pé.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts