First, I’ve read all the comments and discussion around the ‘net about my previous blog post where I threw some ideas around for phonon-gstreamer. I’ll follow that statement up with more interesting details later this week, but the important thing I want to say is: No, PulseAudio won’t be required, but I don’t support not using it. Really, I think PulseAudio should have first-class citizenship in KDE. Shoddy support in our applications slows the adoption of it and makes everyone look bad, including the PA devs.
Second, remember my post about creating a webbrowser with Zeitgeist as the history backend in four steps? This week, the Zeitgeist team is embarking on a small KDE deployment sprint. We’re taking a look at a bunch of applications and figuring out how to stuff (more) Zeitgeist into them:
- KWrite
- Dragon
- Juk
- Amarok
First, have a look at this here:
Thats Dragon with a new zeitgeist-powered “recently-played” view. Excluding a couple of buildsystem and other lines that convert the list from a KListWidget to a QListView, here’s the portion of the patch that converts it to use Zeitgeist:
RecentlyPlayedList::RecentlyPlayedList(QWidget *parent)
- :KListWidget(parent)
+ :QListView(parent)
{
- connect(this,SIGNAL(itemDoubleClicked(QListWidgetItem*)),this, SLOT(itemDoubleClicked(QListWidgetItem*)));
setAlternatingRowColors( true );
setSelectionMode(QAbstractItemView::SingleSelection);
-
- configGroup = new KConfigGroup( KGlobal::config(), "General" );
- loadEntries();
+ //configGroup = new KConfigGroup( KGlobal::config(), "General" );
+#ifdef HAVE_ZEITGEIST
+ m_model = new QZeitgeist::LogModel(this);
+ setModel(m_model);
+ QZeitgeist::DataModel::Event audioTemplate;
+ QZeitgeist::DataModel::Event videoTemplate;
+ QZeitgeist::DataModel::Subject audioSubjectTemplate;
+ QZeitgeist::DataModel::Subject videoSubjectTemplate;
+ audioSubjectTemplate.setInterpretation(QZeitgeist::Interpretation::Subject::NFOAudio);
+ videoSubjectTemplate.setInterpretation(QZeitgeist::Interpretation::Subject::NFOVideo);
+ audioTemplate.setSubjects(QZeitgeist::DataModel::SubjectList() << audioSubjectTemplate);
+ videoTemplate.setSubjects(QZeitgeist::DataModel::SubjectList() << videoSubjectTemplate); + m_model->setEventTemplates(QZeitgeist::DataModel::EventList() << audioTemplate << videoTemplate); + m_model->setResultType(QZeitgeist::Log::MostRecentSubjects);
+#endif
Yup, thats it. And thanks to the magic of QZeitgeist’s LogModel, it automatically updates while stuff happens. Seriously. I’m listening to some tracks in Amarok, and Dragon starts listing them. I’m actually blow away by how easy it is to add Zeitgeist to something, and I’m the guy maintaining QZeitgeist.
Why isn’t your application using Zeitgeist yet?


Please, stop pushing gnome technology to KDE.
What? How is this a GNOME technology, and how is pushing new technologies into KDE a bad thing?
Because it is the non-UI part of the former GNOME Zeitgeist, it is written in Vala, a language based on GObject & Friends (GLib) and advertised as “new programming language that aims to bring modern programming language features to GNOME developers”. In the same vein KDE could remove the remaining GUI parts from kdelibs (Frameworks?), rename it to klibs, and advertise it as desktop-agnostic library.
So because it is written in Vala, *thats* the reason to not use it?
Zeitgeist *never* had a UI component. Ever. There are certainly clients that can query Zeitgeist to show events, but Zeitgeist itself is a desktop-agnostic daemon. You can’t host UI projects on freedesktop.org.
“S bcs t s wrttn n Vl, *thts* th rsn t nt s t?”
Ys.
[Where are the vowels?]You obviously have no clue on how desktop collaboration works. This idea that desktops cannot use the technologies of other desktops simply because it wasn’t invented here is downright idiotic and poisonous to collaborative efforts. For years, there has been very acidic communications between the two camps. Recently, everyone has began to put aside their differences and work together. You obviously intend on undoing that work with no real benefit. Please take your insane ideals elsewhere.
Lt’s d n xprmnt:
Wrt tmrrw n plnt gnm: “Mr Npmk n Mr Plcs!”
wld lk t s ths cmmnts n “cprtn”.
[Where are the vowels?]BECUSAE GNOME IS THE SUKC AND IF YUO USE IT WE GET SUKC ALL OVRE KDE.
Flawless logic.
At least you could drop such trolls attitude and stupid article’s title. Stop saying bull about cooperation while gnome developers don’t know what this means.
@Coco: Zeitgeist uses Vala, but it doesn’t depend on GNOME. The reverse is true. Zeitgeist integrates with Nepomuk, so it’s something we DO WANT in KDE. Please, stop writing nonsense like that; we all want more cooperation between GNOME and KDE.
@Trever: What I’d really like to see is:
- A GNOME Zeitgeist browser, like the one you have in GNOME, for KDE. There was a “Kronos” experiment, but, please, make something like that happen! Just tried Unity, and that was one thing I really loved. I want it in KDE!
- KRunner. How KRunner can make better use of Zeitgeist? You are the one.
While i like the Zeitgeist idea, i dislike the dependency on VALA. That simply has a Gnome smile. Imho it would be better is Zeitgeist was written in a desktop neutral language (c or c++) even though VALA is – strictly spoken – desktop neutral. It also adds annoyance for non zeitgeist (like KDE) devs that might want to make a change and find themselves in the situation where the current C++ development tools don’t work because it’s a different language..
Besides that, i just like zeitgeist and can’t wait to see more of it in other KDE places. Next up: dolphin and kate?
One slight note of concern though. Logging everything is – potential – a good thing, but it could also be a real strain on the hard drive/ssd when you log too much and could potentially slow things down. For example, if you log all of Dolphin’s actions then it will certainly end up being a gigantic log file and will very likely give a noticeable performance impact on Dolphin. It’s just a concern i have, nothing else at this moment. But please just be careful with logging too much.
Another thing, i’m guessing the now playing stuff in KDE (perhaps gnome as well) can in the future be done through zeitgeist?
Yet another thing. Can zeitgeist do revisions and deltas? For example, can zeitgeist store edits you make in a file (kwrite) where a save (ctrl + s) is saving the file and saving the current state as a revision in zeitgeist? Then zeitgeist becomes very interesting to support something like mac has with revisions for file edits. If zeitgeist doesn’t support this, is it something that will be added in the future?
Cheers,
Mark
the above was for Trever.. Sorry Alejandro.
We only log events that make sense to log.
It doesn’t really make sense to log all of Dolphin’s events. Really, do you care that you entered a bunch of folders while searching for something? Logging the fact that you were searching for something is very counter-productive. Zeitgeist is meant to help you find stuff, not help you find where you were looking for stuff
The “Now Playing” stuff is actually handled by MPRIS2. Thats unrelated to Zeitgeist, and is a DBUS interface specification: http://specifications.freedesktop.org/mpris-spec/latest/
Eike Hein implemented it into Dragon recently, but I can’t seem to find his blog post off hand.
Finally, Zeitgeist only stores events, not actions. If you edit a file it makes a note that “you changed this file”, but it doesn’t save the contents at all. The database could easily baloon in size. Its a neat idea, but won’t be used in Zeitgeist. Perhaps some other time-machine style system could be used to listen to zeitgeist and act when new modification events are created. Honestly though that sounds like something that should go directly into KIO.
Hey Mark,
Thanks for the nice comment.
I think it is to late to rewrite Zeitgeist. It is ALOT of code. You can always use the C code produced by Vala though.
As for privacy and logging to much, Zeitgeist allows you to enable/disable logging and blacklist mimetypes/domains/folders/more… to not be logged
We are working hard on scalalibty and the results are very good till now.
We intend to push for Kate integration next in form of a Dashboard to try to solve the empy slate issue.
I love the idea of revisioning and i think this is something doable via an extension. We should look into that.
Cheers
Seif
Seif and Trevor,
Thank you for the responses. As for revisions, one says it could be done through KIO, one says it could be done through a zeitgeist plugin. Both are interesting principles to be honest
I wonder how this would work when KIO would be used. Since you’d need a database like backend and as far as i know there are no kio parts depending on a database. On the other hand we have nepomuk which might be a better candidate for revision storing even though that doesn’t seem like a perfect fit.
Dit i just found something that needs a database but doesn’t fit in either KIO, Nepomuk or Zeitgeist? And needs another new to be made library: “Timetravel” to be tailored specifically at storing and resolving revisions? Then KIO could interface with “Timetravel” through another (yet to be made) kio plugin “kio_timetravel” … oke, i’m dumping my brain a little too much in here
But what do you guys think about this? Is this the suggested way to get a feature like that working?
I might be wrong, but I believe btrfs supports the kind of snapshotting you’re looking for.
But yeah, your ideas sound great!
I am not sure what kind of problem Mark does associate with Vala, but I think for C++ based programmers such as KDE developers, it is actually easier to use than “pure GObject” (using just C).
Vala *is* C. valac merely compiles to C source.
Did anyone measure if Zeitgeist + Nepomuk are resource heavy? Many people feel Nepomuk is stealing their CPU power and RAM. I wonder if Nepomuk and Zeitgeist party won’t make things even worse? If we put Akonadi into the mix will my desktop start crawl?
@Alejandro Nova
“so it’s something we DO WANT in KDE”
Is something YOU want.
“we all want more cooperation between GNOME and KDE”
Show me KDE technology adapted by gnome. You want to bet, that Nepomuk will never be welcome in gnome?
vala/gnome/gtk in KDE. NO!
Fedora dev pushing broken technology (pa, zeitgeist) to KDE. NO!
this shows that you’ve absolutely no idea about these technologies. the only thing that vala depends on is glib -> so no gnome, gtk dependiences. and a lot of stuff that is used by kde is already using glib too, so where’s the problem?
please just troll off!
< hrf="http://wm161.nt/2012/05/28/mr-ztgst-n-mr-plcs/#cmmnt-6865" rl="nfllw">http://wm161.nt/2012/05/28/mr-ztgst-n-mr-plcs/#cmmnt-6865
Pls stp gnm zlts.
[Where are the vowels?]Since the only really semantic thing in the GNOME desktop is Zeitgeist, and since Zeitgeist is fully compatible with Nepomuk, your point is moot. Also, as someone said before, even Qt can be compiled with Glib bindings.
Also, what @irrlicht says is *exactly* what KDE needs to do, and is *exactly* what KDE is doing. His “klib” will become a reality in KDE Frameworks 5. And I would love to see GNOME apps using KDE bindings.
f nly smntc thng n gnm s Ztgst, why thy jst dpt Npmk? Myb knd ls? N? Cprtn n nly _N_ wy s n cprtn.
[Where are the vowels?]What about a facebook-like time line integrating zeitgeist and nepomuk data? There is a timeline:/ kio already but it would be so much more appealing and useful if it had some visual improvements.
We are on it. Just be patient
Cool! Thanks for working on this. You guys rock!
If PulseAudio is required, a majority of KDE users will not use Zeitgeist. It’s already on shaky ground with the use of Vala…
What does PulseAudio have to do with Zeitgeist?
And what is wrong with Vala?
“nw prgrmmng lngg tht ms t brng mdrn prgrmmng lngg ftrs t GNM dvlprs”
[Where are the vowels?]Mr Npmk/knd n Mr Plcs!
[Where are the vowels?]You realize that Zeitgeist and Nepomuk are different things and are meant to be used in concert, right?
“nd r mnt t b sd n cncrt, rght?”
Thn whn gnm wll b sng Npmk? Cncrt nly n KD,?
[Where are the vowels?]trolling aside, does it make sense to show Amarok tracks in Dragon? is this meant to just be a technical proof-of-concept?
Dragon is meant to be good at one-off audio playback and videos, Amarok is for listening all day to music, I don’t really see much overlap.
It might not make sense to show “stuff you’ve played in amarok” in dragon, but it does make sense to show “all the music and video you’ve played anywhere”. That list is supposed to be a recently-played list, so why not include everything?
I do have some further UI refinements that I actually plan on adding to libqzeitgeist. One such widget is a LogView, that contains some filtering widgets to drill down and show stuff such as “only audio”, “only video”, “only stuff from this application”, etc. I’m working on some mockups at the moment that I will implement this week.
Well if I want to continue watching an anime, (my use case was always to see which episode I played last) I don’t want to see a list of the 50 songs I played in the meantime in Amarok. It’s not “supposed” to be a recently played list, it’s meant to simply be useful.
With filters it might be OK, but I still wonder if it doesn’t vibe with the KISS goal of Dragon Player in general.
I know that dragon is meant to be 100% KISS, so I’m actually using it as a test bed to implement some common zeitgeist UI elements. I want it to be unbelievably simple to find what you were last doing in dragon. If I can’t open up dragon and resume my last anime within 5 seconds, I will have failed.
I wholly understand your concerns, and I’m working to make Dragon super slick and exceedingly simple
“If I can’t open up dragon and resume my last anime within 5 seconds, I will have failed.”
Smplayer the same within 3 seconds and without Zeitgeist.
Challenge accepted.
Dear Trolls, here’s a brief history lesson for you. A long time ago the Nepomuk devs and the Zeitgeist devs had some great ideas for making the desktop smarter and sat down together to make a plan on how to work together to achieve them. The Nepomuk guys were interested in Semantics but not Activity, the Zeitgeist guys were interested in Activity but not Semantics, however both areas could benefit greatly from working in unison, hence the grand plan to collaborate. Then they bought the plan to the core KDE devs who saw it was good and gave it the thumbs up too. And since then the plan has been working very well and the Zeitgeist/Nepomuk collaboration is *the* template I hold up as the way the G and K worlds should work together on common infrastructure. This isn’t Gnome forcing tech onto KDE or KDE forcing tech onto Gnome, this is genuine starting from scratch collaboration with two teams workign in harmony. If you want something to criticize, this is not it.
Now, I would love to see that happen in a lot more places. It is sad that Gnome is a lot more resistant to adopting Qt/KDE based tech then we are to theirs. It is unfortunate they tend to implement something then ask us what we think, but we’ve been guilty of that too. They have some technical reasons that Qt5 should remove, but there are cultural issues and an anti-C++ attitude that is as pointless as your anti-Vala attitude. Reality is they also have far more paid developers with a lot more time to work on infrastructure stuff than we do, and they naturally prefer the tools they know and we just have to live with that.
However if we want the resistance to Qt-based infrastructure to change we have to make efforts like Nepomuk/Zeitgeist succeed, prove that the technical barriers don’t exist, and stop poisoning the atmosphere around any attempts to collaborate, such as your pointless and clueless trolling.
Very well said!
Whn w s yr pst n plnt gnm “nt-nt-kd/c++ trllng”?
[Where are the vowels?]I’d post on planet GNOME if I was syndicated there.
Then again:
Are there any signs that Gnome devs adopting Nepomuk to work with Zeitgeist? How big a chance is that they start “Nepomuk” from scratch instead?
1) Not yet, the semantic desktop isn’t a huge priority.
2) Zilch.
Actually, as far as I understand, GNOME’s semantic engine/storage Tracker now also uses the ontologies developed by the NEPOMUK research project.
Now that Zeitgeist is getting futher integration in KDE I think that it’s very important to have proper Privacy KCM with support for blacklisting and “incognito” mode etc. Is anything like that planned?
Then how KAMD (KDE Activity Manager Daemon) in KF5 will fit in to all of this? It would be cool to have activity aware history.
There is support in Zeitgeist for ‘blacklisting’ certain things, such as matching on URI patterns, ignoring specific events and applications, etc. There currently isn’t any kind of UI for it, though an incognito mode is certainly a good idea we haven’t thought of yet.
So while this isn’t something that I personally want or think I will use, I suspect that no KDE developer actually has any issues what so ever about Zeitgeist. Vala is fast, has very little dependencies.
As a user, I would hope that this would be entirely optional and used to enhance the experience for those that want it.
I highly suggest you try using it for a while before building your own system without it. I have a *lot* of files in a ton of different places. Remembering when I saw something is easier for me than remembering where I saw it.