diff --git a/README.md b/README.md index 71e448a..53f84f7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ # nbrowser + +`nbrowser` started as browser prompter for Linux. It works by setting it as the default browser; any clicked links in non-browser apps are now sent to `nbrowser` where you are presented with a menu of all your installed browsers. You may now decide which app you’d like to continue opening the link with and more. +

screenshot rofi with DarkBlue theme diff --git a/nbrowser b/nbrowser index 408dbc0..da53993 100755 --- a/nbrowser +++ b/nbrowser @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# nbrowser v0.5 +# nbrowser v0.6 # author : odnar-dev # source : https://github.com/MyOS-ArchLinux/nbrowser # license: GPLv3 @@ -49,6 +49,10 @@ _choose(){ rofi -dmenu -i -p 'Select Item ' -theme-str 'window {width: 95%;}' -l 10 -no-click-to-exit -filter "${@:-}" } +_input(){ + rofi -l 0 -width 50 -p "${@:-input}" -dmenu +} + listfiles(){ for file in ${NBROWSER_CONFIG_DIR}/$1/*; do [ -e "$file" ] || [ -L "$file" ] || continue @@ -291,6 +295,9 @@ main(){ freetube://*) open_video_with "${1:11}" ;; + mpv://*|vlc://*) + open_video_with "${1:6}" + ;; play://*) open_video_with "${1:7}" ;; @@ -329,30 +336,34 @@ main(){ "?"*) local engine="${1/?}" shift + local searchquery="$*" if [ -f "${NBROWSER_CONFIG_DIR}/engines/${engine}" ] ; then source "${NBROWSER_CONFIG_DIR}/engines/${engine}" has nbrowser_search || _pemx "couldn't find nbrowser_search() function in ${NBROWSER_CONFIG_DIR}/engines/${engine}" - [ -n "$1" ] && url_handler "$(nbrowser_search $*)" + [ -z "$searchquery" ] && searchquery=$(_input "$engine Search") + [ -n "$searchquery" ] && url_handler "$(nbrowser_search $searchquery)" elif [ -n "${ENGINES[${engine:- }]}" ]; then - url_handler "${ENGINES[$engine]}$*" + [ -z "$searchquery" ] && searchquery=$(_input "$engine Search") + [ -n "$searchquery" ] && url_handler "${ENGINES[$engine]}$searchquery" elif [ -f "$NBROWSER_CONFIG_DIR/engines.json" ]; then - local url=$(jq -r ".[]|select( .t == \"$engine\" )|.u" "$NBROWSER_CONFIG_DIR/engines.json" | sed "s/{{{s}}}/$*/g") + local url=$(jq -r ".[]|select( .t == \"$engine\" )|.u" "$NBROWSER_CONFIG_DIR/engines.json") if [ ! -z "$url" ] ; then - url_handler "$url" + [ -z "$searchquery" ] && searchquery=$(_input "$engine Search") + [ -n "$searchquery" ] && url_handler "$(echo $url | sed "s/{{{s}}}/$searchquery/g")" else ENGINESLIST="$(listfiles engines)" ENGINESLIST+=" ${!ENGINES[@]}" ENGINESLIST+=" $(jq -r ".[]|.t" "$NBROWSER_CONFIG_DIR/engines.json")" engine=$(printf "%s\n" ${ENGINESLIST} | awk '!a[$0]++' | rofi -dmenu -p 'engines' -i -mesg "engine '${engine}' not found!") [ -z "$engine" ] && exit - [ -n "$1" ] && main "?"$engine $* + main "?"$engine $searchquery fi else ENGINESLIST="$(listfiles engines)" ENGINESLIST+=" ${!ENGINES[@]}" engine=$(printf "%s\n" ${ENGINESLIST} | awk '!a[$0]++' | rofi -dmenu -p 'engines' -i -mesg "engine '${engine}' not found!") [ -z "$engine" ] && exit - [ -n "$1" ] && main "?"$engine $* + main "?"$engine $searchquery fi ;;