diff --git a/qubesmanager/main.py b/qubesmanager/main.py index 4d63ba6..669a969 100755 --- a/qubesmanager/main.py +++ b/qubesmanager/main.py @@ -60,6 +60,7 @@ import time from datetime import datetime,timedelta from qubes.qubes import updates_stat_file qubes_dom0_updates_stat_file = '/var/lib/qubes/updates/dom0-updates-available' +qubes_clipboard_info_file = "/var/run/qubes/qubes_clipboard.bin.source" qubes_guid_path = '/usr/bin/qubes_guid' @@ -74,12 +75,28 @@ power_order = Qt.DescendingOrder update_order = Qt.AscendingOrder -class QubesConfigFileWatcher(ProcessEvent): +class QubesManagerFileWatcher(ProcessEvent): def __init__ (self, update_func): self.update_func = update_func def process_IN_MODIFY (self, event): - self.update_func() + if event.path == qubes_store_filename: + self.update_func() + + def process_IN_CLOSE_WRITE (self, event): + if event.path == qubes_clipboard_info_file: + src_info_file = open (qubes_clipboard_info_file, 'r') + src_vmname = src_info_file.readline().strip('\n') + if src_vmname == "": + trayIcon.showMessage("Qubes Clipboard has been copied to the VM and wiped.\n"\ + "Trigger a paste operation (e.g. Ctrl-v) to insert it into an application.", + msecs=3000) + else: + print src_vmname + trayIcon.showMessage("Qubes Clipboard fetched from VM: '{0}'\n"\ + "Press Ctrl-Shift-v to copy this clipboard onto dest VM's clipboard.".format(src_vmname), + msecs=3000) + src_info_file.close() class VmIconWidget (QWidget): @@ -2160,12 +2177,12 @@ def main(): global manager_window manager_window = VmManagerWindow() wm = WatchManager() - mask = EventsCodes.OP_FLAGS.get('IN_MODIFY') global notifier - notifier = ThreadedNotifier(wm, QubesConfigFileWatcher(manager_window.mark_table_for_update)) + notifier = ThreadedNotifier(wm, QubesManagerFileWatcher(manager_window.mark_table_for_update)) notifier.start() - wdd = wm.add_watch(qubes_store_filename, mask) + wm.add_watch(qubes_store_filename, EventsCodes.OP_FLAGS.get('IN_MODIFY')) + wm.add_watch(qubes_clipboard_info_file, EventsCodes.OP_FLAGS.get('IN_CLOSE_WRITE')) global system_bus system_bus = dbus.SystemBus()