Publi

Píldora: Cómo controlar la inhibición de la gestión de energía en GNU/Linux

Los escritorios modernos en GNU/Linux suelen estar divididos en muchos módulos. Los grandes como Gnome o KDE suelen tener decenas de pequeños módulos independientes que hablan los unos con los otros de manera que la orquesta de todos ellos nos proporcione la mejor experiencia de usuario.

Además, si hablamos de GNU/Linux, donde, desde siempre, ha habido una fragmentación más que notable en lo referente al escritorio. Al tener libertad para crear los entornos, miles de desarrolladores ponen su ingenio, su corazón y parte de su vida en los diseños de los sistemas de escritorio que utilizamos a diario. El problema es que, como suele pasar en la vida, hay varias soluciones diferentes a un mismo problema y, en ocasiones, todas las soluciones son contrarias unas de otras. No vivimos en un mundo en blanco y negro. Por eso, cada escritorio es de su padre y de su madre. Al final, en el ecosistema linuxero, ha costado muchísimos años llegar a un acuerdo, o un estándar en lo que se refiere a cómo los escritorios realizan diferentes tareas. Por poner un ejemplo concreto, un programa reproductor de vídeo tiene la necesidad de desactivar el salvapantallas, el apagado de la pantalla e incluso la suspensión del sistema. ¡Claro! Si estamos viendo una película, normalmente no estamos moviendo el ratón (de hecho, recuerdo una época en la que teníamos que mover el ratón de vez en cuando porque se apagaba la pantalla en medio de una película).

Sistemas como Windows o Mac, al tener sólo un entorno de escritorio, y una sola API no tienen problema. Los programadores sólo tienen que hacer una llamada a esa API y listo, inhibición de la gestión de energía desactivada y, cuando termine la película, activamos de nuevo para que todo funcione como antes. Aunque, históricamente en GNU/Linux, cada sistema de escritorio ha tenido su manera propia de hacer las cosas. Algunas ideas eran mejores y otras peores, unas más completas y ligeras y otras más complejas y, todo ello, es lo que hace mágico un sistema como GNU/Linux.

Poco a poco, en freedesktop.org, una iniciativa dedicada a la reunión de estándares y la interoperabilidad entre los distintos sistemas de escritorio disponibles, se han ido desarrollando algunas directivas que deben cumplir sistemas de escritorio, frameworks, bibliotecas, drivers y en definitiva todos los módulos que conforman el escritorio tal y como lo conocemos. Esto, al final, beneficia a los programadores, porque no tienen que implementar (en muchos casos), varios métodos distintos para interactuar con el escritorio y, por supuesto, también a usuarios, porque los programas ocuparán menos, funcionarán de forma más efectiva, y tendrán menos problemas.

Evitar que la pantalla se apague

Como este post es una píldora seré breve. Si lo que queremos es que nuestro sistema no se suspenda. Imagínate que estamos ejecutando un comando crítico y podría haber una pérdida de datos si se nos apaga el ordenador, o se suspende, debemos activar la inhibición del sistema de gestión de energía.
Para comunicarlo, vamos a utilizar dbus, de la siguiente manera:

dbus-send --print-reply=literal --dest=org.freedesktop.PowerManagement /org/freedesktop/PowerManagement org.freedesktop.PowerManagement.Inhibit.Inhibit string:»My Script» string:»Te desactivo el salvapantallas»
uint32 3054

Donde indicamos con cadenas de caracteres (strings) el nombre del programa que lo solicita y el motivo.

Ya está, ya podemos dejar el ordenador libre que no se apagará la pantalla, ni se suspenderá, ni se bloqueará la sesión. Eso sí, el sistema nos devuelve un valor, fijaos en el «uint32 3054», nos está diciendo que el valor devuelto por esa llamada es de tipo unsigned int (uint, o entero sin signo) de 32bit, vamos un numero, que nos devuelve a continuación.
Eso sí, es recomendable guardar ese número, porque en el caso de querer eliminar el bloqueo lo necesitaremos. Si queremos incorporar esto a nuestros scripts podríamos hacer:

