jueves, 22 de mayo de 2014

Tropezando - Parte 11 - ¡Energía!



En la nueva versión de LXLE (van por la 12.04.4) me he encontrado con que no está el utitlísimo gestor de energía que venían en versiones anteriores, y no sabiendo ni cuál era he tenido que "buscarme las habichuelas" para cosas tan sencillas como que entre en suspensión antes de que la batería llegue a cero o que no se me apague el sistema al cerrar la pantalla del portátil. Parece fácil, pero sin saber ni siquiera cómo se llama lo que uno busca ni Google puede responder, y la enorme fragmentación existente en Linux más todavía (hay decenas de entornos de escritorio, de gestores de energía, de formas de hacer las cosas...).
Voy a relatar esta odisea intentando especificar para qué sistemas funcionan unas cosas y otras. Trataremos, básicamente, tres temas distintos: gestor de energía con interfaz (xfce4-power-manager), control de energía por comandos (colección de scripts "pm") y atajos de teclado en Openbox (con Obkey).
¡Al Turrón!

Gestor de energía
Lo primero que hice fue buscar información sobre la gestión de energía en Linux. Craso error: el tema es bastante amplio como para escribir un libro, dos secuelas, tres precuelas y varias novelas cortas.
Lo segundo, centrarme en Ubuntu. Ahí me topé con "gnome-power-manager", un gestor de energía que funciona muy bien, hace de todo y hasta hace poco se podía usar en prácticamente cualquier entorno de escritorio... pero después de varios errores y un par de búsquedas descubrí que en Openbox ya no funciona.
Lo tercero fue, por supuesto, dar con la solución de pura casualidad. Buscando la forma de que el gestor de Gnome funcionara en Openbox me encuentro con un post de un usuario que comparaba la funcionalidad de este gestor con la de "xfce4-power-manager" en LXDE. Quise informarme más sobre este desconocido gestor y me di cuenta de que era el que llevaban los anteriores LXLE. Lo instalo y ¡sorpresa! Es exactamente lo que andaba buscando: permite configurar las acciones a realizar (apagar, suspender, apagar la pantalla, etc...) dependiendo de diversos factores (tiempo, nivel de batería, combinaciones de teclas...).

Instalación:
Entrar en Synaptics (o similar), buscar el paquete  "xfce4-power-manager", instalarlo. ¡Hecho!
Configuración:
Debería haber creado un lanzador llamado "Administrador de energía" (nombre de archivo:"xfce4-power-manager.desktop") en la carpeta "/etc/xdg/autostart". Si no se ha creado, es fácil de hacer: crear un nuevo archivo de texto con la extensión *.desktop en esa carpeta (o en cualquier otra con autoarranque) y copiar en él lo siguiente:
[Desktop Entry]
Name=Power Manager
Name[es]=Administrador de energía
Icon=xfpm-ac-adapter
Exec=xfce4-power-manager
Terminal=false
Type=Application
StartupNotify=false
Otro problema común es que el archivo exista y, sin embargo, el programa no cargue automáticamente al iniciar sesión. Sólo hay que editar este mismo archivo y eliminar la línea "OnlyShowIn=XFCE;".
Uso:
El programa debería arrancar automáticamente. De todas formas, se puede ejecutar usando el comando "xfce4-power-manager" o desde el menú "Preferencias/Administrador de energía".
Una vez ejecutado, aparece el icono en el panel de notificaciones (abajo a la derecha, si usáis una barra de tareas típica). Pulsando con el botón secundario del ratón aparece un listado de opciones; seleccionando la opción "Preferencias" se abrirá un completo panel de ajustes muy fáciles de usar.













Cuándo es interesante usarlo:
Si usamos XFCE, viene por defecto. Si usamos Openbox o LXDE, siempre es buena idea tenerlo, si es que nuestra distribución no lo incluye de serie. Si usamos Gnome y derivados ya dispondremos del suyo... pero es posible que éste nos guste más o que se lleve mejor con nuestro hardware. KDE es un mundo aparte y de momento no lo he tocado... 

Hasta aquí todo lo que debería ser necesario para cualquier usuario normal (si es que eso existe). El resto del artículo amplía información para obtener un control más preciso de los métodos de apagado.
Sólo lo incluyo porque, como a mí no me funcionaba la opción de suspender desde el botón de encendido que proporciona este gestor de energía, tuve que buscarme la forma de hacerlo a mano. Creo que es relevante puesto que este blog lo escribo para contar lo que voy aprendiendo a medida que mi experiencia se amplía, a parte de que pueda servir para otros usuarios que se encuentren con los mismos problemas.

