ฉันจะปิดการใช้งานสแตนด์บายอย่างรวดเร็วใน Ubuntu Unity 16.04 ได้อย่างไร


16

วิธีที่เร็วที่สุดในการปิดใช้งานคุณสมบัติสแตนด์บายอย่างรวดเร็วเมื่อปิดฝาคืออะไร? ฉันชอบพฤติกรรมนี้มากโดยเฉพาะอย่างยิ่งเมื่อเล่นเพลงฉันต้องการปิดฝาโดยไม่เปลี่ยนเครื่องเป็นสแตนด์บาย

อย่างไรก็ตามฉันไม่ต้องการปิดใช้งานคุณลักษณะนี้อย่างถาวร แต่เพียงปิดเป็นการชั่วคราวจนกว่าฉันจะฟังเพลงเสร็จแล้ว

อาจมีตัวบ่งชี้คล้ายกับคาเฟอีนหรือไม่?

ป้อนคำอธิบายรูปภาพที่นี่


การตั้งค่าของคุณคล้ายกับ ac และแบตเตอรี่หรือไม่
Jacob Vlijm

ยังไม่มีตัวบ่งชี้ดังกล่าว มีหลายวิธี แต่พวกเขาต้องการการเข้าถึงรูทด้วยsudoตามที่แสดงในโพสต์นี้ askubuntu.com/q/15520/295286 ฉันจะเห็นสิ่งที่สามารถทำได้แม้ว่า
Sergiy Kolodyazhnyy

ฉันขอถามได้ไหมว่าคุณใช้เวอร์ชั่นของระบบแบบไหน? 16.04
Sergiy Kolodyazhnyy

เรียน Jacob และ Serg ขอขอบคุณสำหรับความคิดเห็นและคำตอบแรก! บทของยาโคบนั้นยอดเยี่ยม มันจะยอดเยี่ยมถ้านี่เป็นตัวบ่งชี้เล็กน้อย ฉันชอบ GUIs ภาพ :-) การตั้งค่าคล้ายกับ ac และแบตเตอรี่ ฉันแก้ไขคำถามของฉันเพื่อให้ชัดเจนว่าฉันใช้ Unity 16.04
orschiro

สามารถ / จะทำได้ GUI จะใช้เวลานานขึ้นเล็กน้อย
Jacob Vlijm

คำตอบ:


19

สคริปต์ด้านล่างจะสลับการกระทำที่ปิดฝาระหว่าง "ไม่มีอะไร" และ "ระงับ":

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

... และแจ้งให้ทราบว่าสถานะที่ตั้งไว้ในปัจจุบันคืออะไร:

ป้อนคำอธิบายรูปภาพที่นี่

วิธีใช้

เพียง:

  • คัดลอกสคริปต์ลงในไฟล์ว่างแล้วบันทึกเป็น toggle_lid.py
  • เพิ่มลงในคีย์ลัด: เลือก: การตั้งค่าระบบ> "คีย์บอร์ด"> "ทางลัด"> "ทางลัดที่กำหนดเอง" คลิกที่ "+" และเพิ่มคำสั่ง:

    python3 /path/to/toggle_lid.py
    

คำอธิบาย

สถานะปัจจุบันของการตั้งค่าการดำเนินการปิดฝาสามารถเรียกดูได้โดยคำสั่ง

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

(เปิดเครื่อง) และ

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

(แบตเตอรี่)

สคริปต์อ่านสถานะปัจจุบันและตั้งค่าตรงกันข้าม ('suspend' / 'nothing') ด้วยคำสั่ง:

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

เลือกได้ (เพิ่มเติม)

เป็นทางเลือก / นอกจากนี้คุณสามารถเรียกใช้ตัวบ่งชี้เป็นเครื่องตรวจจับเพื่อแสดงสถานะปัจจุบันของการตั้งค่าฝา มันจะแสดง:

ป้อนคำอธิบายรูปภาพที่นี่

... ในแผงควบคุมหากมีการป้องกันการระงับชั่วคราวในการปิดฝามันจะแสดงสีเทาถ้าไม่

ป้อนคำอธิบายรูปภาพที่นี่

บท

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

