Para poder apagar con un atajo de teclado podemos asignar gnome-session-quit ---power-off
un atajo personalizado.
En Unity, esto llevará al siguiente diálogo:
Luego necesitamos otras al menos dos pulsaciones de teclas para finalmente apagar nuestro sistema. Esto es bastante inconveniente y preferiría el antiguo cuadro de diálogo de apagado cuando podría apagarse simplemente presionando Returno dejando que espere la cuenta regresiva predeterminada de 60 segundos.
Al llamar gnome-session-quit --poweroff
desde una sesión de flashback de sesión de GNOME en el mismo sistema (14.04 LTS), el antiguo cuadro de diálogo que incluye la cuenta regresiva vuelve:
Entonces sabemos que habita en alguna parte.
¿Hay alguna forma de llamar a este antiguo cuadro de diálogo cuando se ejecuta una sesión de Unity?
fuente
Respuestas:
Aquí hay un script para emular el comportamiento deseado. Debe ejecutarse como con
sudo
. Se puede vincular a un atajo de teclado (con la adición preliminar delshutdown
comando al archivo sudoers para permitir la ejecución sin contraseña ). Simplista, conciso, y hace el trabajo.Actualización: 14 de junio
Como lo sugiere Takkat, aquí hay un script que utiliza la opción --timer y dbus de zenity para lograr el mismo comportamiento sin necesidad de acceso a sudo:
La idea básica aquí es que la opción de tiempo de espera de zenity sale con un código mayor que 0, lo que generalmente significa que el comando falló. Por lo tanto, al tratar la opción de cancelación y el tiempo de espera de zenity como la condición que permitirá el apagado, usamos el operador OR (
||
) para apagar solo si el usuario hace clic en el botón de cancelación (etiquetado como "DOIT") o el tiempo de espera del diálogo.Se puede hacer otra variación para mejorar la experiencia del usuario
yad
(primero debe instalarse con estos comandossudo apt-add-repository ppa:webupd8team/y-ppa-manager;sudo apt-get update; sudo apg-get install yad
). Esta variación utiliza la barra de progreso para que el usuario sepa cuánto tiempo le quedaOtra versión posible, tiene en cuenta que si cambia la etiqueta del botón ok de zenity, el botón resaltado por defecto puede o no ser el botón ok.
El script apaga el sistema ante cualquier retorno que no sea 0. Si el script se agota, el valor de retorno de 1 o 5 le dice al script que ejecute la
else
partefuente
zenity --timeout
temporizador incorporado. Con esto no tendremos que cancelar / reiniciar el apagado más tarde.if [[ $? -eq 1 ]] ; then exit \else dbus...
condición que hace eso. Obviamente parece que no hay forma de llamar al viejo asistente de cierre de sesión ...No es literalmente lo que solicitó, pero al menos una solución (efectiva) comparable sería colocar el script a continuación bajo una tecla de acceso directo.
Que hace
Cuando se usa la tecla de acceso directo:
gnome-session-quit --power-off
comando se ejecutael ratón se mueve al botón correspondiente "cerca", efectivamente hacer preseleccionada en el botón de apagado:
Luego:
La secuencia de comandos
Cómo utilizar
Estoy bastante seguro de que sabes cómo usarlo, pero aquí vamos por razones habituales:
El script usa
xdotool
Copie el script en un archivo vacío, guárdelo como
run_close.py
En la sección de cabecera, configure la ubicación de la pantalla del botón de apagado en la ventana de cierre (mi primera suposición fue correcta):
y el tiempo de espera antes del apagado desatendido:
Pruébalo con el comando:
Pruébelo con todas las opciones: presionar Enterpara apagado inmediato, apagado desatendido y romper el procedimiento con el mouse
Si todo funciona bien, agréguelo a una tecla de acceso directo: elija: Configuración del sistema> "Teclado"> "Accesos directos"> "Accesos directos personalizados". Haga clic en "+" y agregue el comando:
EDITAR
Debajo de una versión del script que no necesita ninguna configuración adicional. Calcula las coordenadas del botón Salir, sin importar cuál sea la resolución de la pantalla.
La configuración es prácticamente la misma, pero
[3.]
se puede omitir.Explicación
El tamaño de la ventana del Administrador de sesión para cerrar el sistema siempre está centrado y tiene un tamaño fijo (absoluto), independiente de la resolución de la pantalla. Por lo tanto, la posición relativa al centro de la pantalla es un factor constante.
Todo lo que necesitamos hacer es leer la resolución de la pantalla y calcular la posición del botón desde allí.
La función aplicada (
get_qloc()
) calcula la resolución de la pantalla izquierda , ya que es donde aparecerá el diálogo.Nota
El tiempo, establecido en la línea,
time.sleep(0.4)
está configurado para sistemas relativamente lentos, para asegurarse de que el mouse se mueva después de que aparezca la ventana de apagado. En sistemas más rápidos, puede ser más corto, en sistemas más lentos (como posiblemente una VM) puede ser necesario configurarlo por más tiempo.fuente