Comandos de gestión de energía
Ya sé que en este blog no es costumbre usar la terminal, pero no hay que olvidar que ésta tiene un enorme potencial gracias al uso de comandos proporcionados por los programas instalados. Cada vez que usamos un atajo de teclado, un lanzador o un script, lo que estamos haciendo es decirle a la máquina que ejecute uno o varios de esos comandos a la vez... y por eso vamos a buscar la forma de controlar el apagado del ordenador con comandos en lugar de usar un entorno gráfico: para poder hacerlo usando atajos.
Suspender e hibernar es harina de otro costal. Hay muchas formas de apagar, suspender, hibernar y reiniciar el ordenador, pero los comandos más cómodos que he visto (y que suelen estar en las distribuciones habituales) son : "sudo pm-hibernate" (hibernar), "sudo pm-suspend" (suspender), "sudo pm-suspend-hybrid" (suspensión híbrida), "sudo shutdown now -h" (apagar) y "sudo shutdown now -r" (reiniciar).
Habréis notado que he precedido a todos estos comandos con la orden "sudo", y es que todos ellos requieren permisos de administrador para ejecutarse. Esto tiene un inconveniente: al ejecutarlos nos pedirán contraseña, y eso en un comando de teclado queda feo. Vamos a solucionarlo editando el sudoers.list:
¡OJO! Editar el sudoers es fácil, pero muy peligroso si no se hace bien. Recomiendo encarecidamente hacer una copia del archivo antes de tocarlo y prestar especial atención a esta parte del post.
Ejecutamos "sudo visudo" desde un terminal.
Añadimos al final de todo la línea "usuario ALL=(ALL) NOPASSWD: ruta_del_ejecutable" donde "usuario" es el nombre del usuario y "ruta_del_ejecutable" es la ruta completa en la que se encuentra el ejecutable del programa a usar (¡gracias, Capitán Obvio!).
Un par de ejemplos:
"yomes ALL=(ALL) NOPASSWD: /usr/sbin/pm-suspend" me permitirá a mí (y a nadie más) suspender el equipo sin introducir ninguna contraseña.
"pepito ALL=(ALL) NOPASSWD: /sbin/shutdown -h now,/sbin/shutdown -h now" le permitirá al usuario Pepito apagar el ordenador sin introducir su contraseña.
Control+O para guardar, Enter y después Control+X para cerrar.
Bueno, ha habido que entrar en la terminal y tocar un archivo delicado, pero tampoco ha sido tan difícil, ¿no?
NOTA: Si queremos que nos pida contraseña habrá que usar un gestor gráfico para sudo, como pueden ser Gksudo de Gnome o Kdesudo de KDE. En LXDE lo habitual parece ser Gksudo, que es el que uso habitualmente y funciona muy bien. Basta con cambiar "sudo" por "gksudo" en los comandos antes mencionados y listo: nos pedirá la contraseña en una bonita ventana.

Tengo pendiente un artículo sobre usuarios, permisos y privilegios en el que trataré esto más a fondo.

Atajos de teclado
Hay mil formas de crear atajos, pero, después del "atracón" de texto que nos hemos dado antes, vamos a relajarnos y a usar un entorno gráfico sencillo, facilote y para toda la familia: Obkey. Este programa viene por defecto con Openbox... y lo único que hace realmente es editar un archivo de texto que se puede editar igualmente a mano. Eso sí, nos olvidamos de interpretar una fea sintaxis XML (que tampoco es muy difícil), de usar programas externos para conocer el código de una determinada tecla, de andar reiniciando el entorno gráfico para comprobar si los cambios funcionan y, en definitiva, de calentarnos la cabeza inútilmente.
Tengo pendiente un artículo sobre atajos en el que trataré este método (y varios más) a fondo.
Instalación:
No tiene misterio alguno: si nuestra distro no lo tiene, abrimos Synaptics, buscamos el paquete "obkey" y lo instalamos. 
Uso:
Una vez abierto, el programa tiene este aspecto:
Creamos un nuevo atajo de teclado pulsando en el símbolo y, cuando aparezca el texto "Acelerador nuevo...", pulsamos el botón, la tecla o la combinación de teclas que queramos usar.
Para asignarle una acción mantenemos seleccionado el atajo, en el panel de la derecha pulsamos en el icono, cambiamos la acción predeterminada por la de "ejecutar" y en la casilla "Comando" introducimos el comando completo.
Ejemplos: "sudo pm-hibernate", "sudo shutdown now -h" o lo que se nos ocurra.
Cuándo es interesante usarlo:
Siempre que queramos ejecutar un comando habitual o usar algua de las acciones predefinidas de forma rápida. Obkey viene con un buen número de acciones preconfiguradas que no implican añadir comando alguno y que pueden facilitarnos mucho la vida.
En mi caso, además de configurar las teclas multimedia de un teclado externo, he creado atajos que me permiten cerrar programas de Wine (algunos juegos se cuelgan que da gusto), cambiar de canción, cambiar el volumen de la música sin afectar al resto de programas y cosas así.

