;;;;; title: Auto-suggestions for DuckDuckGo in Conkeror tags: conkeror, config, javascript date: 2014-06-03 22:08 format: md ;;;;; Recently [DuckDuckGo](https://duckduckgo.com) 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](http://conkeror.org) can work with [OpenSearch](https://en.wikipedia.org/wiki/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](https://duckduckgo.com/opensearch.xml). After this, you can replace the `/usr/share/conkeror/search-engines/duckduckgo.xml` file[1](#fn1) with the newly downloaded one and you'd be done, ready to use the new auto-suggest functionality[2](#fn2). If, however, you don't like overwriting your package's files because they may get overwritten again in the future[3](#fn3) 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 use[4](#fn4), 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`.