1
2
RES="$(dbus-send --print-reply=literal --dest=org.freedesktop.PowerManagement /org/freedesktop/PowerManagement org.freedesktop.PowerManagement.Inhibit.Inhibit string:"My Script" string:"Te desactivo el salvapantallas")"
COOKIE=$(echo $RES | awk '{print $2}')

y en la variable COOKIE tendremos el número.

Permitiendo el apagado de pantalla de nuevo

Si queremos volver al estado anterior, debemos ejecutar lo siguiente:

dbus-send --print-reply=literal --dest=org.freedesktop.PowerManagement /org/freedesktop/PowerManagement org.freedesktop.PowerManagement.Inhibit.UnInhibit uint32:3054

Como vemos, le pasamos el número que nos dieron antes. No hay más misterio.

Comprobar si la inhibición está activada

Si queremos verificar si esta inhibición está activada, debemos ejecutar lo siguiente:

$ dbus-send --print-reply=literal --dest=org.freedesktop.PowerManagement /org/freedesktop/PowerManagement org.freedesktop.PowerManagement.Inhibit.HasInhibit
boolean true

Esto nos devolverá true o false dependiendo de si está activa (evita que se apague la pantalla) o no.

Deshacer un bloqueo de cualquier aplicación

Como hemos visto, para deshacer un bloqueo, necesitamos el parámetro cookie, de tipo uint32 que nos dieron cuando colocamos el bloqueo. Aunque, puede que haya algún momento en el que algún programa coloque un bloqueo y necesitemos deshacerlo. Uno de los problemas que yo he tenido ha sido, por ejemplo, con Google Chrome o Chromium. Las versiones más nuevas permiten que una pestaña pueda bloquear el hecho de que se apague la pantalla de nuestro ordenador. Y yo, que soy de dejar el navegador encendido durante varios días, tenía siempre la pantalla iluminando la habitación.

Para cancelar este comportamiento ejecuté lo siguiente:

i=0; while [ «$(qdbus org.freedesktop.PowerManagement /org/freedesktop/PowerManagement org.freedesktop.PowerManagement.Inhibit.HasInhibit)» = «true» ]; do echo «Cookie $i»; qdbus org.freedesktop.PowerManagement             /org/freedesktop/PowerManagement org.freedesktop.PowerManagement.Inhibit.UnInhibit $i ; let i=i+1; done

Con este pequeño script se hará un ataque de fuerza bruta a las cookies del sistema de inhibición, hasta que org.freedesktop.PowerManagement.Inhibit.HasInhibit devuelva false. El script tarda un poco. Y, a diferencia de los comandos anteriores, aquí estoy utilizando qdbus en lugar de dbus-send porque me gusta más cómo devuelve el mensaje de true y false.

¿Qué más cosas podemos hacer?

Aunque siempre tenemos la documentación disponible, podemos ejecutar lo siguiente:

qdbus org.freedesktop.PowerManagement  /org/freedesktop/PowerManagement

Para ver los métodos disponibles y jugar con ellos

Foto principal: unsplash-logoRodion Kutsaev

También podría interesarte....

