如何在 Ubuntu Unity 16.04 中快速禁用待机盖关闭功能?

如何在 Ubuntu Unity 16.04 中快速禁用待机盖关闭功能?

合上盖子后,有什么方法可以快速禁用待机功能?我非常喜欢这种行为,但特别是在播放音乐时,我想合上盖子而不将机器切换到待机状态。

但是,我不想永久禁用此功能,而只是想暂时关闭它,直到我听完音乐为止。

也许有类似的指标咖啡因

在此处输入图片描述

答案1

下面的脚本将切换“无”和“暂停”之间的盖上动作:

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

(电池)

脚本读取当前状态,并使用以下命令设置相反状态(“暂停”/“无”):

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

答案2

另一个选项是在 Ubuntu 设置 - 电源中将“暂停”更改为“不执行任何操作”:

Ubuntu 设置 - 电源

PS:这不会在通知区域提供指示器,但比为新用户创建脚本更简单。

PPS:在此屏幕快照中,UPS 用于电缆调制解调器 + 索尼 Android 电视,而不是带有电池的笔记本电脑……哈哈。

相关内容