Archive for the ‘Software’ Category

Epiphany-Nautilus integration

Friday, June 10th, 2005

Here is my latest little project, integrate epiphany downloads with nautilus. First a mockup.

Nautilus mockup

This shows the normal nautilus spatial window, but in the corner there is a little addition, a download status bar indicating how many files are being downloaded in that particular folder, as well as the global download progress.

Now, the actual screenshot of a live download in nautilus, the result is the same, but the display needs to be cleaned (showing human-readable file sizes, times, etc)

Nautilus integration

So, the concept is quite simple, forward epiphany download events to nautilus via dbus, since gnome-vfs can’t handle downloads from epiphany at the moment. In nautilus, listen for dbus events and store the various downloads. The nautilus windows that are showing a folder where a download is in progress are notified, and show the progress.

Next step is to show files being downloaded with a special emblem, indicating that they are being downloaded and showing the progress of that file, for example using a pie emblem that fills up, or a vertical bar that grows to 100%. A context menu for these files would allow to pause/cancel/resume/abort the transfer.

The final goal is to use nautilus for the actual download, and epiphany would just forward the url to download, but in the meantime this would provide a working UI. When the change is ready, just change the backend, the UI stays the same.

Now i would like to hear you comments about that..

Update: after reading the first comments, i think i must go a bit further in my explanation. This thing does not happen when you drag and drop from epiphany to nautilus, but when you click on a link in epiphany and choose to download the file. Instead of having the current download manager pop-up, the nautilus window would appear, with that ui.

This has at least 2 avantages over the current system: No pop-ups (well the nautilus folder would appear, but this is an option i don’t know if it’s better to not open it..), the download you view will be related to the folder that you are looking at. Maybe the same UI can then be used for regular file move/copy operations.

Epiphany Auto-Reload extension

Friday, May 27th, 2005

A little new extension between two exams to study 🙂

This one reloads a tab periodically, for the moment every 60 seconds, but it already has the code to adapt itself to page changes:

  • When the page has changed since the last update, reload the page in half the time as before
  • When the page hasn’t changed, reload the page in last reload time + 60 seconds

This isn’t very “smart” but still somehow adapts itself into the page reload rate.

The real problem is to detect when the page changes, there is no easy way, so it will wait a bit.

Epiphany RSS extension

Sunday, April 17th, 2005

Well, another update

This one allows to directly subscribe to a feed when right clicking on it’s link in the page (feature asked by “nud” on IRC)

Beside that I started looking at the epiphany-mono package, to allow mono extensions be easily written for epiphany, the binding is quite complete, but very buggy at the moment, so i’ll help fixing that eventually.

It can be fetched from the gnome cvs:
cvs -d :pserver:anonymous@anoncvs.gnome.org:/cvs/gnome co epiphany-mono

Then the extension itself is something like:

using System;
using Gtk;
using Epiphany;

namespace EphyRssExtension {
	public class RssExtension : GLib.Object, EphyExtension {
		private Hashtable feeds = new Hashtable();

		public RssExtension () : base (IntPtr.Zero) {
			Console.WriteLine ("New EphyRss Extension");
		}

		public void AttachWindow (EphyWindow window)
		{
		    Console.WriteLine ("EphyWindow Attached");
		    //Do anything you like with he window
		}

		public void DetachWindow (EphyWindow window)
		{
			Console.WriteLine ("EphyWindow Detached");
		       //Do anything you like when the window is discarded
		}

		public void DetachTab (EphyWindow window, EphyTab tab)
		{
		    System.Console.WriteLine ("Detach tab");

		    feeds.Remove(tab.Embed);
		    tab.Embed.GeFeedLink -= OnFeedReceived;
		    tab.Embed.GeContentChange -= OnContentChange;
		}

		public void AttachTab (EphyWindow window, EphyTab tab)
		{
		    System.Console.WriteLine ("Attach tab: {0}", tab.DocumentType );

		    feeds[tab.Embed] = new ArrayList();
		    tab.Embed.GeFeedLink += OnFeedReceived;
		    tab.Embed.GeContentChange += OnContentChange;
		}

