Iterative dictionary
The goal is to provide a frictionless dictionary searching experience: you type and the words show up on your prompt. Not need to wait a http request to go through.
As of right now, dict just provides a thin layer on top of sqlite's fts5^1 virtual table with support of spellfix^2 for word suggestion.
The whole database is loaded in memory for faster search and import process, which means that this application will consume substantial amounts of memory. On DE-EN dictionary, for example, it uses ~300MB, more then dict.cc tab on firefox (but less the most electron application out there)
Compiling
You will need go, gcc and sqlite-dev, then you can just run
make
For development you can run:
make run # run the ui with default values
make import # run the importer with default values
make version # run the version command
Installing
To install locally you may run:
PREFIX=$(HOME)/.local make install
Or for a system wide istall:
sudo make install
Usage
To run the importer you will need to download dict.cc dictionary. First go to its request page^3 and select your dictionary of choice. Once you download and unzip run the following command:
dict import --input dict.txt --output main.dict
Once the import process is complete[4] you can run the ui.
dict ui --database main.dict
TODO
- On disk operation: to reduce memory footprint we can read from the disk. We would need to remove the instance response, since that is not possible reading from the disk.
- Better coloring on the list.
- Better default path for sqlite database making use of XDG variables.
- [optional] Multi dictionary support. Support more than one dict at once.
- Async response. Even though in memory is fast enough most often it can have some hiccups with 2 letter queries.
- Finish server
- Alpine package
[4]: It may take some time depending the size of the dictionary you selected