On Transcending Borders

22/01/2016

Reddit reminded me today that the infamous xwidget branch has been finally merged into the emacs-25 branch. As usual there hasn’t been any critical or even informational reports about what using it is like, so I decided to see for myself what the fuss is about. Building it is easy enough:

git checkout emacs-25
./configure --with-x-toolkit=gtk3 --with-xwidgets
make

You can then use M-x xwidget-webkit-browse-url and must enter a full URL. www.gnu.org will only display a blank image, http://www.gnu.org/ on the other hand…

/img/xwidgets-gnu-thumb.png

That’s more like it.

According to html5test.com things aren’t looking too bad:

/img/xwidgets-html5-thumb.png

I can even watch YouTube!

/img/xwidgets-yt-thumb.png

Once you do more than basic navigation by clicking links, things begin falling apart. Every time I interacted with a video, the audio volume was turned all the way up and the widget flickered. Searching for another video didn’t work the way you’d expect it either. You can click a text form just fine, but any keys you press are interpreted as potential Emacs commands instead. Instead you hit RET and get the familiar read-string prompt. Finishing your input will place it into the text form. Except when it doesn’t:

/img/xwidgets-wp-thumb.png

To keep things short, the integration so far is as basic as it gets. On top of that you get reminded once in a while that this is still a hack: Change the window size or scroll off and you get to see extra buffer text reminding you to readjust the widget size with a. What it doesn’t tell you is that you may need to scroll up as well…

Personally, I find the opposite approach of starting out with webkit and piling JavaScript on top of it until it resembles what you’re after much more promising. It may involve less Lisp than you’ve hoped for, but leads to significantly more usable results.