It’d be cool if Linux had Apple’s Dashboard. For those of you who don’t know about it, Dashboard allows Mac OS X users to build little applications using nothing more than HTML, CSS, and JavaScript. That’s very neat.
(Sidebar: For those of you saying “what about gdesklets!”, let me just say: no. The whole reason that Dashboard is good is that it lets ordinary people who know about the web build widgets. Having to use some odd XML dialect means that it’s like real programming. That’s why there are more Dashboard widgets than gdesklets, even though gdesklets has been around for ages. End sidebar.)
I started to have a look at how difficult it would be to implement this on Linux, using Mozilla’s Gecko as the underlying web library. (I could have done it with KHTML, I suppose, and that would have been more likely to match with Apple’s WebKit since WebKit is a fork. I didn’t, though, because I understand Mozilla and Gtk much, much better than I understand either KHTML or Qt/KDE. I’d love to see a KHTML version.) The theory was that it should use existing Dashboard widgets, giving new users a huge library of stuff that already ran to choose from. In essence, the idea isn’t too difficult to do. It requires:
- Making something that understands the Dashboard widget definition format, so it can parse existing widgets
- Building a Gtk app that embeds Gecko and displays the widgets
- Injecting some extra JavaScript into each widget that takes care of differences between Gecko and WebKit
The first two weren’t that difficult. The third…more complex than you might think. Safari and Firefox (WebKit and Gecko) differ in a lot of ways, and (understandably, and not at all reprehensibly) Dashboard widgets don’t take account of those ways because they are only built to run on WebKit. I got a reasonable proportion of the ways done, but there’s still enough that there aren’t many widgets that it actually runs correctly. I now, sadly, don’t have time to continue to work on the project, but I’d love to see someone else take up the slack.I’m working on the project again. It’s called Jackfield, for reasons that I can barely remember (I think I looked “dashboard” up in a thesaurus somewhere).
A screenshot of the existing program, with the Jackfield toolbar and some widgets running:
![]()
You can grab the Jackfield code (2.7MB tar.gz) if you’re interested in looking into it or working further on it. To run, cd into the jackfield directory and run python Control.py for the command syntax. You’ll need some widgets, too. Have a play around if you’re interested.
Update (2006-07-07): don’t download the tarball. Instead, read the more up-to-date install instructions.
Oh, and one quick note: my personal wiki has the notes I made while building the project to the state it’s in at http://kryogenix.org/wiki/Jackfield if that’s helpful.
Posted by sil on January 22nd, 2006.
Nice! I think one of KDE plasma’s goals is Dashboard widget compatibility, so the KHTML port may already be taken care of.
Posted by tommo on January 22nd, 2006.
If a support request here is inappropriate, please ignore it.
When I run ‘python Control.py start showing’, an empty gray control bar shows up on my screen.
I take it the widgets in the ‘widget’ folder of the download are actually supposed to function.
So; how do I get on from here?
Posted by Emil on January 29th, 2006.
Emil: the code is hardcoded to look for the widgets directory in a particular place. Edit Control.py and change WIDGET_DIRS to contain the widget directory, or put the widget directory as ~/Library/Widgets or ~/Projects/jackfield/Widgets and it should work a little better.
This is purely because it’s unfinished…
Posted by sil on January 29th, 2006.
After extracting the .tar.gz file, what do I do to install the application? I tried the command : python Control.py
but I received an error of some sort.
(Sorry, I’m new Linux..)
Posted by horace on February 1st, 2006.
horace: be warned, the code is not in a usable state. The “error of some sort” you receive should tell you to run “python Control.py start showing”, which should show the widget bar (although see Emil’s question and answer above if there are no widgets in it). I repeat, though, that this code is not destined for users, it’s destined for hackers who want a leg up in building a Dashboard-a-like for Linux.
Posted by sil on February 1st, 2006.
Nice! I have downloaded the code and will try it today. Any chance of calling the widgets .. “jacklets”?? :)
Posted by Andy on February 8th, 2006.
Just a note that, though your code checks for minor >= 40 and minor
Posted by Brad on February 10th, 2006.
Hmm… your comments thing seems to have truncated my message. :\
Well, let’s try again (the short version this time): Your code uses features that don’t seem to have been implimented prior to dbus version 0.42. Thus, it doesn’t work on Fedora Core 4, which ships with 0.40. You can save yourself some support posts by changing your version check accordingly.
Looks really cool, though. I’ll either update dbus or just wait for FC5 but one way or another I will definitely play with it soon.
Posted by Brad on February 10th, 2006.
Brad: I believe you. The issue is that the dbus chaps break the API every time they release a new version, because it’s unstable. It was very difficult to get an answer when I asked questions like “which version of dbus should I support” and “how do I do thing X in version Y of dbus”, because the answer was almost always “run the most recent version”. So I guessed a bit, and made it work with the dbus that I had installed on my version of Ubuntu.
Posted by sil on February 10th, 2006.
wow! that certainly looks awesome man.
Posted by sycamore on April 11th, 2006.
[...] I’ve signed up to do a lightning talk at Guadec on Jackfield. That’s scaring me a bit, that. [...]
Posted by as days pass by » Lightning talk at Guadec on Jackfield on June 9th, 2006.
You should see if the gnome project would be interrested in taking care of it (looks like something they might like)
Posted by Anonymous on June 19th, 2006.
It looks brilliant. However it won’t run with Dapper’s dbus (I tried changing it to allow dbus 0.50, but it caused an error.
BTW is there a SVN repo or similar? (I’m guessing a lot of work has gone into this for Guadec)
Posted by Paul Nolan on June 29th, 2006.
[...] Ein Apple ähnliches Dashboard für Linux findet ihr hier. [...]
Posted by XGLusers - news and future » Dashboard für Linux on July 7th, 2006.
Wow. Amazing stuff. This what I am searching for a long time!(compiz.net-thread about).
But i have the same problem with dapper:
Traceback (most recent call last):
File “Control.py”, line 7, in ?
import jackfield_dbus
File “/jackfield/jackfield/jackfield_dbus.py”, line 56, in ?
raise NotImplementedError(”DBus 0.50 untested!”)
NotImplementedError: DBus 0.50 untested!
Posted by Speedator on July 7th, 2006.
If you’re having dapper dbus errors, please use the svn version, which should have fixed this…
Posted by sil on July 7th, 2006.
same problem here on Etch. Even with SVN-Version.
Traceback (most recent call last):
File “jackfield/Control.py”, line 7, in ?
import jackfield_dbus
File “/home/jabba/apps/jackfield/jackfield/jackfield_dbus.py”, line 56, in ?
raise NotImplementedError(”D-Bus “+dbus.version+” untested!”)
TypeError: cannot concatenate ’str’ and ‘tuple’ objects
Package “python2.4-dbus” installed.
Posted by jabba on February 14th, 2007.
WOW. Thank you so much. Please continue to improve and work on this. This project is very much valued!
Posted by 3Saul on March 26th, 2007.
[...] So wie’s aussieht, hat tatsächlich doch jemand was ähnliches wie Apple’s Dashboard für den Gnome Desktop programmiert. Es heisst Jackfield und ist definitiv etwas, das ich ausprobieren werde, wenn ich Zeit dazu habe. [...]
Posted by linux meets öpfel » Blog Archiv » Dashboard Widgets on June 5th, 2007.
[...] For Linux, you must have installed Jackfield [...]
Posted by La Capi » Blog Archive » Widget Download on May 10th, 2008.
[...] podemos ancontrar una infinidad en Gnome-Look, o bien existe la opción de Dashboard en el sitio de Jackfield. Screenlets lo puedes descargar para la versión de Ubuntu que tengas en: [...]
Posted by Que es un Widget?. « Linux & Newbie on June 6th, 2008.