Index: configure.ac
===================================================================
--- configure.ac	(revision 1010)
+++ configure.ac	(working copy)
@@ -31,7 +31,7 @@
 # Check for GDK/X11 and PyGObject
 PKG_CHECK_MODULES(XLIB_MODULE, gdk-x11-2.0 pygobject-2.0)
 
-PYGOBJECT_REQUIRED_VERSION=2.12.0
+PYGOBJECT_REQUIRED_VERSION=2.15.0
 AC_MSG_CHECKING(for pygobject $PYGOBJECT_REQUIRED_VERSION or greater)
 if $PKG_CONFIG --atleast-version $PYGOBJECT_REQUIRED_VERSION pygobject-2.0
 then
Index: lib/dirmonitor.py
===================================================================
--- lib/dirmonitor.py	(revision 1010)
+++ lib/dirmonitor.py	(working copy)
@@ -19,7 +19,7 @@
 import os
 import os.path
 import gobject
-import gnomevfs
+import gio
 import util
 import fnmatch
 import debuglog
@@ -27,9 +27,9 @@
 
 N_WATCHES_LIMIT = 200
 
-CHANGED = gnomevfs.MONITOR_EVENT_CHANGED
-DELETED = gnomevfs.MONITOR_EVENT_DELETED
-CREATED = gnomevfs.MONITOR_EVENT_CREATED
+CHANGED = gio.FILE_MONITOR_EVENT_CHANGED
+DELETED = gio.FILE_MONITOR_EVENT_DELETED
+CREATED = gio.FILE_MONITOR_EVENT_CREATED
 
 def dprint (fmt, *args):
     debuglog.debug_log (False, debuglog.DEBUG_LOG_DOMAIN_DIR_MONITOR, fmt % args)
@@ -49,7 +49,7 @@
         self.directory = directory
         self.callback = callback
         self.data = data
-        self.watches = {} # maps filename => gnome_vfs_monitor handle
+        self.watches = {} # maps filename => FileMonitor handle
         self.too_many_watches = False
         self.dirs_to_ignore = []
         self.files_to_ignore = []
@@ -75,18 +75,19 @@
             self.callback (path, event)
 
     #
-    # Processing of a gnomevfs callback
+    # Processing of a file_monitor callback
     #
-    def __handle_gnomevfs_event (self, dir_uri, file_uri, event):
+    def __handle_file_monitor_event (self, dir_uri, file_uri, event, data):
         if event == CHANGED or event == DELETED or event == CREATED:
-            # Strip 'file://' and replace %xx with equivalent characters.
-            path = file_uri [7:]
+            path = file_uri.get_path ()
+            
+            #replace %xx with equivalent characters.
             path = urllib.unquote (path)
 
             # Strip trailing '/'.
             path = os.path.normpath (path)
             
-            dprint ("Got gnomevfs event '%s' on '%s'", event_to_string (event), path)
+            dprint ("Got file_monitor event '%s' on '%s'", event_to_string (event), path)
 
             if not self.__should_ignore_dir (path) and \
                not self.__should_ignore_file (path):
@@ -97,7 +98,7 @@
                 elif event == DELETED:
                     if path != self.directory and self.watches.has_key (path):
                         dprint ("Deleting watch for '%s' since it got deleted", path)
-                        gnomevfs.monitor_cancel (self.watches [path])
+                        self.watches [path].cancel ()
                         del self.watches[path]
                         if len (self.watches) < N_WATCHES_LIMIT:
                             self.too_many_watches = False
@@ -120,7 +121,9 @@
             return
 
         try:
-            self.watches [dir] = gnomevfs.monitor_add (dir, gnomevfs.MONITOR_DIRECTORY, self.__handle_gnomevfs_event)
+            gfile = gio.File (dir)
+            self.watches [dir] = gfile.monitor_directory ()
+            self.watches [dir].connect ("changed", self.__handle_file_monitor_event) 
             dprint ("Added directory watch for '%s'", dir)
         except:
             print ("Failed to add monitor for %s") % (dir)
@@ -160,7 +163,7 @@
         dprint ("Stopping recursive monitoring of '%s'", self.directory)
 
         for path in self.watches:
-            gnomevfs.monitor_cancel (self.watches [path])
+            self.watches [path].cancel ()
 
 def run_unit_tests ():
     import tempfile
