From 4245dc35df513a0bad63d01b1616cec97073c849 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C5=99emysl=20Eric=20Janouch?=
Date: Fri, 23 Jul 2021 20:43:53 +0200
Subject: [PATCH] Update README, add a screenshot
I've given up on the idea of a "proper" TUI framework.
I've also learnt that Wayland isn't a completely dead end.
---
README.adoc | 21 ++++++++++++---------
sdtui.png | Bin 0 -> 29303 bytes
2 files changed, 12 insertions(+), 9 deletions(-)
create mode 100644 sdtui.png
diff --git a/README.adoc b/README.adoc
index 476d1b5..52be085 100644
--- a/README.adoc
+++ b/README.adoc
@@ -2,13 +2,16 @@ 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.
+kinds of dictionaries in your terminal, and is inspired by the dictionary
+component of PC Translator. I wasn't successful in finding any free 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_ for StarDict.
+image::sdtui.png[align="center"]
+
Further Development
-------------------
While I've been successfully using sdtui for a long time now, some work has to
@@ -17,11 +20,8 @@ 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
+ - the tab bar and the text input field don't handle overflows well
+ - figure out a way to become capable of displaying most StarDict dictionaries
Packages
--------
@@ -32,7 +32,7 @@ Building and Running
--------------------
Build dependencies: CMake, pkg-config, asciidoctor +
Runtime dependencies: ncursesw, zlib, ICU, termo (included),
- glib-2.0, pango, xcb and xcb-xfixes (optional)
+ glib-2.0, pango, xcb, xcb-xfixes (the latter two optional)
$ git clone --recursive https://git.janouch.name/p/sdtui.git
$ mkdir sdtui/build
@@ -82,7 +82,8 @@ 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 XCB and it will never work on Wayland by its design.
+This feature requires XCB. Wayland is currently unsupported, but would require
+a compositor supporting the wlr-data-control protocol.
You can also set up some dictionaries to be loaded at startup automatically:
@@ -92,6 +93,8 @@ name1 = ~/path/to/dict.ifo
name2 = ~/another/dict.ifo
....
+The names define how they will appear in the tab bar.
+
Dictionaries
------------
Unfortunately this application only really works with specific dictionaries.
diff --git a/sdtui.png b/sdtui.png
new file mode 100644
index 0000000000000000000000000000000000000000..a628ed7ab654e4ee387de664a4d21d588d77b9eb
GIT binary patch
literal 29303
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