diff options
Diffstat (limited to 'README.terminfo.rst')
-rw-r--r-- | README.terminfo.rst | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/README.terminfo.rst b/README.terminfo.rst new file mode 100644 index 0000000..cd724d0 --- /dev/null +++ b/README.terminfo.rst @@ -0,0 +1,90 @@ +Terminfo Entries +================ + +:Author: Sebastian J. Bronner <waschtl@sbronner.com> +:Date: 2019-11-06 +:URL: https://aur.archlinux.org/packages/st + +The Problem +----------- + +Most Linux-based distributions will have their terminfo entries in the +``ncurses`` package. These live in ``/usr/share/terminfo``. There you will find +several entries for ``st``. As of ``ncurses-6.1`` as packaged in ArchLinux, +these, do not work well with current versions of ``st``. + +Specifically, I have observed the following issues when using the terminfo +entries supplied with ``ncurses``: + +* Start ``st``. +* Run ``tmux`` in the ``st`` window. +* Run ``nvim`` in ``tmux``. + + * ``tmux`` will crash immediately with the following message: + + .. code:: console + + [lost server] + % + +* Run ``w3m`` with any URL in ``tmux``. + + * ``w3m`` will not react to any key presses (most notably the arrow keys and + ``q``) and must be terminated with ``killall w3m``. + * The command line returned where ``w3m`` was running will show all the + missing keypresses. + +For reference, I performed these tests using the following software versions: +``st`` 0.8.2, ``tmux`` 2.9_a, ``neovim`` 0.4.2, and ``w3m`` +0.5.3.git20190105-1. + +A couple of issues have been filed against ``tmux`` for this. Although it is +not a problem with ``tmux`` the issues remain for reference: + +| https://github.com/tmux/tmux/issues/1264 +| https://github.com/tmux/tmux/issues/1593 + +Complications +------------- + +While it may be tempting to use the terminfo files shipped with ``st``, that +would be a bad idea from a packaging standpoint. There are two reasons for +this: (1) As of ``st-0.8.2`` they have errors in them. This has been fixed and +will roll out in the next release, though. + +| https://lists.gnu.org/archive/html/bug-ncurses/2019-10/msg00071.html +| https://lists.suckless.org/hackers/1911/17006.html + +(2) It is vital that remote terminals connecting via ``ssh`` are known. That is +accomplished by having all terminfo files in one package (like ``ncurses``). + +``ncurses`` has released updated terminfo entries. The problem as described +above is fixed. However, the updated terminfo entries are not installed on +ArchLinux because they were released as a standalone file without a new release +of the rest of ``ncurses``. + +The Solution +------------ + +The solution must be to get the updated terminfo entries packaged for +ArchLinux. I believe that the ``ncurses`` package should be updated to that +effect. + +https://bugs.archlinux.org/task/57596 + +The Workaround +-------------- + +A somewhat painful, albeit pragmatic, workaround is as follows: A user that +encounters issues that are due to mismatched terminfo entries, such as those +above, can populate a user-level terminfo database from the terminfo entries +supplied by ``st``. The following command will do this: + +.. code:: shell + + tic -sx /usr/share/st/st.info + +The generated terminfo database will most likely be placed in ``~/.terminfo``. +The command will print the actual location used. Unfortunately, these files +need to be kept up to date by hand. Actually they should probably be removed as +soon as a new version of ``ncurses`` is released. |