Zeitgeist / GNOME Activity Journal 1.0


GNOME Activity Journal has been ported from GTK2 to GTK3 in:


It uses Zeitgeist python library which has been ported from python2 to python3 in:


Few screenshots:

1. Multiview:

2. Thumbnail view

3. TImeline view

4. Search

5. About


How to run latest GNOME Activity Journal:

1. Per user local installation:

Install zeitgeist packages from your linux distribution, and perform the following steps.

$ git clone https://gitlab.gnome.org/crvi/gnome-activity-journal/
$ git clone https://gitlab.freedesktop.org/zeitgeist/zeitgeist/

Edit gnome-activity-journal/src/config.py





since zeitgeist-1.0.2 is based on python2, and zeitgeist-1.0.3 is based on python3. But zeitgeist-1.0.3 is not installed in the system yet.

Run the following 'zeitgeist' related commands:

$ cd zeitgeist
$ ln -s python zeitgeist
$ ./autogen.sh && make -C python

No 'make install' needed as we need 'make' to build some generated python code.

Run the following 'gnome-activity-journal' related commands:

$ cd gnome-activity-journal
$ ./setup.py build
$ glib-compile-schemas build/share/glib-2.0/schemas/
$ GSETTINGS_SCHEMA_DIR=$(pwd)/build/share/glib-2.0/schemas/  ./gnome-activity-journal

2. Global system installation - needs root access:

$ git clone https://gitlab.gnome.org/crvi/gnome-activity-journal/

Build and install zeitgeist from git ( which has 1.0.3 version now ). It is better to get patches from zeitgeist git and add it to your distribution spec file. I tried it for Debian ( git format-patch + updating debian/patches/series ). It took couple of minutes. So, should be straight forward. Build and install RPM or DEB file accordingly.

Run the following 'gnome-activity-journal' related commands:

$ cd gnome-activity-journal
$ ./setup.py build
# ./setup.py install --force --prefix=/usr
# glib-compile-schemas /usr/share/glib-2.0/schemas/
$ gnome-activity-journal


  • I’ve fixed core issues in zeitgeist python3 bindings and gnome-activity-journalfor most part.
  • Zeitgeist python3 test suite passes 100%. So that part is good.
  • gnome-activity-journal is not 100 % yet ( ~ 80 % )
  • I’m finding it difficult to spend more time on this work. I’ll try my best, but I would really like someone to take it forward to the next steps.

Next Steps:

  • Move to GNOME project group in gitlab.
  • port to meson if needed ( it is a small project with ~ 15 python files )
  • move from GTK3 style in code to style.css
  • replace pending deprecated function calls ( 90 % already complete )
  • address pending FixMe: in code
  • minor bug fixes and UI fixes ( Cairo rendering related )
  • more testing for accuracy of view results and search results
  • add more options in preferences which are now hard-coded constants in code.
  • port it to GTK4 also etc



Below are some excellent resources for folks who are interested in contributing to GNOME Activity Journal.

This is all that is required to address the core issues listed in “Next Steps” above. The key point is all the above resources are so good ( especially Cairo drawing ), that even a beginner can start developing custom GTK widgets within a day.

And most widgets in GNOME Activity Journal are custom widgets since it is a data presentation interface for the Zeitgeist daemon.


Hey, it’s really cool to see this stuff being brought up to date!

I had a quick go at getting this working, seems that Fedora doesn’t package the Python bindings for Zeitgeist so I didn’t quite get there. The instructions were clear though.

port to meson if needed ( it is a small project with ~ 15 python files )

I’d recommend doing this just for consistency with the rest of GNOME. See gnome-music as a model of how to use Meson for a GNOME+Python app.

1 Like

I’ve updated the steps with some missing instructions. Sorry about that.

zeitgiest-1.0.3 was released today and FC34 now has zeitgeist-1.0.3 with python3 package restored. That was fast :slight_smile:.


I’ve tested in FC rawhide to work fine.

Open gnome-activity-journal, and after that you can browse pictures / music / video ( all can be previewed in gnome-activity-journal )

