diff --git a/qubesmanager/main.py b/qubesmanager/main.py index 02e5735..79fee93 100755 --- a/qubesmanager/main.py +++ b/qubesmanager/main.py @@ -22,6 +22,7 @@ import sys import os +import dbus from PyQt4.QtCore import * from PyQt4.QtGui import * @@ -584,7 +585,7 @@ class VmShutdownMonitor(QObject): vm_start_time = vm.get_start_time() if not vm.is_running() or (vm_start_time and vm_start_time >= datetime.utcnow() - timedelta(0,vm_shutdown_timeout/1000)): if vm.is_template(): - trayIcon.showMessage ("Qubes Manager", "You have just modified template '{0}'. You should now restart all the VMs based on it, so they could see the changes.".format(vm.name), msecs=8000) + trayIcon.showMessage ("Qubes VM Manager", "You have just modified template '{0}'. You should now restart all the VMs based on it, so they could see the changes.".format(vm.name), msecs=8000) return reply = QMessageBox.question(None, "VM Shutdown", @@ -939,7 +940,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): res, msg = self.blk_manager.check_for_updates() if msg != None and len(msg) > 0: str = "\n".join(msg) - trayIcon.showMessage ("Qubes Manager", str, msecs=5000) + trayIcon.showMessage ("Qubes VM Manager", str, msecs=5000) return res @@ -1062,7 +1063,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): progress.hide() if thread_monitor.success: - trayIcon.showMessage ("Qubes Manager", "VM '{0}' has been created.".format(vmname), msecs=3000) + trayIcon.showMessage ("Qubes VM Manager", "VM '{0}' has been created.".format(vmname), msecs=3000) else: QMessageBox.warning (None, "Error creating AppVM!", "ERROR: {0}".format(thread_monitor.error_msg)) @@ -1147,7 +1148,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): progress.hide() if thread_monitor.success: - trayIcon.showMessage ("Qubes Manager", "VM '{0}' has been removed.".format(vm.name), msecs=3000) + trayIcon.showMessage ("Qubes VM Manager", "VM '{0}' has been removed.".format(vm.name), msecs=3000) else: QMessageBox.warning (None, "Error removing VM!", "ERROR: {0}".format(thread_monitor.error_msg)) @@ -1189,14 +1190,14 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): thread.daemon = True thread.start() - trayIcon.showMessage ("Qubes Manager", "Starting '{0}'...".format(vm.name), msecs=3000) + trayIcon.showMessage ("Qubes VM Manager", "Starting '{0}'...".format(vm.name), msecs=3000) while not thread_monitor.is_finished(): app.processEvents() time.sleep (0.1) if thread_monitor.success: - trayIcon.showMessage ("Qubes Manager", "VM '{0}' has been started.".format(vm.name), msecs=3000) + trayIcon.showMessage ("Qubes VM Manager", "VM '{0}' has been started.".format(vm.name), msecs=3000) else: QMessageBox.warning (None, "Error starting VM!", "ERROR: {0}".format(thread_monitor.error_msg)) @@ -1249,7 +1250,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): QMessageBox.warning (None, "Error shutting down VM!", "ERROR: {0}".format(ex)) return - trayIcon.showMessage ("Qubes Manager", "VM '{0}' is shutting down...".format(vm.name), msecs=3000) + trayIcon.showMessage ("Qubes VM Manager", "VM '{0}' is shutting down...".format(vm.name), msecs=3000) self.shutdown_monitor[vm.qid] = VmShutdownMonitor (vm) QTimer.singleShot (vm_shutdown_timeout, self.shutdown_monitor[vm.qid].check_if_vm_has_shutdown) @@ -1274,7 +1275,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): QMessageBox.critical (None, "Error while killing VM!", "An exception ocurred while killing {0}.
ERROR: {1}".format(vm.name, ex)) return - trayIcon.showMessage ("Qubes Manager", "VM '{0}' killed!".format(vm.name), msecs=3000) + trayIcon.showMessage ("Qubes VM Manager", "VM '{0}' killed!".format(vm.name), msecs=3000) @@ -1302,7 +1303,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): QMessageBox.Yes | QMessageBox.Cancel) if reply != QMessageBox.Yes: return - trayIcon.showMessage ("Qubes Manager", "Starting '{0}'...".format(vm.name), msecs=3000) + trayIcon.showMessage ("Qubes VM Manager", "Starting '{0}'...".format(vm.name), msecs=3000) app.processEvents() @@ -1654,13 +1655,13 @@ class QubesBlockDevicesManager(): backend_vm_name = self.free_devs[dev]['backend_name'] dev_id = self.free_devs[dev]['dev'] backend_vm = self.qvm_collection.get_vm_by_name(backend_vm_name) - trayIcon.showMessage ("Qubes Manager", "{0} - attaching {1}".format(vm.name, dev), msecs=3000) + trayIcon.showMessage ("Qubes VM Manager", "{0} - attaching {1}".format(vm.name, dev), msecs=3000) qubesutils.block_attach(vm, backend_vm, dev_id) def detach_device(self, vm, dev_name): dev_id = self.attached_devs[dev_name]['attached_to']['devid'] vm_xid = self.attached_devs[dev_name]['attached_to']['xid'] - trayIcon.showMessage ("Qubes Manager", "{0} - detaching {1}".format(vm.name, dev_name), msecs=3000) + trayIcon.showMessage ("Qubes VM Manager", "{0} - detaching {1}".format(vm.name, dev_name), msecs=3000) qubesutils.block_detach(None, dev_id, vm_xid) @@ -1687,6 +1688,9 @@ class QubesTrayIcon(QSystemTrayIcon): self.connect (self, SIGNAL("activated (QSystemTrayIcon::ActivationReason)"), self.icon_clicked) + self.tray_object = dbus.SessionBus().get_object("org.freedesktop.Notifications", "/org/freedesktop/Notifications") + self.tray_notifier = dbus.Interface(self.tray_object, "org.freedesktop.Notifications" ) + def icon_clicked(self, reason): if reason == QSystemTrayIcon.Context: # Handle the right click normally, i.e. display the context menu @@ -1701,6 +1705,8 @@ class QubesTrayIcon(QSystemTrayIcon): else: target.addAction(action) + def showMessage(self, title, message, msecs): + self.tray_notifier.Notify("Qubes", 0, "/usr/share/qubes/icons/qubes.png", title, message, [], [], msecs) def createAction(self, text, slot=None, shortcut=None, icon=None, tip=None, checkable=False, signal="triggered()"):