st-open-selected-0.9.2.diff - sites - public wiki contents of suckless.org | |
git clone git://git.suckless.org/sites | |
Log | |
Files | |
Refs | |
--- | |
st-open-selected-0.9.2.diff (2090B) | |
--- | |
1 diff --git a/config.def.h b/config.def.h | |
2 index 2cd740a..d362d6b 100644 | |
3 --- a/config.def.h | |
4 +++ b/config.def.h | |
5 @@ -176,6 +176,7 @@ static uint forcemousemod = ShiftMask; | |
6 */ | |
7 static MouseShortcut mshortcuts[] = { | |
8 /* mask button function argument … | |
9 + { ControlMask, Button2, selopen, {.i = 0}, … | |
10 { XK_ANY_MOD, Button2, selpaste, {.i = 0}, … | |
11 { ShiftMask, Button4, ttysend, {.s = "\033[5;… | |
12 { XK_ANY_MOD, Button4, ttysend, {.s = "\031"} … | |
13 diff --git a/st.c b/st.c | |
14 index 2e3800e..f55facb 100644 | |
15 --- a/st.c | |
16 +++ b/st.c | |
17 @@ -1903,6 +1903,16 @@ strhandle(void) | |
18 if (narg > 1) | |
19 xsettitle(strescseq.args[1]); | |
20 return; | |
21 + case 7: | |
22 + if (strstr(strescseq.args[1], "file://") != str… | |
23 + fprintf(stderr, "erresc: dir %s must ha… | |
24 + strescseq.args[1]); | |
25 + return; | |
26 + } | |
27 + if (chdir(strescseq.args[1] + 7) != 0) /* +7 to… | |
28 + fprintf(stderr, "erresc: invalid direct… | |
29 + strescseq.args[1]); | |
30 + return; | |
31 case 52: | |
32 if (narg > 2 && allowwindowops) { | |
33 dec = base64dec(strescseq.args[2]); | |
34 diff --git a/x.c b/x.c | |
35 index d73152b..e44d61c 100644 | |
36 --- a/x.c | |
37 +++ b/x.c | |
38 @@ -5,6 +5,7 @@ | |
39 #include <locale.h> | |
40 #include <signal.h> | |
41 #include <sys/select.h> | |
42 +#include <sys/wait.h> | |
43 #include <time.h> | |
44 #include <unistd.h> | |
45 #include <libgen.h> | |
46 @@ -55,6 +56,7 @@ static void clipcopy(const Arg *); | |
47 static void clippaste(const Arg *); | |
48 static void numlock(const Arg *); | |
49 static void selpaste(const Arg *); | |
50 +static void selopen(const Arg *); | |
51 static void zoom(const Arg *); | |
52 static void zoomabs(const Arg *); | |
53 static void zoomreset(const Arg *); | |
54 @@ -286,6 +288,20 @@ selpaste(const Arg *dummy) | |
55 xw.win, CurrentTime); | |
56 } | |
57 | |
58 +void | |
59 +selopen(const Arg *dummy) | |
60 +{ | |
61 + pid_t chpid; | |
62 + | |
63 + if ((chpid = fork()) == 0) { | |
64 + if (fork() == 0) | |
65 + execlp("xdg-open", "xdg-open", getsel(), NULL); | |
66 + exit(1); | |
67 + } | |
68 + if (chpid > 0) | |
69 + waitpid(chpid, NULL, 0); | |
70 +} | |
71 + | |
72 void | |
73 numlock(const Arg *dummy) | |
74 { |