43 lines
1.2 KiB
Markdown
43 lines
1.2 KiB
Markdown
|
# ferret
|
||
|
|
||
|
Search DuckDuckGo in your terminal.
|
||
|
|
||
|
Run `ferret` and enter a search query:
|
||
|
|
||
|
![dialog box for entering search query](docs/search_input.png)
|
||
|
|
||
|
Ferret will display the first page of results:
|
||
|
|
||
|
![list of results scraped from DuckDuckGo](docs/results_list.png)
|
||
|
|
||
|
Press Enter on a result and it will open the result in a terminal text-based web
|
||
|
browser (w3m):
|
||
|
|
||
|
![viewing a search result in the w3m terminal web browser](docs/w3m.png)
|
||
|
|
||
|
## Why DuckDuckGo
|
||
|
|
||
|
Not only does it respect your privacy, but they are also pretty lenient about
|
||
|
not blocking scrapers. Google will eventually detect scrapers and force you to
|
||
|
fill out a captcha.
|
||
|
|
||
|
## Bugs
|
||
|
|
||
|
There's [an issue]() with launching a sub program in [Cursive](), the Rust terminal
|
||
|
UI library I'm using, where keyboard input doesn't quite go through and the
|
||
|
cursor does not show up.
|
||
|
|
||
|
## Todo
|
||
|
|
||
|
* Allow pressing 0-9 take you to that Nth result (0 == 10)
|
||
|
* Allow configuring colors
|
||
|
* Allow configuring web browser
|
||
|
* Error if screen is too small
|
||
|
* Display DuckDuckGo instant answers
|
||
|
* Support other search engines
|
||
|
* Add search history (press up arrow to get previous search entered)
|
||
|
* Cache search results
|
||
|
* Add autocompletion
|
||
|
* Refactor out scraping code into a separate module from the UI code
|
||
|
* Add tests
|