|
|
@ -28,6 +28,10 @@ |
|
|
|
#include <libutil.h> |
|
|
|
#include <libutil.h> |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define USAGE \ |
|
|
|
|
|
|
|
"st-" VERSION ", (c) 2010 st engineers\n" \
|
|
|
|
|
|
|
|
"usage: st [-t title] [-e cmd] [-v]\n" |
|
|
|
|
|
|
|
|
|
|
|
/* Arbitrary sizes */ |
|
|
|
/* Arbitrary sizes */ |
|
|
|
#define ESC_TITLE_SIZ 256 |
|
|
|
#define ESC_TITLE_SIZ 256 |
|
|
|
#define ESC_BUF_SIZ 256 |
|
|
|
#define ESC_BUF_SIZ 256 |
|
|
@ -210,6 +214,8 @@ static CSIEscape escseq; |
|
|
|
static int cmdfd; |
|
|
|
static int cmdfd; |
|
|
|
static pid_t pid; |
|
|
|
static pid_t pid; |
|
|
|
static Selection sel; |
|
|
|
static Selection sel; |
|
|
|
|
|
|
|
static char *opt_cmd = NULL; |
|
|
|
|
|
|
|
static char *opt_title = NULL; |
|
|
|
|
|
|
|
|
|
|
|
void |
|
|
|
void |
|
|
|
selinit(void) { |
|
|
|
selinit(void) { |
|
|
@ -329,8 +335,11 @@ die(const char *errstr, ...) { |
|
|
|
|
|
|
|
|
|
|
|
void |
|
|
|
void |
|
|
|
execsh(void) { |
|
|
|
execsh(void) { |
|
|
|
char *args[3] = {getenv("SHELL"), "-i", NULL}; |
|
|
|
char *args[] = {getenv("SHELL"), "-i", NULL}; |
|
|
|
DEFAULT(args[0], SHELL); /* if getenv() failed */ |
|
|
|
if(opt_cmd) |
|
|
|
|
|
|
|
args[0] = opt_cmd, args[1] = NULL; |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
DEFAULT(args[0], SHELL); |
|
|
|
putenv("TERM="TNAME); |
|
|
|
putenv("TERM="TNAME); |
|
|
|
execvp(args[0], args); |
|
|
|
execvp(args[0], args); |
|
|
|
} |
|
|
|
} |
|
|
@ -1189,7 +1198,7 @@ xinit(void) { |
|
|
|
|
|
|
|
|
|
|
|
XMapWindow(xw.dis, xw.win); |
|
|
|
XMapWindow(xw.dis, xw.win); |
|
|
|
xhints(); |
|
|
|
xhints(); |
|
|
|
XStoreName(xw.dis, xw.win, "st"); |
|
|
|
XStoreName(xw.dis, xw.win, opt_title ? opt_title : "st"); |
|
|
|
XSync(xw.dis, 0); |
|
|
|
XSync(xw.dis, 0); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -1429,10 +1438,21 @@ run(void) { |
|
|
|
|
|
|
|
|
|
|
|
int |
|
|
|
int |
|
|
|
main(int argc, char *argv[]) { |
|
|
|
main(int argc, char *argv[]) { |
|
|
|
if(argc == 2 && !strncmp("-v", argv[1], 3)) |
|
|
|
int i; |
|
|
|
die("st-" VERSION ", (c) 2010 st engineers\n"); |
|
|
|
|
|
|
|
else if(argc != 1) |
|
|
|
for(i = 1; i < argc; i++) { |
|
|
|
die("usage: st [-v]\n"); |
|
|
|
switch(argv[i][0] != '-' || argv[i][2] ? -1 : argv[i][1]) { |
|
|
|
|
|
|
|
case 't': |
|
|
|
|
|
|
|
if(++i < argc) opt_title = argv[i]; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case 'e': |
|
|
|
|
|
|
|
if(++i < argc) opt_cmd = argv[i]; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case 'v': |
|
|
|
|
|
|
|
default: |
|
|
|
|
|
|
|
die(USAGE); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
setlocale(LC_CTYPE, ""); |
|
|
|
setlocale(LC_CTYPE, ""); |
|
|
|
tnew(80, 24); |
|
|
|
tnew(80, 24); |
|
|
|
ttynew(); |
|
|
|
ttynew(); |
|
|
|