Come posso disattivare rapidamente il coperchio di standby in Ubuntu Unity 16.04?


16

Qual è il modo più rapido per disabilitare rapidamente la funzione di standby quando si chiude il coperchio? Mi piace molto questo comportamento, ma soprattutto quando ascolto musica, vorrei chiudere il coperchio senza portare la macchina in standby.

Tuttavia, non desidero disabilitare permanentemente questa funzione, ma disattivarla temporaneamente fino ad esempio quando ho finito di ascoltare la musica.

Forse c'è un indicatore simile alla caffeina ?

inserisci qui la descrizione dell'immagine


Le tue impostazioni sono simili per corrente alternata e batteria?
Jacob Vlijm,

Non esiste ancora un tale indicatore. Ci sono modi, ma richiedono l'accesso sudocome root come mostrato in questo post. askubuntu.com/q/15520/295286 . Vedrò cosa si può fare però
Sergiy Kolodyazhnyy il

Posso chiederti che tipo di versione del sistema stai usando? 16.04
Sergiy Kolodyazhnyy,

Cari Jacob e Serg, grazie per i primi commenti e soluzioni! La sceneggiatura di Jacob funziona alla grande. Sarebbe fantastico se questo fosse un piccolo indicatore però. Mi piacciono le GUI visive. :-) Le impostazioni sono simili per CA e batteria. Ho modificato la mia domanda per chiarire che sto usando Unity 16.04.
Orschiro,

Può / sarà fatto. La GUI tuttavia richiederà un po 'più di tempo.
Jacob Vlijm,

Risposte:


19

Lo script seguente commuterà l'azione ravvicinata tra "niente" e "sospendi":

#!/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])

... E notifica qual è lo stato attualmente impostato:

inserisci qui la descrizione dell'immagine

Come usare

Semplicemente:

  • Copia lo script in un file vuoto, salvalo come toggle_lid.py
  • Aggiungilo a un tasto di scelta rapida: scegli: Impostazioni di sistema> "Tastiera"> "Scorciatoie"> "Scorciatoie personalizzate". Fai clic su "+" e aggiungi il comando:

    python3 /path/to/toggle_lid.py
    

Spiegazione

Lo stato corrente dell'impostazione dell'azione a chiusura ravvicinata può essere recuperato dai comandi

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

(al potere) e

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

(a batteria)

Lo script legge lo stato corrente e imposta l'opposto ('suspend' / 'nothing') con il comando:

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

Opzionalmente (in aggiunta)

Facoltativamente / in aggiunta, è possibile eseguire un indicatore come rivelatore per mostrare qual è lo stato corrente dell'impostazione del coperchio. Mostrerà:

inserisci qui la descrizione dell'immagine

... nel pannello, se la sospensione verrà impedita alla chiusura del coperchio, in caso contrario verrà visualizzato uno grigio.

inserisci qui la descrizione dell'immagine

Il copione

#!/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()

Come usare

  1. Copia lo script sopra in un file vuoto, salvalo come show_state.py
  2. Copia entrambe le icone in basso (fai clic con il pulsante destro del mouse -> salva con nome) e salvale nella stessa directory di show_proc.py, e identificate esattamente come indicato di seguito

    green.png

    inserisci qui la descrizione dell'immagine

    nocolor.png

    inserisci qui la descrizione dell'immagine

  3. Ora test eseguito show_state.pydal comando:

    python3 /path/to/show_state.py
    

    e cambia lo stato corrente premendo il collegamento per impostare la prima sezione di questa risposta.

  4. Se tutto funziona correttamente, aggiungi quanto segue alle applicazioni di avvio:

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

Nota

L'indicatore del rivelatore sopra è una versione modificata di questa risposta . Semplicemente cambiando il test nella funzione runs()(e facoltativamente le icone del pannello corrispondenti), puoi usarlo per mostrare lo stato di qualsiasi cosa sia Trueo False.


Ottima soluzione con l'indicatore! Una domanda: perché hai deciso per un'icona trasparente ?
Orschiro,

@orschiro Considero (ed) lo ste in cui la chiusura del coperchio sospenderà come situazione predefinita . Quello verde come indicazione è possibile chiudere il coperchio senza azione. Potrebbe essere comunque un'icona. Suggerimenti?
Jacob Vlijm,

Forse come quello verde ma in grigio sbiadito? È leggermente irritante vedere uno spazio vuoto nella barra dell'indicatore a causa della trasparenza dell'icona.
Orschiro,

@orschiro haha, ora capisco cosa intendi :). modificato.
Jacob Vlijm,

5

Un'altra opzione sarebbe passare da "Sospendi" a "Non fare nulla" nelle Impostazioni di Ubuntu - Potenza:

Impostazioni di Ubuntu - Potenza

PS: Questo non fornisce un indicatore nell'area delle notifiche ma è più semplice della creazione di uno script per i nuovi utenti.

PPS: in questa schermata, l'UPS è per modem via cavo + Sony Android TV, non per il laptop con batteria ... HAHA.


Eh, ok. Modo manuale, richiede pochi clic qua e là. Ma abbastanza decente.
Sergiy Kolodyazhnyy,

@Serg In realtà mi piace la sceneggiatura pubblicata da Jacob. Probabilmente ci giocherò un giorno dopo aver reso Ubuntu 16.04 / Kernel 4.7.2 più stabile sul mio sistema. In effetti la mia sospensione alla chiusura del coperchio non ha mai nemmeno funzionato dalla scatola di aggiornamento dal 14.04 al 16.04 ... ho dovuto impostare un parametro in systemd che presuppone che quando il coperchio è chiuso si desidera che la TV rimanga attiva e semplicemente si oscuri lo schermo del laptop. Col senno di poi avrei dovuto pubblicare le istruzioni anche per quello!
WinEunuuchs2Unix

Sì, prima del 16.04 quelle opzioni non funzionavano davvero per me. Personalmente volevo pubblicare il file editing come risposta, ma Jacob mi ha battuto su di esso :)
Sergiy Kolodyazhnyy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.