master
Raw Download raw file
  1## Why does st not handle utmp entries?
  2
  3Use the excellent tool of [utmp](http://git.suckless.org/utmp/) for this task.
  4
  5## Some _random program_ complains that st is unknown/not recognised/unsupported/whatever!
  6
  7It means that st doesn’t have any terminfo entry on your system. Chances are
  8you did not `make install`. If you just want to test it without installing it,
  9you can manualy run `tic -s st.info`.
 10
 11## Nothing works, and nothing is said about an unknown terminal!
 12
 13* Some programs just assume they’re running in xterm i.e. they don’t rely on
 14  terminfo. What you see is the current state of the “xterm compliance”.
 15* Some programs don’t complain about the lacking st description and default to
 16  another terminal. In that case see the question about terminfo.
 17
 18## I get some weird glitches/visual bug on _random program_!
 19
 20Try launching it with a different TERM: $ TERM=xterm myapp. toe(1) will give
 21you a list of available terminals, but you’ll most likely switch between xterm,
 22st or st-256color. The default value for TERM can be changed in config.h
 23(TNAME).
 24
 25## How do I scroll back up?
 26
 27Using a terminal multiplexer.
 28
 29* `st -e tmux` using C-b [
 30* `st -e screen` using C-a ESC
 31
 32## Why doesn't the Del key work in some programs?
 33
 34Taken from the terminfo manpage:
 35
 36	If the terminal has a keypad that transmits codes when the keys
 37	are pressed, this information can be given. Note that it is not
 38	possible to handle terminals where the keypad only works in
 39	local (this applies, for example, to the unshifted HP 2621 keys).
 40	If the keypad can be set to transmit or not transmit, give these
 41	codes as smkx and rmkx. Otherwise the keypad is assumed to
 42	always transmit.
 43
 44In the st case smkx=E[?1hE= and rmkx=E[?1lE>, so it is mandatory that
 45applications which want to test against keypad keys send these
 46sequences.
 47
 48But buggy applications (like bash and irssi, for example) don't do this. A fast
 49solution for them is to use the following command:
 50
 51	$ printf '\033[?1h\033=' >/dev/tty
 52
 53or
 54	$ tput smkx
 55
 56In the case of bash, readline is used. Readline has a different note in its
 57manpage about this issue:
 58
 59	enable-keypad (Off)
 60		When set to On, readline will try to enable the
 61		application keypad when it is called. Some systems
 62		need this to enable arrow keys.
 63
 64Adding this option to your .inputrc will fix the keypad problem for all
 65applications using readline.
 66
 67If you are using zsh, then read the zsh FAQ
 68<http://zsh.sourceforge.net/FAQ/zshfaq03.html#l25>:
 69
 70	It should be noted that the O / [ confusion can occur with other keys
 71	such as Home and End. Some systems let you query the key sequences
 72	sent by these keys from the system's terminal database, terminfo.
 73	Unfortunately, the key sequences given there typically apply to the
 74	mode that is not the one zsh uses by default (it's the "application"
 75	mode rather than the "raw" mode). Explaining the use of terminfo is
 76	outside of the scope of this FAQ, but if you wish to use the key
 77	sequences given there you can tell the line editor to turn on
 78	"application" mode when it starts and turn it off when it stops:
 79
 80		function zle-line-init () { echoti smkx }
 81		function zle-line-finish () { echoti rmkx }
 82		zle -N zle-line-init
 83		zle -N zle-line-finish
 84
 85Putting these lines into your .zshrc will fix the problems.
 86
 87## How can I use meta in 8bit mode?
 88
 89St supports meta in 8bit mode, but the default terminfo entry doesn't
 90use this capability. If you want it, you have to use the 'st-meta' value
 91in TERM.
 92
 93## I cannot compile st in OpenBSD
 94
 95OpenBSD lacks librt, despite it being mandatory in POSIX
 96<http://pubs.opengroup.org/onlinepubs/9699919799/utilities/c99.html#tag_20_11_13>.
 97If you want to compile st for OpenBSD you have to remove -lrt from config.mk, and
 98st will compile without any loss of functionality, because all the functions are
 99included in libc on this platform.
100
101## The Backspace Case
102
103St is emulating the Linux way of handling backspace being delete and delete being
104backspace.
105
106This is an issue that was discussed in suckless mailing list
107<http://lists.suckless.org/dev/1404/20697.html>. Here is why some old grumpy
108terminal users wants its backspace to be how he feels it:
109
110	Well, I am going to comment why I want to change the behaviour
111	of this key. When ASCII was defined in 1968, communication
112	with computers was done using punched cards, or hardcopy
113	terminals (basically a typewriter machine connected with the
114	computer using a serial port).  ASCII defines DELETE as 7F,
115	because, in punched-card terms, it means all the holes of the
116	card punched; it is thus a kind of 'physical delete'. In the
117	same way, the BACKSPACE key was a non-destructive backspace,
118	as on a typewriter.  So, if you wanted to delete a character,
119	you had to BACKSPACE and then DELETE.  Another use of BACKSPACE
120	was to type accented characters, for example 'a BACKSPACE `'.
121	The VT100 had no BACKSPACE key; it was generated using the
122	CONTROL key as another control character (CONTROL key sets to
123	0 b7 b6 b5, so it converts H (code 0x48) into BACKSPACE (code
124	0x08)), but it had a DELETE key in a similar position where
125	the BACKSPACE key is located today on common PC keyboards.
126	All the terminal emulators emulated the difference between
127	these keys correctly: the backspace key generated a BACKSPACE
128	(^H) and delete key generated a DELETE (^?).
129
130	But a problem arose when Linus Torvalds wrote Linux. Unlike
131	earlier terminals, the Linux virtual terminal (the terminal
132	emulator integrated in the kernel) returned a DELETE when
133	backspace was pressed, due to the VT100 having a DELETE key in
134	the same position.  This created a lot of problems (see [1]
135	and [2]). Since Linux has become the king, a lot of terminal
136	emulators today generate a DELETE when the backspace key is
137	pressed in order to avoid problems with Linux. The result is
138	that the only way of generating a BACKSPACE on these systems
139	is by using CONTROL + H. (I also think that emacs had an
140	important point here because the CONTROL + H prefix is used
141	in emacs in some commands (help commands).)
142
143	From point of view of the kernel, you can change the key
144	for deleting a previous character with stty erase. When you
145	connect a real terminal into a machine you describe the type
146	of terminal, so getty configures the correct value of stty
147	erase for this terminal. In the case of terminal emulators,
148	however, you don't have any getty that can set the correct
149	value of stty erase, so you always get the default value.
150	For this reason, it is necessary to add 'stty erase ^H' to your
151	profile if you have changed the value of the backspace key.
152	Of course, another solution is for st itself to modify the
153	value of stty erase.  I usually have the inverse problem:
154	when I connect to non-Unix machines, I have to press CONTROL +
155	h to get a BACKSPACE. The inverse problem occurs when a user
156	connects to my Unix machines from a different system with a
157	correct backspace key.
158
159	[1] http://www.ibb.net/~anne/keyboard.html
160	[2] http://www.tldp.org/HOWTO/Keyboard-and-Console-HOWTO-5.html
161
162## But I really want the old grumpy behaviour of my terminal
163
164Apply [1].
165
166[1] http://st.suckless.org/patches/delkey
167