web-dev-qa-db-fra.com

Comment puis-je désactiver rapidement le couvercle de veille dans Ubuntu Unity 16.04?

Quel est le moyen le plus rapide de désactiver rapidement la fonction de veille lors de la fermeture du couvercle? J'aime beaucoup ce comportement, mais surtout lorsque je joue de la musique, j'aimerais fermer le couvercle sans mettre ma machine en veille.

Cependant, je ne souhaite pas désactiver cette fonctionnalité de manière permanente, mais simplement l'éteindre temporairement jusqu'à ce que j'aie fini d'écouter de la musique, par exemple.

Peut-être existe-t-il un indicateur similaire à Caféine ?

enter image description here

16
orschiro

Le script ci-dessous va basculer l'action "fermer le couvercle" entre "rien" et "suspendre":

#!/usr/bin/env python3
import subprocess

key = ["org.gnome.settings-daemon.plugins.power",
       "lid-close-ac-action", "lid-close-battery-action"]

currstate = subprocess.check_output(["gsettings", "get",
    key[0], key[1]]).decode("utf-8").strip()

if currstate == "'suspend'":
    command = "'nothing'"
    subprocess.Popen(["notify-send", "Lid closes with no action"])
else:
    command = "'suspend'"
    subprocess.Popen(["notify-send", "Suspend will be activated when lid closes"])

for k in [key[1], key[2]]:
    subprocess.Popen(["gsettings", "set", key[0], k, command])

... Et notifier quel est l'état actuellement défini:

enter image description here

Comment utiliser

Simplement:

  • Copiez le script dans un fichier vide, enregistrez-le sous le nom toggle_lid.py
  • Ajoutez-le à une touche de raccourci: choisissez: Paramètres système> "Clavier"> "Raccourcis"> "Raccourcis personnalisés". Cliquez sur le "+" et ajoutez la commande:

    python3 /path/to/toggle_lid.py
    

Explication

L’état actuel du paramètre d’action Close-lid peut être récupéré par la ou les commandes

gsettings get org.gnome.settings-daemon.plugins.power lid-close-ac-action

(sur le pouvoir), et

gsettings get org.gnome.settings-daemon.plugins.power lid-close-battery-action

(sur la batterie)

Le script lit l'état actuel et définit le contraire ('suspendre'/'rien') avec la commande:

gsettings get org.gnome.settings-daemon.plugins.power lid-close-ac-action '<action>'

En option (en plus)

En option/en plus, vous pouvez utiliser un indicateur en tant que détecteur pour indiquer l'état actuel du réglage du couvercle. Il montrera:

enter image description here

... dans le panneau, si la suspension sera empêchée lors de la fermeture du couvercle, elle en affichera une grise sinon.

enter image description here

Le scénario

#!/usr/bin/env python3
import subprocess
import os
import time
import signal
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('AppIndicator3', '0.1')
from gi.repository import Gtk, AppIndicator3, GObject
from threading import Thread

key = ["org.gnome.settings-daemon.plugins.power",
       "lid-close-ac-action", "lid-close-battery-action"]

currpath = os.path.dirname(os.path.realpath(__file__))

def runs():
    # The test True/False
    return subprocess.check_output([
        "gsettings", "get", key[0], key[1]
        ]).decode("utf-8").strip() == "'suspend'"

class Indicator():
    def __init__(self):
        self.app = 'show_proc'
        iconpath = currpath+"/nocolor.png"
        self.indicator = AppIndicator3.Indicator.new(
            self.app, iconpath,
            AppIndicator3.IndicatorCategory.OTHER)
        self.indicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE)       
        self.indicator.set_menu(self.create_menu())
        self.update = Thread(target=self.check_runs)
        # daemonize the thread to make the indicator stopable
        self.update.setDaemon(True)
        self.update.start()     

    def check_runs(self):
        # the function (thread), checking for the process to run
        runs1 = None
        while True:
            time.sleep(1)
            runs2 = runs()
            # if there is a change in state, update the icon
            if runs1 != runs2:
                if runs2:
                    # set the icon to show
                    GObject.idle_add(
                        self.indicator.set_icon,
                        currpath+"/nocolor.png",
                        priority=GObject.PRIORITY_DEFAULT
                        )
                else:
                    # set the icon to hide
                    GObject.idle_add(
                        self.indicator.set_icon,
                        currpath+"/green.png",
                        priority=GObject.PRIORITY_DEFAULT
                        )
            runs1 = runs2

    def create_menu(self):
        menu = Gtk.Menu()
        # quit
        item_quit = Gtk.MenuItem('Quit')
        item_quit.connect('activate', self.stop)
        menu.append(item_quit)
        menu.show_all()
        return menu

    def stop(self, source):
        Gtk.main_quit()

Indicator()
GObject.threads_init()
signal.signal(signal.SIGINT, signal.SIG_DFL)
Gtk.main()

Comment utiliser

  1. Copiez le script ci-dessus dans un fichier vide, enregistrez-le sous le nom show_state.py
  2. Copiez les deux icônes ci-dessous (clic droit -> enregistrer sous) et sauvegardez-les dans un seul et même répertoire que show_proc.py, et portant exactement le nom indiqué ci-dessous

    green.png

    enter image description here

    nocolor.png

    enter image description here

  3. Maintenant, testez show_state.py avec la commande:

    python3 /path/to/show_state.py
    

    et changez l’état actuel en appuyant sur le raccourci que vous définissez dans la première section de cette réponse.

  4. Si tout fonctionne correctement, ajoutez ce qui suit aux applications de démarrage:

    /bin/bash -c "sleep 15 && python3 /path/to/show_state.py"
    

Remarque

Le détecteur-indicateur ci-dessus est une version éditée de cette réponse . En changeant simplement le test dans la fonction runs() (et éventuellement les icônes du panneau correspondant), vous pouvez l'utiliser pour afficher l'état de tout ce qui est qui est True ou False.

19
Jacob Vlijm

Une autre option serait de passer de "Suspendre" à "Ne rien faire" dans Paramètres Ubuntu - Alimentation:

Ubuntu Settings - Power

PS: Cela ne fournit pas d'indicateur dans la zone de notification mais est plus simple que de créer un script pour les nouveaux utilisateurs.

PPS: Dans cet instantané d'écran, l'onduleur est destiné au modem câble + Sony Android téléviseur, pas à l'ordinateur portable alimenté par la batterie ... HAHA.

5
WinEunuuchs2Unix