Desligando do X sem um ambiente de desktop

4

Eu recentemente desisti do meu ambiente de desktop e agora estou usando apenas um gerenciador de janelas (i3) e X. Tudo funciona muito bem e eu não sinto muita falta. Exceto por uma coisa: o botão de desligamento. Agora posso apenas desligar, emitindo:

sudo shutdown -Ph now

de um terminal. Isso funciona, mas eu quero criar um atalho no i3 para desligar clicando em Mod+x . E não tenho certeza de como isso pode ser alcançado. Se eu criar um script em ~/shutdown e me referir a isto com:

bindsym $mod+x exec ~/shutdown

Então isso não funciona; Eu acho que estou executando como um usuário regular e estou sudoing neste script. Eu estaria bem em ter um terminal aparecendo e solicitando a senha (embora eu prefira que isso não exija uma senha, se possível), mas não tenho certeza de como fazer isso. O que é uma maneira de fazer isso?

Usando o Arch Linux.

    
por Gilles 06.01.2012 / 02:27

3 respostas

8

Se você usar sessões do D-Bus e ConsoleKit (que é um componente padrão da maioria dos sistemas desktop modernos, então você pode já tê-lo instalado), uma abordagem poweroff do sistema que é ligeiramente mais limpo que sudo shutdown e que não requer nenhum tipo de privilégio de root é:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" \
 /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

Da mesma forma, um sistema restart pode ser realizado com

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" \
  /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

Você pode colocar esses em scripts e adicionar atalhos ou entradas de menu para chamá-los.

    
por 06.01.2012 / 03:18
0

De acordo com a documentação, o i3 permite vincular códigos de teclas ou em teclados .

Você pode inserir uma entrada no arquivo sudoers , como:

plua  ALL=(ALL) NOPASSWD:/sbin/shutdown

que autorizaria o usuário plua a poder desligar sem emitir uma senha e, em seguida, criar uma associação de chave para esse efeito, como:

bind Mod+x exec /path/to/shutdownscript
    
por 06.01.2012 / 03:16
0

Uma maneira de fazer isso é fazer com que o sudo não solicite a senha. Adicione o seguinte ao seu arquivo / etc / sudoers (substituindo johndoe pelo seu usuário)

johndoe ALL = (root) NOPASSWD: /sbin/shutdown
    
por 06.01.2012 / 03:06