Ubuntu Unity 16.04'te bekleme kapağını nasıl hızlı bir şekilde devre dışı bırakabilirim?


16

Kapağı kapatırken bekleme özelliğini hızlı bir şekilde devre dışı bırakmanın en hızlı yolu nedir? Bu davranışı çok seviyorum ama özellikle müzik çalarken, makinemi bekleme moduna geçirmeden kapağımı kapatmak istiyorum.

Ancak, bu özelliği kalıcı olarak devre dışı bırakmak istemiyorum, ancak örneğin müzik dinlemeyi bitirene kadar geçici olarak kapatıyorum.

Belki de Kafeine benzer bir gösterge vardır ?

resim açıklamasını buraya girin


Ayarlarınız AC ve pil için benzer mi?
Jacob Vlijm

Henüz böyle bir gösterge yok. Yollar vardır, ancak bu yayında sudogösterildiği gibi kök erişimi gerektirirler . askubuntu.com/q/15520/295286 . Ne yapılabileceğini göreceğim
Sergiy Kolodyazhnyy

Ne tür bir sistem sürümü kullandığınızı sorabilir miyim? 16.04
Sergiy Kolodyazhnyy

Sevgili Jacob ve Serg, ilk yorum ve çözümler için teşekkürler! Jacob'un senaryosu harika çalışıyor. Bu olsa küçük bir gösterge olsaydı harika olurdu. Sadece görsel GUI'leri seviyorum. :-) Ayarlar ac ve pil için benzerdir. Unity 16.04 kullandığımı açıkça belirtmek için sorumu düzenledim.
orschiro

Yapılabilir / yapılacaktır. Ancak GUI biraz daha uzun sürecektir.
Jacob Vlijm

Yanıtlar:


19

Script aşağıda olacak geçiş "hiçbir şey" ve "askıya alma" arasındaki yakın-kapak eylemi:

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

... Ve şu anda ayarlanmış durumun ne olduğunu bildir:

resim açıklamasını buraya girin

Nasıl kullanılır

basitçe:

  • Komut dosyasını boş bir dosyaya kopyalayın, toggle_lid.py
  • Bir kısayol tuşuna ekleyin: şunu seçin: Sistem Ayarları> "Klavye"> "Kısayollar"> "Özel Kısayollar". "+" İşaretini tıklayın ve şu komutu ekleyin:

    python3 /path/to/toggle_lid.py
    

açıklama

Kapalı kapak eylem ayarının geçerli durumu komut (lar) tarafından alınabilir

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

(güçte) ve

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

(pilde)

Komut dosyası geçerli durumu okur ve komutla tersini ('askıya alma' / 'hiçbir şey') ayarlar:

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

İsteğe bağlı olarak (ayrıca)

İsteğe bağlı olarak / ek olarak, kapak ayarının mevcut durumunun ne olduğunu göstermek için bir gösterge dedektör olarak çalıştırabilirsiniz. Gösterecektir:

resim açıklamasını buraya girin

... panelde, kapak kapatılırken askıya alınma engellenirse, gri renkte görünmez.

resim açıklamasını buraya girin

Senaryo

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

Nasıl kullanılır

  1. Yukarıdaki komut dosyasını boş bir dosyaya kopyalayın, show_state.py
  2. Aşağıdaki her iki simgeyi de kopyalayın (sağ tıklayın -> farklı kaydet) ve bunları bir ve aynı dizine kaydedin ve tam olarak aşağıda belirtildiği şekilde adlandırınshow_proc.py

    green.png

    resim açıklamasını buraya girin

    nocolor.png

    resim açıklamasını buraya girin

  3. Şimdi show_state.pykomut ile test edin:

    python3 /path/to/show_state.py
    

    ve bu cevabın ilk bölümünü ayarladığınız kısayola basarak geçerli durumu değiştirin.

  4. Her şey yolunda giderse, başlangıç ​​uygulamalarına aşağıdakileri ekleyin:

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

Not

Yukarıdaki dedektör göstergesi bu cevabın düzenlenmiş bir versiyonudur . Basitçe işlevinde testi değiştirerek runs()(ve isteğe bağlı uygun panel simgeler), sen durumunu göstermek için kullanabilirsiniz şey olduğunu Trueya False.


Gösterge ile mükemmel çözüm! Bir soru: Neden şeffaf bir ikona karar verdiniz ?
orschiro

@orschiro Kapak kapatmanın varsayılan durum olarak askıya alınacağı basamağı (ed) düşündüm . Eğer bir göstergesi olarak yeşil bir olabilir eylem (s) olmadan kapağını kapatın. Ancak herhangi bir simge olabilir. Öneriler?
Jacob Vlijm

Belki yeşil gibi ama soluk gri renkte? Simgenin saydamlığı nedeniyle gösterge çubuğunda boş bir alan görmek biraz rahatsız edici.
orschiro

@orschiro haha, şimdi ne demek istediğini anlıyorum :). düzenlendi.
Jacob Vlijm

5

Başka bir seçenek de Ubuntu Ayarlarında "Askıya Al" yerine "Hiçbir Şey Yapmama" olarak değişecektir - Güç:

Ubuntu Ayarları - Güç

Not: Bu, bildirim alanında bir gösterge sağlamaz, ancak yeni kullanıcılar için bir komut dosyası oluşturmaktan daha kolaydır.

PPS: Bu ekran görüntüsünde UPS, Kablo Modem + Sony Android TV içindir, pili olan dizüstü bilgisayar için değildir ... HAHA.


Eh, tamam. Manuel olarak, burada ve orada birkaç tıklama alır. Ama oldukça iyi.
Sergiy Kolodyazhnyy

@Serg Aslında Jacob tarafından yayınlanan senaryoyu seviyorum. Ubuntu 16.04 / Kernel 4.7.2'yi sistemimde daha kararlı hale getirdikten bir gün sonra muhtemelen onunla oynayacak. Gerçekten de kapak kapatma askıya bile 14.04 16.04 yükseltme kutusunun dışında bile işe yaramadı ... kapak kapalı olduğunda TV aktif kalmak ve sadece dizüstü ekran loşlamak istiyorum varsayar sistemd bir parametre ayarlamak zorunda kaldı. Arka görüşte de bunun için talimatlar yayınlamalıydım!
WinEunuuchs2Unix

Evet, 16.04'ten önce bu seçenekler benim için gerçekten işe yaramadı. Ben şahsen dosya düzenleme cevap olarak göndermek istedim, ama Jacob beni dövdü :)
Sergiy Kolodyazhnyy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.