Ubuntu Unity 16.04에서 대기 뚜껑을 빠르게 비활성화하려면 어떻게해야합니까?


16

덮개를 닫을 때 대기 기능을 빠르게 비활성화하는 가장 빠른 방법은 무엇입니까? 이 동작을 매우 좋아하지만 특히 음악을 재생할 때 기기를 대기 모드로 전환하지 않고 뚜껑을 닫고 싶습니다.

그러나이 기능을 영구적으로 비활성화하고 싶지는 않지만 예를 들어 음악 듣기가 끝날 때까지 일시적으로 끕니다.

어쩌면 Caffeine 와 유사한 표시기가 있습니까?

여기에 이미지 설명을 입력하십시오


AC 및 배터리 설정이 비슷합니까?
Jacob Vlijm

아직 그러한 지표는 없습니다. 방법이 있지만 sudo이 게시물에 표시된 것처럼 루트 액세스가 필요합니다 . askubuntu.com/q/15520/295286 . 나는 무엇을 할 수 있는지 볼 것이다
Sergiy Kolodyazhnyy

사용중인 시스템 버전은 무엇입니까? 16.04
Sergiy Kolodyazhnyy

Jacob과 Serg님께, 첫 번째 의견과 솔루션에 감사드립니다! 야곱의 대본은 훌륭합니다. 이것이 작은 지표라면 환상적입니다. 비주얼 GUI를 좋아합니다. :-) 설정은 ac 및 배터리와 비슷합니다. Unity 16.04를 사용하고 있음을 분명히하기 위해 질문을 편집했습니다.
orschiro

할 수 있습니다. 그러나 GUI는 시간이 조금 더 걸립니다.
Jacob Vlijm

답변:


19

아래의 스크립트 는 "nothing"과 "suspend"사이에서 닫힌 동작을 토글 합니다.

#!/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()(선택적 따라 패널 아이콘), 당신의 상태를 표시하는 데 사용할 수 있습니다 아무것도 있습니다 True또는 False.


표시기와 함께 탁월한 솔루션! 한 가지 질문 : 투명한 아이콘 을 선택한 이유는 무엇 입니까?
orschiro

@orschiro 나는 뚜껑 닫힘이 기본 상황 으로 중단되는 ste를 고려 했다. 녹색 조치없이 뚜껑을 닫을 있음을 나타냅니다 . 그러나 모든 아이콘이 표시됩니다. 제안?
Jacob Vlijm

초록색이지만 희미한 회색일까요? 아이콘의 투명성으로 인해 표시기 막대에 빈 공간이 표시되는 것은 약간 자극적입니다.
orschiro

@orschiro haha, 이제 나는 당신이 무엇을 의미하는지 봅니다. :). 편집했습니다.
Jacob Vlijm

5

또 다른 옵션은 Ubuntu Settings-Power에서 "Suspend"에서 "Nothing"으로 변경하는 것입니다.

우분투 설정-전원

추신 : 이것은 알림 영역에 표시기를 제공하지 않지만 새로운 사용자를위한 스크립트를 만드는 것보다 간단합니다.

PPS :이 화면의 스냅 샷에서 UPS는 배터리가있는 랩탑이 아닌 케이블 모뎀 + Sony Android TV 용입니다. HAHA.


어, 알았어 수동 방법, 여기 저기 몇 번의 클릭이 걸립니다. 그러나 상당히 괜찮습니다.
Sergiy Kolodyazhnyy

@ Serg 실제로 Jacob이 게시 한 스크립트가 마음에 듭니다. 시스템에서 Ubuntu 16.04 / Kernel 4.7.2를보다 안정적으로 만든 후 언젠가는 함께 사용할 것입니다. 실제로 뚜껑을 닫을 때의 일시 중단은 14.04에서 16.04로 업그레이드 한 상자에서도 작동하지 않았습니다 ... 뚜껑을 닫을 때 TV를 계속 활성화하고 노트북 화면을 어둡게하고 싶다고 가정하는 systemd에서 매개 변수를 설정해야했습니다. 뒤에서 나는 그것에 대한 지침도 게시해야합니다!
WinEunuuchs2Unix

예, 16.04 이전에는 이러한 옵션이 실제로 효과가 없었습니다. 나는 개인적으로 답변으로 편집 파일을 게시 싶었지만, 야곱은 : 그것은 나를 이겼습니다
세르지 Kolodyazhnyy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.