วิธีใช้

  1. คัดลอกสคริปต์ด้านบนลงในไฟล์เปล่าแล้วบันทึกเป็น show_state.py
  2. คัดลอกไอคอนทั้งสองด้านล่าง (คลิกขวา -> บันทึกเป็น) และบันทึกในหนึ่งและไดเรกทอรีเดียวกันshow_proc.pyและมีชื่อตรงตามที่ระบุไว้ด้านล่าง

    green.png

    ป้อนคำอธิบายรูปภาพที่นี่

    nocolor.png

    ป้อนคำอธิบายรูปภาพที่นี่

  3. ตอนนี้ทำการทดสอบshow_state.pyโดยคำสั่ง:

    python3 /path/to/show_state.py
    

    และเปลี่ยนสถานะปัจจุบันโดยกดทางลัดที่คุณตั้งค่าส่วนแรกของคำตอบนี้

  4. หากทำงานได้ดีให้เพิ่มรายการต่อไปนี้ในแอปพลิเคชันเริ่มต้น:

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

บันทึก

ตัวตรวจจับ - ตัวบ่งชี้ด้านบนเป็นคำตอบที่ถูกแก้ไขแล้ว เพียงโดยการเปลี่ยนการทดสอบในการทำงานruns()(และเลือกตามไอคอนแผง), คุณสามารถใช้มันเพื่อแสดงสถานะของอะไรที่เป็นหรือTrueFalse


ทางออกที่ยอดเยี่ยมพร้อมตัวบ่งชี้! คำถามหนึ่ง: ทำไมคุณถึงตัดสินใจเลือกไอคอนโปร่งใส ?
orschiro

@orschiro ฉันพิจารณา (ed) ste ที่ฝาปิดจะระงับเป็นสถานการณ์เริ่มต้น สีเขียวเป็นตัวบ่งชี้ว่าคุณสามารถปิดฝาโดยไม่ต้องดำเนินการใด ๆ มันเป็นไอคอนใด ๆ ข้อเสนอแนะ?
Jacob Vlijm

อาจจะชอบสีเขียว แต่สีเทาซีดจาง? มันน่ารำคาญเล็กน้อยที่จะเห็นพื้นที่ว่างในแถบตัวบ่งชี้เนื่องจากความโปร่งใสของไอคอน
orschiro

@orschiro ฮ่าฮ่าตอนนี้ฉันเห็นสิ่งที่คุณหมายถึง :) แก้ไข
Jacob Vlijm

5

ตัวเลือกอื่นจะเปลี่ยนจาก "หยุด" เป็น "ไม่ต้องทำอะไร" ในการตั้งค่า Ubuntu - กำลังไฟ:

การตั้งค่า Ubuntu - พลังงาน

PS: นี่ไม่ได้ให้ตัวบ่งชี้ในพื้นที่แจ้งเตือน แต่จะง่ายกว่าการสร้างสคริปต์สำหรับผู้ใช้ใหม่

PPS: ในภาพรวมหน้าจอนี้ UPS ใช้สำหรับเคเบิลโมเด็ม + Sony Android TV ไม่ใช่แล็ปท็อปที่มีแบตเตอรี่ ... ฮ่าฮ่า


เอ๊ะโอเค คู่มือวิธีใช้เวลาไม่กี่คลิกที่นี่และที่นั่น แต่ค่อนข้างดี
Sergiy Kolodyazhnyy

@Serg ฉันชอบสคริปต์ที่โพสต์โดย Jacob อาจจะเล่นกับมันสักวันหลังจากฉันทำให้ Ubuntu 16.04 / เคอร์เนล 4.7.2 มีเสถียรภาพมากขึ้นในระบบของฉัน อันที่จริงการระงับการปิดฝาฉันไม่เคยทำได้จากกล่องอัพเกรด 14.04 ถึง 16.04 ... ต้องติดตั้งพารามิเตอร์ใน systemd ซึ่งถือว่าเมื่อปิดฝาคุณต้องการให้ทีวีใช้งานอยู่และต้องการหรี่หน้าจอแล็ปท็อป ในสายตาหลังฉันควรโพสต์คำแนะนำสำหรับที่เกินไป!
WinEunuuchs2Unix

ใช่ก่อนหน้า 16.04 ตัวเลือกเหล่านั้นไม่ได้ผลสำหรับฉันจริงๆ ผมเองอยากจะโพสต์ไฟล์แก้ไขเป็นคำตอบ แต่จาค็อบได้ตีฉันไป :)
Sergiy Kolodyazhnyy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.