Category: projects

Avahify Your Application!

It has never been easier to add Zeroconf service discovery support to your GTK application!

The upcoming Avahi 0.6.18 will ship with a new library libavahi-ui which contains a GTK UI dialog AuiServiceDialog, a simple and easy-to-use dialog for selecting Zeroconf services, similar in style to GtkFileChooserDialog and friends. This dialog should be used whenever there is an IP server to enter in a GTK GUI. For example:

  • Mail applications such as Evolution may use it to browse for POP3, POP3S, IMAP, IMAPS and SMTP servers.
  • VNC applications may use it to browse for VNC/RFB servers
  • Database clients such as Glom may use it to browse for PostrgreSQL servers
  • FTP clients may use it to browse for FTP servers
  • RSS readers may use it to browse for local RSS feeds

So, how does it look like? Here's a screenshot of a service dialog browsing for FTP, SFTP and WebDAV shares simultaneously:

Service Dialog

The dialog properly supports browsing in remote domains, browsing for multiple service types at the same time (i.e. POP3 and POP3S) and supports multi-homed services. It will also resolve the services if requested. Avahi will ship a (very useful!) example tool zssh.c which if started from the command line allows you to quickly browse for local SSH servers and connect to one of those available. (Short Theora screencast of zssh - Please excuse the strange cursor, seems to be a bug in Istanbul 0.2.1, which BTW is totally broken on multi-headed setups):

A simple application making use of this dialog might look like this:

#include <gtk/gtk.h>
#include <avahi-ui/avahi-ui.h>

int main(int argc, char*argv[]) {
    GtkWidget *d;

    gtk_init(&argc, &argv);

    d = aui_service_dialog_new("Choose Web Service");
    aui_service_dialog_set_browse_service_types(AUI_SERVICE_DIALOG(d), "_http._tcp", "_https._tcp", NULL);

    if (gtk_dialog_run(GTK_DIALOG(d)) == GTK_RESPONSE_OK)
        g_message("Selected service name: %s; service type: %s; host name: %s; port: %u",
		aui_service_dialog_get_service_name(AUI_SERVICE_DIALOG(d)),
		aui_service_dialog_get_service_type(AUI_SERVICE_DIALOG(d)),
		aui_service_dialog_get_host_name(AUI_SERVICE_DIALOG(d)),
		aui_service_dialog_get_port(AUI_SERVICE_DIALOG(d)));
    else
        g_message("Canceled.");

    gtk_widget_destroy(d);

    return 0;
}

A more elaborate example is zssh.c. You may browse the full API online.

AuiServiceDialog is not perfect yet. It still lacks i18n and a11y support. In addition it follows the HIG only very roughly. Patches welcome! I am also very interested in feedback from more experienced GTK programmers, since my experience with implementing GTK controls is rather limited. This is my first GTK library which should really feel like a GTK API. So please, read through the API and the implementation and send me your comments! Thank you!

If you want to integrate AuiServiceDialog into your application and don't want to wait for Avahi 0.6.18, just copy avahi-ui.h and avahi-ui.c into your sources and make sure to add avahi-client, avahi-glib, gtk+-2.0 to your pkg-config dependencies.


Good Morning, Freedom Lovers!

On popular request, the slides of my PulseAudio talk at linux.conf.au 2007 are now available for download. And here are the slides of the Avahi talk Trent and I did on GNOME.conf.au 2007. Videos will hopefully be available shortly from the LCA web site.

... Horses? Did anyone say "Horses"?


FOMS 2007/Linux.conf.au 2007

On Wed, January 17th, I will be speaking at linux.conf.au 2007 about the PulseAudio sound server. Before that, on Mon January 15th, I will do a presentation about Avahi, together with Trent Lloyd, at GNOME.conf.au 2007. And even before that, I will attend FOMS 2007, and probably say a word or two about PulseAudio, again.

Can't wait for those 25h+ of flying from .de to .au!


Es ist vollbracht!

