Between Linux and Anime

Kind of like Schrodinger's Cat

Tag: Dev (Page 1 of 2)

Nextcloud Plugin for QuickShare

So after a long hiatus I chose the Plasma QuickShare applet (which is sort of the Plasma5 replacement for the old Pastebin Plasmoid) as my point of re-entry into KDE code work. There was after all a deal of itches there I wanted scratched. It’s been quite a bit of fun figuring out the various interesting frameworks QuickShare is connected to at the backend. Anyways, some days ago I got a rudimentary Nextcloud plugin past review and pushed it, which should mean it’ll soon be coming to a 5.10-powered desktop near you :)

  • Let’s you upload files/text snippets/clipboard data onto your Nextcloud directly from your Plasma Desktop!
  • Uploads to the root folder by default “/”, but it’s possible to specify another folder by typing.
  • Supports all types of files/contents that the QuickShare applet currently supports, though raw clipboard data (like image data) don’t work too well because it doesn’t get the right file extension on server.
  • Automatically appends numbers to the filename to avoid overwriting an identically named file in the target location

It uses the KAccounts framework so you’ll need to create an ‘owncloud’ account in the “Online Accounts” settings module in order to use it (you can click the button on the applet to open the settings module). So far it’s been tested to work with a Nextcloud 11 instance, though it’s mostly WebDAV so it should work for previous versions as well.

Uploaded items should be private by default for now as it does not create shares out of them. This is probably what I’ll look into working on next.

If you’re not familiar with QuickShare, it’s a Plasma Applet that sits on your desktop and lets you share/move a file, or multiple files, or arbitrary clipboard contents, to various places (eg Pastebin, your mobile device via KDE Connect, Imgur, Youtube – and now Nextcloud!). You could either drag and drop the items you want shared onto the applet, or you could copy and paste.

Apart from fixing some crash situations and HiDPI hijinks with the applet, I also improved QuickShare’s keyboard navigation support, so it should be overall more friendly come 5.10. Notably, the keyboard shortcut setting actually does activate the plasmoid now, and the plugin list is now navigable with keyboard arrow keys.

To share a file from Dolphin, say, it is now possible to, with the file selected on Dolphin, ctrl+c, hit QuickShare’s keyboard shortcut binding to show the share plugin list, choose one with the keyboard arrow keys, and select by hitting enter.

1486
Rate this post
Thanks!
An error occurred!

Anime and the Nepomuk Metadata Extractor

Here’s a long-procrastinated update on my endeavors re: Nepomuk and Anime, first introduced here. I mentioned then that the way forward would be to create a plugin-based framework so one could fetch anime metadata from different online sources. Well, as it turned out, I found out that Joerg’s Nepomuk Metadata Extractor can already do that, so I scurried over and grabbed the sources and did my subsequent work on top of Joerg’s program. The anime use-case is now in a fairly workable state. Basically, what the program does is it lets you manually or automatically source for meta information (series title, episode number, synopsis etc) from online sources for anime video files you have on your disk, and write all that to file as Nepomuk metadata.

Read More

1247
Rate this post
Thanks!
An error occurred!

Associating Firefox Profiles with KDE Activities

As a heavy user of the Activities feature, I’ve always had two major itches. One was addressed when KDE 4.9 finally brought the ability to set activity window rules. The other was how only some applications had the necessary (XSMP) compliance to work properly with activities and its session restoring – in particular, a lack of compliant web browsers.

Read More

1239
Rate this post
Thanks!
An error occurred!

Nepomuk and Anime, my new pet project

Some time ago I stumbled upon a cool little piece of code that Sebastian Trueg wrote, which sourced an online tv database (the TVDB) for meta information about video files of TV series you had on your disk, figuring out what the series, season and episode was from the filename, and storing that info in the Nepomuk semantic framework. That happened to coincide with some of the ideas I had on how a semantic desktop should work with regards to media consumption, and specifically for watching and dealing with Anime. Anyway I recently cleared myself some hobby-hacking time, rolled up my sleeve, set Trueg’s little program up on my box, and tinkered a little with the filename analyzer. Result of which is that the program now also recognizes common anime rip filename formats, and since the TVDB also contains a pretty comprehensive list of anime, we get the following:

Pretty sweet :) In fact, the way Trueg wrote it, you don’t even need to go through the context menu when you add a new file, Nepomuk/Strigi automatically attempts to fetch the metadata when it indexes your new file. So what is the point of this? Point number one of course is that it’s pretty cool! Point number two is that all these metadata are stored in Nepomuk, which in turn makes these data available to any other program running on the desktop that recognizes and queries it. What kind of programs would want to do so? In short, plenty. Some ideas off the top of my head would include a media player that knows what episode of what series it is playing, and can automatically offer to play the next episode, or list the other episodes of the series that you have. Or a series browser (plasmoid?) that let’s you browse your videos by series instead of by folder. Your imagination is the limit. I would myself like to try to make some of those happen, but that’ll be getting too far ahead for the time being.

