patch: open-selected

This commit is contained in:
2026-01-01 15:07:12 -05:00
parent cef81e7128
commit ff42b9bd86
3 changed files with 27 additions and 0 deletions

View File

@@ -176,6 +176,7 @@ static uint forcemousemod = ShiftMask;
*/
static MouseShortcut mshortcuts[] = {
/* mask button function argument release */
{ ControlMask, Button2, selopen, {.i = 0}, 1 },
{ XK_ANY_MOD, Button4, kscrollup, {.i = 1}, 0, /* !alt */ -1 },
{ XK_ANY_MOD, Button5, kscrolldown, {.i = 1}, 0, /* !alt */ -1 },
{ XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 },

10
st.c
View File

@@ -1887,6 +1887,16 @@ csihandle(void)
term.c.y+1, term.c.x+1);
ttywrite(buf, len, 0);
break;
case 7:
if (strstr(strescseq.args[1], "file://") != strescseq.args[1]) {
fprintf(stderr, "erresc: dir %s must have prefix 'file://'\n",
strescseq.args[1]);
return;
}
if (chdir(strescseq.args[1] + 7) != 0) /* +7 to remove prefix */
fprintf(stderr, "erresc: invalid directory %s\n",
strescseq.args[1]);
return;
default:
goto unknown;
}

16
x.c
View File

@@ -5,6 +5,7 @@
#include <locale.h>
#include <signal.h>
#include <sys/select.h>
#include <sys/wait.h>
#include <time.h>
#include <unistd.h>
#include <libgen.h>
@@ -56,6 +57,7 @@ static void clipcopy(const Arg *);
static void clippaste(const Arg *);
static void numlock(const Arg *);
static void selpaste(const Arg *);
static void selopen(const Arg *);
static void zoom(const Arg *);
static void zoomabs(const Arg *);
static void zoomreset(const Arg *);
@@ -289,6 +291,20 @@ selpaste(const Arg *dummy)
xw.win, CurrentTime);
}
void
selopen(const Arg *dummy)
{
pid_t chpid;
if ((chpid = fork()) == 0) {
if (fork() == 0)
execlp("xdg-open", "xdg-open", getsel(), NULL);
exit(1);
}
if (chpid > 0)
waitpid(chpid, NULL, 0);
}
void
numlock(const Arg *dummy)
{