From b12a7f0b8bfb9c778742bc3c32ca3cc805bd65e4 Mon Sep 17 00:00:00 2001 From: gotbletu Date: Mon, 27 Apr 2020 03:48:38 -0700 Subject: [PATCH] w3m plugins --- w3m_plugins/cgi-bin/fzf_surfraw.cgi | 42 ++++++++++++ w3m_plugins/cgi-bin/fzf_surfraw_tmux.cgi | 40 +++++++++++ w3m_plugins/cgi-bin/magnet.py | 34 ++++++++++ w3m_plugins/root-cgi-bin/goto_clipboard.cgi | 25 +++++++ .../root-cgi-bin/goto_clipboard_primary.cgi | 28 ++++++++ .../root-cgi-bin/goto_tmux_clipboard.cgi | 28 ++++++++ w3m_prefix_search.md | 66 +++++++++++++++++++ 7 files changed, 263 insertions(+) create mode 100755 w3m_plugins/cgi-bin/fzf_surfraw.cgi create mode 100755 w3m_plugins/cgi-bin/fzf_surfraw_tmux.cgi create mode 100755 w3m_plugins/cgi-bin/magnet.py create mode 100755 w3m_plugins/root-cgi-bin/goto_clipboard.cgi create mode 100755 w3m_plugins/root-cgi-bin/goto_clipboard_primary.cgi create mode 100755 w3m_plugins/root-cgi-bin/goto_tmux_clipboard.cgi create mode 100644 w3m_prefix_search.md diff --git a/w3m_plugins/cgi-bin/fzf_surfraw.cgi b/w3m_plugins/cgi-bin/fzf_surfraw.cgi new file mode 100755 index 0000000..00921cc --- /dev/null +++ b/w3m_plugins/cgi-bin/fzf_surfraw.cgi @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +### _ _ _ _ +### __ _ ___ | |_| |__ | | ___| |_ _ _ +### / _` |/ _ \| __| '_ \| |/ _ \ __| | | | +###| (_| | (_) | |_| |_) | | __/ |_| |_| | +### \__, |\___/ \__|_.__/|_|\___|\__|\__,_| +### |___/ +### https://www.youtube.com/user/gotbletu +### https://twitter.com/gotbletu +### https://github.com/gotbletu +### gotbletu@gmail.com +### +### Author : gotbletu +### Name : fzf_surfraw.cgi +### Version : 0.2 +### Date : 2020-04-27 +### Description : interactive surfraw smart prefix search engine (mainly use within w3m web browser) +### Depends On : surfraw fzf xsel gawk coreutils grep procps-ng +### Video Demo : https://youtu.be/p5NZb8f8AHA +### References : https://github.com/felipesaa/A-vim-like-firefox-like-configuration-for-w3m + +### Setup +# vim ~/.w3m/keymap +# keymap xs COMMAND "SHELL ~/.w3m/cgi-bin/fzf_surfraw.cgi ; GOTO /usr/lib/w3m/cgi-bin/goto_clipboard_primary.cgi" +# keymap XS COMMAND "SHELL ~/.w3m/cgi-bin/fzf_surfraw.cgi ; TAB_GOTO /usr/lib/w3m/cgi-bin/goto_clipboard_primary.cgi" +# keymap xs COMMAND "SHELL ~/.w3m/cgi-bin/fzf_surfraw.cgi ; GOTO /usr/lib/w3m/cgi-bin/goto_clipboard.cgi" +# keymap XS COMMAND "SHELL ~/.w3m/cgi-bin/fzf_surfraw.cgi ; TAB_GOTO /usr/lib/w3m/cgi-bin/goto_clipboard.cgi" + +clear + +# select your elvi +PREFIX=$(surfraw -elvi | grep -v 'LOCAL\|GLOBAL'| fzf -e | awk '{print $1}') + +# exit script if no elvi is selected (e.g hit ESC) +if [ "$PREFIX" = "" ]; then exit; fi + +# get user input +read -r -e -p " $PREFIX >> Enter Your Search Keyword: " INPUT + +# print proper url and copy to primary clipboard (aka highlighted clipboard) and tmux clipboard +surfraw -browser=echo "$PREFIX" "$INPUT" | xsel -p +# pidof tmux >/dev/null && tmux set-buffer "$(surfraw -browser=echo "$PREFIX" "$INPUT")" diff --git a/w3m_plugins/cgi-bin/fzf_surfraw_tmux.cgi b/w3m_plugins/cgi-bin/fzf_surfraw_tmux.cgi new file mode 100755 index 0000000..7813c7c --- /dev/null +++ b/w3m_plugins/cgi-bin/fzf_surfraw_tmux.cgi @@ -0,0 +1,40 @@ +#!/usr/bin/env bash +### _ _ _ _ +### __ _ ___ | |_| |__ | | ___| |_ _ _ +### / _` |/ _ \| __| '_ \| |/ _ \ __| | | | +###| (_| | (_) | |_| |_) | | __/ |_| |_| | +### \__, |\___/ \__|_.__/|_|\___|\__|\__,_| +### |___/ +### https://www.youtube.com/user/gotbletu +### https://twitter.com/gotbletu +### https://github.com/gotbletu +### gotbletu@gmail.com +### +### Author : gotbletu +### Name : fzf_surfraw_tmux.cgi +### Version : 0.2 +### Date : 2020-04-27 +### Description : interactive surfraw smart prefix search engine (mainly use within w3m web browser) +### Depends On : surfraw fzf tmux gawk coreutils grep procps-ng +### Video Demo : https://youtu.be/p5NZb8f8AHA +### References : https://github.com/felipesaa/A-vim-like-firefox-like-configuration-for-w3m + +### Setup +# vim ~/.w3m/keymap +# keymap xs COMMAND "SHELL ~/.w3m/cgi-bin/fzf_surfraw_tmux.cgi ; GOTO /usr/lib/w3m/cgi-bin/goto_tmux_clipboard.cgi" +# keymap XS COMMAND "SHELL ~/.w3m/cgi-bin/fzf_surfraw_tmux.cgi ; TAB_GOTO /usr/lib/w3m/cgi-bin/goto_tmux_clipboard.cgi" + +clear + +# select your elvi +PREFIX=$(surfraw -elvi | grep -v 'LOCAL\|GLOBAL'| fzf -e | awk '{print $1}') + +# exit script if no elvi is selected (e.g hit ESC) +if [ "$PREFIX" = "" ]; then exit; fi + +# get user input +read -r -e -p " $PREFIX >> Enter Your Search Keyword: " INPUT + +# print proper url and copy to primary clipboard (aka highlighted clipboard) and tmux clipboard +# surfraw -browser=echo "$PREFIX" "$INPUT" | xsel -p +pidof tmux >/dev/null && tmux set-buffer "$(surfraw -browser=echo "$PREFIX" "$INPUT")" diff --git a/w3m_plugins/cgi-bin/magnet.py b/w3m_plugins/cgi-bin/magnet.py new file mode 100755 index 0000000..f95abe1 --- /dev/null +++ b/w3m_plugins/cgi-bin/magnet.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python2 +# Author: Alexandre Boeglin +# Info: send magnet links to your torrent client +# Source: http://boeglin.org/blog/index.php?entry=Handling-magnet-URIs-with-w3m + +########## SETUP ########################## +# 1. vim ~/.w3m/urimethodmap +# magnet: file:/cgi-bin/magnet.py?%s +# 2. mv magnet.py ~/.w3m/cgi-bin/magnet.py +# 3. edit ==> cmd_list = ("transmission-remote", "-a", uri) +# 4. chmod +x ~/.w3m/cgi-bin/magnet.py +########################################### + +# coding=utf-8 +import sys +import os +import subprocess + +uri = os.environ.get('QUERY_STRING') +referer = os.environ.get('HTTP_REFERER') + +if not uri: + print + print "Error: No URI" + sys.exit() + +cmd_list = ("transmission-remote", "-a", uri) + +subprocess.call(cmd_list) + +if referer: + print "HTTP/1.1 303 See Other" + print "Location: %s" % referer + diff --git a/w3m_plugins/root-cgi-bin/goto_clipboard.cgi b/w3m_plugins/root-cgi-bin/goto_clipboard.cgi new file mode 100755 index 0000000..34eaa63 --- /dev/null +++ b/w3m_plugins/root-cgi-bin/goto_clipboard.cgi @@ -0,0 +1,25 @@ +#!/usr/bin/env sh +### __ _ _ +### / _| ___| (_)_ __ ___ ___ __ _ __ _ +###| |_ / _ \ | | '_ \ / _ \/ __|/ _` |/ _` | +###| _| __/ | | |_) | __/\__ \ (_| | (_| | +###|_| \___|_|_| .__/ \___||___/\__,_|\__,_| +### |_| +### https://github.com/felipesaa +### +### Author : felipesaa +### Name : goto_clipboard.cgi +### Version : 0.1 +### Date : 2018-09-30 +### Description : paste and go feature for w3m web browser using system clipboard (aka ctrl+v) +### Depends On : w3m xsel +### Video Demo : https://youtu.be/p5NZb8f8AHA +### Source : https://github.com/felipesaa/A-vim-like-firefox-like-configuration-for-w3m +### Install : put this script in /usr/lib/w3m/cgi-bin/ + +#GOTO url in clipboard in current page. If the clipboard has a +#"non url string/nothing" an blank page is shown. +printf "%s\r\n" "W3m-control: GOTO $(xsel -ob)"; +#delete the buffer (element in history) created between the current page and +#the searched page by calling this script. +printf "W3m-control: DELETE_PREVBUF\r\n" diff --git a/w3m_plugins/root-cgi-bin/goto_clipboard_primary.cgi b/w3m_plugins/root-cgi-bin/goto_clipboard_primary.cgi new file mode 100755 index 0000000..a9b208e --- /dev/null +++ b/w3m_plugins/root-cgi-bin/goto_clipboard_primary.cgi @@ -0,0 +1,28 @@ +#!/usr/bin/env sh +### _ _ _ _ +### __ _ ___ | |_| |__ | | ___| |_ _ _ +### / _` |/ _ \| __| '_ \| |/ _ \ __| | | | +###| (_| | (_) | |_| |_) | | __/ |_| |_| | +### \__, |\___/ \__|_.__/|_|\___|\__|\__,_| +### |___/ +### https://www.youtube.com/user/gotbletu +### https://twitter.com/gotbletu +### https://github.com/gotbletu +### gotbletu@gmail.com +### +### Author : gotbletu +### Name : goto_clipboard_primary.cgi +### Version : 0.1 +### Date : 2020-04-26 +### Description : paste and go feature for w3m web browser using system clipboard (primary aka shift+insert) +### Depends On : w3m xsel +### Video Demo : https://youtu.be/p5NZb8f8AHA +### References : https://github.com/felipesaa/A-vim-like-firefox-like-configuration-for-w3m +### Install : put this script in /usr/lib/w3m/cgi-bin/ + +#GOTO url in clipboard in current page. If the clipboard has a +#"non url string/nothing" an blank page is shown. +printf "%s\r\n" "W3m-control: GOTO $(xsel -op)"; +#delete the buffer (element in history) created between the current page and +#the searched page by calling this script. +printf "W3m-control: DELETE_PREVBUF\r\n" diff --git a/w3m_plugins/root-cgi-bin/goto_tmux_clipboard.cgi b/w3m_plugins/root-cgi-bin/goto_tmux_clipboard.cgi new file mode 100755 index 0000000..fe91b57 --- /dev/null +++ b/w3m_plugins/root-cgi-bin/goto_tmux_clipboard.cgi @@ -0,0 +1,28 @@ +#!/usr/bin/env sh +### _ _ _ _ +### __ _ ___ | |_| |__ | | ___| |_ _ _ +### / _` |/ _ \| __| '_ \| |/ _ \ __| | | | +###| (_| | (_) | |_| |_) | | __/ |_| |_| | +### \__, |\___/ \__|_.__/|_|\___|\__|\__,_| +### |___/ +### https://www.youtube.com/user/gotbletu +### https://twitter.com/gotbletu +### https://github.com/gotbletu +### gotbletu@gmail.com +### +### Author : gotbletu +### Name : goto_tmux_clipboard.cgi +### Version : 0.1 +### Date : 2020-04-26 +### Description : paste and go feature for w3m web browser using tmux clipboard +### Depends On : w3m tmux +### Video Demo : https://youtu.be/p5NZb8f8AHA +### References : https://github.com/felipesaa/A-vim-like-firefox-like-configuration-for-w3m +### Install : put this script in /usr/lib/w3m/cgi-bin/ + +#GOTO url in clipboard in current page. If the clipboard has a +#"non url string/nothing" an blank page is shown. +printf "%s\r\n" "W3m-control: GOTO $(tmux paste-buffer)"; +#delete the buffer (element in history) created between the current page and +#the searched page by calling this script. +printf "W3m-control: DELETE_PREVBUF\r\n" diff --git a/w3m_prefix_search.md b/w3m_prefix_search.md new file mode 100644 index 0000000..a9ec49f --- /dev/null +++ b/w3m_prefix_search.md @@ -0,0 +1,66 @@ +# W3M Prefix Search Engines Using FZF and Surfraw +improving w3m by having a quick way to search multiple search engines or even custom search engines via the power of surfraw elvi + +* tutorial video: [Link](https://youtu.be/p5NZb8f8AHA) +* offical website: [Link](https://www.youtube.com/user/gotbletu) + +### install requirements + w3m fzf surfraw + +### install scripts to root directory +Download at [root-cgi-bin](w3m_plugins/root-cgi-bin) + +---- + # save it to + + /usr/lib/w3m/cgi-bin/goto_clipboard_primary.cgi + /usr/lib/w3m/cgi-bin/goto_clipboard.cgi + /usr/lib/w3m/cgi-bin/goto_tmux_clipboard.cgi +---- + +### install scripts to local directory +Download at [cgi-bin](w3m_plugins/cgi-bin) + +---- + # save it to + + ~/.w3m/cgi-bin/fzf_surfraw.cgi + ~/.w3m/cgi-bin/fzf_surfraw_tmux.cgi +---- + +### configuration + vim ~/.w3m/keymap + + # for x sessions + keymap xs COMMAND "SHELL ~/.w3m/cgi-bin/fzf_surfraw.cgi ; GOTO /usr/lib/w3m/cgi-bin/goto_clipboard_primary.cgi" + keymap XS COMMAND "SHELL ~/.w3m/cgi-bin/fzf_surfraw.cgi ; TAB_GOTO /usr/lib/w3m/cgi-bin/goto_clipboard_primary.cgi" + # keymap xs COMMAND "SHELL ~/.w3m/cgi-bin/fzf_surfraw.cgi ; GOTO /usr/lib/w3m/cgi-bin/goto_clipboard.cgi" + # keymap XS COMMAND "SHELL ~/.w3m/cgi-bin/fzf_surfraw.cgi ; TAB_GOTO /usr/lib/w3m/cgi-bin/goto_clipboard.cgi" + + # for tmux users or headless server + # keymap xs COMMAND "SHELL ~/.w3m/cgi-bin/fzf_surfraw_tmux.cgi ; GOTO /usr/lib/w3m/cgi-bin/goto_tmux_clipboard.cgi" + # keymap XS COMMAND "SHELL ~/.w3m/cgi-bin/fzf_surfraw_tmux.cgi ; TAB_GOTO /usr/lib/w3m/cgi-bin/goto_tmux_clipboard.cgi" + + +### references +- https://youtu.be/p5NZb8f8AHA +- https://github.com/felipesaa/A-vim-like-firefox-like-configuration-for-w3m +- [W3M Playlist](https://www.youtube.com/playlist?list=PLqv94xWU9zZ35Yv0s6zMID5JoS8qu19Kh) +- [Surfraw Playlist](https://www.youtube.com/playlist?list=PLqv94xWU9zZ2e-lDbmBpdASA6A6JF4Nyz) +- [FZF Playlist](https://www.youtube.com/playlist?list=PLqv94xWU9zZ2fMsMMDF4PjtNHCeBFbggD) + +### contact + + _ _ _ _ + __ _ ___ | |_| |__ | | ___| |_ _ _ + / _` |/ _ \| __| '_ \| |/ _ \ __| | | | + | (_| | (_) | |_| |_) | | __/ |_| |_| | + \__, |\___/ \__|_.__/|_|\___|\__|\__,_| + |___/ + +- http://www.youtube.com/user/gotbletu +- https://twitter.com/gotbletu +- https://github.com/gotbletu +- gotbletu@gmail.com + +