From 640ee9dbf93821bcfb4eb8735d922d45520d7a63 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Wed, 18 Sep 2019 17:55:44 +0200 Subject: [PATCH] Add surfraw rofi extension to search the web with bangs --- .config/rofi-surfraw/searchengines | 5 ++ .config/rofi-surfraw/surfraw.conf | 2 + .config/sxhkd/sxhkdrc | 6 ++- .local/bin/rofi-surfraw | 86 ++++++++++++++++++++++++++++++ 4 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 .config/rofi-surfraw/searchengines create mode 100644 .config/rofi-surfraw/surfraw.conf create mode 100755 .local/bin/rofi-surfraw diff --git a/.config/rofi-surfraw/searchengines b/.config/rofi-surfraw/searchengines new file mode 100644 index 0000000..1b7f79f --- /dev/null +++ b/.config/rofi-surfraw/searchengines @@ -0,0 +1,5 @@ +!aur - surfraw - duckduckgo !aur +!wp - surfraw - wikipedia +!rb - custom - https://www.rebuy.de/kaufen/suchen?q= +!sp - custom - http://www.sputnikmusic.com/search_results.php?genreid=0&search_in=Bands&search_text= +!hn - surfraw - duckduckgo !hackernews diff --git a/.config/rofi-surfraw/surfraw.conf b/.config/rofi-surfraw/surfraw.conf new file mode 100644 index 0000000..d6c1170 --- /dev/null +++ b/.config/rofi-surfraw/surfraw.conf @@ -0,0 +1,2 @@ +default=duckduckgo +help_color="#0C73C2" diff --git a/.config/sxhkd/sxhkdrc b/.config/sxhkd/sxhkdrc index 0303661..a1c55e5 100644 --- a/.config/sxhkd/sxhkdrc +++ b/.config/sxhkd/sxhkdrc @@ -12,10 +12,14 @@ super + space super + r exec rofi -modi combi,ssh -show combi -combi-modi "window,clipboard:greenclip print,run" -# open more extensive run menu +# open gopass frontend menu super + p exec rofi-gopass +# open surfraw rofi frontend +super + q + exec rofi-surfraw + # System functionality # Enable lock screen (TODO does not stop music, etc yet diff --git a/.local/bin/rofi-surfraw b/.local/bin/rofi-surfraw new file mode 100755 index 0000000..eb17666 --- /dev/null +++ b/.local/bin/rofi-surfraw @@ -0,0 +1,86 @@ +#!/bin/bash + +# source surfraw config +source $HOME/.surfraw.conf + +# load global files +source /etc/rofi-surfraw.conf + +# create local copy of custom searchengines +if [[ ! -d $HOME/.config/rofi-surfraw ]]; then + mkdir $HOME/.config/rofi-surfraw/searchengines +fi +if [[ ! -f $HOME/.config/rofi-surfraw/searchengines ]]; then + cp /usr/share/doc/rofi-surfraw/searchengines $HOME/.config/rofi-surfraw/searchengines +fi + +# get local config +if [[ -f $HOME/.config/rofi-surfraw/config ]]; then + source $HOME/.config/rofi-surfraw/config +fi + +# get list of search engines from surfraw +if [[ $@ == *"--no-list"* ]]; then + : +else +# list=$(sr -elvi | awk '{ print "?"$1 }' | tail -n +2) + list=$(sr -elvi | awk '{if (NR!=1) print "?"$1 }') +fi + +# get custom engines from text file +if [[ $@ == *"--no-custom"* ]]; then + : +else +# custom=$(cat $HOME/.config/rofi-surfraw/searchengines | awk -F ' - ' '{ print $1 }') + custom=$(awk -F ' - ' '{ print $1 }' $HOME/.config/rofi-surfraw/searchengines) +fi + +main () { +# Draw Menu +HELP_MSG="Hit Ctrl+Space to complete Engine Name +Searches without prepended engine use "${default}"" +elvi=$(echo -e "${list}\n${custom}" | rofi -dmenu -mesg "${HELP_MSG}" -p "Search > ") + +# Some logic +if [[ $elvi == "" ]]; then exit +elif [[ $elvi == "!"* ]]; then + entry=$(grep "$(echo "${elvi}" | awk '{ print $1 }')" "$HOME/.config/rofi-surfraw/searchengines") + method=$(echo "${entry}" | awk -F ' - ' '{ print $2 }') + bang=$(echo "${entry}" | awk -F ' - ' '{ print $3 }') + search=$(echo "${elvi}" | awk '{$1=""; print $0}' | cut -c 2-) + if [[ $method == "surfraw" ]]; then + sr ${bang} ${search} + elif [[ $method == "custom" ]]; then + "$SURFRAW_graphical_browser" $SURFRAW_graphical_browser_args ${bang}"${search}" + fi +elif [[ $elvi == "?"* ]]; then + name=$(echo "${elvi}" | awk '{ print $1 }' | cut -c 2-) + search=$(echo "${elvi}" | awk '{$1=""; print $0}' | cut -c 2-) + sr ${name} ${search} +else + if [[ $default == "!"* ]]; then + entry=$(grep "$(echo "${default}" | awk '{ print $1 }')" "$HOME/.config/rofi-surfraw/searchengines") + method=$(echo "${entry}" | awk -F ' - ' '{ print $2 }') + bang=$(echo "${entry}" | awk -F ' - ' '{ print $3 }') + else + method="surfraw" + bang="$default" + fi + search="${elvi}" + if [[ $method == "surfraw" ]]; then + sr ${bang} ${search} + elif [[ $method == "custom" ]]; then + "$SURFRAW_graphical_browser" $SURFRAW_graphical_browser_args ${bang}"${search}" + fi +fi +} + +if [[ $1 == "--help" ]]; then + echo "rofi-surfraw - (C) 2015 Rasmus Steinke " + echo "---" + echo "--help this help" + echo "--no-list do not show inbuild search engines" + echo "--no-custom do not show custom search engines" +else + main +fi