diff options
author | Quentin Rameau <quinq@fifth.space> | 2015-11-21 19:53:29 +0100 |
---|---|---|
committer | Quentin Rameau <quinq@fifth.space> | 2015-11-21 19:53:29 +0100 |
commit | 954a7181970f61acd54ce82cdff4195e72530db1 (patch) | |
tree | 94632ffa9ed89e16c7eb6004408edef6fcb13e26 | |
parent | 26eb2f761c70036bae3a4ee866adb21e9dd97695 (diff) | |
download | surf-954a7181970f61acd54ce82cdff4195e72530db1.tar.gz surf-954a7181970f61acd54ce82cdff4195e72530db1.tar.bz2 surf-954a7181970f61acd54ce82cdff4195e72530db1.zip |
Add mouse function to play medias in external player
Control + left click launches mpv with the target media url.
-rw-r--r-- | config.def.h | 8 | ||||
-rw-r--r-- | surf.c | 12 |
2 files changed, 20 insertions, 0 deletions
diff --git a/config.def.h b/config.def.h index 6d62c98..32ef407 100644 --- a/config.def.h +++ b/config.def.h @@ -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 }, }; @@ -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[]) { |