From 491bf9298cf5197ddbdda07d5d8aa09309b0c2fe Mon Sep 17 00:00:00 2001 From: "Sebastian J. Bronner" Date: Tue, 15 Oct 2019 18:12:51 +0200 Subject: Fix remaining issue with terminfo files --- .SRCINFO | 7 ++----- .gitignore | 4 ++++ PKGBUILD | 13 +++++++------ 3 files changed, 13 insertions(+), 11 deletions(-) create mode 100644 .gitignore diff --git a/.SRCINFO b/.SRCINFO index 67b8284..736f5ab 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,18 +1,15 @@ -# Generated by mksrcinfo v8 -# Wed Apr 10 09:19:45 UTC 2019 pkgbase = st pkgdesc = A simple virtual terminal emulator for X. pkgver = 0.8.2 - pkgrel = 2 + pkgrel = 3 url = http://st.suckless.org arch = i686 arch = x86_64 arch = armv7h license = MIT + makedepends = libxext makedepends = ncurses depends = libxft - depends = libxext - depends = xorg-fonts-misc source = http://dl.suckless.org/st/st-0.8.2.tar.gz source = config.h sha256sums = aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d59381f --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/*.pkg.tar.xz +/pkg/ +/src/ +/st-*.tar.gz diff --git a/PKGBUILD b/PKGBUILD index 8d3a2c3..d2cbc2d 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,20 +1,23 @@ # Maintainer: Jose Riha +# Maintainer: Sebastian J. Bronner # Contributor: Patrick Jackson # Contributor: Christoph Vigano pkgname=st pkgver=0.8.2 -pkgrel=2 +pkgrel=3 pkgdesc='A simple virtual terminal emulator for X.' arch=('i686' 'x86_64' 'armv7h') license=('MIT') -depends=('libxft' 'libxext' 'xorg-fonts-misc') -makedepends=('ncurses') +depends=(libxft) +makedepends=(libxext ncurses) url="http://st.suckless.org" source=(http://dl.suckless.org/st/$pkgname-$pkgver.tar.gz config.h) sha256sums=('aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35' 'SKIP') prepare() { + sed '/@tic/d' -i $pkgname-$pkgver/Makefile + # user is supposed to maintain config.h him/herself cp $srcdir/config.h $srcdir/$pkgname-$pkgver/config.h } @@ -26,9 +29,7 @@ build() { package() { cd $srcdir/$pkgname-$pkgver - make PREFIX=/usr DESTDIR="$pkgdir" TERMINFO="$pkgdir/usr/share/terminfo" install + make PREFIX=/usr DESTDIR="$pkgdir" install install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" install -Dm644 README "$pkgdir/usr/share/doc/$pkgname/README" - # remove to avoid conflict with ncurses - rm "${pkgdir}/usr/share/terminfo/s/st" "${pkgdir}/usr/share/terminfo/s/st-256color" } -- cgit v1.2.3 From 2e4363e1dc4e7a00238d4cf8dbd389c8e6eb6b07 Mon Sep 17 00:00:00 2001 From: "Sebastian J. Bronner" Date: Tue, 15 Oct 2019 20:32:49 +0200 Subject: Made configuration via config.h more flexible. --- .SRCINFO | 4 +- PKGBUILD | 40 +++++- config.h | 462 --------------------------------------------------------------- 3 files changed, 36 insertions(+), 470 deletions(-) delete mode 100644 config.h diff --git a/.SRCINFO b/.SRCINFO index 736f5ab..90389cb 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = st pkgdesc = A simple virtual terminal emulator for X. pkgver = 0.8.2 - pkgrel = 3 + pkgrel = 4 url = http://st.suckless.org arch = i686 arch = x86_64 @@ -11,9 +11,7 @@ pkgbase = st makedepends = ncurses depends = libxft source = http://dl.suckless.org/st/st-0.8.2.tar.gz - source = config.h sha256sums = aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35 - sha256sums = SKIP pkgname = st diff --git a/PKGBUILD b/PKGBUILD index d2cbc2d..19eeba5 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -5,21 +5,51 @@ pkgname=st pkgver=0.8.2 -pkgrel=3 +pkgrel=4 pkgdesc='A simple virtual terminal emulator for X.' arch=('i686' 'x86_64' 'armv7h') license=('MIT') depends=(libxft) makedepends=(libxext ncurses) url="http://st.suckless.org" -source=(http://dl.suckless.org/st/$pkgname-$pkgver.tar.gz config.h) -sha256sums=('aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35' 'SKIP') +source=(http://dl.suckless.org/st/$pkgname-$pkgver.tar.gz) +sha256sums=('aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35') prepare() { sed '/@tic/d' -i $pkgname-$pkgver/Makefile - # user is supposed to maintain config.h him/herself - cp $srcdir/config.h $srcdir/$pkgname-$pkgver/config.h + # This package provides a mechanism to provide a custom config.h. Multiple + # configuration states are determined by the presence of two files in + # $startdir: + # + # * config.h: The user has supplied his or her configuration. The file will + # be copied to $srcdir and used during build. + # * config.def.h only: The user was previously made aware of the + # configuration options and has opted not to make any configuration + # changes. The package is built using default values. + # * neither file: Initial state. The user receives a message on how to + # configure this package. The build process is aborted after the copy + # operation below. + # + # After this test, config.def.h is copied from $srcdir to provide an up to + # date template for the user. If neither file was present initially, further + # build steps are aborted at this point. Even if no config.h is provided, + # future runs will proceed with default values due to the presence of + # config.def.h. + abort= + if [ -e "$startdir/config.h" ] + then + cp "$startdir/config.h" "$pkgname-$pkgver" + elif [ ! -e "$startdir/config.def.h" ] + then + abort=1 + msg='This package can be configured in config.h. Copy provided ' + msg+='config.def.h to config.h and modify to change configuration. Leave ' + msg+='config.def.h as it is to use default values. Then rerun makepkg.' + error "$msg" + fi + cp "$pkgname-$pkgver/config.def.h" "$startdir" + test -z "$abort" } build() { diff --git a/config.h b/config.h deleted file mode 100644 index 0e01717..0000000 --- a/config.h +++ /dev/null @@ -1,462 +0,0 @@ -/* See LICENSE file for copyright and license details. */ - -/* - * appearance - * - * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html - */ -static char *font = "Liberation Mono:pixelsize=12:antialias=true:autohint=true"; -static int borderpx = 2; - -/* - * What program is execed by st depends of these precedence rules: - * 1: program passed with -e - * 2: utmp option - * 3: SHELL environment variable - * 4: value of shell in /etc/passwd - * 5: value of shell in config.h - */ -static char *shell = "/bin/sh"; -char *utmp = NULL; -char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400"; - -/* identification sequence returned in DA and DECID */ -char *vtiden = "\033[?6c"; - -/* Kerning / character bounding-box multipliers */ -static float cwscale = 1.0; -static float chscale = 1.0; - -/* - * word delimiter string - * - * More advanced example: " `'\"()[]{}" - */ -char *worddelimiters = " "; - -/* selection timeouts (in milliseconds) */ -static unsigned int doubleclicktimeout = 300; -static unsigned int tripleclicktimeout = 600; - -/* alt screens */ -int allowaltscreen = 1; - -/* frames per second st should at maximum draw to the screen */ -static unsigned int xfps = 120; -static unsigned int actionfps = 30; - -/* - * blinking timeout (set to 0 to disable blinking) for the terminal blinking - * attribute. - */ -static unsigned int blinktimeout = 800; - -/* - * thickness of underline and bar cursors - */ -static unsigned int cursorthickness = 2; - -/* - * bell volume. It must be a value between -100 and 100. Use 0 for disabling - * it - */ -static int bellvolume = 0; - -/* default TERM value */ -char *termname = "st-256color"; - -/* - * spaces per tab - * - * When you are changing this value, don't forget to adapt the »it« value in - * the st.info and appropriately install the st.info in the environment where - * you use this st version. - * - * it#$tabspaces, - * - * Secondly make sure your kernel is not expanding tabs. When running `stty - * -a` »tab0« should appear. You can tell the terminal to not expand tabs by - * running following command: - * - * stty tabs - */ -unsigned int tabspaces = 8; - -/* Terminal colors (16 first used in escape sequence) */ -static const char *colorname[] = { - /* 8 normal colors */ - "black", - "red3", - "green3", - "yellow3", - "blue2", - "magenta3", - "cyan3", - "gray90", - - /* 8 bright colors */ - "gray50", - "red", - "green", - "yellow", - "#5c5cff", - "magenta", - "cyan", - "white", - - [255] = 0, - - /* more colors can be added after 255 to use with DefaultXX */ - "#cccccc", - "#555555", -}; - - -/* - * Default colors (colorname index) - * foreground, background, cursor, reverse cursor - */ -unsigned int defaultfg = 7; -unsigned int defaultbg = 0; -static unsigned int defaultcs = 256; -static unsigned int defaultrcs = 257; - -/* - * Default shape of cursor - * 2: Block ("█") - * 4: Underline ("_") - * 6: Bar ("|") - * 7: Snowman ("☃") - */ -static unsigned int cursorshape = 2; - -/* - * Default columns and rows numbers - */ - -static unsigned int cols = 80; -static unsigned int rows = 24; - -/* - * Default colour and shape of the mouse cursor - */ -static unsigned int mouseshape = XC_xterm; -static unsigned int mousefg = 7; -static unsigned int mousebg = 0; - -/* - * Color used to display font attributes when fontconfig selected a font which - * doesn't match the ones requested. - */ -static unsigned int defaultattr = 11; - -/* - * Internal mouse shortcuts. - * Beware that overloading Button1 will disable the selection. - */ -static MouseShortcut mshortcuts[] = { - /* button mask string */ - { Button4, XK_ANY_MOD, "\031" }, - { Button5, XK_ANY_MOD, "\005" }, -}; - -/* Internal keyboard shortcuts. */ -#define MODKEY Mod1Mask -#define TERMMOD (ControlMask|ShiftMask) - -static Shortcut shortcuts[] = { - /* mask keysym function argument */ - { XK_ANY_MOD, XK_Break, sendbreak, {.i = 0} }, - { ControlMask, XK_Print, toggleprinter, {.i = 0} }, - { ShiftMask, XK_Print, printscreen, {.i = 0} }, - { XK_ANY_MOD, XK_Print, printsel, {.i = 0} }, - { TERMMOD, XK_Prior, zoom, {.f = +1} }, - { TERMMOD, XK_Next, zoom, {.f = -1} }, - { TERMMOD, XK_Home, zoomreset, {.f = 0} }, - { TERMMOD, XK_C, clipcopy, {.i = 0} }, - { TERMMOD, XK_V, clippaste, {.i = 0} }, - { TERMMOD, XK_Y, selpaste, {.i = 0} }, - { ShiftMask, XK_Insert, selpaste, {.i = 0} }, - { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, -}; - -/* - * Special keys (change & recompile st.info accordingly) - * - * Mask value: - * * Use XK_ANY_MOD to match the key no matter modifiers state - * * Use XK_NO_MOD to match the key alone (no modifiers) - * appkey value: - * * 0: no value - * * > 0: keypad application mode enabled - * * = 2: term.numlock = 1 - * * < 0: keypad application mode disabled - * appcursor value: - * * 0: no value - * * > 0: cursor application mode enabled - * * < 0: cursor application mode disabled - * crlf value - * * 0: no value - * * > 0: crlf mode is enabled - * * < 0: crlf mode is disabled - * - * Be careful with the order of the definitions because st searches in - * this table sequentially, so any XK_ANY_MOD must be in the last - * position for a key. - */ - -/* - * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF) - * to be mapped below, add them to this array. - */ -static KeySym mappedkeys[] = { -1 }; - -/* - * State bits to ignore when matching key or button events. By default, - * numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored. - */ -static uint ignoremod = Mod2Mask|XK_SWITCH_MOD; - -/* - * Override mouse-select while mask is active (when MODE_MOUSE is set). - * Note that if you want to use ShiftMask with selmasks, set this to an other - * modifier, set to 0 to not use it. - */ -static uint forceselmod = ShiftMask; - -/* - * This is the huge key array which defines all compatibility to the Linux - * world. Please decide about changes wisely. - */ -static Key key[] = { - /* keysym mask string appkey appcursor */ - { XK_KP_Home, ShiftMask, "\033[2J", 0, -1}, - { XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1}, - { XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1}, - { XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1}, - { XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0}, - { XK_KP_Up, XK_ANY_MOD, "\033[A", 0, -1}, - { XK_KP_Up, XK_ANY_MOD, "\033OA", 0, +1}, - { XK_KP_Down, XK_ANY_MOD, "\033Or", +1, 0}, - { XK_KP_Down, XK_ANY_MOD, "\033[B", 0, -1}, - { XK_KP_Down, XK_ANY_MOD, "\033OB", 0, +1}, - { XK_KP_Left, XK_ANY_MOD, "\033Ot", +1, 0}, - { XK_KP_Left, XK_ANY_MOD, "\033[D", 0, -1}, - { XK_KP_Left, XK_ANY_MOD, "\033OD", 0, +1}, - { XK_KP_Right, XK_ANY_MOD, "\033Ov", +1, 0}, - { XK_KP_Right, XK_ANY_MOD, "\033[C", 0, -1}, - { XK_KP_Right, XK_ANY_MOD, "\033OC", 0, +1}, - { XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0}, - { XK_KP_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, - { XK_KP_Begin, XK_ANY_MOD, "\033[E", 0, 0}, - { XK_KP_End, ControlMask, "\033[J", -1, 0}, - { XK_KP_End, ControlMask, "\033[1;5F", +1, 0}, - { XK_KP_End, ShiftMask, "\033[K", -1, 0}, - { XK_KP_End, ShiftMask, "\033[1;2F", +1, 0}, - { XK_KP_End, XK_ANY_MOD, "\033[4~", 0, 0}, - { XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0}, - { XK_KP_Next, XK_ANY_MOD, "\033[6~", 0, 0}, - { XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0}, - { XK_KP_Insert, ShiftMask, "\033[4l", -1, 0}, - { XK_KP_Insert, ControlMask, "\033[L", -1, 0}, - { XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0}, - { XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, - { XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, - { XK_KP_Delete, ControlMask, "\033[M", -1, 0}, - { XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0}, - { XK_KP_Delete, ShiftMask, "\033[2K", -1, 0}, - { XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0}, - { XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0}, - { XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, - { XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0}, - { XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0}, - { XK_KP_Enter, XK_ANY_MOD, "\033OM", +2, 0}, - { XK_KP_Enter, XK_ANY_MOD, "\r", -1, 0}, - { XK_KP_Subtract, XK_ANY_MOD, "\033Om", +2, 0}, - { XK_KP_Decimal, XK_ANY_MOD, "\033On", +2, 0}, - { XK_KP_Divide, XK_ANY_MOD, "\033Oo", +2, 0}, - { XK_KP_0, XK_ANY_MOD, "\033Op", +2, 0}, - { XK_KP_1, XK_ANY_MOD, "\033Oq", +2, 0}, - { XK_KP_2, XK_ANY_MOD, "\033Or", +2, 0}, - { XK_KP_3, XK_ANY_MOD, "\033Os", +2, 0}, - { XK_KP_4, XK_ANY_MOD, "\033Ot", +2, 0}, - { XK_KP_5, XK_ANY_MOD, "\033Ou", +2, 0}, - { XK_KP_6, XK_ANY_MOD, "\033Ov", +2, 0}, - { XK_KP_7, XK_ANY_MOD, "\033Ow", +2, 0}, - { XK_KP_8, XK_ANY_MOD, "\033Ox", +2, 0}, - { XK_KP_9, XK_ANY_MOD, "\033Oy", +2, 0}, - { XK_Up, ShiftMask, "\033[1;2A", 0, 0}, - { XK_Up, Mod1Mask, "\033[1;3A", 0, 0}, - { XK_Up, ShiftMask|Mod1Mask,"\033[1;4A", 0, 0}, - { XK_Up, ControlMask, "\033[1;5A", 0, 0}, - { XK_Up, ShiftMask|ControlMask,"\033[1;6A", 0, 0}, - { XK_Up, ControlMask|Mod1Mask,"\033[1;7A", 0, 0}, - { XK_Up,ShiftMask|ControlMask|Mod1Mask,"\033[1;8A", 0, 0}, - { XK_Up, XK_ANY_MOD, "\033[A", 0, -1}, - { XK_Up, XK_ANY_MOD, "\033OA", 0, +1}, - { XK_Down, ShiftMask, "\033[1;2B", 0, 0}, - { XK_Down, Mod1Mask, "\033[1;3B", 0, 0}, - { XK_Down, ShiftMask|Mod1Mask,"\033[1;4B", 0, 0}, - { XK_Down, ControlMask, "\033[1;5B", 0, 0}, - { XK_Down, ShiftMask|ControlMask,"\033[1;6B", 0, 0}, - { XK_Down, ControlMask|Mod1Mask,"\033[1;7B", 0, 0}, - { XK_Down,ShiftMask|ControlMask|Mod1Mask,"\033[1;8B",0, 0}, - { XK_Down, XK_ANY_MOD, "\033[B", 0, -1}, - { XK_Down, XK_ANY_MOD, "\033OB", 0, +1}, - { XK_Left, ShiftMask, "\033[1;2D", 0, 0}, - { XK_Left, Mod1Mask, "\033[1;3D", 0, 0}, - { XK_Left, ShiftMask|Mod1Mask,"\033[1;4D", 0, 0}, - { XK_Left, ControlMask, "\033[1;5D", 0, 0}, - { XK_Left, ShiftMask|ControlMask,"\033[1;6D", 0, 0}, - { XK_Left, ControlMask|Mod1Mask,"\033[1;7D", 0, 0}, - { XK_Left,ShiftMask|ControlMask|Mod1Mask,"\033[1;8D",0, 0}, - { XK_Left, XK_ANY_MOD, "\033[D", 0, -1}, - { XK_Left, XK_ANY_MOD, "\033OD", 0, +1}, - { XK_Right, ShiftMask, "\033[1;2C", 0, 0}, - { XK_Right, Mod1Mask, "\033[1;3C", 0, 0}, - { XK_Right, ShiftMask|Mod1Mask,"\033[1;4C", 0, 0}, - { XK_Right, ControlMask, "\033[1;5C", 0, 0}, - { XK_Right, ShiftMask|ControlMask,"\033[1;6C", 0, 0}, - { XK_Right, ControlMask|Mod1Mask,"\033[1;7C", 0, 0}, - { XK_Right,ShiftMask|ControlMask|Mod1Mask,"\033[1;8C",0, 0}, - { XK_Right, XK_ANY_MOD, "\033[C", 0, -1}, - { XK_Right, XK_ANY_MOD, "\033OC", 0, +1}, - { XK_ISO_Left_Tab, ShiftMask, "\033[Z", 0, 0}, - { XK_Return, Mod1Mask, "\033\r", 0, 0}, - { XK_Return, XK_ANY_MOD, "\r", 0, 0}, - { XK_Insert, ShiftMask, "\033[4l", -1, 0}, - { XK_Insert, ShiftMask, "\033[2;2~", +1, 0}, - { XK_Insert, ControlMask, "\033[L", -1, 0}, - { XK_Insert, ControlMask, "\033[2;5~", +1, 0}, - { XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, - { XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, - { XK_Delete, ControlMask, "\033[M", -1, 0}, - { XK_Delete, ControlMask, "\033[3;5~", +1, 0}, - { XK_Delete, ShiftMask, "\033[2K", -1, 0}, - { XK_Delete, ShiftMask, "\033[3;2~", +1, 0}, - { XK_Delete, XK_ANY_MOD, "\033[P", -1, 0}, - { XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, - { XK_BackSpace, XK_NO_MOD, "\177", 0, 0}, - { XK_BackSpace, Mod1Mask, "\033\177", 0, 0}, - { XK_Home, ShiftMask, "\033[2J", 0, -1}, - { XK_Home, ShiftMask, "\033[1;2H", 0, +1}, - { XK_Home, XK_ANY_MOD, "\033[H", 0, -1}, - { XK_Home, XK_ANY_MOD, "\033[1~", 0, +1}, - { XK_End, ControlMask, "\033[J", -1, 0}, - { XK_End, ControlMask, "\033[1;5F", +1, 0}, - { XK_End, ShiftMask, "\033[K", -1, 0}, - { XK_End, ShiftMask, "\033[1;2F", +1, 0}, - { XK_End, XK_ANY_MOD, "\033[4~", 0, 0}, - { XK_Prior, ControlMask, "\033[5;5~", 0, 0}, - { XK_Prior, ShiftMask, "\033[5;2~", 0, 0}, - { XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, - { XK_Next, ControlMask, "\033[6;5~", 0, 0}, - { XK_Next, ShiftMask, "\033[6;2~", 0, 0}, - { XK_Next, XK_ANY_MOD, "\033[6~", 0, 0}, - { XK_F1, XK_NO_MOD, "\033OP" , 0, 0}, - { XK_F1, /* F13 */ ShiftMask, "\033[1;2P", 0, 0}, - { XK_F1, /* F25 */ ControlMask, "\033[1;5P", 0, 0}, - { XK_F1, /* F37 */ Mod4Mask, "\033[1;6P", 0, 0}, - { XK_F1, /* F49 */ Mod1Mask, "\033[1;3P", 0, 0}, - { XK_F1, /* F61 */ Mod3Mask, "\033[1;4P", 0, 0}, - { XK_F2, XK_NO_MOD, "\033OQ" , 0, 0}, - { XK_F2, /* F14 */ ShiftMask, "\033[1;2Q", 0, 0}, - { XK_F2, /* F26 */ ControlMask, "\033[1;5Q", 0, 0}, - { XK_F2, /* F38 */ Mod4Mask, "\033[1;6Q", 0, 0}, - { XK_F2, /* F50 */ Mod1Mask, "\033[1;3Q", 0, 0}, - { XK_F2, /* F62 */ Mod3Mask, "\033[1;4Q", 0, 0}, - { XK_F3, XK_NO_MOD, "\033OR" , 0, 0}, - { XK_F3, /* F15 */ ShiftMask, "\033[1;2R", 0, 0}, - { XK_F3, /* F27 */ ControlMask, "\033[1;5R", 0, 0}, - { XK_F3, /* F39 */ Mod4Mask, "\033[1;6R", 0, 0}, - { XK_F3, /* F51 */ Mod1Mask, "\033[1;3R", 0, 0}, - { XK_F3, /* F63 */ Mod3Mask, "\033[1;4R", 0, 0}, - { XK_F4, XK_NO_MOD, "\033OS" , 0, 0}, - { XK_F4, /* F16 */ ShiftMask, "\033[1;2S", 0, 0}, - { XK_F4, /* F28 */ ControlMask, "\033[1;5S", 0, 0}, - { XK_F4, /* F40 */ Mod4Mask, "\033[1;6S", 0, 0}, - { XK_F4, /* F52 */ Mod1Mask, "\033[1;3S", 0, 0}, - { XK_F5, XK_NO_MOD, "\033[15~", 0, 0}, - { XK_F5, /* F17 */ ShiftMask, "\033[15;2~", 0, 0}, - { XK_F5, /* F29 */ ControlMask, "\033[15;5~", 0, 0}, - { XK_F5, /* F41 */ Mod4Mask, "\033[15;6~", 0, 0}, - { XK_F5, /* F53 */ Mod1Mask, "\033[15;3~", 0, 0}, - { XK_F6, XK_NO_MOD, "\033[17~", 0, 0}, - { XK_F6, /* F18 */ ShiftMask, "\033[17;2~", 0, 0}, - { XK_F6, /* F30 */ ControlMask, "\033[17;5~", 0, 0}, - { XK_F6, /* F42 */ Mod4Mask, "\033[17;6~", 0, 0}, - { XK_F6, /* F54 */ Mod1Mask, "\033[17;3~", 0, 0}, - { XK_F7, XK_NO_MOD, "\033[18~", 0, 0}, - { XK_F7, /* F19 */ ShiftMask, "\033[18;2~", 0, 0}, - { XK_F7, /* F31 */ ControlMask, "\033[18;5~", 0, 0}, - { XK_F7, /* F43 */ Mod4Mask, "\033[18;6~", 0, 0}, - { XK_F7, /* F55 */ Mod1Mask, "\033[18;3~", 0, 0}, - { XK_F8, XK_NO_MOD, "\033[19~", 0, 0}, - { XK_F8, /* F20 */ ShiftMask, "\033[19;2~", 0, 0}, - { XK_F8, /* F32 */ ControlMask, "\033[19;5~", 0, 0}, - { XK_F8, /* F44 */ Mod4Mask, "\033[19;6~", 0, 0}, - { XK_F8, /* F56 */ Mod1Mask, "\033[19;3~", 0, 0}, - { XK_F9, XK_NO_MOD, "\033[20~", 0, 0}, - { XK_F9, /* F21 */ ShiftMask, "\033[20;2~", 0, 0}, - { XK_F9, /* F33 */ ControlMask, "\033[20;5~", 0, 0}, - { XK_F9, /* F45 */ Mod4Mask, "\033[20;6~", 0, 0}, - { XK_F9, /* F57 */ Mod1Mask, "\033[20;3~", 0, 0}, - { XK_F10, XK_NO_MOD, "\033[21~", 0, 0}, - { XK_F10, /* F22 */ ShiftMask, "\033[21;2~", 0, 0}, - { XK_F10, /* F34 */ ControlMask, "\033[21;5~", 0, 0}, - { XK_F10, /* F46 */ Mod4Mask, "\033[21;6~", 0, 0}, - { XK_F10, /* F58 */ Mod1Mask, "\033[21;3~", 0, 0}, - { XK_F11, XK_NO_MOD, "\033[23~", 0, 0}, - { XK_F11, /* F23 */ ShiftMask, "\033[23;2~", 0, 0}, - { XK_F11, /* F35 */ ControlMask, "\033[23;5~", 0, 0}, - { XK_F11, /* F47 */ Mod4Mask, "\033[23;6~", 0, 0}, - { XK_F11, /* F59 */ Mod1Mask, "\033[23;3~", 0, 0}, - { XK_F12, XK_NO_MOD, "\033[24~", 0, 0}, - { XK_F12, /* F24 */ ShiftMask, "\033[24;2~", 0, 0}, - { XK_F12, /* F36 */ ControlMask, "\033[24;5~", 0, 0}, - { XK_F12, /* F48 */ Mod4Mask, "\033[24;6~", 0, 0}, - { XK_F12, /* F60 */ Mod1Mask, "\033[24;3~", 0, 0}, - { XK_F13, XK_NO_MOD, "\033[1;2P", 0, 0}, - { XK_F14, XK_NO_MOD, "\033[1;2Q", 0, 0}, - { XK_F15, XK_NO_MOD, "\033[1;2R", 0, 0}, - { XK_F16, XK_NO_MOD, "\033[1;2S", 0, 0}, - { XK_F17, XK_NO_MOD, "\033[15;2~", 0, 0}, - { XK_F18, XK_NO_MOD, "\033[17;2~", 0, 0}, - { XK_F19, XK_NO_MOD, "\033[18;2~", 0, 0}, - { XK_F20, XK_NO_MOD, "\033[19;2~", 0, 0}, - { XK_F21, XK_NO_MOD, "\033[20;2~", 0, 0}, - { XK_F22, XK_NO_MOD, "\033[21;2~", 0, 0}, - { XK_F23, XK_NO_MOD, "\033[23;2~", 0, 0}, - { XK_F24, XK_NO_MOD, "\033[24;2~", 0, 0}, - { XK_F25, XK_NO_MOD, "\033[1;5P", 0, 0}, - { XK_F26, XK_NO_MOD, "\033[1;5Q", 0, 0}, - { XK_F27, XK_NO_MOD, "\033[1;5R", 0, 0}, - { XK_F28, XK_NO_MOD, "\033[1;5S", 0, 0}, - { XK_F29, XK_NO_MOD, "\033[15;5~", 0, 0}, - { XK_F30, XK_NO_MOD, "\033[17;5~", 0, 0}, - { XK_F31, XK_NO_MOD, "\033[18;5~", 0, 0}, - { XK_F32, XK_NO_MOD, "\033[19;5~", 0, 0}, - { XK_F33, XK_NO_MOD, "\033[20;5~", 0, 0}, - { XK_F34, XK_NO_MOD, "\033[21;5~", 0, 0}, - { XK_F35, XK_NO_MOD, "\033[23;5~", 0, 0}, -}; - -/* - * Selection types' masks. - * Use the same masks as usual. - * Button1Mask is always unset, to make masks match between ButtonPress. - * ButtonRelease and MotionNotify. - * If no match is found, regular selection is used. - */ -static uint selmasks[] = { - [SEL_RECTANGULAR] = Mod1Mask, -}; - -/* - * Printable characters in ASCII, used to estimate the advance width - * of single wide characters. - */ -static char ascii_printable[] = - " !\"#$%&'()*+,-./0123456789:;<=>?" - "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" - "`abcdefghijklmnopqrstuvwxyz{|}~"; -- cgit v1.2.3 From 0414f6257ae527171d21ee67ab10ab4562aff827 Mon Sep 17 00:00:00 2001 From: "Sebastian J. Bronner" Date: Wed, 16 Oct 2019 00:07:42 +0200 Subject: Replace deprecated $startdir with $BUILDDIR --- .SRCINFO | 2 +- PKGBUILD | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index 90389cb..dd4e44f 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = st pkgdesc = A simple virtual terminal emulator for X. pkgver = 0.8.2 - pkgrel = 4 + pkgrel = 5 url = http://st.suckless.org arch = i686 arch = x86_64 diff --git a/PKGBUILD b/PKGBUILD index 19eeba5..7a42a7a 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -5,7 +5,7 @@ pkgname=st pkgver=0.8.2 -pkgrel=4 +pkgrel=5 pkgdesc='A simple virtual terminal emulator for X.' arch=('i686' 'x86_64' 'armv7h') license=('MIT') @@ -20,7 +20,7 @@ prepare() { # This package provides a mechanism to provide a custom config.h. Multiple # configuration states are determined by the presence of two files in - # $startdir: + # $BUILDDIR: # # * config.h: The user has supplied his or her configuration. The file will # be copied to $srcdir and used during build. @@ -37,10 +37,10 @@ prepare() { # future runs will proceed with default values due to the presence of # config.def.h. abort= - if [ -e "$startdir/config.h" ] + if [ -e "$BUILDDIR/config.h" ] then - cp "$startdir/config.h" "$pkgname-$pkgver" - elif [ ! -e "$startdir/config.def.h" ] + cp "$BUILDDIR/config.h" "$pkgname-$pkgver" + elif [ ! -e "$BUILDDIR/config.def.h" ] then abort=1 msg='This package can be configured in config.h. Copy provided ' @@ -48,7 +48,7 @@ prepare() { msg+='config.def.h as it is to use default values. Then rerun makepkg.' error "$msg" fi - cp "$pkgname-$pkgver/config.def.h" "$startdir" + cp "$pkgname-$pkgver/config.def.h" "$BUILDDIR" test -z "$abort" } -- cgit v1.2.3 From c9eb9f5381f48a31621f38d9388c98458287cf97 Mon Sep 17 00:00:00 2001 From: "Sebastian J. Bronner" Date: Wed, 16 Oct 2019 10:24:40 +0200 Subject: Adjust initial message about configuration for clarity --- .SRCINFO | 2 +- .gitignore | 2 ++ PKGBUILD | 9 +++++---- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index dd4e44f..620cc42 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = st pkgdesc = A simple virtual terminal emulator for X. pkgver = 0.8.2 - pkgrel = 5 + pkgrel = 6 url = http://st.suckless.org arch = i686 arch = x86_64 diff --git a/.gitignore b/.gitignore index d59381f..2d32340 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ /*.pkg.tar.xz +/config.def.h +/config.h /pkg/ /src/ /st-*.tar.gz diff --git a/PKGBUILD b/PKGBUILD index 7a42a7a..8a0056e 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -5,7 +5,7 @@ pkgname=st pkgver=0.8.2 -pkgrel=5 +pkgrel=6 pkgdesc='A simple virtual terminal emulator for X.' arch=('i686' 'x86_64' 'armv7h') license=('MIT') @@ -43,9 +43,10 @@ prepare() { elif [ ! -e "$BUILDDIR/config.def.h" ] then abort=1 - msg='This package can be configured in config.h. Copy provided ' - msg+='config.def.h to config.h and modify to change configuration. Leave ' - msg+='config.def.h as it is to use default values. Then rerun makepkg.' + msg='This package can be configured in config.h. Copy config.def.h just ' + msg+='placed into the package directory to config.h and modify it to ' + msg+='change the configuration. Or just leave it alone to use default ' + msg+='values. Then restart the build process.' error "$msg" fi cp "$pkgname-$pkgver/config.def.h" "$BUILDDIR" -- cgit v1.2.3 From 559118ce7ef613cdabc72e8f69ae862f60bfba15 Mon Sep 17 00:00:00 2001 From: "Sebastian J. Bronner" Date: Wed, 16 Oct 2019 14:13:13 +0200 Subject: Code cleanup and terminfo bug removal --- .SRCINFO | 6 +++--- PKGBUILD | 32 ++++++++++++++++++++------------ 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index 620cc42..ff171f7 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,8 +1,8 @@ pkgbase = st pkgdesc = A simple virtual terminal emulator for X. pkgver = 0.8.2 - pkgrel = 6 - url = http://st.suckless.org + pkgrel = 7 + url = https://st.suckless.org arch = i686 arch = x86_64 arch = armv7h @@ -10,7 +10,7 @@ pkgbase = st makedepends = libxext makedepends = ncurses depends = libxft - source = http://dl.suckless.org/st/st-0.8.2.tar.gz + source = https://dl.suckless.org/st/st-0.8.2.tar.gz sha256sums = aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35 pkgname = st diff --git a/PKGBUILD b/PKGBUILD index 8a0056e..7ad8f2e 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -5,18 +5,24 @@ pkgname=st pkgver=0.8.2 -pkgrel=6 +pkgrel=7 pkgdesc='A simple virtual terminal emulator for X.' arch=('i686' 'x86_64' 'armv7h') license=('MIT') depends=(libxft) makedepends=(libxext ncurses) -url="http://st.suckless.org" -source=(http://dl.suckless.org/st/$pkgname-$pkgver.tar.gz) +url=https://st.suckless.org +source=(https://dl.suckless.org/$pkgname/$pkgname-$pkgver.tar.gz) sha256sums=('aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35') +_makedir=$pkgname-$pkgver +_makeopts="--directory=$_makedir" prepare() { - sed '/@tic/d' -i $pkgname-$pkgver/Makefile + # Do not install terminfo files, as they conflict with ncurses. + sed -r \ + -e '/^[[:space:]]+tic\>/d' \ + -e '/^[[:space:]]+@echo .* terminfo/d' \ + -i $_makedir/Makefile # This package provides a mechanism to provide a custom config.h. Multiple # configuration states are determined by the presence of two files in @@ -39,7 +45,7 @@ prepare() { abort= if [ -e "$BUILDDIR/config.h" ] then - cp "$BUILDDIR/config.h" "$pkgname-$pkgver" + cp "$BUILDDIR/config.h" "$_makedir" elif [ ! -e "$BUILDDIR/config.def.h" ] then abort=1 @@ -49,18 +55,20 @@ prepare() { msg+='values. Then restart the build process.' error "$msg" fi - cp "$pkgname-$pkgver/config.def.h" "$BUILDDIR" + cp "$_makedir/config.def.h" "$BUILDDIR" test -z "$abort" } build() { - cd $srcdir/$pkgname-$pkgver - make X11INC=/usr/include/X11 X11LIB=/usr/lib/X11 + make $_makeopts X11INC=/usr/include/X11 X11LIB=/usr/lib/X11 } package() { - cd $srcdir/$pkgname-$pkgver - make PREFIX=/usr DESTDIR="$pkgdir" install - install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" - install -Dm644 README "$pkgdir/usr/share/doc/$pkgname/README" + local installopts='--mode 0644 -D --target-directory' + local shrdir="$pkgdir/usr/share" + local licdir="$shrdir/licenses/$pkgname" + local docdir="$shrdir/doc/$pkgname" + make $_makeopts PREFIX=/usr DESTDIR="$pkgdir" install + install $installopts "$licdir" "$_makedir/LICENSE" + install $installopts "$docdir" "$_makedir/README" } -- cgit v1.2.3 From 07a231717fe38e030a6a3f9c696784d3858990df Mon Sep 17 00:00:00 2001 From: "Sebastian J. Bronner" Date: Wed, 30 Oct 2019 23:46:14 +0100 Subject: Improve availability of functional terminfo entries --- .SRCINFO | 6 ++++- PKGBUILD | 29 ++++++++++---------- README.terminfo.rst | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++ terminfo.patch | 12 +++++++++ 4 files changed, 109 insertions(+), 15 deletions(-) create mode 100644 README.terminfo.rst create mode 100644 terminfo.patch diff --git a/.SRCINFO b/.SRCINFO index ff171f7..26789ae 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = st pkgdesc = A simple virtual terminal emulator for X. pkgver = 0.8.2 - pkgrel = 7 + pkgrel = 8 url = https://st.suckless.org arch = i686 arch = x86_64 @@ -11,7 +11,11 @@ pkgbase = st makedepends = ncurses depends = libxft source = https://dl.suckless.org/st/st-0.8.2.tar.gz + source = terminfo.patch + source = README.terminfo.rst sha256sums = aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35 + sha256sums = b282c0b963a24299d02e485af30260d237ca2e8e6b06282d385022c9c10a0950 + sha256sums = 9a1b764cedd3a6288cc6601a3cdce06f4ab993f44de7aea5afd69511c13df7c0 pkgname = st diff --git a/PKGBUILD b/PKGBUILD index 7ad8f2e..e3196d1 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -5,24 +5,24 @@ pkgname=st pkgver=0.8.2 -pkgrel=7 +pkgrel=8 pkgdesc='A simple virtual terminal emulator for X.' arch=('i686' 'x86_64' 'armv7h') license=('MIT') depends=(libxft) makedepends=(libxext ncurses) url=https://st.suckless.org -source=(https://dl.suckless.org/$pkgname/$pkgname-$pkgver.tar.gz) -sha256sums=('aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35') -_makedir=$pkgname-$pkgver -_makeopts="--directory=$_makedir" +source=(https://dl.suckless.org/$pkgname/$pkgname-$pkgver.tar.gz + terminfo.patch + README.terminfo.rst) +sha256sums=(aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35 + b282c0b963a24299d02e485af30260d237ca2e8e6b06282d385022c9c10a0950 + 9a1b764cedd3a6288cc6601a3cdce06f4ab993f44de7aea5afd69511c13df7c0) +_sourcedir=$pkgname-$pkgver +_makeopts="--directory=$_sourcedir" prepare() { - # Do not install terminfo files, as they conflict with ncurses. - sed -r \ - -e '/^[[:space:]]+tic\>/d' \ - -e '/^[[:space:]]+@echo .* terminfo/d' \ - -i $_makedir/Makefile + patch --directory="$_sourcedir" --strip=0 < terminfo.patch # This package provides a mechanism to provide a custom config.h. Multiple # configuration states are determined by the presence of two files in @@ -45,7 +45,7 @@ prepare() { abort= if [ -e "$BUILDDIR/config.h" ] then - cp "$BUILDDIR/config.h" "$_makedir" + cp "$BUILDDIR/config.h" "$_sourcedir" elif [ ! -e "$BUILDDIR/config.def.h" ] then abort=1 @@ -55,7 +55,7 @@ prepare() { msg+='values. Then restart the build process.' error "$msg" fi - cp "$_makedir/config.def.h" "$BUILDDIR" + cp "$_sourcedir/config.def.h" "$BUILDDIR" test -z "$abort" } @@ -69,6 +69,7 @@ package() { local licdir="$shrdir/licenses/$pkgname" local docdir="$shrdir/doc/$pkgname" make $_makeopts PREFIX=/usr DESTDIR="$pkgdir" install - install $installopts "$licdir" "$_makedir/LICENSE" - install $installopts "$docdir" "$_makedir/README" + install $installopts "$licdir" "$_sourcedir/LICENSE" + install $installopts "$docdir" "$_sourcedir/README" + install $installopts "$docdir" README.terminfo.rst } diff --git a/README.terminfo.rst b/README.terminfo.rst new file mode 100644 index 0000000..c5f4b6d --- /dev/null +++ b/README.terminfo.rst @@ -0,0 +1,77 @@ +Terminfo Entries +================ + +:Author: Sebastian J. Bronner +:Date: 2019-10-30 +:URL: https://aur.archlinux.org/packages/st + +The Problem +----------- + +Most Linux-based distributions will have the bulk of their terminfo entries in +the ``ncurses`` package. These live in ``/usr/share/terminfo``. There you will +find several entries for ``st``. These, however, do not work well with current +versions of ``st``. You need the terminfo entries supplied with ``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. + +The Solution +------------ + +The ``ncurses`` package should stop shipping terminfo entries for ``st``. These +should then be provided in ``/usr/share/terminfo`` by this (and other) ``st`` +packages. The conflicting terminfo entries are + +* ``st`` and +* ``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 +-------------- + +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 symlink the terminfo entries included in this package into her +user-level terminfo database using the following commands: + +.. code:: shell + + mkdir ~/.terminfo/s + ln -s /usr/share/st/terminfo/s/* ~/.terminfo/s diff --git a/terminfo.patch b/terminfo.patch new file mode 100644 index 0000000..e91e91f --- /dev/null +++ b/terminfo.patch @@ -0,0 +1,12 @@ +--- Makefile 2019-02-09 12:50:41.000000000 +0100 ++++ Makefile 2019-10-30 23:39:55.775193275 +0100 +@@ -47,7 +47,8 @@ + mkdir -p $(DESTDIR)$(MANPREFIX)/man1 + sed "s/VERSION/$(VERSION)/g" < st.1 > $(DESTDIR)$(MANPREFIX)/man1/st.1 + chmod 644 $(DESTDIR)$(MANPREFIX)/man1/st.1 +- 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. + + uninstall: -- cgit v1.2.3 From eb4d0d26b0c8f6cf9a44e79cc1ab7dbf6466d795 Mon Sep 17 00:00:00 2001 From: "Sebastian J. Bronner" Date: Thu, 31 Oct 2019 01:56:15 +0100 Subject: Change message about config.h on first run from error to warning --- .SRCINFO | 2 +- PKGBUILD | 41 +++++++++++++++++++---------------------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index 26789ae..05aa389 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = st pkgdesc = A simple virtual terminal emulator for X. pkgver = 0.8.2 - pkgrel = 8 + pkgrel = 9 url = https://st.suckless.org arch = i686 arch = x86_64 diff --git a/PKGBUILD b/PKGBUILD index e3196d1..299e8f4 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -5,7 +5,7 @@ pkgname=st pkgver=0.8.2 -pkgrel=8 +pkgrel=9 pkgdesc='A simple virtual terminal emulator for X.' arch=('i686' 'x86_64' 'armv7h') license=('MIT') @@ -28,35 +28,32 @@ prepare() { # configuration states are determined by the presence of two files in # $BUILDDIR: # - # * config.h: The user has supplied his or her configuration. The file will - # be copied to $srcdir and used during build. - # * config.def.h only: The user was previously made aware of the - # configuration options and has opted not to make any configuration - # changes. The package is built using default values. - # * neither file: Initial state. The user receives a message on how to - # configure this package. The build process is aborted after the copy - # operation below. + # config.h config.def.h state + # ======== ============ ===== + # absent absent Initial state. The user receives a message on how + # to configure this package. + # absent present The user was previously made aware of the + # configuration options and has not made any + # configuration changes. The package is built using + # default values. + # present The user has supplied his or her configuration. The + # file will be copied to $srcdir and used during + # build. # - # After this test, config.def.h is copied from $srcdir to provide an up to - # date template for the user. If neither file was present initially, further - # build steps are aborted at this point. Even if no config.h is provided, - # future runs will proceed with default values due to the presence of - # config.def.h. - abort= + # After this test, config.def.h is copied from $srcdir to $BUILDDIR to + # provide an up to date template for the user. if [ -e "$BUILDDIR/config.h" ] then cp "$BUILDDIR/config.h" "$_sourcedir" elif [ ! -e "$BUILDDIR/config.def.h" ] then - abort=1 - msg='This package can be configured in config.h. Copy config.def.h just ' - msg+='placed into the package directory to config.h and modify it to ' - msg+='change the configuration. Or just leave it alone to use default ' - msg+='values. Then restart the build process.' - error "$msg" + msg='This package can be configured in config.h. Copy the config.def.h ' + msg+='that was just placed into the package directory to config.h and ' + msg+='modify it to change the configuration. Or just leave it alone to ' + msg+='continue to use default values.' + warning "$msg" fi cp "$_sourcedir/config.def.h" "$BUILDDIR" - test -z "$abort" } build() { -- cgit v1.2.3 From 0ce8ba0ecf338a512b2f275a305fca7012b2271d Mon Sep 17 00:00:00 2001 From: "Sebastian J. Bronner" Date: Thu, 7 Nov 2019 00:19:19 +0100 Subject: Update terminfo explanation and workaround --- PKGBUILD | 8 +++---- README.terminfo.rst | 69 +++++++++++++++++++++++++++++++---------------------- terminfo.patch | 23 ++++++++++++++---- 3 files changed, 63 insertions(+), 37 deletions(-) diff --git a/PKGBUILD b/PKGBUILD index 299e8f4..7c5e658 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -5,19 +5,18 @@ pkgname=st pkgver=0.8.2 -pkgrel=9 +pkgrel=10 pkgdesc='A simple virtual terminal emulator for X.' arch=('i686' 'x86_64' 'armv7h') license=('MIT') depends=(libxft) -makedepends=(libxext ncurses) url=https://st.suckless.org source=(https://dl.suckless.org/$pkgname/$pkgname-$pkgver.tar.gz terminfo.patch README.terminfo.rst) sha256sums=(aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35 - b282c0b963a24299d02e485af30260d237ca2e8e6b06282d385022c9c10a0950 - 9a1b764cedd3a6288cc6601a3cdce06f4ab993f44de7aea5afd69511c13df7c0) + bf6c8b73a606a8e513c7919d91f93ed7aeb5f44e80269bb244cc01659145a5ea + 0ebcbba881832adf9c98ce9fe7667c851d3cc3345077cb8ebe32702698665be2) _sourcedir=$pkgname-$pkgver _makeopts="--directory=$_sourcedir" @@ -69,4 +68,5 @@ package() { install $installopts "$licdir" "$_sourcedir/LICENSE" install $installopts "$docdir" "$_sourcedir/README" install $installopts "$docdir" README.terminfo.rst + install $installopts "$shrdir/$pkgname" "$_sourcedir/st.info" } diff --git a/README.terminfo.rst b/README.terminfo.rst index c5f4b6d..cd724d0 100644 --- a/README.terminfo.rst +++ b/README.terminfo.rst @@ -2,16 +2,16 @@ Terminfo Entries ================ :Author: Sebastian J. Bronner -:Date: 2019-10-30 +:Date: 2019-11-06 :URL: https://aur.archlinux.org/packages/st The Problem ----------- -Most Linux-based distributions will have the bulk of their terminfo entries in -the ``ncurses`` package. These live in ``/usr/share/terminfo``. There you will -find several entries for ``st``. These, however, do not work well with current -versions of ``st``. You need the terminfo entries supplied with ``st``. +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``: @@ -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`` 0.5.3.git20190105-1. -The Solution ------------- +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 -The ``ncurses`` package should stop shipping terminfo entries for ``st``. These -should then be provided in ``/usr/share/terminfo`` by this (and other) ``st`` -packages. The conflicting terminfo entries are +Complications +------------- -* ``st`` and -* ``st-256color``. +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. -Additional entries that could be considered for removal from ``ncurses`` are +| https://lists.gnu.org/archive/html/bug-ncurses/2019-10/msg00071.html +| https://lists.suckless.org/hackers/1911/17006.html -* ``st-0.6``, -* ``st-0.7``, -* ``st-16color``, -* ``st-direct``, -* ``stterm`` (for distributions that rename ``st`` to ``stterm``), -* ``stterm-16color``, and -* ``stterm-256color``. +(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``). -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. +``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 symlink the terminfo entries included in this package into her -user-level terminfo database using the following commands: +above, can populate a user-level terminfo database from the terminfo entries +supplied by ``st``. The following command will do this: .. code:: shell - mkdir ~/.terminfo/s - ln -s /usr/share/st/terminfo/s/* ~/.terminfo/s + 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. diff --git a/terminfo.patch b/terminfo.patch index e91e91f..0f2ae88 100644 --- a/terminfo.patch +++ b/terminfo.patch @@ -1,12 +1,25 @@ ---- Makefile 2019-02-09 12:50:41.000000000 +0100 -+++ Makefile 2019-10-30 23:39:55.775193275 +0100 -@@ -47,7 +47,8 @@ +--- Makefile.old 2019-02-09 12:50:41.000000000 +0100 ++++ Makefile 2019-11-07 00:00:24.487953923 +0100 +@@ -47,7 +47,6 @@ mkdir -p $(DESTDIR)$(MANPREFIX)/man1 sed "s/VERSION/$(VERSION)/g" < st.1 > $(DESTDIR)$(MANPREFIX)/man1/st.1 chmod 644 $(DESTDIR)$(MANPREFIX)/man1/st.1 - 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. 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, -- cgit v1.2.3 From 0fe04350ef58e834d2032d326fc5908972df1904 Mon Sep 17 00:00:00 2001 From: "Sebastian J. Bronner" Date: Thu, 7 Nov 2019 00:23:53 +0100 Subject: Update .SRCINFO from last commit --- .SRCINFO | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index 05aa389..d3b12ec 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,21 +1,19 @@ pkgbase = st pkgdesc = A simple virtual terminal emulator for X. pkgver = 0.8.2 - pkgrel = 9 + pkgrel = 10 url = https://st.suckless.org arch = i686 arch = x86_64 arch = armv7h license = MIT - makedepends = libxext - makedepends = ncurses depends = libxft source = https://dl.suckless.org/st/st-0.8.2.tar.gz source = terminfo.patch source = README.terminfo.rst sha256sums = aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35 - sha256sums = b282c0b963a24299d02e485af30260d237ca2e8e6b06282d385022c9c10a0950 - sha256sums = 9a1b764cedd3a6288cc6601a3cdce06f4ab993f44de7aea5afd69511c13df7c0 + sha256sums = bf6c8b73a606a8e513c7919d91f93ed7aeb5f44e80269bb244cc01659145a5ea + sha256sums = 0ebcbba881832adf9c98ce9fe7667c851d3cc3345077cb8ebe32702698665be2 pkgname = st -- cgit v1.2.3 From 9e75dfb7c30e78bfefc0fe70730442a2c8bafbd0 Mon Sep 17 00:00:00 2001 From: "Sebastian J. Bronner" Date: Wed, 29 Apr 2020 19:35:11 +0200 Subject: Build release 0.8.3 --- .SRCINFO | 10 +++++----- PKGBUILD | 8 ++++---- terminfo.patch | 15 --------------- 3 files changed, 9 insertions(+), 24 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index d3b12ec..ed554aa 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,18 +1,18 @@ pkgbase = st pkgdesc = A simple virtual terminal emulator for X. - pkgver = 0.8.2 - pkgrel = 10 + pkgver = 0.8.3 + pkgrel = 1 url = https://st.suckless.org arch = i686 arch = x86_64 arch = armv7h license = MIT depends = libxft - source = https://dl.suckless.org/st/st-0.8.2.tar.gz + source = https://dl.suckless.org/st/st-0.8.3.tar.gz source = terminfo.patch source = README.terminfo.rst - sha256sums = aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35 - sha256sums = bf6c8b73a606a8e513c7919d91f93ed7aeb5f44e80269bb244cc01659145a5ea + sha256sums = 939ae3da237e7c9489694853c205c7cbd5f2a2f0c17fe41a07477f1df8e28552 + sha256sums = f9deea445a5c6203a0e8e699f3c3b55e27275f17fb408562c4dd5d649edeea23 sha256sums = 0ebcbba881832adf9c98ce9fe7667c851d3cc3345077cb8ebe32702698665be2 pkgname = st diff --git a/PKGBUILD b/PKGBUILD index 7c5e658..ce8e249 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -4,8 +4,8 @@ # Contributor: Christoph Vigano pkgname=st -pkgver=0.8.2 -pkgrel=10 +pkgver=0.8.3 +pkgrel=1 pkgdesc='A simple virtual terminal emulator for X.' arch=('i686' 'x86_64' 'armv7h') license=('MIT') @@ -14,8 +14,8 @@ url=https://st.suckless.org source=(https://dl.suckless.org/$pkgname/$pkgname-$pkgver.tar.gz terminfo.patch README.terminfo.rst) -sha256sums=(aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35 - bf6c8b73a606a8e513c7919d91f93ed7aeb5f44e80269bb244cc01659145a5ea +sha256sums=(939ae3da237e7c9489694853c205c7cbd5f2a2f0c17fe41a07477f1df8e28552 + f9deea445a5c6203a0e8e699f3c3b55e27275f17fb408562c4dd5d649edeea23 0ebcbba881832adf9c98ce9fe7667c851d3cc3345077cb8ebe32702698665be2) _sourcedir=$pkgname-$pkgver _makeopts="--directory=$_sourcedir" diff --git a/terminfo.patch b/terminfo.patch index 0f2ae88..71dc270 100644 --- a/terminfo.patch +++ b/terminfo.patch @@ -8,18 +8,3 @@ @echo Please see the README file regarding the terminfo entry of st. 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, -- cgit v1.2.3