StarDict Terminal UI
====================

'sdtui' aims to provide an easy way of viewing translation as well as other
kinds of dictionaries in your terminal.  I wasn't successful in finding any free
dictionary software of this kind, GUI or not, and thus decided to write my own.

The project is covered by a permissive license, unlike vast majority of other
similar projects, and can serve as a base for implementing other dictionary
software.  I wasn't able to reuse _anything_.

Further Development
-------------------
While I've been successfully using sdtui for a long time now, some work has to
be done yet before the software can be considered fit for inclusion in regular
Linux and/or BSD distributions.  Help is much appreciated.

An approximate list of things that need to be resolved:

 - rewrite the frontend using a proper TUI framework
 - possibly make it work better with multiple dictionaries as now it's only
   acceptable if you give them short names in the configuration so that they
   all fit in the header
 - figure out a way to become capable of displaying most dictionaries

Packages
--------
Regular releases are sporadic.  git master should be stable enough.  You can get
a package with the latest development version from Archlinux's AUR.

Building and Running
--------------------
Build dependencies: CMake, pkg-config, xsltproc, docbook-xsl +
Runtime dependencies: ncursesw, zlib, ICU, termo (included),
                      glib-2.0, pango, gtk+ (optional, any version)

 $ git clone --recursive https://git.janouch.name/p/sdtui.git
 $ mkdir sdtui/build
 $ cd sdtui/build
 $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug -DWITH_GTK=ON
 $ make

To install the application, you can do either the usual:

 # make install

Or you can try telling CMake to make a package for you.  For Debian it is:

 $ cpack -G DEB
 # dpkg -i sdtui-*.deb

Note that for versions of CMake before 2.8.9, you need to prefix `cpack` with
`fakeroot` or file ownership will end up wrong.

Having the program installed, simply run it with a StarDict '.ifo' file as an
argument.  It is however highly recommended to configure it, see below.

Extensions
----------
As the original StarDict is a bit of a clusterfuck with regard to collation of
dictionary entries, I had to introduce an additional `collation` field into the
'.ifo' file.  When sdtui discovers this field while reading the dictionary, it
automatically reorders the index according to that locale (e.g. "cs_CZ").
This operation may take a little while, in the order of seconds.

Configuration
-------------
To get a nicer look in 256color terminals, create _~/.config/sdtui/sdtui.conf_
with the following.  Note that it is intended for black-on-white terminals.

....
[Settings]
center-search = true
underline-last = false
hl-common-prefix = true
watch-selection = true

[Colors]
header = reverse
header-active = ul
search = ul
even = 16 231
odd = 16 255
....

The `watch-selection` option makes the application watch the X11 primary
selection for changes and automatically search for selected text.
This feature requires GTK+ and it will never work on Wayland by its design.

You can also set up some dictionaries to be loaded at startup automatically:

....
[Dictionaries]
name1 = ~/path/to/dict.ifo
name2 = ~/another/dict.ifo
....

Dictionaries
------------
Unfortunately this application only really works with specific dictionaries.
Word definitions have to be in plain text, separated by newlines.

https://mega.co.nz/#!axtD0QRK!sbtBgizksyfkPqKvKEgr8GQ11rsWhtqyRgUUV0B7pwg[
CZ <--> { EN, DE, PL, RU } dictionaries]

Contributing and Support
------------------------
Use https://git.janouch.name/p/sdtui to report any bugs, request features,
or submit pull requests.  `git send-email` is tolerated.  If you want to discuss
the project, feel free to join me at ircs://irc.janouch.name, channel #dev.

Bitcoin donations are accepted at: 12r5uEWEgcHC46xd64tt3hHt9EUvYYDHe9

License
-------
This software is released under the terms of the 0BSD license, the text of which
is included within the package along with the list of authors.
