Skip to content

Commit 27e3a3d

Browse files
authored
v0.4
check if `rofi` is installed prefer `yt-dlp` handle `play://` ,` gemini://` check if `engines.json` available and use it
2 parents 552376c + d81e9b2 commit 27e3a3d

File tree

2 files changed

+38
-26
lines changed

2 files changed

+38
-26
lines changed

nbrowser

Lines changed: 37 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
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
5557
browser_count=1
5658

@@ -84,8 +86,8 @@ for prog in badwolf qutebrowser ephemeral ; do
8486
fi
8587
done
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

9092
if ! 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}"

nbrowser.desktop

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ Comment=Open in browser
55
Type=Application
66
Exec=nbrowser %u
77
Icon=browser
8-
MimeType=application/pdf;text/html;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/freetube;x-scheme-handler/browser;
8+
MimeType=application/pdf;text/html;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/freetube;x-scheme-handler/browser;x-scheme-handler/play;x-scheme-handler/gemini;
99
Terminal=false

0 commit comments

Comments
 (0)