There are 23 comments left Ir a comentario

  1. Pingback: Píldora: Cómo controlar la inhibición de la gestión de energía en GNU/Linux | PlanetaLibre /

  2. Osqui /
    Usando Mozilla Firefox Mozilla Firefox 58.0 en Fedora Linux Fedora Linux

    busctl es otra opción en sistemas Systemd

  3. mahdi /
    Usando Google Chrome Google Chrome 24.0.1312.70 en Windows Windows 8

    ChromeOS es GNU/Linux. Lo que va a hacer Google es lo que ya hace con las aplicaciones de Android: ejecutar los programas en su propia máquina virtual. El navegador continuará siendo lo único que no se ejecute bajo máquina virtual. Haz la prueba: coge un binario sin GUI hecho para GNU/Linux y cópialo en ChromeOS bajo modo desarrollador. Lo podrás ejecutar sin ningún problema. Y eso es posible porque ChromeOS es GNU/Linux. Su biblioteca de tiempo de ejecución del lenguaje C es la de GNU.

  4. Jhonny Oropeza /
    Usando Mozilla Firefox Mozilla Firefox 59.0 en Ubuntu Linux Ubuntu Linux

    Muchas gracias hermano, me acabas de alargar la vida.

    1. Gaspar Fernández / Post Author
      Usando Mozilla Firefox Mozilla Firefox 59.0 en Ubuntu Linux Ubuntu Linux

      Gracias a ti por el comentario ! 🙂

  5. Andrew Mark /
    Usando Google Chrome Google Chrome 117.0.0.0 en Windows Windows NT

    Excellent article. The writing style which you have used in this article is very good and it made the article of better quality.
    Top Gun Bomber Jacket

  6. Kaabir Singh /
    Usando Google Chrome Google Chrome 118.0.0.0 en Windows Windows NT

    It absolutely depends on their choice. Call Girls in Delhi In our company impartial woman, Russian, models and housewives are also operating. They have properly experienced in that fields and additionally understand that a way to make satisfied to clients.

  7. 토토사이트추천 /
    Usando Google Chrome Google Chrome 118.0.0.0 en Windows Windows NT

    I must say, I am deeply impressed. I rarely encounter a blog that is both educational and entertaining, no doubt you hit the nail on the head.토토사이트추천

  8. 메이저사이트 /
    Usando Google Chrome Google Chrome 119.0.0.0 en Windows Windows NT

    Most of the time I don’t make comments on websites, but I’d like to say that this article really forced me to do so. Really nice post!메이저사이트

  9. sansa23 /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    I particularly value the concise explanations and useful examples that make this effective fnf technique simple to comprehend and apply.

  10. jsimitseo /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    Impressive collection of web slots! Which one is your favorite among the biggest ones. สล็อตเว็บใหญ่ที่สุด

  11. WilliamSEO /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    The best article I ran over various years, compose something about it on this page. pasar 123 slot

  12. WilliamSEO /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    This is a great post I seen because of offer it. It is truly what I needed to see seek in future you will proceed after sharing such a magnificent post. CDG Furniture

  13. WilliamSEO /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    You re in purpose of actuality a without flaw website admin. The site stacking speed is astonishing. It sort of feels that you’re doing any unmistakable trap. Besides, The substance are perfect work of art. you have completed a fabulous movement regarding this matter! 먹튀검증

  14. jsimitseo /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    I steer clear of slots with a reputation for fragility. เว็บสล็อตแตกง่าย

  15. WilliamSEO /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    It is fine, in any case assess the data and actualities around this right. Travel booking network

  16. jsimitseo /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    For what reason do just such a great amount of composed regarding this matter? Here you see more. แหล่งรวมสล็อตทุกค่าย

  17. jsimitseo /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    For this site, you will see our record, make sure to experience this information. เว็บสล็อตโรม่า

  18. jsimitseo /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    It is somewhat great, by and by look at the information with this handle. เกมป๊อกเด้งออนไลน์

  19. jsimitseo /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    You have lifted a basic offspring..Blesss for using..I would need to think about better most recent exchanges from this blog..preserve posting.. 정보블로그

  20. WilliamSEO /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    I needed to leave a little remark to help you and wish you a decent continuation. Wishing you the good luck for all your blogging endeavors. 토토사이트 가입코드

  21. jsimitseo /
    Usando Google Chrome Google Chrome 121.0.0.0 en Windows Windows NT

    This is essential, however it’s important to enable you to make a beeline for it weblink: concierge doctor

  22. Rank Xone /
    Usando Google Chrome Google Chrome 121.0.0.0 en Windows Windows NT

    The live dealer games in online casinos are a game-changer. It adds a human touch to the experience and enhances the overall immersion. 프리카지노 쿠폰

Leave a Reply