But what’s the process?
Open the browser, fire up the search and wait for results; then take the mouse and click on it, or if there is some vim-like plugin installed, press f and wait for popups.
It is too long for something we do so often, isn’t it?
ddgr is a python3 script, ~1800 lines of code as of version
1.2, which take your query and show you the results. It doesn’t waste precious space on your screen: there are only your prompt and you.
How it works
There are two ways to call ddgr: with or without the search query as an argument. Both lead to the prompt, which is called omniprompt, where you can:
- select an index to open a result
- choose to open either in a text-based or GUI browser
- go back and forth between the result pages
- use DuckDuckGo bangs or site specific search
If you call the utility without the search query, you’ll need to insert it afterwards and you cannot take advantage of the various search options, like “I’m feeling Ducky” or time based search. However, this way it can be easily called from a window manager like i3/Sway:
bindsym $mod+c exec alacritty -e ddgr
But lets ddgr talk for itself. Here’s an asciinema:
Quoting the exhaustive list of features from readme:
- Fast and clean (no ads, stray URLs or clutter), custom color
- Designed to deliver maximum readability at minimum space
- Specify the number of search results to show per page
- Navigate result pages from omniprompt, open URLs in browser
- Search and option completion scripts for Bash, Zsh and Fish
- DuckDuckGo Bang support (along with completion)
- Open the first result directly in browser (as in I’m Feeling Ducky)
- Non-stop searches: fire new searches at omniprompt without exiting
- Keywords (e.g. filetype:mime, site:somesite.com) support
- Limit search by time, specify region, disable safe search
- HTTPS proxy support, Do Not Track set, optionally disable User Agent
- Support custom url handler script or cmdline utility
- Comprehensive documentation, man page with handy usage examples
- Minimal dependencies
ddgr is really a must for people who use DuckDuckGo and want a clean terminal utility; it worked flawlessly for me in the past months, both in features and stability. Plus, it can encode the results in JSON format, making effortless the implementation in other scripts.