Compare commits
133 Commits
Author | SHA1 | Date | |
---|---|---|---|
0baf2d8be5 | |||
62f9142478 | |||
a495fce128 | |||
6f4cfa5136 | |||
672e4e4b03 | |||
45b808b88e | |||
71328cbcdc | |||
85f8a414be | |||
78f8843bc7 | |||
96c230e476 | |||
6166a1afc8 | |||
cf332a325d | |||
1584956a60 | |||
d2ec39f0ef | |||
1f0d981bd7 | |||
cdb3b1892a | |||
315b7ee9ce | |||
c2026a4950 | |||
6521b5dc32 | |||
a8d5870073 | |||
21d905c076 | |||
9523233e25 | |||
d2173cd716 | |||
9559100130 | |||
c0a56ef4be | |||
9df9a4723d | |||
e8dba89164 | |||
33da67dac0 | |||
d60ee7337b | |||
ef1dc9fc4b | |||
6162d63151 | |||
fb8e3f67f7 | |||
39f28b18b7 | |||
2738592de6 | |||
08a3eea571 | |||
53474391bc | |||
1fe0a5f39a | |||
4435e0ee67 | |||
7263820759 | |||
1fa27b93f9 | |||
3d3c37bc70 | |||
489982d4b8 | |||
297c886b72 | |||
0f6942cdf6 | |||
8e577322a3 | |||
939e149544 | |||
02ae3ce6fd | |||
7a4eefe87c | |||
c5c2365ab7 | |||
62ab938965 | |||
2b1bc8087f | |||
eeae9b0cee | |||
8ac0a5f872 | |||
eae31a532e | |||
cc2ea3147a | |||
bef599bb27 | |||
210dda9570 | |||
a4358a1fbd | |||
4245ba0d12 | |||
f3d438b101 | |||
587bc939f6 | |||
8d21ced085 | |||
4579693818 | |||
347a45c352 | |||
22eeda56b7 | |||
86c03ddc82 | |||
7e3cff33ff | |||
aaee0e8b28 | |||
8dde8cde41 | |||
33ad83d492 | |||
40e4d76d22 | |||
fbc589d506 | |||
6fc471ccc6 | |||
8b602a37a6 | |||
6e1c7c8afc | |||
90c6f055b6 | |||
ebbac77d74 | |||
7af030c999 | |||
5d3318c0c7 | |||
369734c80c | |||
2cf4f366d6 | |||
7530694987 | |||
d743b93fda | |||
317b785921 | |||
405fd89ac1 | |||
8315dc4179 | |||
b5144100a5 | |||
8f1bef0502 | |||
8f47c4a4de | |||
62502a88e9 | |||
678eff6e18 | |||
8e968739c3 | |||
0c2b513d01 | |||
634c247fa7 | |||
5938fa9d32 | |||
8618386de9 | |||
e1458ef467 | |||
911ba5674b | |||
a53017c8b4 | |||
a77b01176a | |||
1e09726518 | |||
1b2751f5c2 | |||
0851f2be2a | |||
011c0f9e5b | |||
048c54fd5b | |||
6b03bb769a | |||
db6f796ecf | |||
7ea6863208 | |||
8037dac847 | |||
2bd6afd1c9 | |||
b596d6ba3c | |||
872a7f18ea | |||
3c546ae739 | |||
645c1b0afc | |||
e5ff746430 | |||
da182612b7 | |||
b7e6a5c825 | |||
3ae0299064 | |||
fed9968ba5 | |||
0ca0dd8b11 | |||
c371fe58a3 | |||
44db38a5f8 | |||
4de64fa4d2 | |||
de4cd2f6af | |||
1e7816c202 | |||
5dc48af29e | |||
5984657c00 | |||
4018b2c507 | |||
ddd429ea24 | |||
684cf55a0d | |||
b1813b14d9 | |||
580c8bbd46 | |||
502911e554 |
58
FAQ
58
FAQ
@ -1,43 +1,35 @@
|
|||||||
--
|
## Why does st not handle utmp entries?
|
||||||
Why does st not handle utmp entries?
|
|
||||||
|
|
||||||
Use the excellent tool of utmp[0] for this task.
|
Use the excellent tool of [utmp](http://git.suckless.org/utmp/) for this task.
|
||||||
|
|
||||||
[0] http://git.suckless.org/utmp/
|
## Some _random program_ complains that st is unknown/not recognised/unsupported/whatever!
|
||||||
--
|
|
||||||
Some _random program_ complains that st is unknown/not
|
|
||||||
recognised/unsupported/whatever!
|
|
||||||
|
|
||||||
It means that st doesn’t have any terminfo entry on your system. Chances are
|
It means that st doesn’t have any terminfo entry on your system. Chances are
|
||||||
you did not make install. If you just want to test it without installing it,
|
you did not `make install`. If you just want to test it without installing it,
|
||||||
you can manualy run tic -s st.info in st dir. It will compile st.info into a
|
you can manualy run `tic -s st.info`.
|
||||||
fully working local terminfo description. You can delete it when you’re done.
|
|
||||||
--
|
## Nothing works, and nothing is said about an unknown terminal!
|
||||||
Nothing works, and nothing is said about an unknown terminal!
|
|
||||||
|
|
||||||
* Some programs just assume they’re running in xterm i.e. they don’t rely on
|
* Some programs just assume they’re running in xterm i.e. they don’t rely on
|
||||||
terminfo. What you see is the current state of the “xterm compliance”.
|
terminfo. What you see is the current state of the “xterm compliance”.
|
||||||
* Some programs don’t complain about the lacking st description and default to
|
* Some programs don’t complain about the lacking st description and default to
|
||||||
another terminal. In that case see the question about terminfo.
|
another terminal. In that case see the question about terminfo.
|
||||||
--
|
|
||||||
I get some weird glitches/visual bug on _random program_!
|
|
||||||
|
|
||||||
Try lauching it with a different TERM: $ TERM=xterm myapp. toe(1) will give
|
## I get some weird glitches/visual bug on _random program_!
|
||||||
you a list of available terminals, but you’ll most likely switch between
|
|
||||||
xterm, st or st-256color. The default value for TERM can be changed in
|
|
||||||
config.h (TNAME).
|
|
||||||
--
|
|
||||||
How do I scroll back up?
|
|
||||||
|
|
||||||
Invoke st with a screen multiplexer like GNU screen[0] or tmux[1].
|
Try launching it with a different TERM: $ TERM=xterm myapp. toe(1) will give
|
||||||
st -e screen works better for text reflowing. To enter screen’s scroll
|
you a list of available terminals, but you’ll most likely switch between xterm,
|
||||||
back mode aka “copy mode”, it’s C-a ESC. You probably want defscrollback
|
st or st-256color. The default value for TERM can be changed in config.h
|
||||||
10000 in your ~/.screenrc too.
|
(TNAME).
|
||||||
|
|
||||||
[0] http://en.wikipedia.org/wiki/GNU_Screen
|
## How do I scroll back up?
|
||||||
[1] http://en.wikipedia.org/wiki/Tmux
|
|
||||||
--
|
Using a terminal multiplexer.
|
||||||
Why doesn't the Del key work in some programs?
|
|
||||||
|
* `st -e tmux` using C-b [
|
||||||
|
* `st -e screen` using C-a ESC
|
||||||
|
|
||||||
|
## Why doesn't the Del key work in some programs?
|
||||||
|
|
||||||
Taken from the terminfo manpage:
|
Taken from the terminfo manpage:
|
||||||
|
|
||||||
@ -49,7 +41,7 @@ Taken from the terminfo manpage:
|
|||||||
codes as smkx and rmkx. Otherwise the keypad is assumed to
|
codes as smkx and rmkx. Otherwise the keypad is assumed to
|
||||||
always transmit.
|
always transmit.
|
||||||
|
|
||||||
In the st case smkx=\E[?1h\E= and rmkx=\E[?1l\E>, so it is mandatory that
|
In the st case smkx=E[?1hE= and rmkx=E[?1lE>, so it is mandatory that
|
||||||
applications which want to test against keypad keys, have to send these
|
applications which want to test against keypad keys, have to send these
|
||||||
sequences.
|
sequences.
|
||||||
|
|
||||||
@ -73,7 +65,7 @@ Adding this option to your .inputrc will fix the keypad problem for all
|
|||||||
applications using readline.
|
applications using readline.
|
||||||
|
|
||||||
If you are using zsh, then read the zsh FAQ
|
If you are using zsh, then read the zsh FAQ
|
||||||
(http://zsh.sourceforge.net/FAQ/zshfaq03.html#l25):
|
<http://zsh.sourceforge.net/FAQ/zshfaq03.html#l25>:
|
||||||
|
|
||||||
It should be noted that the O / [ confusion can occur with other keys
|
It should be noted that the O / [ confusion can occur with other keys
|
||||||
such as Home and End. Some systems let you query the key sequences
|
such as Home and End. Some systems let you query the key sequences
|
||||||
@ -91,5 +83,9 @@ If you are using zsh, then read the zsh FAQ
|
|||||||
zle -N zle-line-finish
|
zle -N zle-line-finish
|
||||||
|
|
||||||
Putting these lines into your .zshrc will fix the problems.
|
Putting these lines into your .zshrc will fix the problems.
|
||||||
--
|
|
||||||
|
|
||||||
|
## How can use meta in 8bit mode?
|
||||||
|
|
||||||
|
St support meta in 8bit mode, but the default terminfo entry doesn't
|
||||||
|
use this capability. If you want it, you have to use st-meta value
|
||||||
|
in TERM.
|
||||||
|
8
LICENSE
8
LICENSE
@ -1,9 +1,15 @@
|
|||||||
MIT/X Consortium License
|
MIT/X Consortium License
|
||||||
|
|
||||||
© 2009-2012 Aurélien APTEL <aurelien dot aptel at gmail dot com>
|
© 2009-2012 Aurélien APTEL <aurelien dot aptel at gmail dot com>
|
||||||
|
© 2009 Anselm R Garbe <garbeam at gmail dot com>
|
||||||
© 2012 Roberto E. Vargas Caballero <k0ga at shike2 dot com>
|
© 2012 Roberto E. Vargas Caballero <k0ga at shike2 dot com>
|
||||||
© 2012 Christoph Lohmann <20h at r-36 dot net>
|
© 2012 Christoph Lohmann <20h at r-36 dot net>
|
||||||
© 2009 Anselm R Garbe <garbeam at gmail dot com>
|
© 2013 Eon S. Jeon <esjeon at hyunmu dot am>
|
||||||
|
© 2013 Alexander Sedov <alex0player at gmail dot com>
|
||||||
|
© 2013 Mark Edgar <medgar123 at gmail dot com>
|
||||||
|
© 2013 Eric Pruitt <eric.pruitt at gmail dot com>
|
||||||
|
© 2013 Michael Forney <mforney at mforney dot org>
|
||||||
|
© 2013 Markus Teich <markus dot teich at stusta dot mhn dot de>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a
|
Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
copy of this software and associated documentation files (the "Software"),
|
copy of this software and associated documentation files (the "Software"),
|
||||||
|
20
TODO
20
TODO
@ -1,32 +1,24 @@
|
|||||||
vt emulation
|
vt emulation
|
||||||
------------
|
------------
|
||||||
|
|
||||||
* color definition in CSI
|
* double-height support
|
||||||
* implement CSI parsing
|
|
||||||
* wide-character support in conjunction with fallback xft code
|
|
||||||
* mouse selection support
|
|
||||||
|
|
||||||
code & interface
|
code & interface
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
* clean and complete terminfo entry
|
|
||||||
* add fallback fonts for the restricted xft code
|
|
||||||
* add a simple way to do multiplexing
|
* add a simple way to do multiplexing
|
||||||
|
|
||||||
|
drawing
|
||||||
|
-------
|
||||||
|
* add diacritics support to xdraws()
|
||||||
|
* make the font cache simpler
|
||||||
|
|
||||||
bugs
|
bugs
|
||||||
----
|
----
|
||||||
|
|
||||||
* fix shift up/down (shift selection in emacs)
|
* fix shift up/down (shift selection in emacs)
|
||||||
* fix selection paste for xatom STRING
|
|
||||||
* fix rows and column definition in fixed geometry
|
|
||||||
* fix -e handling
|
* fix -e handling
|
||||||
* remove DEC test sequence when appropriate
|
* remove DEC test sequence when appropriate
|
||||||
* reverse cursor when drawin light on light background
|
|
||||||
* text should be readable
|
|
||||||
* When some application outputting long text is run in the shell init scripts,
|
|
||||||
then this text might be stripped to the standard 80x25 due to st running the
|
|
||||||
virtual terminal at first priority. Maybe the vt initialisation could be
|
|
||||||
moved somewhere after knowing the right window size.
|
|
||||||
|
|
||||||
misc
|
misc
|
||||||
----
|
----
|
||||||
|
63
arg.h
Normal file
63
arg.h
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
/*
|
||||||
|
* Copy me if you can.
|
||||||
|
* by 20h
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef ARG_H__
|
||||||
|
#define ARG_H__
|
||||||
|
|
||||||
|
extern char *argv0;
|
||||||
|
|
||||||
|
/* use main(int argc, char *argv[]) */
|
||||||
|
#define ARGBEGIN for (argv0 = *argv, argv++, argc--;\
|
||||||
|
argv[0] && argv[0][1]\
|
||||||
|
&& argv[0][0] == '-';\
|
||||||
|
argc--, argv++) {\
|
||||||
|
char argc_;\
|
||||||
|
char **argv_;\
|
||||||
|
int brk_;\
|
||||||
|
if (argv[0][1] == '-' && argv[0][2] == '\0') {\
|
||||||
|
argv++;\
|
||||||
|
argc--;\
|
||||||
|
break;\
|
||||||
|
}\
|
||||||
|
for (brk_ = 0, argv[0]++, argv_ = argv;\
|
||||||
|
argv[0][0] && !brk_;\
|
||||||
|
argv[0]++) {\
|
||||||
|
if (argv_ != argv)\
|
||||||
|
break;\
|
||||||
|
argc_ = argv[0][0];\
|
||||||
|
switch (argc_)
|
||||||
|
|
||||||
|
/* Handles obsolete -NUM syntax */
|
||||||
|
#define ARGNUM case '0':\
|
||||||
|
case '1':\
|
||||||
|
case '2':\
|
||||||
|
case '3':\
|
||||||
|
case '4':\
|
||||||
|
case '5':\
|
||||||
|
case '6':\
|
||||||
|
case '7':\
|
||||||
|
case '8':\
|
||||||
|
case '9'
|
||||||
|
|
||||||
|
#define ARGEND }\
|
||||||
|
}
|
||||||
|
|
||||||
|
#define ARGC() argc_
|
||||||
|
|
||||||
|
#define ARGNUMF(base) (brk_ = 1, estrtol(argv[0], (base)))
|
||||||
|
|
||||||
|
#define EARGF(x) ((argv[0][1] == '\0' && argv[1] == NULL)?\
|
||||||
|
((x), abort(), (char *)0) :\
|
||||||
|
(brk_ = 1, (argv[0][1] != '\0')?\
|
||||||
|
(&argv[0][1]) :\
|
||||||
|
(argc--, argv++, argv[0])))
|
||||||
|
|
||||||
|
#define ARGF() ((argv[0][1] == '\0' && argv[1] == NULL)?\
|
||||||
|
(char *)0 :\
|
||||||
|
(brk_ = 1, (argv[0][1] != '\0')?\
|
||||||
|
(&argv[0][1]) :\
|
||||||
|
(argc--, argv++, argv[0])))
|
||||||
|
|
||||||
|
#endif
|
90
config.def.h
90
config.def.h
@ -9,14 +9,40 @@ static char font[] = "Liberation Mono:pixelsize=12:antialias=false:autohint=fals
|
|||||||
static int borderpx = 2;
|
static int borderpx = 2;
|
||||||
static char shell[] = "/bin/sh";
|
static char shell[] = "/bin/sh";
|
||||||
|
|
||||||
/* timeouts (in milliseconds) */
|
/* Kerning / character bounding-box mutlipliers */
|
||||||
|
float cwscale = 1.0;
|
||||||
|
float chscale = 1.0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* word delimiter string
|
||||||
|
*
|
||||||
|
* More advanced example: " `'\"()[]{}"
|
||||||
|
*/
|
||||||
|
static char worddelimiters[] = " ";
|
||||||
|
|
||||||
|
/* selection timeouts (in milliseconds) */
|
||||||
static unsigned int doubleclicktimeout = 300;
|
static unsigned int doubleclicktimeout = 300;
|
||||||
static unsigned int tripleclicktimeout = 600;
|
static unsigned int tripleclicktimeout = 600;
|
||||||
|
|
||||||
|
/* alt screens */
|
||||||
|
static bool allowaltscreen = true;
|
||||||
|
|
||||||
/* frames per second st should at maximum draw to the screen */
|
/* frames per second st should at maximum draw to the screen */
|
||||||
static unsigned int xfps = 60;
|
static unsigned int xfps = 120;
|
||||||
static unsigned int actionfps = 30;
|
static unsigned int actionfps = 30;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* blinking timeout (set to 0 to disable blinking) for the terminal blinking
|
||||||
|
* attribute.
|
||||||
|
*/
|
||||||
|
static unsigned int blinktimeout = 800;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* bell volume. It must be a value between -100 and 100. Use 0 for disabling
|
||||||
|
* it
|
||||||
|
*/
|
||||||
|
static int bellvolume = 0;
|
||||||
|
|
||||||
/* TERM value */
|
/* TERM value */
|
||||||
static char termname[] = "st-256color";
|
static char termname[] = "st-256color";
|
||||||
|
|
||||||
@ -49,18 +75,16 @@ static const char *colorname[] = {
|
|||||||
|
|
||||||
/* more colors can be added after 255 to use with DefaultXX */
|
/* more colors can be added after 255 to use with DefaultXX */
|
||||||
"#cccccc",
|
"#cccccc",
|
||||||
"#333333",
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Default colors (colorname index)
|
* Default colors (colorname index)
|
||||||
* foreground, background, cursor, unfocused cursor
|
* foreground, background, cursor
|
||||||
*/
|
*/
|
||||||
static unsigned int defaultfg = 7;
|
static unsigned int defaultfg = 7;
|
||||||
static unsigned int defaultbg = 0;
|
static unsigned int defaultbg = 0;
|
||||||
static unsigned int defaultcs = 256;
|
static unsigned int defaultcs = 256;
|
||||||
static unsigned int defaultucs = 257;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Colors used, when the specific fg == defaultfg. So in reverse mode this
|
* Colors used, when the specific fg == defaultfg. So in reverse mode this
|
||||||
@ -70,11 +94,22 @@ static unsigned int defaultucs = 257;
|
|||||||
static unsigned int defaultitalic = 11;
|
static unsigned int defaultitalic = 11;
|
||||||
static unsigned int defaultunderline = 7;
|
static unsigned int defaultunderline = 7;
|
||||||
|
|
||||||
/* Internal shortcuts. */
|
/* Internal mouse shortcuts. */
|
||||||
|
/* Beware that overloading Button1 will disable the selection. */
|
||||||
|
static Mousekey mshortcuts[] = {
|
||||||
|
/* button mask string */
|
||||||
|
{ Button4, XK_ANY_MOD, "\031" },
|
||||||
|
{ Button5, XK_ANY_MOD, "\005" },
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Internal keyboard shortcuts. */
|
||||||
#define MODKEY Mod1Mask
|
#define MODKEY Mod1Mask
|
||||||
|
|
||||||
static Shortcut shortcuts[] = {
|
static Shortcut shortcuts[] = {
|
||||||
/* modifier key function argument */
|
/* mask keysym function argument */
|
||||||
|
{ ControlMask, XK_Print, toggleprinter, {.i = 0} },
|
||||||
|
{ ShiftMask, XK_Print, printscreen, {.i = 0} },
|
||||||
|
{ XK_ANY_MOD, XK_Print, printsel, {.i = 0} },
|
||||||
{ MODKEY|ShiftMask, XK_Prior, xzoom, {.i = +1} },
|
{ MODKEY|ShiftMask, XK_Prior, xzoom, {.i = +1} },
|
||||||
{ MODKEY|ShiftMask, XK_Next, xzoom, {.i = -1} },
|
{ MODKEY|ShiftMask, XK_Next, xzoom, {.i = -1} },
|
||||||
{ ShiftMask, XK_Insert, selpaste, {.i = 0} },
|
{ ShiftMask, XK_Insert, selpaste, {.i = 0} },
|
||||||
@ -88,12 +123,12 @@ static Shortcut shortcuts[] = {
|
|||||||
* Mask value:
|
* Mask value:
|
||||||
* * Use XK_ANY_MOD to match the key no matter modifiers state
|
* * Use XK_ANY_MOD to match the key no matter modifiers state
|
||||||
* * Use XK_NO_MOD to match the key alone (no modifiers)
|
* * Use XK_NO_MOD to match the key alone (no modifiers)
|
||||||
* keypad value:
|
* appkey value:
|
||||||
* * 0: no value
|
* * 0: no value
|
||||||
* * > 0: keypad application mode enabled
|
* * > 0: keypad application mode enabled
|
||||||
* * = 2: term.numlock = 1
|
* * = 2: term.numlock = 1
|
||||||
* * < 0: keypad application mode disabled
|
* * < 0: keypad application mode disabled
|
||||||
* cursor value:
|
* appcursor value:
|
||||||
* * 0: no value
|
* * 0: no value
|
||||||
* * > 0: cursor application mode enabled
|
* * > 0: cursor application mode enabled
|
||||||
* * < 0: cursor application mode disabled
|
* * < 0: cursor application mode disabled
|
||||||
@ -103,26 +138,26 @@ static Shortcut shortcuts[] = {
|
|||||||
* * < 0: crlf mode is disabled
|
* * < 0: crlf mode is disabled
|
||||||
*
|
*
|
||||||
* Be careful with the order of the definitons because st searchs in
|
* Be careful with the order of the definitons because st searchs in
|
||||||
* this table sequencially, so any XK_ANY_MOD must be in the last
|
* this table sequentially, so any XK_ANY_MOD must be in the last
|
||||||
* position for a key.
|
* position for a key.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If you want something else but the function keys of X11 (0xFF00 - 0xFFFF)
|
* If you want keys other than the X11 function keys (0xFD00 - 0xFFFF)
|
||||||
* mapped below, add them to this array.
|
* to be mapped below, add them to this array.
|
||||||
*/
|
*/
|
||||||
static KeySym mappedkeys[] = { -1 };
|
static KeySym mappedkeys[] = { -1 };
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Which bits of the state should be ignored. By default the state bit for the
|
* State bits to ignore when matching key or button events. By default,
|
||||||
* keyboard layout (XK_SWITCH_MOD) is ignored.
|
* numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored.
|
||||||
*/
|
*/
|
||||||
uint ignoremod = XK_SWITCH_MOD;
|
static uint ignoremod = Mod2Mask|XK_SWITCH_MOD;
|
||||||
|
|
||||||
/* key, mask, output, keypad, cursor, crlf */
|
|
||||||
static Key key[] = {
|
static Key key[] = {
|
||||||
/* keysym mask string keypad cursor crlf */
|
/* keysym mask string appkey appcursor crlf */
|
||||||
{ XK_KP_Home, ShiftMask, "\033[1;2H", 0, 0, 0},
|
{ XK_KP_Home, ShiftMask, "\033[2J", 0, -1, 0},
|
||||||
|
{ XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1, 0},
|
||||||
{ XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1, 0},
|
{ XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1, 0},
|
||||||
{ XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1, 0},
|
{ XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1, 0},
|
||||||
{ XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0, 0},
|
{ XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0, 0},
|
||||||
@ -153,10 +188,10 @@ static Key key[] = {
|
|||||||
{ XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0, 0},
|
{ XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0, 0},
|
||||||
{ XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0, 0},
|
{ XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0, 0},
|
||||||
{ XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0, 0},
|
{ XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0, 0},
|
||||||
{ XK_KP_Delete, ControlMask, "\033[2J", -1, 0, 0},
|
{ XK_KP_Delete, ControlMask, "\033[M", -1, 0, 0},
|
||||||
{ XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0, 0},
|
{ XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0, 0},
|
||||||
{ XK_KP_Delete, ShiftMask, "\033[2K", +1, 0, 0},
|
{ XK_KP_Delete, ShiftMask, "\033[2K", -1, 0, 0},
|
||||||
{ XK_KP_Delete, ShiftMask, "\033[3;2~", -1, 0, 0},
|
{ XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0, 0},
|
||||||
{ XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0, 0},
|
{ XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0, 0},
|
||||||
{ XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0, 0},
|
{ XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0, 0},
|
||||||
{ XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0, 0},
|
{ XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0, 0},
|
||||||
@ -209,13 +244,14 @@ static Key key[] = {
|
|||||||
{ XK_Insert, ControlMask, "\033[2;5~", +1, 0, 0},
|
{ XK_Insert, ControlMask, "\033[2;5~", +1, 0, 0},
|
||||||
{ XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0, 0},
|
{ XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0, 0},
|
||||||
{ XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0, 0},
|
{ XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0, 0},
|
||||||
{ XK_Delete, ControlMask, "\033[2J", -1, 0, 0},
|
{ XK_Delete, ControlMask, "\033[M", -1, 0, 0},
|
||||||
{ XK_Delete, ControlMask, "\033[3;5~", +1, 0, 0},
|
{ XK_Delete, ControlMask, "\033[3;5~", +1, 0, 0},
|
||||||
{ XK_Delete, ShiftMask, "\033[2K", +1, 0, 0},
|
{ XK_Delete, ShiftMask, "\033[2K", -1, 0, 0},
|
||||||
{ XK_Delete, ShiftMask, "\033[3;2~", -1, 0, 0},
|
{ XK_Delete, ShiftMask, "\033[3;2~", +1, 0, 0},
|
||||||
{ XK_Delete, XK_ANY_MOD, "\033[P", -1, 0, 0},
|
{ XK_Delete, XK_ANY_MOD, "\033[P", -1, 0, 0},
|
||||||
{ XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0, 0},
|
{ XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0, 0},
|
||||||
{ XK_Home, ShiftMask, "\033[1;2H", 0, 0, 0},
|
{ XK_Home, ShiftMask, "\033[2J", 0, -1, 0},
|
||||||
|
{ XK_Home, ShiftMask, "\033[1;2H", 0, +1, 0},
|
||||||
{ XK_Home, XK_ANY_MOD, "\033[H", 0, -1, 0},
|
{ XK_Home, XK_ANY_MOD, "\033[H", 0, -1, 0},
|
||||||
{ XK_Home, XK_ANY_MOD, "\033[1~", 0, +1, 0},
|
{ XK_Home, XK_ANY_MOD, "\033[1~", 0, +1, 0},
|
||||||
{ XK_End, ControlMask, "\033[J", -1, 0, 0},
|
{ XK_End, ControlMask, "\033[J", -1, 0, 0},
|
||||||
@ -225,7 +261,7 @@ static Key key[] = {
|
|||||||
{ XK_End, XK_ANY_MOD, "\033[4~", 0, 0, 0},
|
{ XK_End, XK_ANY_MOD, "\033[4~", 0, 0, 0},
|
||||||
{ XK_Prior, ControlMask, "\033[5;5~", 0, 0, 0},
|
{ XK_Prior, ControlMask, "\033[5;5~", 0, 0, 0},
|
||||||
{ XK_Prior, ShiftMask, "\033[5;2~", 0, 0, 0},
|
{ XK_Prior, ShiftMask, "\033[5;2~", 0, 0, 0},
|
||||||
{ XK_Prior, XK_NO_MOD, "\033[5~", 0, 0, 0},
|
{ XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0, 0},
|
||||||
{ XK_Next, ControlMask, "\033[6;5~", 0, 0, 0},
|
{ XK_Next, ControlMask, "\033[6;5~", 0, 0, 0},
|
||||||
{ XK_Next, ShiftMask, "\033[6;2~", 0, 0, 0},
|
{ XK_Next, ShiftMask, "\033[6;2~", 0, 0, 0},
|
||||||
{ XK_Next, XK_ANY_MOD, "\033[6~", 0, 0, 0},
|
{ XK_Next, XK_ANY_MOD, "\033[6~", 0, 0, 0},
|
||||||
@ -249,7 +285,7 @@ static Key key[] = {
|
|||||||
{ XK_F3, /* F63 */ Mod3Mask, "\033[1;4R", 0, 0, 0},
|
{ XK_F3, /* F63 */ Mod3Mask, "\033[1;4R", 0, 0, 0},
|
||||||
{ XK_F4, XK_NO_MOD, "\033OS" , 0, 0, 0},
|
{ XK_F4, XK_NO_MOD, "\033OS" , 0, 0, 0},
|
||||||
{ XK_F4, /* F16 */ ShiftMask, "\033[1;2S", 0, 0, 0},
|
{ XK_F4, /* F16 */ ShiftMask, "\033[1;2S", 0, 0, 0},
|
||||||
{ XK_F4, /* F28 */ ShiftMask, "\033[1;5S", 0, 0, 0},
|
{ XK_F4, /* F28 */ ControlMask, "\033[1;5S", 0, 0, 0},
|
||||||
{ XK_F4, /* F40 */ Mod4Mask, "\033[1;6S", 0, 0, 0},
|
{ XK_F4, /* F40 */ Mod4Mask, "\033[1;6S", 0, 0, 0},
|
||||||
{ XK_F4, /* F52 */ Mod1Mask, "\033[1;3S", 0, 0, 0},
|
{ XK_F4, /* F52 */ Mod1Mask, "\033[1;3S", 0, 0, 0},
|
||||||
{ XK_F5, XK_NO_MOD, "\033[15~", 0, 0, 0},
|
{ XK_F5, XK_NO_MOD, "\033[15~", 0, 0, 0},
|
||||||
|
10
config.mk
10
config.mk
@ -1,5 +1,5 @@
|
|||||||
# st version
|
# st version
|
||||||
VERSION = 0.4
|
VERSION = 0.5
|
||||||
|
|
||||||
# Customize below to fit your system
|
# Customize below to fit your system
|
||||||
|
|
||||||
@ -12,11 +12,11 @@ X11LIB = /usr/X11R6/lib
|
|||||||
|
|
||||||
# includes and libs
|
# includes and libs
|
||||||
INCS = -I. -I/usr/include -I${X11INC} \
|
INCS = -I. -I/usr/include -I${X11INC} \
|
||||||
$(shell pkg-config --cflags fontconfig) \
|
`pkg-config --cflags fontconfig` \
|
||||||
$(shell pkg-config --cflags freetype2)
|
`pkg-config --cflags freetype2`
|
||||||
LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 -lutil -lXext -lXft \
|
LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 -lutil -lXext -lXft \
|
||||||
$(shell pkg-config --libs fontconfig) \
|
`pkg-config --libs fontconfig` \
|
||||||
$(shell pkg-config --libs freetype2)
|
`pkg-config --libs freetype2`
|
||||||
|
|
||||||
# flags
|
# flags
|
||||||
CPPFLAGS = -DVERSION=\"${VERSION}\" -D_BSD_SOURCE -D_XOPEN_SOURCE=600
|
CPPFLAGS = -DVERSION=\"${VERSION}\" -D_BSD_SOURCE -D_XOPEN_SOURCE=600
|
||||||
|
7
st.1
7
st.1
@ -3,6 +3,7 @@
|
|||||||
st \- simple terminal
|
st \- simple terminal
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B st
|
.B st
|
||||||
|
.RB [ \-a ]
|
||||||
.RB [ \-c
|
.RB [ \-c
|
||||||
.IR class ]
|
.IR class ]
|
||||||
.RB [ \-f
|
.RB [ \-f
|
||||||
@ -23,6 +24,9 @@ st \- simple terminal
|
|||||||
is a simple terminal emulator.
|
is a simple terminal emulator.
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.TP
|
.TP
|
||||||
|
.B \-a
|
||||||
|
disable alternate screens in terminal
|
||||||
|
.TP
|
||||||
.BI \-c " class"
|
.BI \-c " class"
|
||||||
defines the window class (default $TERM).
|
defines the window class (default $TERM).
|
||||||
.TP
|
.TP
|
||||||
@ -33,6 +37,9 @@ to use when st is run.
|
|||||||
.TP
|
.TP
|
||||||
.BI \-g " geometry"
|
.BI \-g " geometry"
|
||||||
defines the X11 geometry string, which will fixate the height and width of st.
|
defines the X11 geometry string, which will fixate the height and width of st.
|
||||||
|
The form is [=][<width>{xX}<height>][{+-}<xoffset>{+-}<yoffset>]. See
|
||||||
|
.BR XParseGeometry (3)
|
||||||
|
for further details.
|
||||||
.TP
|
.TP
|
||||||
.BI \-o " file"
|
.BI \-o " file"
|
||||||
writes all the I/O to
|
writes all the I/O to
|
||||||
|
29
st.info
29
st.info
@ -1,11 +1,9 @@
|
|||||||
# unsupported xterm caps are (getting) commented.
|
|
||||||
# as soon as they work, uncomment them.
|
|
||||||
st| simpleterm,
|
st| simpleterm,
|
||||||
acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
|
acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
|
||||||
am,
|
am,
|
||||||
bce,
|
bce,
|
||||||
bel=^G,
|
bel=^G,
|
||||||
# blink=\E[5m,
|
blink=\E[5m,
|
||||||
bold=\E[1m,
|
bold=\E[1m,
|
||||||
cbt=\E[Z,
|
cbt=\E[Z,
|
||||||
cvvis=\E[?25h,
|
cvvis=\E[?25h,
|
||||||
@ -47,7 +45,7 @@ st| simpleterm,
|
|||||||
ind=^J,
|
ind=^J,
|
||||||
indn=\E[%p1%dS,
|
indn=\E[%p1%dS,
|
||||||
invis=\E[8m,
|
invis=\E[8m,
|
||||||
is2=\E[4l\E>,
|
is2=\E[4l\E>\E[?1034l,
|
||||||
it#8,
|
it#8,
|
||||||
kel=\E[1;2F,
|
kel=\E[1;2F,
|
||||||
ked=\E[1;5F,
|
ked=\E[1;5F,
|
||||||
@ -154,6 +152,9 @@ st| simpleterm,
|
|||||||
ncv#3,
|
ncv#3,
|
||||||
op=\E[39;49m,
|
op=\E[39;49m,
|
||||||
pairs#64,
|
pairs#64,
|
||||||
|
mc0=\E[i,
|
||||||
|
mc4=\E[4i,
|
||||||
|
mc5=\E[5i,
|
||||||
rc=\E8,
|
rc=\E8,
|
||||||
rev=\E[7m,
|
rev=\E[7m,
|
||||||
ri=\EM,
|
ri=\EM,
|
||||||
@ -163,9 +164,9 @@ st| simpleterm,
|
|||||||
rmir=\E[4l,
|
rmir=\E[4l,
|
||||||
rmkx=\E[?1l\E>,
|
rmkx=\E[?1l\E>,
|
||||||
rmso=\E[27m,
|
rmso=\E[27m,
|
||||||
rmul=\E[m,
|
rmul=\E[24m,
|
||||||
rs1=\Ec,
|
rs1=\Ec,
|
||||||
rs2=\E[4l\E>,
|
rs2=\E[4l\E>\E[?1034l,
|
||||||
sc=\E7,
|
sc=\E7,
|
||||||
setab=\E[4%p1%dm,
|
setab=\E[4%p1%dm,
|
||||||
setaf=\E[3%p1%dm,
|
setaf=\E[3%p1%dm,
|
||||||
@ -194,3 +195,19 @@ st-256color| simpleterm with 256 colors,
|
|||||||
# Nicked from xterm-256color
|
# Nicked from xterm-256color
|
||||||
setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
|
setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
|
||||||
setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
|
setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
|
||||||
|
|
||||||
|
st-meta| simpleterm with meta key,
|
||||||
|
use=st,
|
||||||
|
km,
|
||||||
|
rmm=\E[?1034l,
|
||||||
|
smm=\E[?1034h,
|
||||||
|
rs2=\E[4l\E>\E[?1034h,
|
||||||
|
is2=\E[4l\E>\E[?1034h,
|
||||||
|
|
||||||
|
st-meta-256color| simpleterm with meta key and 256 colors,
|
||||||
|
use=st-256color,
|
||||||
|
km,
|
||||||
|
rmm=\E[?1034l,
|
||||||
|
smm=\E[?1034h,
|
||||||
|
rs2=\E[4l\E>\E[?1034h,
|
||||||
|
is2=\E[4l\E>\E[?1034h,
|
||||||
|
Reference in New Issue
Block a user