		private void OnFeedReceived (object o, GeFeedLinkArgs args)
		{
			Console.WriteLine ("Feed {0}: '{1}' @ {2}",
                                                args.Type, args.Title, args.Address);
			IList l = feeds[o] as IList;

			Feed f = new Feed();
			f.Title = args.Title;
			f.Type = args.Type;
			f.Address = args.Address;

			l.Add(f);
		}

		private void OnContentChange  (object obj, EventArgs args)
		{
			(feeds[obj] as IList).Clear ();
		}

		private struct Feed {
			public string Title;
			public string Type;
			public string Address;
		}
	}
}

Which does pretty much nothing except that it stores in a hashtable the feeds corresponding to each opened tabs. It requires now little effort to make a nice gtk UI, like a dialog or integrating menu items or statusbar icons in epiphany via the GtkUiManager.

Tomboy reminder plugin

Monday, April 11th, 2005

This plugin seems to match the needs of many people ad i always get mails from happy users suggesting things or giving some code.

I released the 0.5 version, which adds time handling !

So you can write somthing like
! 23 april at 3pm
or
! 11 avril a 23:30

Very useful 😉

Now it’s time to study some mozart/oz for the university..

Epiphany rss-extension

Monday, April 11th, 2005

The extension finally made it into cvs, you can get it by getting a fresh checkout of the epiphany-extensions module on gnome cvs servers.

Last night I also added a context menu on the list of feeds to copy the feed address in clipboard, and allwed to drage the feed in any text entry to get the url too.

Beside that i made a little extension called “file-watch” to will reload a page, if this is a local page and it is modifed, very practical if you develop web-pages locally, just save it in your editor, and epiphany will refredh the view automatically !

Available here
This might well be transformed in the core epiphany package instead of an extension.

Muine Random play

Saturday, April 9th, 2005

I love muine !
When I want to listen to some good music, I fire up muine, then click on the Add Album button. Now what album to choose ? Every time it’s the same thing I just can’t choose an album and play it. I decided to fix that by adding a Random button that will just select and queue for me a random album !

What a pleasure to just let the random magic do its work.

Here is what it looks like
Muine queue random button
Click on random, a random album/song is queued in the playlist and the window stays open so you can click two or three times to have two or three random albums/songs queued.

The patch on the gnome bugzilla

Epiphany hacking

Wednesday, April 6th, 2005

These days I have been hacking on an epiphany extension poetically called “rss”.
It allows to retreive feeds in any page, and register these feeds in your favorite feed reader (so it’s not a firefox-like handling of rss feeds) !

All this can be accomplished using dbus, patching popular feed readers such as straw, liferea or blam (i did that, the patches can be found in their respective bugzillas). I had to patch epiphany and epiphany-extensions, so it is quite bleeding-edge to test.

Here is a screenshot of the thing:
mozilla.org feeds
Mozilla.org feeds, notice the statusbar icons..

a random blog feeds
A random blog feeds, notice that noth atom AND rss are selected, by default rss are selected before atom ones.

The feeds are selected “intelligently” so normally blogs that have atom/rss versions only have one of the two selected, while sites providing more feeds are selected entirely.

To signal that feeds are present, a little icon appears in the status bar, and a menu entry appears to make the dialog appear.

More on beagle

Saturday, February 12th, 2005

After posting the other day patch, and a little discussion on the beagle irc channel, I added support to use multiple values for a single property in beagle. That means in my particular case, the ability to add several artists with the keyword artist and also for any other thing like that. I know that this feature is not very widely used, especially in music files, but the possibility exists, and should be used 🙂

That also means introducing a way to display all these infos in the Best tiles, so I added a special statement in the tiles source html tht allows to build values in an “iterative” fashion.

More info on this on the beagle bugzilla

Entagged ported to c-sharp

Tuesday, February 8th, 2005

I finally managed to port my entagged java library to read/write tags in audio files to c-sharp (mono and .net).

For the moment only the reading operations are supported but writing is on its way. No official releases yet, but already in the sourceforge cvs with module entagged-sharp (see SF.net page about it). An official release will happen with next entagged release, maybe this month.

I also sent the lib to the beagle project, to replace the old version of it, it should be accepted soon, yay !