Introduction
Introduction Statistics Contact Development Disclaimer Help
st-newterm-0.8.2.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
st-newterm-0.8.2.diff (1947B)
---
1 From a7eedc85e0609177cdb1ed3f6203fa37e6420012 Mon Sep 17 00:00:00 2001
2 From: Matias Lang <[email protected]>
3 Date: Wed, 17 Jul 2019 01:10:44 -0300
4 Subject: [PATCH] Add shortcut to spawn new terminal in the current dir
5
6 Ctrl-Shift-Return now creates a new ST terminal, whose CWD is the same
7 as the parent st's CWD
8 ---
9 config.def.h | 1 +
10 st.c | 21 +++++++++++++++++++++
11 st.h | 1 +
12 3 files changed, 23 insertions(+)
13
14 diff --git a/config.def.h b/config.def.h
15 index 0e01717..31f26d8 100644
16 --- a/config.def.h
17 +++ b/config.def.h
18 @@ -178,6 +178,7 @@ static Shortcut shortcuts[] = {
19 { TERMMOD, XK_Y, selpaste, {.i = …
20 { ShiftMask, XK_Insert, selpaste, {.i = …
21 { TERMMOD, XK_Num_Lock, numlock, {.i = …
22 + { TERMMOD, XK_Return, newterm, {.i = …
23 };
24
25 /*
26 diff --git a/st.c b/st.c
27 index b8e6077..044e29b 100644
28 --- a/st.c
29 +++ b/st.c
30 @@ -153,6 +153,7 @@ typedef struct {
31 } STREscape;
32
33 static void execsh(char *, char **);
34 +static char *getcwd_by_pid(pid_t pid);
35 static void stty(char **);
36 static void sigchld(int);
37 static void ttywriteraw(const char *, size_t);
38 @@ -1059,6 +1060,26 @@ tswapscreen(void)
39 tfulldirt();
40 }
41
42 +void
43 +newterm(const Arg* a)
44 +{
45 + switch (fork()) {
46 + case -1:
47 + die("fork failed: %s\n", strerror(errno));
48 + break;
49 + case 0:
50 + chdir(getcwd_by_pid(pid));
51 + execlp("st", "./st", NULL);
52 + break;
53 + }
54 +}
55 +
56 +static char *getcwd_by_pid(pid_t pid) {
57 + char buf[32];
58 + snprintf(buf, sizeof buf, "/proc/%d/cwd", pid);
59 + return realpath(buf, NULL);
60 +}
61 +
62 void
63 tscrolldown(int orig, int n)
64 {
65 diff --git a/st.h b/st.h
66 index 38c61c4..54d4a43 100644
67 --- a/st.h
68 +++ b/st.h
69 @@ -80,6 +80,7 @@ void die(const char *, ...);
70 void redraw(void);
71 void draw(void);
72
73 +void newterm(const Arg *);
74 void printscreen(const Arg *);
75 void printsel(const Arg *);
76 void sendbreak(const Arg *);
77 --
78 2.19.2
79
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.