Jelajahi Sumber

qvm-tools: do not crash qvm-run/qvm-start --tray when no notification service available

Marek Marczykowski-Górecki 10 tahun lalu
induk
melakukan
177c40d18f
2 mengubah file dengan 16 tambahan dan 6 penghapusan
  1. 8 3
      qvm-tools/qvm-run
  2. 8 3
      qvm-tools/qvm-start

+ 8 - 3
qvm-tools/qvm-run

@@ -41,10 +41,12 @@ notify_object = None
 from qubes.qubes import defaults
 
 def tray_notify(str, label, timeout = 3000):
-    notify_object.Notify("Qubes", 0, label.icon, "Qubes", str, [], [], timeout, dbus_interface="org.freedesktop.Notifications")
+    if notify_object:
+        notify_object.Notify("Qubes", 0, label.icon, "Qubes", str, [], [], timeout, dbus_interface="org.freedesktop.Notifications")
 
 def tray_notify_error(str, timeout = 3000):
-    notify_object.Notify("Qubes", 0, "dialog-error", "Qubes", str, [], [], timeout, dbus_interface="org.freedesktop.Notifications")
+    if notify_object:
+        notify_object.Notify("Qubes", 0, "dialog-error", "Qubes", str, [], [], timeout, dbus_interface="org.freedesktop.Notifications")
 
 def vm_run_cmd(vm, cmd, options):
     if options.shutdown:
@@ -169,7 +171,10 @@ def main():
 
     if options.tray:
         global notify_object
-        notify_object = dbus.SessionBus().get_object("org.freedesktop.Notifications", "/org/freedesktop/Notifications")
+        try:
+            notify_object = dbus.SessionBus().get_object("org.freedesktop.Notifications", "/org/freedesktop/Notifications")
+        except dbus.DBusException as ex:
+            print >>sys.stderr, "WARNING: failed connect to tray notification service: %s" % str(ex)
 
     qvm_collection = QubesVmCollection()
     qvm_collection.lock_db_for_reading()

+ 8 - 3
qvm-tools/qvm-start

@@ -31,10 +31,12 @@ import dbus
 notify_object = None
 
 def tray_notify(str, label, timeout = 3000):
-    notify_object.Notify("Qubes", 0, label.icon, "Qubes", str, [], [], timeout, dbus_interface="org.freedesktop.Notifications")
+    if notify_object:
+        notify_object.Notify("Qubes", 0, label.icon, "Qubes", str, [], [], timeout, dbus_interface="org.freedesktop.Notifications")
 
 def tray_notify_error(str, timeout = 3000):
-    notify_object.Notify("Qubes", 0, "dialog-error", "Qubes", str, [], [], timeout, dbus_interface="org.freedesktop.Notifications")
+    if notify_object:
+        notify_object.Notify("Qubes", 0, "dialog-error", "Qubes", str, [], [], timeout, dbus_interface="org.freedesktop.Notifications")
 
 def tray_notify_generic(level, str):
     if level == "info":
@@ -72,7 +74,10 @@ def main():
 
     if options.tray:
         global notify_object
-        notify_object = dbus.SessionBus().get_object("org.freedesktop.Notifications", "/org/freedesktop/Notifications")
+        try:
+            notify_object = dbus.SessionBus().get_object("org.freedesktop.Notifications", "/org/freedesktop/Notifications")
+        except dbus.DBusException as ex:
+            print >>sys.stderr, "WARNING: failed connect to tray notification service: %s" % str(ex)
 
     qvm_collection = QubesVmCollection()
     qvm_collection.lock_db_for_reading()