diff --git a/configure.ac b/configure.ac
index e190a43..911a179 100644
--- a/configure.ac
+++ b/configure.ac
@@ -93,6 +93,7 @@ CLUTTERGTK_REQUIRED=0.91.8
 CLUTTERGST_REQUIRED=1.0.0
 GEE_REQUIRED=0.6.0
 LIBCANBERRA_REQUIRED=0.26
+LIBZEITGEIST_REQUIRED=0.2.4
 
 #*******************************************************************************
 # Check for udev
@@ -149,6 +150,21 @@ PKG_CHECK_MODULES(CHEESE, \
   )
 AC_SUBST(CHEESE_CFLAGS)
 AC_SUBST(CHEESE_LIBS)
+
+AC_ARG_ENABLE(zeitgeist,
+AC_HELP_STRING([--enable-zeitgeist], [Enable Zeitgeist support]),
+  enable_zeitgeist=$enableval,
+  enable_zeitgeist=no
+  )
+
+if test x${enable_zeitgeist} = xyes; then
+  PKG_CHECK_MODULES(LIBZEITGEIST, zeitgeist-1.0 >= $LIBZEITGEIST_REQUIRED)
+  AC_SUBST(LIBZEITGEIST_LIBS)
+  AC_SUBST(LIBZEITGEIST_CFLAGS)
+fi
+
+AM_CONDITIONAL(HAVE_LIBZG, test "x$enable_zeitgeist" = "xyes")
+
 CHEESE_LIBS="$CHEESE_LIBS -lgstinterfaces-0.10"
 
 PKG_CHECK_MODULES(CHEESE_GTK, \ 
diff --git a/src/Makefile.am b/src/Makefile.am
index e085266..943ada9 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -59,3 +59,9 @@ dist_noinst_DATA = \
 	vapi/cheese-thumbview.vapi \
 	vapi/config.vapi \
 	vapi/eogthumbnav.vapi
+	
+if HAVE_LIBZG
+  VALAFLAGS += --define=HAVE_LIBZG --pkg zeitgeist-1.0
+  AM_CPPFLAGS += $(LIBZEITGEIST_CFLAGS)
+  cheese_LDADD += $(LIBZEITGEIST_LIBS)
+endif
diff --git a/src/cheese-window.vala b/src/cheese-window.vala
index d0c8bb5..f87d9ea 100644
--- a/src/cheese-window.vala
+++ b/src/cheese-window.vala
@@ -669,6 +669,7 @@ public class Cheese.MainWindow : Gtk.Window
                                    Canberra.PROP_EVENT_DESCRIPTION, _("Shutter sound"),
                                    null);
       this.camera.take_photo (file_name);
+      this.push_to_zeitgeist (file_name, true);
     }
 
     if (current_mode == MediaMode.PHOTO)
@@ -756,7 +757,9 @@ public class Cheese.MainWindow : Gtk.Window
   {
     if (is_start)
     {
-      camera.start_video_recording (fileutil.get_new_media_filename (this.current_mode));
+      string filename = fileutil.get_new_media_filename (this.current_mode);
+      camera.start_video_recording (filename);
+      this.push_to_zeitgeist (filename, false);
       take_action_button_label.label = "<b>" + _("Stop _Recording") + "</b>";
       take_action_button.tooltip_text = "Stop recording";
       take_action_button_image.set_from_stock (Gtk.Stock.MEDIA_STOP, Gtk.IconSize.BUTTON);
@@ -1283,9 +1286,42 @@ public class Cheese.MainWindow : Gtk.Window
     camera.state_flags_changed.connect (camera_state_changed);
     camera.play ();
   }
+  
   public void start_thumbview_monitors ()
   {
     thumb_view.start_monitoring_video_path (fileutil.get_video_path ());
     thumb_view.start_monitoring_photo_path (fileutil.get_photo_path ());
   }
+  
+#if HAVE_LIBZG
+  private Zeitgeist.Log zg_log = null;
+#endif
+
+  private void push_to_zeitgeist (string uri, bool is_photo)
+  {
+#if HAVE_LIBZG
+    string mimetype = is_photo ? "image/jpeg" : "video/ogg";
+    string interpretation = is_photo ?
+      Zeitgeist.NFO_RASTER_IMAGE : Zeitgeist.NFO_VIDEO;
+    string title = is_photo ?
+      _("Photo taken using Cheese") : _("Video taken using Cheese");
+    string origin = GLib.Path.get_dirname (uri);
+
+    var subject = new Zeitgeist.Subject.full (uri,
+                                              interpretation,
+                                              Zeitgeist.NFO_FILE_DATA_OBJECT,
+                                              mimetype,
+                                              origin,
+                                              title,
+                                              "");
+    var event = new Zeitgeist.Event.full (Zeitgeist.ZG_CREATE_EVENT,
+                                          Zeitgeist.ZG_USER_ACTIVITY,
+                                          "application://cheese.desktop",
+                                          subject, null);
+
+    if (zg_log == null)
+      zg_log = new Zeitgeist.Log ();
+    zg_log.insert_events_no_reply (event, null);
+#endif
+  }
 }
