diff --git a/qubesmanager/clipboard.py b/qubesmanager/clipboard.py index 21e8e8e..a869a4b 100644 --- a/qubesmanager/clipboard.py +++ b/qubesmanager/clipboard.py @@ -24,6 +24,7 @@ import os import fcntl +from math import log from qubes.qubes import QubesException from PyQt4.QtGui import QApplication @@ -57,3 +58,20 @@ def copy_text_to_qubes_clipboard(text): QMessageBox.warning(None, "Warning!", "Error while writing to Qubes clipboard!") fcntl.flock(fd, fcntl.LOCK_UN) os.close(fd) + +def get_qubes_clipboard_formatted_size(): + units = ['B', 'KiB', 'MiB', 'GiB'] + + try: + file_size = os.path.getsize(CLIPBOARD_CONTENTS) + except: + QMessageBox.warning(None, "Warning!", "Error while accessing Qubes clipboard!") + else: + formatted_bytes = '1 byte' if file_size == 1 else str(file_size) + ' bytes' + if file_size > 0: + magnitude = min(int(log(file_size)/log(2)*0.1), len(units)-1) + if magnitude > 0: + return '%s (%.1f %s)' % (formatted_bytes, file_size/(2.0**(10*magnitude)), units[magnitude]) + return '%s' % (formatted_bytes) + + return '? bytes' diff --git a/qubesmanager/main.py b/qubesmanager/main.py index 4ac0fa9..fff2e10 100755 --- a/qubesmanager/main.py +++ b/qubesmanager/main.py @@ -104,10 +104,11 @@ class QubesManagerFileWatcher(ProcessEvent): else: trayIcon.showMessage(unicode(app.tr( "Qubes Clipboard fetched from VM: '{0}'\n" + "Copied {1} to the clipboard.\n" "Press Ctrl-Shift-v to copy this clipboard into dest" " VM's clipboard.")).format( - src_vmname), msecs=3000) - src_info_file.close() + src_vmname, get_qubes_clipboard_formatted_size()), + msecs=3000) def process_IN_CREATE(self, event): if event.name == os.path.basename(qubes_clipboard_info_file):