Para podermos desligar com um atalho de teclado , podemos atribuir gnome-session-quit ---power-off
um atalho personalizado.
No Unity, isso levará ao seguinte diálogo:
Depois, precisamos de mais pelo menos duas teclas pressionadas para finalmente desligar nosso sistema. Isso é bastante inconveniente e eu preferiria a caixa de diálogo de desligamento antiga quando você pudesse desligar apenas pressionando Returnou deixando aguardar a contagem regressiva padrão de 60 segundos.
Ao chamar gnome-session-quit --poweroff
de uma sessão de flashback da sessão do GNOME no mesmo sistema (14.04 LTS), a caixa de diálogo antiga, incluindo a contagem regressiva, volta:
Então sabemos que ele mora em algum lugar.
Existe alguma maneira de chamar esse diálogo antigo ao executar uma sessão do Unity?
fonte
Respostas:
Aqui está um script para emular o comportamento desejado. Deve ser executado como com
sudo
. Pode ser associado a um atalho de teclado (com a adição preliminar doshutdown
comando ao arquivo sudoers para permitir a execução sem senha ). Simplista, conciso e faz o trabalho.Atualização: 14 de junho
Conforme sugerido por Takkat, aqui está um script que utiliza a opção --timer e o dbus do zenity para obter o mesmo comportamento sem a necessidade de acesso ao sudo:
A idéia básica aqui é que a opção de tempo limite do zenity é encerrada com código maior que 0, o que normalmente significa que o comando falhou. Portanto, tratando a opção de cancelamento e o tempo limite do zenity como a condição que permitirá o desligamento, usamos o operador OR (
||
) para encerrar apenas se o usuário clicar no botão Cancelar (rotulado como "DOIT") ou se o diálogo expirar.Outra variação para melhorar a experiência do usuário pode ser feita
yad
(precisa ser instalada primeiro com esses comandossudo apt-add-repository ppa:webupd8team/y-ppa-manager;sudo apt-get update; sudo apg-get install yad
). Essa variação usa a barra de progresso para informar ao usuário quanto tempo restaOutra versão possível, leva em consideração que, se você alterar o rótulo do botão ok do zenity, o botão destacado por padrão pode ou não ser o botão ok.
O script encerra o sistema em qualquer retorno que não seja 0. Se o tempo limite do script expirar, o valor de retorno 1 ou 5 indica ao script para executar a
else
partefonte
zenity --timeout
temporizador embutido. Por isso, não precisaremos cancelar / reiniciar o desligamento posteriormente.if [[ $? -eq 1 ]] ; then exit \else dbus...
condição que faz isso. Obviamente parece haver nenhuma maneira de chamar o velho de logout-helper ...Não literalmente o que você pediu, mas pelo menos uma solução (efetivamente) comparável seria colocar o script abaixo em uma tecla de atalho.
O que faz
Quando a tecla de atalho é usada:
gnome-session-quit --power-off
comando é executadoo mouse é movido para o botão "fechar" correspondente, efetivamente tornando o botão de desligamento pré-selecionado:
Então:
O script
Como usar
Tenho certeza que você sabe como usá-lo, mas aqui vamos por razões de habbit:
O script usa
xdotool
Copie o script em um arquivo vazio, salve-o como
run_close.py
Na seção principal, defina a localização da tela do botão desligar na janela próxima (minha primeira hipótese foi correta):
e o tempo de espera antes do desligamento automático:
Execute-o de teste pelo comando:
Teste-o com todas as opções: pressionando Enterpara desligar imediatamente, desligar sem supervisão e interromper o procedimento movendo o mouse
Se tudo funcionar bem, adicione-o a uma tecla de atalho: escolha: Configurações do sistema> "Teclado"> "Atalhos"> "Atalhos personalizados". Clique no "+" e adicione o comando:
EDITAR
Abaixo de uma versão do script que não precisa de nenhuma configuração adicional. Ele calcula as coordenadas do botão sair, independentemente da resolução da tela.
A configuração é praticamente a mesma, mas
[3.]
pode ser ignorada.Explicação
O tamanho da janela do Session Manager para fechar o sistema sempre está centralizado e tem um tamanho fixo (absoluto), independente da resolução da tela. Portanto, a posição relativa ao centro da tela é um fator constante.
Tudo o que precisamos fazer é ler a resolução da tela e calcular a posição do botão a partir daí.
A função aplicada (
get_qloc()
) calcula a resolução da tela esquerda , pois é nesse local que o diálogo aparecerá.Nota
O tempo definido na linha
time.sleep(0.4)
é definido para sistemas relativamente lentos, para garantir que o mouse seja movido após a janela de desligamento aparecer. Em sistemas mais rápidos, pode ser mais curto; em sistemas mais lentos (como possivelmente uma VM), pode ser necessário definir mais.fonte