This program in it’s current state has a glaring problem in the context of anime: the TVDB web api (through which the program searches for the series info) does not support aliases, and so you need to be searching for the precise name of the series as stored on TVDB or you’ll turn up blank. And with anime, series names can vary pretty wildly. For example, querying “Dantalian no Shoka” doesn’t work because the series is stored in TVDB as “The Mystic Archives of Dantalian”. It’s an annoyingly serious shortcoming – half of my files don’t work thanks to this.

So fixing this will be what I’ll work on next. TVDB says they’ll support aliases in their new site, but there’s no release date of that in sight. A simple solution would be to query a different site, like MAL, which appears to have a decent API. In fact, new web sources and APIs should be pluggable, so that’ll be task number one, separating the web-sourcing part into a plugin infrastructure.

I do have some vague plans on the future of this thing, but let’s not count our chickens too much. We’ll get there when we get there. In the meantime if you want to play, you can clone my git repo and grab the source code:

git clone git://git.code.sf.net/p/nepomukoracle/code nepomukoracle-code

In order to build this you’ll also need Trueg’s libTVDb and Shared Desktop Ontologies 0.9.0 and onwards – look for that one in your repos.

1220
Rate this post
Thanks!
An error occurred!

Update on the ‘otaku’ tag, and stuff

You may (or may not) have noticed that my ‘otaku’ tag has been looking somewhat forlorn and abandoned for awhile now. And this isn’t even the first time. Unfortunately when things start getting hectic, recreational activities that require a positive input of effort and concentration, like anime blogging and KDE hacking, tend to be the first things shoved into the backseat.

I’ve recently settled into a job as a Research Assistant at my university where I’m continuing some of the work I’ve been doing during my final year project while contemplating on whether or not I’d like to do grad school. The work influx on assuming duty has been quite torrential, thus the recent general lack of blog posts. However, I think I’m starting to settle into the rhythm now, somewhat, and I’m currently in the process of working my recreational activities back into my life. I’ve rebuilt KDE from the new git repositories and have started doing some little bit of bug fixing (just pushed a patch for bug 209962 couple of days ago), and I’m now looking into once again penning posts to my lonely otaku tag.

Along those lines, I’ve decided to make some changes to my anime-blogging routine. I’ve decided that I’ll forget about making an effort to spotlight the current broadcasting season, since my attempts at this in the past has been mediocre at best and.. well really just all round abysmal. I’ve decided instead to be time-agnostic with the anime I decide to write about, so this lets me worry less about thinking up things to say about the shows that everyone else is already talking about anyways and actually select blogging material in a more meritocratic way. Hopefully then I’ll actually, finally, start to thin down the list of really-great shows on my to-blog that I’ve been perma-procrastinating on.

Of course, this doesn’t mean I’ll never say anything about the current season. But I’ll only say something if I really have something I want to say. So I’ll in short be attempting to move towards a more editorial blogging style. In all likelihood, a side-effect of this would be that I post less frequently than I used to, but with hopefully more substance in each post.

Regarding the current anime season, I’m not actually following very closely, and I’m not actually liking too much of the available repertoire. So I probably won’t be saying much about it. I plan instead to get started on blogging this 7-part animated film series that I’ve wanted to write about for some while now. It’s called “Kara no Kyoukai – the Garden of Sinners”. So there’s a heads-up for you in case you haven’t watched it. Watch it. This stuff is A+ material :)

1062
Rate this post
Thanks!
An error occurred!

Hiding Kate Session Applet Items

I put my Kate Session Applets at the corners of my programming-related activities, and they are usually little. So it always annoyed me that the three default items that I cared little about were at the top and had to stay at the top, forcing me to scroll to load the kate sessions I’m actually regularly interested in.

Well, I recently scratched that itch:

All items in the applet, including the default three, can now be hidden by unchecking it in the new configuration interface. And what’s more, different applet instances can hide and show different items too.

926
Rate this post
Thanks!
An error occurred!

GSoC wrapup for Plasma Mobile System Tray

I know the pencils down was a week (plus?) ago, but I did a fresh upgrade of my system (to OpenSUSE 11.3, then to KDE SC 4.5.0) and then realized to my horror that there was obviously no way I could make a screencast or even take screenshots for this post until I’ve rebuilt trunk and plasma-mobile. So I frantically spent the past week doing exactly that, and now without further ado, the screencast:


OGG here

My trunk kdebase is still a little screwy at the moment, in case you noticed the extreme ugliness of that context menu there. Also, somehow the sizing and position of the icons have gone a little off between the end of GSoC and now (Damn).

Anyway as you can see, nothing much has changed in the high-level ideas of the system tray I described in my previous post. Most of the work I put in since the mid-term had been in the way of improving the implementation strategy – cutting most of the harder ties between the system tray and the mobile shell, and getting the system tray to update its behavior based on loose events like resizing instead of specific events like Qt signals. All this of course to fit into the Plasma philosophy of creating loosely coupled independent parts – so that for instance we could put in a replacement tray without needing to change the shell code – since the shell only knows it is given a containment that it needs to resize – and we could also easily put my systray elsewhere as long as it knows to resize the tray the right way.

