11#! /usr/bin/env bash
2- # nbrowser v0.3
2+ # nbrowser v0.4
33# author : odnar-dev <https://github.com/odnar-dev>
44# source : https://github.com/MyOS-ArchLinux/nbrowser
55# license: GPLv3 <https://gnu.org/licenses/gpl-3.0.html>
@@ -34,11 +34,7 @@ has() {
3434}
3535
3636_pemx () {
37- if has ' rofi' ; then
38- rofi -e " error: $1 "
39- else
40- >&2 printf ' \033[31;1merror :\033[m %s\n' " $1 "
41- fi
37+ rofi -e " error: $1 "
4238 exit 1
4339}
4440
@@ -50,7 +46,13 @@ _choose(){
5046 rofi -dmenu -i -p ' Select Item ' -theme-str ' window {width: 95%;}' -l 10 -no-click-to-exit -filter " ${@:- } "
5147}
5248
53- # Check for installed browsers
49+ # check if necessary programs are installed
50+ if ! has ' rofi' ; then
51+ notify-send " nbrowser: you need to install rofi!"
52+ exit 1
53+ fi
54+
55+ # check for installed browsers
5456# # keep the first place to special action
5557browser_count=1
5658
@@ -84,8 +86,8 @@ for prog in badwolf qutebrowser ephemeral ; do
8486 fi
8587done
8688
87- # # custom config
88- [[ -f " ${NBROWSER_CONFIG_DIR} /config" ]] && source " ${NBROWSER_CONFIG_DIR} /config"
89+ # custom config
90+ [[ -f " ${NBROWSER_CONFIG_DIR} /config" ]] && source " ${NBROWSER_CONFIG_DIR} /config"
8991
9092if ! has _clean_url ; then
9193 _clean_url (){
@@ -156,10 +158,10 @@ open_video_with(){
156158 " Download" )
157159 if [ -n " ${NBROWSER_DOWNLOADER} " ] ; then
158160 { setsid -f ${NBROWSER_DOWNLOADER} " $* " > /dev/null 2>&1 ; }
159- elif has ' youtube-dl' ; then
160- { setsid -f " ${TERMINAL:- st} " -e sh -c " youtube-dl $* || read" > /dev/null 2>&1 ; }
161161 elif has ' yt-dlp' ; then
162162 { setsid -f " ${TERMINAL:- st} " -e sh -c " yt-dlp $* || read" > /dev/null 2>&1 ; }
163+ elif has ' youtube-dl' ; then
164+ { setsid -f " ${TERMINAL:- st} " -e sh -c " youtube-dl $* || read" > /dev/null 2>&1 ; }
163165 else
164166 _pemx " youtube-dl is not installed in your system!"
165167 fi
@@ -264,11 +266,14 @@ main(){
264266 http://* |https://* )
265267 url_handler " $@ "
266268 ;;
267- browser://http:// * |browser://https:// * )
269+ browser://* )
268270 url_handler " ${1: 10} "
269271 ;;
270- freetube://http://* |freetube://https://* )
271- url_handler " ${1: 11} "
272+ freetube://* )
273+ open_video_with " ${1: 11} "
274+ ;;
275+ play://* )
276+ open_video_with " ${1: 7} "
272277 ;;
273278
274279 # my own shortcuts
@@ -288,46 +293,53 @@ main(){
288293 url_handler " https://www.twitch.tv/${1: 7} "
289294 ;;
290295
291- # BANGS
296+ # bangs
292297 " !" * )
293- if [ -f " ${NBROWSER_CONFIG_DIR} /bangs/${1/ ?} " ] ; then
294- source " ${NBROWSER_CONFIG_DIR} /bangs/${1/ ?} "
295- has nbrowser_bang || _pemx " couldn't find nbrowser_bang() function in ${NBROWSER_CONFIG_DIR} /bangs/${1/ ?} "
298+ local bang=" ${1/ ?} "
299+ if [ -f " ${NBROWSER_CONFIG_DIR} /bangs/${bang} " ] ; then
296300 shift
301+ source " ${NBROWSER_CONFIG_DIR} /bangs/${bang} "
302+ has nbrowser_bang || _pemx " couldn't find nbrowser_bang() function in ${NBROWSER_CONFIG_DIR} /bangs/${bang} "
297303 nbrowser_bang " $* "
298304 else
299- url_handler " https://duckduckgo.com/?q= $* "
305+ _pemx " bang ' ${bang} ' not found! "
300306 fi
301307 ;;
302308
303- # Search Engines
309+ # engines
304310 " ?" * )
305311 local engine=" ${1/ ?} "
306312 if [ -f " ${NBROWSER_CONFIG_DIR} /engines/${engine} " ] ; then
313+ shift
307314 source " ${NBROWSER_CONFIG_DIR} /engines/${engine} "
308315 has nbrowser_search || _pemx " couldn't find nbrowser_search() function in ${NBROWSER_CONFIG_DIR} /engines/${engine} "
309- shift
310316 [ -n " $1 " ] && url_handler " $( nbrowser_search $* ) "
311317 elif [ -n " ${ENGINES[$engine]} " ]; then
312318 shift
313319 url_handler " ${ENGINES[$engine]} $* "
320+ elif [ -f " $NBROWSER_CONFIG_DIR /engines/engines.json" ]; then
321+ shift
322+ local url=$( jq -r " .[]|select( .t == \" $engine \" )|.u" " $NBROWSER_CONFIG_DIR /engines/engines.json" | sed " s/{{{s}}}/$* /g" )
323+ [ -z " $url " ] && _pemx " engine '${engine} ' not found!"
324+ url_handler " $url "
314325 else
315326 _pemx " search engine '${engine} ' not found!"
316327 fi
317328 ;;
329+
318330 * )
319331 if [ -e " $* " ] ; then
320332 case $@ in
321333 * .pdf)
322334 # handle local pdf
323335 [ -z " $NBROWSER_PDF_VIEWER " ] || installed_browsers[0]=" PDF Reader : ${NBROWSER_PDF_VIEWER} "
324- ;;
325- * .html )
326- # handle local html
336+ ;;
337+ * )
338+ # handle other local files
327339 [ -z " $NBROWSER_HTML_EDITOR " ] || installed_browsers[0]=" Text Editor : ${NBROWSER_HTML_EDITOR} "
340+ ;;
328341 esac
329342 open_in_browser " $* "
330-
331343 elif [ -f " ${NBROWSER_CONFIG_DIR} /engines/${NBROWSER_DEFAULT_SEARCH} " ] ; then
332344 source " ${NBROWSER_CONFIG_DIR} /engines/${NBROWSER_DEFAULT_SEARCH} "
333345 has nbrowser_search || _pemx " couldn't find nbrowser_search() function in ${NBROWSER_CONFIG_DIR} /engines/${NBROWSER_DEFAULT_SEARCH} "
0 commit comments