Echo Area

Auto-suggests for DuckDuckGo in Conkeror

3 June 2014 10:08 PM (conkeror | config | javascript)

Recently DuckDuckGo gave its UI a big overhaul. One of the new parts of the UI is the auto-suggestions, which are pretty cool, especially when working with !bang syntax. I want that in my conkeror webjump! So I started looking…

Turns out that Conkeror can work with OpenSearch descriptions to create webjumps and actually already has a DuckDuckGo OpenSearch XML file. However, DuckDuckGo has a newer version of that file.

So, for starters you should download the proper XML file. After this, you can replace the /usr/share/conkeror/search-engines/duckduckgo.xml file1 with the newly downloaded one and you'd be done, ready to use the new auto-suggest functionality2.

If, however, you don't like overwriting your package's files because they may get overwritten again in the future3 or you really don't think it's proper, you can also create a custom webjump that does the same thing, which is what I did.

In case you are following my lead, first we'd need to put the downloaded XML file somewhere. I suggest ~/.conkerorrc/search-engines because that way everything in your configuration stays nice and contained, although you might want to put it in your ~/.conkeror.mozdev.org/conkeror/CODE.PROFILE/search-engines, where CODE is an eight-character alphanumeric sequence (as far as I can tell) and PROFILE is the name of the profile you use4, because that should already be included in your opensearch_load_paths.

If you put the XML in your .conkerorrc you'll need to add that directory to your opensearch_load_paths, so put something like the following in your init.js, or whichever filename you use for your conkeror init:

opensearch_load_paths.push(make_file("~/.conkerorrc/search-engines"));

After Conkeror knows where to find your custom search engine specifications you can create a webjump for it:

define_opensearch_webjump("ddg", "ddg.xml");

Once you evaluate these lines or restart your Conkeror, you should have a ddg webjump with auto-suggestion. Yay!

Footnotes:

1

I have Conkeror installed in /usr, so if you have it installed somewhere else your path will be different.

2

You might have to restart Conkeror first, I didn't test it without restarting.

3

This can of course happen when, for example, your package manager updates your Conkeror installation.

4

The default profile is named (appropriately) default.

Comments are closed.