-
Notifications
You must be signed in to change notification settings - Fork 1
/
README
288 lines (219 loc) · 10.7 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
sysline -- status-line display utility for Linux
1. INTRO
--------
This is a Linux port of the BSD sysline utility. I don't know how it
happened, but it sort of became my adopted child. The original sources
are included here in ./BSD.
2. SPARE ME THE DETAILS
-----------------------
cat QuickStart
3. INSTALL
----------
The program requires presence of the /proc file-system; if you don't
have it, you might consider recompiling your kernel (if you don't have
a kernel, consider getting an other kind of OS first).
Run ./Configure to create Makefile and config.h.
It shouldn't really be necessary to edit these any further, though there
may eventually be some things you want to modify or customize.
Running `make' will compile sysline, `make install' will install
sysline and sysline.1 in the paths as per the Makefile (if you install
by hand, run strip on the binary first). If you want to have `cs'
installed as well (see below), edit the Makefile accordingly.
If `make' fails with an error like:
``*** commands commence before first target. Stop.''
you prob. need to remove tabs from empty lines in the Makefile
(either that or get GNU make version 3.73 or later).
After having installed sysline, run the make.termcap-entry or the
make.terminfo-entry script (whichever sysline was compiled for), and
add the output to the relevant database (see below).
4. TERMCAP/TERMINFO REQUIREMENTS
--------------------------------
Your termcap file or terminfo file --whichever applies-- might be
lacking some capabilities that sysline needs or appreciates. Here's an
overview.
The following capabilities are absolutely 100% essential:
termcap capability terminfo equiv. meaning
------------------ --------------- -------
hs hs terminal has status-line
es eslok escapes in status-line ok
ts tsl move to status-line
fs fsl move from status-line
ds dsl clear status-line
The next capabilities are prob. already defined some place, and can be
left unchanged; just check if you have them:
termcap capability terminfo equiv. meaning
------------------ --------------- -------
so smso begin standout (reverse) mode
se rmso end standout (reverse) mode
ce el clear to end-of-line
bl bel audible signal (bell)
These too are capabilities which prob. are already defined some
place, but which might need modifications:
termcap capability terminfo equiv. meaning
------------------ --------------- -------
cs csr set scroll-region
cl clear clear screen and home cursor
cd ed clear to end-of-screen (*
cm cup move cursor to row, column (**
ho home home cursor (**
(* only for a top status-line
(** only for a bottom status-line
The following capabilities are also used, if they are defined; i2
better be present when you're not using the `cs' script (see below);
ws#80 can usually be omitted, unless you want to specify a shorter
status-line than the screen-width:
termcap capability terminfo equiv. meaning
------------------ --------------- -------
i2 is2 initialization string
ws#80 wsl width of status-line
The most convenient way of modifying termcap (or the terminfo database
file) is to paste a referring entry somewhere into that file. The
make.termcap-entry and make.terminfo-entry scripts allow you to create
such an entry with minimal effort.
The invocation of one of these scripts will in fact output two entries:
one for a status-line on the bottom line and one for a status-line on
the top line of the screen. This output is supposed to be directed to a
file, which can then be pasted into the database-file at an appropriate
place. Cinch.
One note about the 'cd' capability-string. This should really clear
from the cursor to the end-of-screen (\E[J), however, what these scripts
generate (\E[K) clears only to the end-of-line. The former would
temporarily erase the status-line, the latter leaves it alone, but has
the side-effect that other programs may occasionally clear too little.
Remedy that by commenting out this modified 'cd' (by placing a period
in front of it: .cd), depending on which annoys you more.
If only there were a way we could clear from the cursor to a specific
position; I'm convinced there is none, but am open to suggestions, even
the less elegant or more exotic ones.
Also note that the entries produced by these scripts refer to entry
'con-unk' only as an example; change to whatever is appropriate for you.
5. COLORIZING THE STATUS-LINE
-----------------------------
The status-line can be given most any color of choice by setting an
environment variable SYSLINE_COLORS (or, if that's Greek to you,
SYSLINE_COLOURS).
This variable is expected to contain the values of attributes and
colors of both the normal and the reversed status-line.
The format of its value is "rv=aa[;bb[;cc...]]:nm=zz[;yy[;xx...]]"
where aa, bb, ... and zz, yy, ... each represent a color-attribute or
a foreground/background-color, separated from one another by a
semi-colon. Those following "rv=" are for the reversed status-line
(which it is 4 out of 5 times), those following "nm=" are for the
normal un-reversed status-line (every 5th display; is this
counterintuitive or what). For clarity, the "rv=" part may be
separated from the "nm=" part with any character like a blank or a
colon, or... -- your chance to be creative! The order of rv or nm is
unimportant.
An example: to have a bold/blue-bg/yellow-fg status-line which
becomes a bold/red-bg/white-fg status-line every fifth display do
SYSLINE_COLORS="rv=1;44;33:nm=1;41;37" on that vt.
Note that all this fancy colorization of the status-line defeats the
purpose of displaying this status-line in normal video, which is to give
the screen a rest every 5th display thereby preventing terminal illness.
Attributes are as follows (incomplete):
0 = all attributes off
1 = intensity 2 (bold)
2 = intensity 0 (half-bright)
4 = underline on
5 = blink on
7 = reverse on
Color codes are as follows:
color foreground background
----- ---------- ----------
black 30 40
red 31 41
green 32 42
yellow 33 43
blue 34 44
magenta 35 45
cyan 36 46
white 37 47
6. OPERATION
------------
Each time before starting sysline you need to take some precautions
to ensure that other programs don't interfere with the status-line.
This may involve setting a scroll-region, but at least involves doing
`stty rows N', where N is the number of rows (lines) in the scroll-
region.
If you have the 'i2/is2' capability in your termcap/terminfo entry,
sysline will set the scroll-region itself upon startup. In this case
the only thing you have to do before starting sysline is `stty rows N',
N being 1 less than the number of lines on the terminal.
If on the other hand you have chosen to leave out or comment out the
'i2/is2' capability from the termcap/terminfo database, you also need
to set the scroll-region yourself, in addition to making the stty call
before starting sysline. Enter my `cs' script: it will do both! As
arguments give it the first and last line of the scroll-region.
Note: if you're going to use `cs', you might want to modify its choice
between GNU's termcap-based `tput', or ncurses' terminfo-based `tput',
or none of the above; in the latter case it uses its own strings.
Example for a 80x30 terminal:
------------------------------
to add status-line:
1. stty rows 29 (or `cs 1 30')
2. TERM=con80x30-s (for bash, zsh; for csh: "set term=con80x30-s")
3. sysline (will set scroll-region using the i2/is2 strings)
to remove status-line:
1. kill -HUP <pid> (tidy up when exiting)
2. TERM=con80x30 (for bash, zsh; for csh: "set term=con80x30")
3. stty rows 30 \ (back to full-size tty)
4. tput csr 1 30 / (or `cs 1 30') (reset scroll-region to normal)
7. FURTHER NOTES AND HINTS
--------------------------
* To run sysline in a 1-line xterm, your termcap/terminfo database
file does not need any of the above mentioned capabilities; just
start sysline with the -w flag and resize the window any way you
like, preferably to 1 line.
Running sysline without the -w flag in a larger xterm --which btw.
would require all the capabilities to be present in the xterm entry--
doesn't make much sense, unless you never intend to resize that
particular window.
* If you compiled sysline for terminfo and you changed the contents of
the terminfo database file, do not forget to run 'tic <terminfo_file>'
to compile that file in order to make your changes take effect.
Analogously, if you're using sysline for termcap, and have a TERMCAP
environment variable set containing the full terminal description,
you have to actually logout or do `eval `tset -s`' to make the changes
take effect.
* To clear the screen without removing --albeit temporarily-- the
status-line, use the 'tput clear' command.
A terminfo-based `tput' comes with the ncurses package; a termcap-
based `tput' (which accepts the same _terminfo_ capability-names as
the ncurses `tput') can be found in GNU's tput-1.0.tar.gz or the GNU
termutils-2.0 package.
* To reset the screen without it removing the status-line, you can use
the `reset' script that comes with the util-linux package, which uses
`tput' (since ncurses' terminfo-based `tput' and GNU's termcap-based
`tput' accept the same capability-names, that reset script can be
used for both).
* Want to force an update of the status-line?
Do `kill -ALRM <sysline-pid>'.
* If you run sysline as root, it may continue to run after you log out
(without the data on the status-line being updated anymore mind you).
This happens to be the case getty_ps at least (2.0.7c and later), not
with getty4.32 by Fred van Kempen; I don't know about other getty's, nor
why they behave so differently and what would be standard -- your guess
is as good as mine, probably better, which doesn't help.
Anyway, to avoid this waste of resources, you could start it thus:
sysline -i >~/sysline.pid
and then have so:
if [ -e ~/sysline.pid ]
then
kill -HUP `cat ~/sysline.pid` 2>/dev/null
rm ~/sysline.pid
cs 1 25 # example 25-line terminal
fi
in your ~/.logout file -- or something more elaborate.
* Hardscroll (Shift-PgUp/Dn) does not work on vt's with a status-line.
This is normal -- I never use it anyway.
* If programs start behaving erratically, check you termcap file for
trailing whitespace on lines which are part of an entry. Yes.
* Individual capabilities in the termcap and terminfo databases can be
commented out by placing a period just before the capability name.
8. FEEDBACK
-----------
Questions, bugs, comments, suggestions, flames to yours truly.
Did I say ``enjoy''?
BJ
``in the software business since tuesday''
[email protected] (Bauke Jan Douma)