Monday, May 12, 2008

What does Netscape have to do with Cygwin, you ask? Didn't I just say that anything Mozilla-related doesn't work yet on Cygwin?

Fortunately we still have one working browser on Cygwin: Konqueror. The nsplugins package allows Konqueror to load and use Netscape-compatible plugins. At the next upload, there will be two such working plugins: DjView3 and Xine. I tried, but failed, to get swfdec-mozilla 0.5 working as well; another try with 0.6 will have to wait for GNOME 2.22.

Yes, swfdec itself and the swfdec-gnome player are working, but I had to disable sound support. Enabling the OSS sound support would lock up video playback while the audio was playing. In the meantime, at least it works for games.

If you're looking to play YouTube videos within Cygwin, a recent Linux.com article lists several downloaders. FFmpeg support allows the following applications to play the FLV videos: ffplay (ffmpeg), gxine, kaffeine, kmplayer, kplayer, mplayer, totem, vlc, xine (xine-ui).

Besides being extremely large (34MB source), Mozilla has always abused Cygwin as a build platform for MinGW/MSVC. I really don't like it when people do that. Cygwin is a fairly capable platform of its own accord, not just a means to an unrelated end, and treating it otherwise is not just insulting to those of us who use and develop it, but confuses new users to no end. (Which is why I'd be glad to see the end of -mno-cygwin as well.)

But since GNOME starting using GtkMozEmbed a few years ago, I've taken a few attempts at removing all the anti-Cygwin hacks, all ending without a successful build. A recent (partially successful) experiment with Netscape plugins in Konqueror inspired me to try again. Thanks to Gentoo's ebuild, I managed to get a successful build, but it just crashes (although sometimes a window appears for a split second). My gut feeling is that it's a problem in the XPCOM initialization, but at this point it's way beyond me.

So here's the challenge for anyone who chooses to accept it: get XULRunner to run. To get you started, here's my cygport and patch. You'll need GTK+ and the GNOME libs from Ports (with their -devel packages) as prerequisites. The build can be tested with the included TestGtkEmbed.exe, or build and install both Mozilla::DOM and Gtk2::MozEmbed and try the examples. (The latter require a recent patch to cygport.)

If you do succeed, please drop a note to the mailing list with your modified cygport and patch.