Mi caso particular
Con xfce4-power-manager he desactivado las acciones a realizar al cerrar la pantalla y al presionar cualquier botón, así como todas las de tiempo excepto la de apagar pantalla al estar con batería, y he añadido la acción de suspender al quedar un 10% de batería.
Con visudo he validado a mi usuario a suspender sin pedir contraseña.
Con Obkey he configurado el botón de encendido del portátil para que ejecute la orden "sudo pm-suspend".
NOTA: Después de trastear de mala manera el sistema*, el atajo de usuario que servía para suspender dejó de funcionar... pero la opción para suspender con ese mismo botón del Xfce4_Power_Manager volvió a funcionar, así que ahora lo tengo configurado con éste último en lugar de con ObKey y va de maravilla. ¡Misterios de la vida! ^_^
* Intenté cambiar LXDE por LXQT a las bravas y se me desconfiguraron el menú, el gestor de sesiones, el explorador de archivos y un par de cosas más.

5 comentarios:

  1. Impresionante trabajo oO
    De todas formas, en vez de tó este jardín ... ¿no sería más fácil - si es posible - configurar el equipo para que entre en suspensión/hibernación al cabo de x minutos de inactividad, como en güindous?

    ResponderEliminar
    Respuestas
    1. De hecho sí es más fácil, pero no era lo que quería conseguir. Eso sirve para que los despistados ahorren batería, pero no te salva de un apagado por las bravas si te quedas sin carga mientras trabajas, perdiendo todo lo que tengas hecho. Ya me pasó un par de veces y aún doy gracias de que no se corrompiera el sistema de archivos.
      Además, el Xfce4_power_manager permite un control total de la energía: comportamiento de tapa y botones, tiempo de apagado con y sin batería, brillo de la pantalla, rendimiento del procesador, etc...
      Y, ya puestos, no está de más saber cómo hacerlo todo "a mano" con comandos de terminal y/o personalizando atajos de teclado. De paso, hago una introducción a dichos atajos y a los permisos de ejecución, y propongo soluciones a problemas habituales, como viene siendo habitual en mis tochacos.

      Eliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. Muchisimas gracias me salvaste porque tenía el mismo problema jajaja incluso empezaron a funcionar las teclas de brillo en mi netbook del gobierno argentino. Si puedo hacer que funcionen las de sonido me doy por satisfecho con esta distribución

    ResponderEliminar
    Respuestas
    1. Mhhh... Con el mismo ObKey deberías poder asignar esas teclas para ejecutar los siguientes comandos:
      - Subir volumen:
      amixer -q sset Master 3%+ unmute
      - Bajar volumen:
      amixer -q sset Master 3%- unmute
      - Slenciar:
      amixer -D pulse set Master 1+ toggle


      Se puede hacer prácticamente cualquier cosa asignando teclas a comandos de consola, que en Linux es, prácticamente, todo. En mi caso tengo atajos para controlar el Qmmp y el Audacious aunque estén en segundo plano (P.Ej.: Si tengo música puesta mientras juego, puedo pausar, cambiar de pista o controlar el volumen de la música independiente del general), sacar capturas de pantalla, subir o bajar el brillo, matar aplicaciones de Windows (útil cuando se "congela" un juego en Wine a pantalla completa) y mil cosas más.

      Nota: ObKey es sólo para LXDE. Si tienes otro entorno de escritorio, habrá otra utilidad haciendo esa función, pero funcionarán los mismos comandos. Si no tienes nada parecido, puedes probar con xbindkeys: es un poco engorroso, peo funciona en todos los entornos de escritorio.

      Eliminar