diff --git a/pupy/modules/w.py b/pupy/modules/w.py index 0012675a..22f799ea 100644 --- a/pupy/modules/w.py +++ b/pupy/modules/w.py @@ -39,6 +39,9 @@ class WModule(PupyModule): "grey" if idle > 60*60*24 else "" ) + if 'dead' in session: + color = 'darkgrey' + object = { 'HOST': Color(host, color), 'USER': Color( diff --git a/pupy/packages/all/pupyps.py b/pupy/packages/all/pupyps.py index 3c8c1008..a24c12f0 100644 --- a/pupy/packages/all/pupyps.py +++ b/pupy/packages/all/pupyps.py @@ -171,14 +171,20 @@ def users(): } if 'pid' in terminfo: - pinfo = { - k:to_unicode(v) for k,v in safe_as_dict(psutil.Process( - terminfo['pid']), [ - 'exe', 'cmdline', 'name' - ]).iteritems() - } + try: + pinfo = { + k:to_unicode(v) for k,v in safe_as_dict(psutil.Process( + terminfo['pid']), [ + 'exe', 'cmdline', 'name' + ]).iteritems() + } - terminfo.update(pinfo) + terminfo.update(pinfo) + except (psutil.NoSuchProcess, psutil.AccessDenied): + terminfo.update({ + 'pid': terminfo['pid'], + 'dead': True, + }) if 'terminal' in terminfo: try: