[st] patch: newterm (orphan variant)
This commit is contained in:
parent
521eab46e9
commit
9bed337341
@ -206,6 +206,7 @@ static Shortcut shortcuts[] = {
|
|||||||
{ TERMMOD, XK_Num_Lock, numlock, {.i = 0} },
|
{ TERMMOD, XK_Num_Lock, numlock, {.i = 0} },
|
||||||
{ ShiftMask, XK_Page_Up, kscrollup, {.i = -1} },
|
{ ShiftMask, XK_Page_Up, kscrollup, {.i = -1} },
|
||||||
{ ShiftMask, XK_Page_Down, kscrolldown, {.i = -1} },
|
{ ShiftMask, XK_Page_Down, kscrolldown, {.i = -1} },
|
||||||
|
{ TERMMOD, XK_Return, newterm, {.i = 0} },
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -160,6 +160,7 @@ typedef struct {
|
|||||||
} STREscape;
|
} STREscape;
|
||||||
|
|
||||||
static void execsh(char *, char **);
|
static void execsh(char *, char **);
|
||||||
|
static char *getcwd_by_pid(pid_t pid);
|
||||||
static void stty(char **);
|
static void stty(char **);
|
||||||
static void sigchld(int);
|
static void sigchld(int);
|
||||||
static void ttywriteraw(const char *, size_t);
|
static void ttywriteraw(const char *, size_t);
|
||||||
@ -1064,6 +1065,37 @@ tswapscreen(void)
|
|||||||
tfulldirt();
|
tfulldirt();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
newterm(const Arg* a)
|
||||||
|
{
|
||||||
|
int res;
|
||||||
|
switch (fork()) {
|
||||||
|
case -1:
|
||||||
|
die("fork failed: %s\n", strerror(errno));
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
switch (fork()) {
|
||||||
|
case -1:
|
||||||
|
die("fork failed: %s\n", strerror(errno));
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
res = chdir(getcwd_by_pid(pid));
|
||||||
|
execlp("st", "./st", NULL);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
wait(NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *getcwd_by_pid(pid_t pid) {
|
||||||
|
char buf[32];
|
||||||
|
snprintf(buf, sizeof buf, "/proc/%d/cwd", pid);
|
||||||
|
return realpath(buf, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
kscrolldown(const Arg* a)
|
kscrolldown(const Arg* a)
|
||||||
{
|
{
|
||||||
|
@ -84,6 +84,7 @@ void draw(void);
|
|||||||
|
|
||||||
void kscrolldown(const Arg *);
|
void kscrolldown(const Arg *);
|
||||||
void kscrollup(const Arg *);
|
void kscrollup(const Arg *);
|
||||||
|
void newterm(const Arg *);
|
||||||
void printscreen(const Arg *);
|
void printscreen(const Arg *);
|
||||||
void printsel(const Arg *);
|
void printsel(const Arg *);
|
||||||
void sendbreak(const Arg *);
|
void sendbreak(const Arg *);
|
||||||
|
Loading…
Reference in New Issue
Block a user