Also, I’m pushing new fixes, so please do update crvi/gnome-activity-journal git local tree constantly.

I am yet to learn meson :grinning:.

You’re the meson expert ( your 2016 meson port of rhythmbox is still pending review :slight_smile: ). So, please do take the meson part if possible.

I’ve limited time, and I’m trying to fix as many core issues as possible here.

Would be great if you can take the lead of creating a project in GNOME group and the like, until someone wants to take it full time.


Just to be clear here.

I’ve ported the zeitgeist python package from py2 to py3, and gnome-activity-journal uses the py3 zeitgeist package, not the zeitgeist python GI bindings.

This was done for 3 reasons:

Reason 1:

Zeitgeist python3 package has a strong test suite guarding the python3 code. So, you get testing guarantee here.

me@sys:~/zeitgeist (master)$ test/dbus/run-all-tests.py

*** Testsuite is running using a private dbus bus
*** Configuration: {'DBUS_SESSION_BUS_ADDRESS': 'unix:abstract=/tmp/dbus-ZsZEpiEsvW,guid=37f6675e89ce90309fe32f1f5f88a574', 'DBUS_SESSION_BUS_PID': '31898', 'DBUS_SESSION_BUS_WINDOWID': '2097153', 'DISPLAY': ':29', 'pid.Xvfb': 31866}
testMonitorDeleteEvents (monitor-test.ZeitgeistMonitorTest) ... ok
testMonitorDeleteNonExistingEvent (monitor-test.ZeitgeistMonitorTest) ... ok
testMonitorInsertEvents (monitor-test.ZeitgeistMonitorTest) ... ok
testMonitorInsertEventsOutOfTimeRange (monitor-test.ZeitgeistMonitorTest) ... ok
testMonitorInsertEventsWithNegatedSubjectTemplate (monitor-test.ZeitgeistMonitorTest) ... ok
testMonitorInsertEventsWithSubjectTemplate (monitor-test.ZeitgeistMonitorTest) ... ok


testBlacklistUsingClientDBusInterface (blacklist-test.BlacklistTest)
Ensure that get_extension() from client.py method works correctly. ... ok
testClear (blacklist-test.BlacklistTest) ... ok
testSetOne (blacklist-test.BlacklistTest) ... ok
testGetHistogramData (histogram-test.HistogramTest) ... ok

Ran 156 tests in 170.620s


Reason 2:

With the py2 to py3 conversion of zeitgeist package completed, I just need to focus on the non-zeitgeist part ( GTK / Pango / GLib / Python2to3 ) in gnome-activity-journal. This was a huge relief. So, it was way faster to revive gnome-activity-journal that way.

Since, I’ve not touched any zeitgeist client API code in gnome-activity-journal, I don’t need to worry about the search results or view results, unless the existing test suite with 156 tests is buggy.

Reason 3:

Also, since zeitgeist library is written in Vala, the auto-generated documentation with no annotations, is not so impressive for devhelp. I had to look into the vala compiler generated code to identify issues.


Any one is free to choose between the python3 GI bindings -or- plain python3 zeitgeist package. Rhythmbox uses the python3 GI bindings and it works fine too. But, that was done when py3 zeitgeist port was unavailable.


I’m also rather short on time I’m afraid :slight_smile: As for moving the project inside the GNOME/ namespace, you’ll need to open an issue at https://gitlab.gnome.org/Infrastructure/GitLab

Great that the Fedora package is updated - hopefully it’ll soon arrive to Fedora 33 as well.

1 Like

Sure. You’re taking a lot of initiatives. That part was obvious. :slight_smile:

Will raise an issue, once I’m convinced that the quality is upto the mark. I’m currently pushing overwrites to the master, since it is my local tree. Will not have the luxury if it becomes more formal under GNOME group ( not sure about it though ).

Actually, you don’t need to wait for it.

The instructions in Per user local installation should work fine. It was missing a step, which I’ve updated now.


I got it working, indeed. In the instructions, I had to run ./autogen.sh rather than configure in the ./zeitgeist directory. Excellent work!

1 Like

I’ve updated the instructions.


This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.