Как я обнаруживаю, когда моя система просыпается от, приостанавливают через DBus или подобный в приложении Python?

В фоне сценарий Python, который я должен обнаружить, когда система просто проснулась от, приостанавливают. Что такое хороший путь, который не полагается на корневой сценарий, а скорее на модулях Python, таких как DBus?

Я плохо знаком с dbus, таким образом, я мог действительно использовать некоторый пример кода. Из того, что я читал, это связано с

org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Resuming

Кто-либо может выручить меня с некоторым кодом, который подключает возобновляющийся сигнал к обратному вызову?

6
задан 13 April 2017 в 05:24

2 ответа

Вот некоторый пример кода, который отвечает на мой вопрос:

#!/usr/bin/python
# This is some example code on howto use dbus to detect when the system returns
#+from hibernation or suspend.

import dbus      # for dbus communication (obviously)
import gobject   # main loop
from dbus.mainloop.glib import DBusGMainLoop # integration into the main loop

def handle_resume_callback():
    print "System just resumed from hibernate or suspend"

DBusGMainLoop(set_as_default=True) # integrate into main loob
bus = dbus.SystemBus()             # connect to dbus system wide
bus.add_signal_receiver(           # defince the signal to listen to
    handle_resume_callback,            # name of callback function
    'Resuming',                        # singal name
    'org.freedesktop.UPower',          # interface
    'org.freedesktop.UPower'           # bus name
)

loop = gobject.MainLoop()          # define mainloop
loop.run()                         # run main loop

Посмотрите учебное руководство .

dbus-python
9
ответ дан 23 November 2019 в 07:21

Интерфейс login1 обеспечивает сигнал теперь. Вот измененный код:

#!/usr/bin/python
# slightly different code for handling suspend resume
# using login1 interface signals
#
import dbus      # for dbus communication (obviously)
import gobject   # main loop
from dbus.mainloop.glib import DBusGMainLoop # integration into the main loop

def handle_sleep_callback(sleeping):
  if sleeping:
    print "System going to hibernate or sleep"
  else:
    print "System just resumed from hibernate or suspend"

DBusGMainLoop(set_as_default=True) # integrate into main loob
bus = dbus.SystemBus()             # connect to dbus system wide
bus.add_signal_receiver(           # defince the signal to listen to
    handle_sleep_callback,            # name of callback function
    'PrepareForSleep',                 # signal name
    'org.freedesktop.login1.Manager',   # interface
    'org.freedesktop.login1'            # bus name
)

loop = gobject.MainLoop()          # define mainloop
loop.run()                         # run main loop
6
ответ дан 23 November 2019 в 07:21

Другие вопросы по тегам:

Похожие вопросы: