blob: f5faf7de747c2f10aaf438fb163a75fac483c69c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# 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
```sh
make
```
For development you can run:
```sh
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:
```sh
PREFIX=$(HOME)/.local make install
```
Or for a system wide istall:
```sh
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:
```sh
dict import --input dict.txt --output main.dict
```
Once the import process is complete[4] you can run the ui.
```sh
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
[^1]: https://sqlite.org/fts5.html
[^2]: https://www.sqlite.org/spellfix1.html
[^3]: https://www1.dict.cc/translation_file_request.php
[4]: It may take some time depending the size of the dictionary you selected
|