summaryrefslogtreecommitdiff
path: root/portato
diff options
context:
space:
mode:
Diffstat (limited to 'portato')
-rw-r--r--portato/gui/gui_helper.py2
-rw-r--r--portato/plugins/resume_loop.py23
2 files changed, 19 insertions, 6 deletions
diff --git a/portato/gui/gui_helper.py b/portato/gui/gui_helper.py
index f9dd3fe..1c8c411 100644
--- a/portato/gui/gui_helper.py
+++ b/portato/gui/gui_helper.py
@@ -491,7 +491,7 @@ class EmergeQueue:
@param command: the command to execute - default is "/usr/bin/python /usr/bin/emerge"
@type command: string[]"""
- @plugin.hook("emerge", packages = packages, command = command, console = self.console)
+ @plugin.hook("emerge", packages = packages, command = command, console = self.console, title_update = self.title_update)
def sub_emerge(command):
if command is None:
command = system.get_merge_command()
diff --git a/portato/plugins/resume_loop.py b/portato/plugins/resume_loop.py
index 45c735a..b33f4c7 100644
--- a/portato/plugins/resume_loop.py
+++ b/portato/plugins/resume_loop.py
@@ -10,17 +10,19 @@
#
# Written by René 'Necoro' Neumann <necoro@necoro.net>
-import pty
-from subprocess import call, STDOUT
+import pty, time
+from subprocess import Popen, STDOUT
from portato.backend import system
from portato.helper import debug, warning
console = None
+title_update = None
command = "until emerge --resume --skipfirst; do : ; done"
-def set_console (*args, **kwargs):
- global console
+def set_data (*args, **kwargs):
+ global console, title_update
console = kwargs["console"]
+ title_update = kwargs["title_update"]
def resume_loop (retcode, *args, **kwargs):
if retcode is None:
@@ -36,4 +38,15 @@ def resume_loop (retcode, *args, **kwargs):
# open tty
(master, slave) = pty.openpty()
console.set_pty(master)
- call(command, stdout = slave, stderr = STDOUT, shell = True, env = system.get_environment())
+ p = Popen(command, stdout = slave, stderr = STDOUT, shell = True, env = system.get_environment())
+
+ # update titles
+ old_title = console.get_window_title()
+ while p and p.poll() is None:
+ if title_update :
+ title = console.get_window_title()
+ if title != old_title:
+ title_update(title)
+ time.sleep(0.5)
+
+ if title_update: title_update(None)