Kịch bản bên dưới sẽ chuyển đổi hành động đóng giữa "không có gì" và "tạm dừng":
#!/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])
... Và thông báo trạng thái hiện được đặt là gì:
Cách sử dụng
Đơn giản:
Giải trình
Trạng thái hiện tại của cài đặt hành động đóng nắp có thể được truy xuất bằng (các) lệnh
gsettings get org.gnome.settings-daemon.plugins.power lid-close-ac-action
(về sức mạnh), và
gsettings get org.gnome.settings-daemon.plugins.power lid-close-battery-action
(về pin)
Kịch bản đọc trạng thái hiện tại và đặt ngược lại ('đình chỉ' / 'không có gì') bằng lệnh:
gsettings get org.gnome.settings-daemon.plugins.power lid-close-ac-action '<action>'
Tùy chọn (bổ sung)
Tùy chọn / bổ sung, bạn có thể chạy chỉ báo dưới dạng máy dò để hiển thị trạng thái hiện tại của cài đặt nắp. Nó sẽ hiển thị:
... trong bảng điều khiển, nếu việc đình chỉ sẽ bị ngăn chặn khi đóng nắp, Nó sẽ hiển thị màu xám nếu không.
Kịch bản
#!/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()
Cách sử dụng
- Sao chép tập lệnh ở trên vào một tệp trống, lưu nó dưới dạng
show_state.py
Sao chép cả hai biểu tượng bên dưới (nhấp chuột phải -> lưu dưới dạng) và lưu chúng trong một và cùng thư mục với show_proc.py
tên chính xác như được chỉ ra bên dưới
green.png
nocolor.png
Bây giờ kiểm tra- chạy show_state.py
bằng lệnh:
python3 /path/to/show_state.py
và thay đổi trạng thái hiện tại bằng cách nhấn phím tắt bạn đặt phần đầu tiên của câu trả lời này.
Nếu tất cả đều hoạt động tốt, hãy thêm các mục sau vào các ứng dụng khởi động:
/bin/bash -c "sleep 15 && python3 /path/to/show_state.py"
Ghi chú
Chỉ báo phát hiện ở trên là phiên bản chỉnh sửa của câu trả lời này . Đơn giản bằng cách thay đổi kiểm tra trong chức năng runs()
(và tùy chọn các biểu tượng bảng điều khiển), bạn có thể sử dụng nó để hiển thị trạng thái của bất kỳ thứ gì đang True
hoặc False
.