docs: update

This commit is contained in:
Dylan Araps 2020-08-04 17:50:34 +03:00
parent f058ec33f3
commit 7e032f6f96
No known key found for this signature in database
GPG Key ID: 46D62DD9F1DE636E
1 changed files with 39 additions and 11 deletions

50
README
View File

@ -16,17 +16,7 @@ ________________________________________________________________________________
* correctly handles files with funky names (newlines, etc)
* works with very small terminal sizes.
*** SIGWINCH and the size parameter to stty are not /yet/ POSIX but will be.
- https://austingroupbugs.net/view.php?id=1053
- https://austingroupbugs.net/view.php?id=1151
*** VT100 escape sequences (widely available) are used in place of tput. A few
non-VT100 sequences /are/ needed however.
- IL vt102 \033[L: controls upwards scroll. (required)
- ? xterm \033[?1049[lh]: controls alternate screen. (optional)
- DECTCEM vt520 \033[?25[lh]: controls cursor visibility. (optional)
*** see portability notes towards bottom of README.
keybinds
@ -148,6 +138,44 @@ Example scripts:
esac
portability notes
________________________________________________________________________________
* SIGWINCH and the size parameter to stty are not /yet/ POSIX (but will be).
- https://austingroupbugs.net/view.php?id=1053
- https://austingroupbugs.net/view.php?id=1151
* VT100/ANSI escape sequences (widely available) are used in place of tput. A
few non-VT100 sequences /are/ needed however.
- IL vt102 \033[L: controls upwards scroll. (required)
- ? xterm \033[?1049[lh]: controls alternate screen. (optional)
- DECTCEM vt520 \033[?25[lh]: controls cursor visibility. (optional)
Why avoid tput?
POSIX only specifies three operands for tput; clear, init and reset [0]. We
cannot rely on anything additional working across operating systems and tput
implementations.
Further, a tput implementation may use terminfo names (example: setaf) or
termcap names (example: AF). We cannot blindly use tput and expect it to
work everywhere. [1]
We could simply follow terminfo and yell at anyone who doesn't though I'm
also not too keen on requiring tput as a dependency as not all systems have
it. I've found that raw VT100/VT102 sequences work widely.
Neofetch uses them and supports a wide array of operating systems (Linux,
IRIX, AIX, HP-UX, various BSDs, Haiku, MINIX, OpenIndiana, FreeMiNT, etc.
YMMV
[0] https://pubs.opengroup.org/onlinepubs/009695399/utilities/tput.html
[1] https://invisible-island.net/ncurses/man/tput.1.html#h2-PORTABILITY
implementation details
________________________________________________________________________________