Add mouse function to play medias in external player
authorQuentin Rameau <quinq@fifth.space>
Sat, 21 Nov 2015 18:53:29 +0000 (19:53 +0100)
committerQuentin Rameau <quinq@fifth.space>
Sat, 21 Nov 2015 18:53:29 +0000 (19:53 +0100)
Control + left click launches mpv with the target media url.

config.def.h
surf.c

index 6d62c98..32ef407 100644 (file)
@@ -65,6 +65,13 @@ static WebKitFindOptions findopts = WEBKIT_FIND_OPTIONS_CASE_INSENSITIVE |
        } \
 }
 
+/* VIDEOPLAY(URI) */
+#define VIDEOPLAY(u) {\
+       .v = (const char *[]){ "/bin/sh", "-c", \
+           "mpv --really-quiet \"$0\"", u, NULL \
+       } \
+}
+
 /* styles */
 /*
  * The iteration will stop at the first match, beginning at the beginning of
@@ -142,4 +149,5 @@ static Button buttons[] = {
        { OnLink,       MODKEY,         1,      clicknewwindow, { .b = 1 },     1 },
        { OnAny,        0,              8,      clicknavigate,  { .i = -1 },    1 },
        { OnAny,        0,              9,      clicknavigate,  { .i = +1 },    1 },
+       { OnMedia,      MODKEY,         1,      clickexternplayer, { 0 },       1 },
 };
diff --git a/surf.c b/surf.c
index 9c9bae7..81ba9a5 100644 (file)
--- a/surf.c
+++ b/surf.c
@@ -178,6 +178,7 @@ static void find(Client *c, const Arg *a);
 /* Buttons */
 static void clicknavigate(Client *c, const Arg *a, WebKitHitTestResult *h);
 static void clicknewwindow(Client *c, const Arg *a, WebKitHitTestResult *h);
+static void clickexternplayer(Client *c, const Arg *a, WebKitHitTestResult *h);
 
 static char winid[64];
 static char togglestats[10];
@@ -1462,6 +1463,17 @@ clicknewwindow(Client *c, const Arg *a, WebKitHitTestResult *h)
        newwindow(c, &arg, a->b);
 }
 
+void
+clickexternplayer(Client *c, const Arg *a, WebKitHitTestResult *h)
+{
+       Arg arg;
+
+       if (webkit_hit_test_result_get_context(h) & OnMedia) {
+               arg = (Arg)VIDEOPLAY(webkit_hit_test_result_get_media_uri(h));
+               spawn(c, &arg);
+       }
+}
+
 int
 main(int argc, char *argv[])
 {