Compare commits
77 Commits
Author | SHA1 | Date | |
---|---|---|---|
6e79e8357e | |||
308bfbf6be | |||
c4f245eccd | |||
2251f6465a | |||
235b438e68 | |||
528241aa38 | |||
60aeb37edb | |||
66556d9670 | |||
39964614b7 | |||
0e48a1995e | |||
6d8f85232e | |||
034a5c8a09 | |||
30440295bc | |||
4fdba860c8 | |||
6d636beb22 | |||
6e70bb97d4 | |||
82335583eb | |||
0cd5117a2c | |||
bd5fdbe64c | |||
504a165277 | |||
9031e228ce | |||
610723a58f | |||
ff241199ed | |||
375b28720f | |||
d836561b96 | |||
00873e65ee | |||
9f6d8845df | |||
f0398db4d1 | |||
e2aa03e6b7 | |||
f56c58a968 | |||
293f573efd | |||
2ea02c937e | |||
80fe97f8a6 | |||
a2a60f0a2c | |||
52d0e82df7 | |||
78b04865fb | |||
f7b80caebe | |||
594a259836 | |||
91c70213d1 | |||
2677296147 | |||
5ece2b5f4a | |||
2bef36ab81 | |||
1682484327 | |||
4be353e381 | |||
20d53cebc1 | |||
bf8c71e429 | |||
5d2d9d540d | |||
a1ed5071e5 | |||
3ba9c8fc3f | |||
1f087aa8b7 | |||
473326f2e3 | |||
aa5d4c3b34 | |||
080a5ae425 | |||
9eeb4e1ea2 | |||
0c94f8621b | |||
0d838b7243 | |||
7e61f5e4c5 | |||
9984ad4ba7 | |||
ee5cad439b | |||
dc33d1d66e | |||
b5e29cce52 | |||
4a193b9686 | |||
1d348e98e3 | |||
62756fdb49 | |||
d032b61597 | |||
684c72d05e | |||
b823f57fa0 | |||
684f0a0729 | |||
d3c7b6fb73 | |||
41f70a1cff | |||
261ea4b7e0 | |||
f8c6e7d041 | |||
539afe3af1 | |||
f1307d91e2 | |||
13233574ed | |||
9de853a98d | |||
abfad4c4fc |
2
LICENSE
2
LICENSE
@ -10,7 +10,7 @@ MIT/X Consortium License
|
||||
© 2013 Eric Pruitt <eric.pruitt at gmail dot com>
|
||||
© 2013 Michael Forney <mforney at mforney dot org>
|
||||
© 2013-2014 Markus Teich <markus dot teich at stusta dot mhn dot de>
|
||||
© 2014 Laslo Hunhold <dev at frign dot de>
|
||||
© 2014-2015 Laslo Hunhold <dev at frign dot de>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
|
19
arg.h
19
arg.h
@ -10,8 +10,8 @@ extern char *argv0;
|
||||
|
||||
/* use main(int argc, char *argv[]) */
|
||||
#define ARGBEGIN for (argv0 = *argv, argv++, argc--;\
|
||||
argv[0] && argv[0][1]\
|
||||
&& argv[0][0] == '-';\
|
||||
argv[0] && argv[0][0] == '-'\
|
||||
&& argv[0][1];\
|
||||
argc--, argv++) {\
|
||||
char argc_;\
|
||||
char **argv_;\
|
||||
@ -28,26 +28,11 @@ extern char *argv0;
|
||||
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')?\
|
||||
|
82
config.def.h
82
config.def.h
@ -5,11 +5,20 @@
|
||||
*
|
||||
* font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
|
||||
*/
|
||||
static char font[] = "Liberation Mono:pixelsize=12:antialias=false:autohint=false";
|
||||
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";
|
||||
static char *utmp = NULL;
|
||||
static char stty_args[] = "stty raw -echo -iexten echonl";
|
||||
static char stty_args[] = "stty raw pass8 nl -echo -iexten -cstopb 38400";
|
||||
|
||||
/* identification sequence returned in DA and DECID */
|
||||
static char vtiden[] = "\033[?6c";
|
||||
@ -30,7 +39,7 @@ static unsigned int doubleclicktimeout = 300;
|
||||
static unsigned int tripleclicktimeout = 600;
|
||||
|
||||
/* alt screens */
|
||||
static bool allowaltscreen = true;
|
||||
static int allowaltscreen = 1;
|
||||
|
||||
/* frames per second st should at maximum draw to the screen */
|
||||
static unsigned int xfps = 120;
|
||||
@ -53,12 +62,26 @@ static unsigned int cursorthickness = 2;
|
||||
*/
|
||||
static int bellvolume = 0;
|
||||
|
||||
/* TERM value */
|
||||
/* default TERM value */
|
||||
static 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
|
||||
*/
|
||||
static unsigned int tabspaces = 8;
|
||||
|
||||
|
||||
/* Terminal colors (16 first used in escape sequence) */
|
||||
static const char *colorname[] = {
|
||||
/* 8 normal colors */
|
||||
@ -85,16 +108,34 @@ static const char *colorname[] = {
|
||||
|
||||
/* more colors can be added after 255 to use with DefaultXX */
|
||||
"#cccccc",
|
||||
"#555555",
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Default colors (colorname index)
|
||||
* foreground, background, cursor
|
||||
* foreground, background, cursor, reverse cursor
|
||||
*/
|
||||
static unsigned int defaultfg = 7;
|
||||
static 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 colour and shape of the mouse cursor
|
||||
*/
|
||||
static unsigned int mouseshape = XC_xterm;
|
||||
static unsigned int mousefg = 7;
|
||||
static unsigned int mousebg = 0;
|
||||
|
||||
/*
|
||||
* Colors used, when the specific fg == defaultfg. So in reverse mode this
|
||||
@ -104,9 +145,11 @@ static unsigned int defaultcs = 256;
|
||||
static unsigned int defaultitalic = 11;
|
||||
static unsigned int defaultunderline = 7;
|
||||
|
||||
/* Internal mouse shortcuts. */
|
||||
/* Beware that overloading Button1 will disable the selection. */
|
||||
static Mousekey mshortcuts[] = {
|
||||
/*
|
||||
* 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" },
|
||||
@ -117,6 +160,7 @@ static Mousekey mshortcuts[] = {
|
||||
|
||||
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} },
|
||||
@ -167,11 +211,17 @@ static KeySym mappedkeys[] = { -1 };
|
||||
*/
|
||||
static uint ignoremod = Mod2Mask|XK_SWITCH_MOD;
|
||||
|
||||
/* Override mouse-select while mask is active (when MODE_MOUSE is set).
|
||||
/*
|
||||
* 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. */
|
||||
* 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 crlf */
|
||||
{ XK_KP_Home, ShiftMask, "\033[2J", 0, -1, 0},
|
||||
@ -268,6 +318,7 @@ static Key key[] = {
|
||||
{ XK_Delete, XK_ANY_MOD, "\033[P", -1, 0, 0},
|
||||
{ XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0, 0},
|
||||
{ XK_BackSpace, XK_NO_MOD, "\177", 0, 0, 0},
|
||||
{ XK_BackSpace, Mod1Mask, "\033\177", 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},
|
||||
@ -382,3 +433,12 @@ 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{|}~";
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
# st version
|
||||
VERSION = 0.6
|
||||
VERSION = 0.7
|
||||
|
||||
# Customize below to fit your system
|
||||
|
||||
@ -14,7 +14,7 @@ X11LIB = /usr/X11R6/lib
|
||||
INCS = -I. -I/usr/include -I${X11INC} \
|
||||
`pkg-config --cflags fontconfig` \
|
||||
`pkg-config --cflags freetype2`
|
||||
LIBS = -L/usr/lib -lc -L${X11LIB} -lm -lrt -lX11 -lutil -lXext -lXft \
|
||||
LIBS = -L/usr/lib -lc -L${X11LIB} -lm -lrt -lX11 -lutil -lXft \
|
||||
`pkg-config --libs fontconfig` \
|
||||
`pkg-config --libs freetype2`
|
||||
|
||||
|
94
st.1
94
st.1
@ -3,47 +3,49 @@
|
||||
st \- simple terminal
|
||||
.SH SYNOPSIS
|
||||
.B st
|
||||
.RB [ \-a ]
|
||||
.RB [ \-aiv ]
|
||||
.RB [ \-c
|
||||
.IR class ]
|
||||
.RB [ \-f
|
||||
.IR font ]
|
||||
.RB [ \-g
|
||||
.IR geometry ]
|
||||
.RB [ \-i ]
|
||||
.RB [ \-n
|
||||
.IR name ]
|
||||
.RB [ \-o
|
||||
.IR file ]
|
||||
.RB [ \-t
|
||||
.IR iofile ]
|
||||
.RB [ \-T
|
||||
.IR title ]
|
||||
.RB [ \-l
|
||||
.IR line ]
|
||||
.RB [ \-w
|
||||
.IR windowid ]
|
||||
.RB [ \-v ]
|
||||
.RB [ \-e
|
||||
.IR command ...]
|
||||
.RI [ commands ...]
|
||||
.PP
|
||||
.B st
|
||||
.RB [ \-a ]
|
||||
.RB [ \-c
|
||||
.IR class ]
|
||||
.RB [ \-f
|
||||
.IR font ]
|
||||
.RB [ \-g
|
||||
.IR geometry ]
|
||||
.RB [ \-i ]
|
||||
.RB [ \-o
|
||||
.IR file ]
|
||||
.RB [ \-t
|
||||
.IR title ]
|
||||
.RB [ \-l
|
||||
.IR line ]
|
||||
.RB [ \-w
|
||||
.IR windowid ]
|
||||
.RB [ \-v ]
|
||||
.RB [ \-l
|
||||
.IR line ]
|
||||
.RB [[ \-e ]
|
||||
.IR command
|
||||
.RI [ arguments ...]]
|
||||
.PP
|
||||
.B st
|
||||
.RB [ \-aiv ]
|
||||
.RB [ \-c
|
||||
.IR class ]
|
||||
.RB [ \-f
|
||||
.IR font ]
|
||||
.RB [ \-g
|
||||
.IR geometry ]
|
||||
.RB [ \-n
|
||||
.IR name ]
|
||||
.RB [ \-o
|
||||
.IR iofile ]
|
||||
.RB [ \-T
|
||||
.IR title ]
|
||||
.RB [ \-t
|
||||
.IR title ]
|
||||
.RB [ \-w
|
||||
.IR windowid ]
|
||||
.RB \-l
|
||||
.IR line
|
||||
.RI [ stty_args ...]
|
||||
.SH DESCRIPTION
|
||||
.B st
|
||||
@ -70,30 +72,51 @@ for further details.
|
||||
.B \-i
|
||||
will fixate the position given with the -g option.
|
||||
.TP
|
||||
.BI \-n " name"
|
||||
defines the window instance name (default $TERM).
|
||||
.TP
|
||||
.BI \-o " iofile"
|
||||
writes all the I/O to
|
||||
.I iofile.
|
||||
This feature is useful when recording st sessions. A value of "-" means
|
||||
standard output.
|
||||
.TP
|
||||
.BI \-T " title"
|
||||
defines the window title (default 'st').
|
||||
.TP
|
||||
.BI \-t " title"
|
||||
defines the window title (default 'st').
|
||||
.TP
|
||||
.BI \-w " windowid"
|
||||
embeds st within the window identified by
|
||||
embeds st within the window identified by
|
||||
.I windowid
|
||||
.TP
|
||||
.BI \-l " line"
|
||||
use a tty line instead of a pseudo terminal.
|
||||
When this flag is used
|
||||
remaining arguments are used as flags for stty.
|
||||
use a tty
|
||||
.I line
|
||||
instead of a pseudo terminal.
|
||||
.I line
|
||||
should be a (pseudo-)serial device (e.g. /dev/ttySO on Linux for serial port
|
||||
0).
|
||||
When this flag is given
|
||||
remaining arguments are used as flags for
|
||||
.BR stty(1).
|
||||
By default st initializes the serial line to 8 bits, no parity, 1 stop bit
|
||||
and a 38400 baud rate. The speed is set by appending it as last argument
|
||||
(e.g. 'st -l 115200'). Arguments before the last one are
|
||||
.BR stty(1)
|
||||
flags. If you want to set odd parity on 115200 baud use for example 'st -l
|
||||
parenb parodd 115200'. Set the number of bits by using for example 'st -l cs7
|
||||
115200'. See
|
||||
.BR stty(1)
|
||||
for more arguments and cases.
|
||||
.TP
|
||||
.B \-v
|
||||
prints version information to stderr, then exits.
|
||||
.TP
|
||||
.BI \-e " program " [ " arguments " "... ]"
|
||||
.BI \-e " command " [ " arguments " "... ]"
|
||||
st executes
|
||||
.I program
|
||||
.I command
|
||||
instead of the shell. If this is used it
|
||||
.B must be the last option
|
||||
on the command line, as in xterm / rxvt.
|
||||
@ -102,6 +125,11 @@ and all the remaining arguments are used as a command
|
||||
even without it.
|
||||
.SH SHORTCUTS
|
||||
.TP
|
||||
.B Break
|
||||
Send a break in the serial line.
|
||||
Break key is obtained in PC keyboards
|
||||
pressing at the same time control and pause.
|
||||
.TP
|
||||
.B Ctrl-Print Screen
|
||||
Toggle if st should print to the
|
||||
.I iofile.
|
||||
|
Reference in New Issue
Block a user