There is also of course noticeable change in the look and feel. The tray containment paints its own background now, and the icons now resize along with the containment instead of disappearing and reappearing at the ends of the animation – so that we don’t need extra signals to indicate when those ends occur. I’ve also thrown a couple of “fake” plasmoids in – a fake battery indicator and a fake service signal indicator – since both of these things apparently require hardware-specific treatment. Unlike the desktop system tray, the mobile version only supports the plasmoid and dbus system tray protocols – xembed isn’t supported. Iirc those aren’t resizable anyway :)

It’s been fun. I have always loved Plasma for the sheer sensibility and elegance of its software architecture, and its really nice to be given a chance to gain a deeper understanding of it and experience it for myself. It was also great to be forced to crunch through a bunch of documentation for all kinds of QGraphicsObject derivatives – and have a brief tantalizing tango with QML while I was at it. It was a great GSoC, and I’d like to thank my mentor Alexis and the ever helpful (some say omnipotent) Marco for making this possible for me.

Oh, and I plan to be hanging around of course. I forsee my school final year project crashing down on me tsunami-style very soon, but I still hope to get a couple of things done before 4.6 gets out. Will blog about those when the time comes ;)

892
Rate this post
Thanks!
An error occurred!

GSoC Mobile Systemtray Update

Had been holding off posting on this until I have something reasonably pretty to show for it, but damn, said pretty thing sure took its time. Anyway, GSoC mid-term evaluations just ended, and I finally managed to hack up something that looks somewhat presentable. Here’s a short screencast of it.


EDIT: Oops forgot the ogg here

Some key ideas of the current implementation:

  • The tray lives in it’s own containment separate from the main activities/launchers.
  • There is a passive “shrunken” form and an active “enlarged” form.
  • The passive form is not interactive and click/tapping it simply switches it to the active form (with a simple QML animation thrown in). It shows a number of defined “always-show” applets and a limited number of the other applets, prioritized by recent activity.
  • The active form shows all available applets in large, finger-friendly sizes, and is scrollable in case it doesn’t fit the screen (hello Plasma::ScrollWidget!). It behaves more or less like one would expect a systray to behave.

Not a lot to show for one month plus worth of development I admit :( This is actually my third implementation attempt. In the first attempt there were two “trays” – one small and one large, and taking hints from the comic plasmoid, I put the large one on a full-screen transparent QGraphicsView which covers the small one when activated – but this isn’t nice since it, in notmart’s words, relies on compositing being available to not look like crap. So the second implementation gets rid of the QGraphicsView and instead positions the large tray relative to the parent containment, but then there was another problem: we can only have one set of plasmoid applets running to save memory, and there was no way to display one set of applets in two trays. So I gutted the thing again and did this third attempt where there is only one tray which shrinks and expands accordingly… and that’s what you see in the screencast :)

This is far from finished of course – if nothing else that “cancel” button probably doesn’t quite belong there :P Iirc I should also be thinking about doing notifications for my GSoC, so there’s plenty more to do for the rest of the GSoC period. Fun stuff. Alright, think it’s time I wrapped this post up and go clean up my code and commit it – and pray I don’t get torn to bits by darktears and notmart for some terrible mistake or design flaw I made :)

871
Rate this post
Thanks!
An error occurred!

Missing Soprano/Node when building Kdelibs

Here’s me making another quick-fix-note after another hair-imperiling battle updating trunk after a month or two of inactivity.

If while building Kdelibs you find yourself confronted with the inexplicable compile-time error complaining “Soprano/Node: No such file or directory”, you probably manually checked out Soprano from Kdesupport and did the usual “cmakekde” like I did. This (apparently) causes the problem, though it beats me why. I built Soprano that way since a good while ago and never had problems until now.

Anyway, try building Soprano like this instead:

cd path/to/Soprano
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$QTDIR
make
make install

Worked for me. After days of tinkering, digging around the installation and source directories, and generally getting pissed off, I finally have the essential components of trunk updated and built again!

717
Rate this post
Thanks!
An error occurred!

Loser no more!

And here’s a dramatic turnaround from the solemn nature of my previous post. *Ahem* excuse me while I get this one out of my system…

AAAWHHH YEEEEEEEEEESSSSSSSSSSSSSSSSHHHHHHHHHH!!!!!!!!!!!!!!!!!!!!!!!!!!

My Summer of Code application this year made it! Exultation! All the more sweet after the vivid bitterness of last year’s failure. So I shall be working this summer towards the conceptualization and creation of a sensible system tray for Plasma Mobile, and the excitement I feel, at being allowed the chance of contributing to the ongoing work to bring KDE to the mobile space, could hardly be overstated. Needless to say, this will be an awesome summer for me :)

Another cool fact: all the (other two) Plasmaters also landed their respective projects this year. Congratz guys! (Yes I spontaneously coined the term “Plasmaters”. I think I like it though)

And a final not so cool fact: Plasmate has been piling dusts of neglect ever since school started going crazy on me. Apparently the others have been busy too – I just went and did an update but it didn’t pull any changes. So much for a beta in April. I guess Plasmate’s gonna need a little summer love too alongside my cool GSoC project :)

710
Rate this post
Thanks!
An error occurred!

Page 1 of 2

Powered by WordPress & Theme by Anders Norén