Yes, finally Linux 2.6.19 has been released. So you wonder why is this something to blog about? -- Because it is the first Linux version that contains my super-cool MSI Laptop driver, one of the most impressing attainments of mankind, only excelled perhaps by KRYPTOCHEF, the only tool in existence which does fullbit encryption.


Ubuntu vs. Free Software

Everybody should read Roman Kennke's take on Mark Shuttleworth's OpenSUSE spam mail. It's constructive and sensible.

I hope the Ubuntu people find the strength to resist the short-term bliss of desktop bling for long-term software freedom!

Please learn the lession Java teaches us: resist the temptation of closed source software and develop alternatives as free software!


uds-mtv -> San Francisco

Is anyone who's attending the Ubuntu Developers Summit in Mountain View right now heading for San Francisco tomorrow? I plan to stay a few days in the city to do sight seeing and stuff. Please catch me at the conference today if you are interested to join me visiting San Francisco!


Cui Bono?

So, you thought that only Linux users (and other alternative OS zealots) would benefit from reverse engineered Windows drivers? Ha! Far from the truth, it's the Windows users themselves who are benefitting. (Sorry, that link is in German)

Too bad that this specific Windows port actually infringes my copyrights since it links my GPL'ed code against the non-free inpout32.dll. And the guy who did that port doesn't even think it's necessary to put his email address anywhere.


MSI Laptop Owners!

MSI Laptop Owners! Join us and extend the MegaWiki, the new Wiki for all kinds of information on Linux on MSI MegaBooks! (and all MSI built laptops sold under other brands)

The MegaWiki is still rather empty but we hope that it will soon grow as large as our inspiration, the ThinkWiki which collects information about IBM ThinkPads. For that we need your help!

This site will be the new home of the MSI laptop drivers (backlight control, rfkill) and provide modified ACPI DSDTs to fix a few BIOS errors. And more!


Conferences: UDS, FOMS and LCA

To my surprise I have been invited to the Ubuntu Developers Summit in Mountain View early next month (as a "ROCKSTAR", to quote Mark), to promote PulseAudio. And that although I am not an Ubuntu developer, nor even much of an Ubuntu user. I'll be available for discussing everything Multimedia/PulseAudio related. While I've not been invited because of my involvement in Avahi/Zeroconf I will, of course, also be available for discussion of these topics. As it appears, Canonical is not resentful, or maybe it's just their way to bribe me into registering with Launchpad? ;-)

After UDS I plan to stay a few more days in San Francisco to visit the city. Can anyone point me to cheap accomodation in SF, or perhaps even lives in SF and has room where I could sleep?

In addition my PulseAudio presentation has been accepted at linux.conf.au 2007. At GNOME.conf.au I hope to give another presentation, together with Trent Lloyd about Avahi, everyone's favourite Zeroconf implementation. And finally I plan to give yet another presentation, again about PulseAudio, at FOMS 2007, the Foundations of Open Media Software conference, which happens shortly before linux.conf.au, also in Sydney. FOMS is still looking for more people to speak at the conference, so, please go to their CFP page and send in your proposal if you have something to talk about!


One fring to rule them all...

A while ago I played around with Cairo and created a Python tool fring, similar to KDE's Filelight, however not interactive and very simple. Frédéric Back took my code and gave it a little GUI love, and this is the result:

fring screenshot

Frédéric added a nice interactive GTK GUI and a fully asynchronous directory walker based on Gnome-VFS which runs in a background thread and thus doesn't block the UI. This makes the user interface snappier than Filelight's ever was. It's a lot of fun to navigate your directories like this!

I would have liked to post a screencast of the new fring in action here, to show how snappy it is. But unfortunately both Byzanz and Istanbul failed horribly on my 16bpp display.

The current version of fring is not yet polished for a public release. In the meantime, you can get the sources from the SVN:

svn checkout svn://svn.0pointer.de/fring/trunk fring

Yes, I am aware that a future version of Baobab will offer a similar view of the filesystem. However, it just was so much fun to hack on fring, and due to the power of Python it was so easy and quick to develop this tool, that we just couldn't resist to do it.

© Lennart Poettering. Built using Pelican. Theme by Giulio Fidente on github. .