[kupfer] screen: Don't give up just because SCREENDIR is missing
- From: Ulrik Sverdrup <usverdrup src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [kupfer] screen: Don't give up just because SCREENDIR is missing
- Date: Tue, 12 Apr 2011 17:08:01 +0000 (UTC)
commit 24a7cf0e560ab3f000e65381907d23ff0ce2c27c
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date: Tue Apr 12 19:07:35 2011 +0200
screen: Don't give up just because SCREENDIR is missing
the directory inside /var/run may be created later, and gio allows
monitoring non-existing directories just fine.
Launchpad-bug: https://bugs.launchpad.net/kupfer/+bug/753376
kupfer/obj/helplib.py | 8 +++++---
kupfer/plugin/screen.py | 9 +++++----
2 files changed, 10 insertions(+), 7 deletions(-)
---
diff --git a/kupfer/obj/helplib.py b/kupfer/obj/helplib.py
index 2f15598..a29cd50 100644
--- a/kupfer/obj/helplib.py
+++ b/kupfer/obj/helplib.py
@@ -48,7 +48,7 @@ class NonpersistentToken (PicklingHelperMixin):
class FilesystemWatchMixin (object):
"""A mixin for Sources watching directories"""
- def monitor_directories(self, *directories):
+ def monitor_directories(self, *directories, **kwargs):
"""Register @directories for monitoring;
On changes, the Source will be marked for update.
@@ -57,12 +57,14 @@ class FilesystemWatchMixin (object):
The token will be a false value if nothing could be monitored.
- Nonexisting directories are skipped.
+ Nonexisting directories are skipped, if not passing
+ the kwarg @force
"""
tokens = []
+ force = kwargs.get('force', False)
for directory in directories:
gfile = gio.File(directory)
- if not gfile.query_exists():
+ if not force and not gfile.query_exists():
continue
monitor = gfile.monitor_directory(gio.FILE_MONITOR_NONE, None)
if monitor:
diff --git a/kupfer/plugin/screen.py b/kupfer/plugin/screen.py
index a83af26..ded7069 100644
--- a/kupfer/plugin/screen.py
+++ b/kupfer/plugin/screen.py
@@ -70,16 +70,17 @@ class ScreenSessionsSource (Source, FilesystemWatchMixin):
super(ScreenSessionsSource, self).__init__(_("Screen Sessions"))
def initialize(self):
+ ## the screen dir might not exist when we start
+ ## luckily, gio can monitor directories before they exist
self.screen_dir = (os.getenv("SCREENDIR") or
"/var/run/screen/S-%s" % get_username())
if not os.path.exists(self.screen_dir):
- self.screen_dir = None
self.output_debug("Screen socket dir or SCREENDIR not found")
- return
- self.monitor_token = self.monitor_directories(self.screen_dir)
+ self.monitor_token = self.monitor_directories(self.screen_dir,
+ force=True)
def get_items(self):
- if not self.screen_dir:
+ if not os.path.exists(self.screen_dir):
return
for pid, name, time, status in screen_sessions_infos():
yield ScreenSession(pid, name)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]