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
But lets _ddgr_ talk for itself. Here's an asciinema:
bindsym $mod+c exec alacritty -e ddgr
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.