diff --git a/configure.ac b/configure.ac
index d3785f7..18b4d45 100644
--- a/configure.ac
+++ b/configure.ac
@@ -95,6 +95,7 @@ UNIQUE_REQUIRED=1.1
 GEE_REQUIRED=0.5
 MX_REQUIRED=1.0
 LIBCANBERRA_REQUIRED=0.23
+LIBZEITGEIST_REQUIRED=0.2.4
 
 #*******************************************************************************
 # Check for udev
@@ -165,6 +166,21 @@ CHEESE_LIBS="$CHEESE_LIBS -lgstinterfaces-0.10"
 
 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")
+
+
 GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
 GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
 AC_SUBST(GLIB_GENMARSHAL)
diff --git a/src/Makefile.am b/src/Makefile.am
index 6d55447..7eb4f7a 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -17,7 +17,6 @@ VALAFLAGS = \
 	--pkg cheese-thumbview \
 	--pkg cheese-common
 
-
 AM_CPPFLAGS = \
 	-DBINDIR=\"$(bindir)\"			 	\
 	-DDATADIR=\"$(datadir)\"			\
@@ -56,3 +55,10 @@ noinst_HEADERS = \
 cheese_LDADD = \
 	$(top_builddir)/libcheese/libcheesecommon.la \
 	$(CHEESE_LIBS)
+
+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 1e09c49..777bf74 100644
--- a/src/cheese-window.vala
+++ b/src/cheese-window.vala
@@ -589,6 +589,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)
 		take_photo_action.sensitive = true;
   }
@@ -642,7 +643,9 @@ public class Cheese.MainWindow : Gtk.Window
     {
       if (!is_recording)
       {
-        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_image.set_from_stock (Gtk.STOCK_MEDIA_STOP, Gtk.IconSize.BUTTON);
         this.is_recording = true;
@@ -1066,4 +1069,35 @@ public class Cheese.MainWindow : Gtk.Window
     camera.state_changed.connect (camera_state_changed);
     camera.play ();
   }
+
+#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.VIDEO;
+    string title = is_photo ?
+      _("Photo taken using Cheese") : _("Video taken using Cheese");
+    string origin = 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
+  }
 }
