Как определить, когда моя система просыпается от suspend через DBus или аналогично в приложении python?

У меня возникла проблема с тем, что Netbeans перестали реагировать на ввод с клавиатуры и мыши. Приходилось использовать xkill несколько раз в день, теряя работу в этом процессе. Я обновился до Netbeans 7.1 (не в репозиториях, а очень простое обновление), и с тех пор этот вопрос не возник. Я надеюсь, что это поможет кому-то с подобными разочарованиями.

1
задан 13 April 2017 в 15:24

1 ответ

Интерфейс 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
ответ дан 25 May 2018 в 06:55
  • 1
    работает отлично. Я отметил, что нет необходимости запускать gobject.MainLoop(), если вы используете основной цикл Gtk. – bluppfisk 5 January 2018 в 13:55

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

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