Update terminfo explanation and workaround
This commit is contained in:
8
PKGBUILD
8
PKGBUILD
@@ -5,19 +5,18 @@
|
|||||||
|
|
||||||
pkgname=st
|
pkgname=st
|
||||||
pkgver=0.8.2
|
pkgver=0.8.2
|
||||||
pkgrel=9
|
pkgrel=10
|
||||||
pkgdesc='A simple virtual terminal emulator for X.'
|
pkgdesc='A simple virtual terminal emulator for X.'
|
||||||
arch=('i686' 'x86_64' 'armv7h')
|
arch=('i686' 'x86_64' 'armv7h')
|
||||||
license=('MIT')
|
license=('MIT')
|
||||||
depends=(libxft)
|
depends=(libxft)
|
||||||
makedepends=(libxext ncurses)
|
|
||||||
url=https://st.suckless.org
|
url=https://st.suckless.org
|
||||||
source=(https://dl.suckless.org/$pkgname/$pkgname-$pkgver.tar.gz
|
source=(https://dl.suckless.org/$pkgname/$pkgname-$pkgver.tar.gz
|
||||||
terminfo.patch
|
terminfo.patch
|
||||||
README.terminfo.rst)
|
README.terminfo.rst)
|
||||||
sha256sums=(aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35
|
sha256sums=(aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35
|
||||||
b282c0b963a24299d02e485af30260d237ca2e8e6b06282d385022c9c10a0950
|
bf6c8b73a606a8e513c7919d91f93ed7aeb5f44e80269bb244cc01659145a5ea
|
||||||
9a1b764cedd3a6288cc6601a3cdce06f4ab993f44de7aea5afd69511c13df7c0)
|
0ebcbba881832adf9c98ce9fe7667c851d3cc3345077cb8ebe32702698665be2)
|
||||||
_sourcedir=$pkgname-$pkgver
|
_sourcedir=$pkgname-$pkgver
|
||||||
_makeopts="--directory=$_sourcedir"
|
_makeopts="--directory=$_sourcedir"
|
||||||
|
|
||||||
@@ -69,4 +68,5 @@ package() {
|
|||||||
install $installopts "$licdir" "$_sourcedir/LICENSE"
|
install $installopts "$licdir" "$_sourcedir/LICENSE"
|
||||||
install $installopts "$docdir" "$_sourcedir/README"
|
install $installopts "$docdir" "$_sourcedir/README"
|
||||||
install $installopts "$docdir" README.terminfo.rst
|
install $installopts "$docdir" README.terminfo.rst
|
||||||
|
install $installopts "$shrdir/$pkgname" "$_sourcedir/st.info"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,16 +2,16 @@ Terminfo Entries
|
|||||||
================
|
================
|
||||||
|
|
||||||
:Author: Sebastian J. Bronner <waschtl@sbronner.com>
|
:Author: Sebastian J. Bronner <waschtl@sbronner.com>
|
||||||
:Date: 2019-10-30
|
:Date: 2019-11-06
|
||||||
:URL: https://aur.archlinux.org/packages/st
|
:URL: https://aur.archlinux.org/packages/st
|
||||||
|
|
||||||
The Problem
|
The Problem
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
Most Linux-based distributions will have the bulk of their terminfo entries in
|
Most Linux-based distributions will have their terminfo entries in the
|
||||||
the ``ncurses`` package. These live in ``/usr/share/terminfo``. There you will
|
``ncurses`` package. These live in ``/usr/share/terminfo``. There you will find
|
||||||
find several entries for ``st``. These, however, do not work well with current
|
several entries for ``st``. As of ``ncurses-6.1`` as packaged in ArchLinux,
|
||||||
versions of ``st``. You need the terminfo entries supplied with ``st``.
|
these, do not work well with current versions of ``st``.
|
||||||
|
|
||||||
Specifically, I have observed the following issues when using the terminfo
|
Specifically, I have observed the following issues when using the terminfo
|
||||||
entries supplied with ``ncurses``:
|
entries supplied with ``ncurses``:
|
||||||
@@ -38,40 +38,53 @@ 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``
|
``st`` 0.8.2, ``tmux`` 2.9_a, ``neovim`` 0.4.2, and ``w3m``
|
||||||
0.5.3.git20190105-1.
|
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
|
||||||
------------
|
------------
|
||||||
|
|
||||||
The ``ncurses`` package should stop shipping terminfo entries for ``st``. These
|
The solution must be to get the updated terminfo entries packaged for
|
||||||
should then be provided in ``/usr/share/terminfo`` by this (and other) ``st``
|
ArchLinux. I believe that the ``ncurses`` package should be updated to that
|
||||||
packages. The conflicting terminfo entries are
|
effect.
|
||||||
|
|
||||||
* ``st`` and
|
https://bugs.archlinux.org/task/57596
|
||||||
* ``st-256color``.
|
|
||||||
|
|
||||||
Additional entries that could be considered for removal from ``ncurses`` are
|
|
||||||
|
|
||||||
* ``st-0.6``,
|
|
||||||
* ``st-0.7``,
|
|
||||||
* ``st-16color``,
|
|
||||||
* ``st-direct``,
|
|
||||||
* ``stterm`` (for distributions that rename ``st`` to ``stterm``),
|
|
||||||
* ``stterm-16color``, and
|
|
||||||
* ``stterm-256color``.
|
|
||||||
|
|
||||||
This solution cannot be implemented without the cooperation of ``ncurses``
|
|
||||||
since many distributions (including Arch Linux) do not allow for two packages
|
|
||||||
that provide files with identical paths to be installed side-by-side.
|
|
||||||
Therefore, I am bringing this to the attention of the ``ncurses`` team.
|
|
||||||
|
|
||||||
The Workaround
|
The Workaround
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
A somewhat painful, albeit pragmatic, workaround is as follows: A user that
|
A somewhat painful, albeit pragmatic, workaround is as follows: A user that
|
||||||
encounters issues that are due to mismatched terminfo entries, such as those
|
encounters issues that are due to mismatched terminfo entries, such as those
|
||||||
above, can symlink the terminfo entries included in this package into her
|
above, can populate a user-level terminfo database from the terminfo entries
|
||||||
user-level terminfo database using the following commands:
|
supplied by ``st``. The following command will do this:
|
||||||
|
|
||||||
.. code:: shell
|
.. code:: shell
|
||||||
|
|
||||||
mkdir ~/.terminfo/s
|
tic -sx /usr/share/st/st.info
|
||||||
ln -s /usr/share/st/terminfo/s/* ~/.terminfo/s
|
|
||||||
|
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.
|
||||||
|
|||||||
@@ -1,12 +1,25 @@
|
|||||||
--- Makefile 2019-02-09 12:50:41.000000000 +0100
|
--- Makefile.old 2019-02-09 12:50:41.000000000 +0100
|
||||||
+++ Makefile 2019-10-30 23:39:55.775193275 +0100
|
+++ Makefile 2019-11-07 00:00:24.487953923 +0100
|
||||||
@@ -47,7 +47,8 @@
|
@@ -47,7 +47,6 @@
|
||||||
mkdir -p $(DESTDIR)$(MANPREFIX)/man1
|
mkdir -p $(DESTDIR)$(MANPREFIX)/man1
|
||||||
sed "s/VERSION/$(VERSION)/g" < st.1 > $(DESTDIR)$(MANPREFIX)/man1/st.1
|
sed "s/VERSION/$(VERSION)/g" < st.1 > $(DESTDIR)$(MANPREFIX)/man1/st.1
|
||||||
chmod 644 $(DESTDIR)$(MANPREFIX)/man1/st.1
|
chmod 644 $(DESTDIR)$(MANPREFIX)/man1/st.1
|
||||||
- tic -sx st.info
|
- tic -sx st.info
|
||||||
+ mkdir -p $(DESTDIR)$(PREFIX)/share/st/terminfo
|
|
||||||
+ tic -sx -o $(DESTDIR)$(PREFIX)/share/st/terminfo st.info
|
|
||||||
@echo Please see the README file regarding the terminfo entry of st.
|
@echo Please see the README file regarding the terminfo entry of st.
|
||||||
|
|
||||||
uninstall:
|
uninstall:
|
||||||
|
--- st.info.old 2019-02-09 12:50:41.000000000 +0100
|
||||||
|
+++ st.info 2019-11-07 00:01:02.605412883 +0100
|
||||||
|
@@ -189,10 +189,10 @@
|
||||||
|
rmxx=\E[29m,
|
||||||
|
smxx=\E[9m,
|
||||||
|
# tmux extensions, see TERMINFO EXTENSIONS in tmux(1)
|
||||||
|
- Se,
|
||||||
|
- Ss,
|
||||||
|
Tc,
|
||||||
|
Ms=\E]52;%p1%s;%p2%s\007,
|
||||||
|
+ Se=\E[2 q,
|
||||||
|
+ Ss=\E[%p1%d q,
|
||||||
|
|
||||||
|
st-256color| simpleterm with 256 colors,
|
||||||
|
use=st,
|
||||||
|
|||||||
Reference in New Issue
Block a user