Skip to content

Commit 05faa05

Browse files
authored
v0.8
check out pr #26
1 parent 98f2eb6 commit 05faa05

File tree

1 file changed

+49
-20
lines changed

1 file changed

+49
-20
lines changed

nbrowser

Lines changed: 49 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
#!/usr/bin/env bash
2-
# nbrowser v0.7
2+
# nbrowser v0.8
33
# Requires bash 4+
44
# author : odnar-dev <https://github.com/odnar-dev>
55
# source : https://github.com/MyOS-ArchLinux/nbrowser
66
# license: GPLv3 <https://gnu.org/licenses/gpl-3.0.html>
77
# shellcheck disable=SC2190,SC2086,SC1091
88

99
NBROWSER_CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/nbrowser"
10+
NBROWSER_CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/nbrowser"
1011
NBROWSER_DEFAULT_SEARCH=${NBROWSER_DEFAULT_SEARCH:-duckduckgo}
1112
COPY_TO_CLIPBOARD_OPTION=${COPY_TO_CLIPBOARD_OPTION:-true}
1213
NBROWSER_SIMPLE_URL_HANDLER=${NBROWSER_SIMPLE_URL_HANDLER:-false}
@@ -32,6 +33,10 @@ ENGINES=(
3233
["ytb"]="https://www.youtube.com/results?search_query="
3334
)
3435

36+
FIREFOX_BASED_BROWSERS=(librewolf firefox floorp icecat palemoon firedragon)
37+
CHROMIUM_BASED_BROWSERS=(google-chrome-stable chromium brave vivaldi-stable opera)
38+
OTHER_BASED_BROWSERS=(badwolf qutebrowser ephemeral)
39+
3540
has() {
3641
case "$(command -v "$1" 2>/dev/null)" in
3742
alias*|"") return 1
@@ -48,7 +53,8 @@ _notify(){
4853
}
4954

5055
_choose(){
51-
rofi -dmenu -i -p 'Select Item ' -theme-str 'window {width: 95%;}' -l 10 -no-click-to-exit -filter "${@:-}"
56+
[ -z "${2}" ] || local ROFI_ADD_ARGS=${2:-}
57+
rofi -dmenu -i -p 'Select Item ' -theme-str 'window {width: 95%;}' -l 10 -no-click-to-exit ${ROFI_ADD_ARGS:-} -filter "${1:-}"
5258
}
5359

5460
_input(){
@@ -73,33 +79,34 @@ fi
7379
## keep the first place to special action
7480
browser_count=1
7581

82+
add_browser(){
83+
local browser_name="${1:?}"
84+
local browser_path="${2:?}"
85+
browser_count=$((browser_count+1))
86+
installed_browsers[$browser_count]="${browser_name:?} : ${browser_path:?}"
87+
}
88+
7689
## firefox based browser
77-
for prog in librewolf firefox icecat palemoon; do
90+
for prog in ${FIREFOX_BASED_BROWSERS[*]}; do
7891
if has "$prog" ; then
79-
browser_count=$((browser_count+1))
80-
installed_browsers[$browser_count]="$prog : $(command -v $prog)"
81-
# add private window
82-
browser_count=$((browser_count+1))
83-
installed_browsers[$browser_count]="$prog [Private] : $(command -v $prog) --private-window"
92+
add_browser "$prog" "$(command -v $prog)"
93+
add_browser "$prog [Private]" "$(command -v $prog) --private-window"
8494
fi
8595
done
8696

8797
## chromium based browser
88-
for prog in google-chrome-stable chromium brave vivaldi-stable opera; do
98+
for prog in ${CHROMIUM_BASED_BROWSERS[*]}; do
8999
if has "$prog" ; then
90-
browser_count=$((browser_count+1))
91-
installed_browsers[$browser_count]="$prog : $(command -v $prog)"
100+
add_browser "$prog" "$(command -v $prog)"
92101
# add private window
93-
browser_count=$((browser_count+1))
94-
installed_browsers[$browser_count]="$prog [Private] : $(command -v $prog) --incognito"
102+
add_browser "$prog [Private]" "$(command -v $prog) --incognito"
95103
fi
96104
done
97105

98106
## other browsers
99-
for prog in badwolf qutebrowser ephemeral ; do
107+
for prog in ${OTHER_BASED_BROWSERS[*]} ; do
100108
if has "$prog" ; then
101-
browser_count=$((browser_count+1))
102-
installed_browsers[$browser_count]="$prog : $(command -v $prog)"
109+
add_browser "$prog" "$(command -v $prog)"
103110
fi
104111
done
105112

@@ -142,7 +149,7 @@ if ! has _copy_to_clipboard ;then
142149
fi
143150

144151
open_a_browser(){
145-
selected_browser=$(printf "%s\n" "${installed_browsers[@]}" | awk 'BEGIN { RS="\n"; FS=" : " } { print $1 "\t : " $2 }'| column -t -s $'\t' | rofi -dmenu -p 'nbrowser' -i -format "i s" -l "$((browser_count-1))")
152+
selected_browser=$(printf "%s\n" "${installed_browsers[@]}" | awk '!a[$0]++' | awk 'BEGIN { RS="\n"; FS=" : " } { print $1 "\t : " $2 }'| column -t -s $'\t' | rofi -dmenu -p 'nbrowser' -i -format "i s" -l "$((browser_count-1))")
146153

147154
[ -z "${selected_browser}" ] && exit 0
148155

@@ -217,14 +224,31 @@ open_picture_with(){
217224
}
218225

219226
open_in_browser(){
227+
case "$1" in
228+
"-m")
229+
local MULTI_URL=true;shift
230+
;;
231+
esac
232+
233+
if [ "${BROWSER_FG_FIRST}" = true ]; then
234+
if [ "${XDG_SESSION_TYPE}" = "wayland" ]; then
235+
current_win_name=$(swaymsg -t get_tree | jq -r '..|try select(.focused == true)|.window_properties.instance')
236+
else
237+
current_win_id=$(xdotool getactivewindow)
238+
current_win_pid=$(xdotool getwindowpid "$current_win_id" )
239+
current_win_name=$(ps -o comm= -p "$current_win_pid" || xdotool getwindowname "$current_win_id" )
240+
fi
241+
current_browser=$(printf "%s\n" "${installed_browsers[@]}" | awk -v current_win_name="${current_win_name:-}" 'BEGIN { RS="\n"; FS=" : " } $1 ~ current_win_name {p=1; exit} END {if(p) print $1 "\t:\t" $2 }')
242+
[ ! -z "${current_browser}" ] && installed_browsers[0]="${current_browser:-}"
243+
fi
220244
# add clipboard
221245
if [ "${COPY_TO_CLIPBOARD_OPTION}" = true ]; then
222246
browser_count=$((browser_count+1))
223247
installed_browsers[$browser_count]="Copy to clipboard"
224248
COPY_TO_CLIPBOARD_OPTION=false
225249
fi
226250

227-
selected_browser=$(printf "%s\n" "${installed_browsers[@]}" | awk 'BEGIN { RS="\n"; FS=" : " } { print $1 "\t : " $2 }'| column -t -s $'\t' | rofi -dmenu -p 'Open URL with' -mesg "${@//&/&amp;}" -i -l "$((browser_count-1))" )
251+
selected_browser=$(printf "%s\n" "${installed_browsers[@]}" | awk '!a[$0]++' | awk 'BEGIN { RS="\n"; FS=" : " } { print $1 "\t : " $2 }'| column -t -s $'\t' | rofi -dmenu -p 'Open URL with' -mesg "${@//&/&amp;}" -i -l "$((browser_count-1))" )
228252

229253
[ -z "${selected_browser}" ] && exit 0
230254

@@ -249,7 +273,11 @@ open_in_browser(){
249273
;;
250274
*)
251275
selected_browser=$(printf '%s' "${selected_browser}" | awk '{split($0,a,": "); print a[2]}')
252-
{ setsid -f $(bash -c "exec ${selected_browser} \"$*\"") >/dev/null 2>&1 ; }
276+
if [ "${MULTI_URL}" = true ]; then
277+
{ setsid -f ${selected_browser} $* >/dev/null 2>&1 ; }
278+
else
279+
{ setsid -f $(bash -c "exec ${selected_browser} \"$*\"") >/dev/null 2>&1 ; }
280+
fi
253281
;;
254282
esac
255283
}
@@ -266,7 +294,7 @@ url_handler(){
266294
open_in_browser "$cleanurl"
267295
else
268296
case "$cleanurl" in
269-
**ted.com/**|*youtube.com/watch*|*youtube.com/playlist*|*youtu.be*|*//www.twitch.tv/*|*//twitch.tv/*|*.mp4|*.mkv|*.webm|*.mp3|*.flac|*.opus|*mp3?source*|*gifv|*.m3u|*.m3u8)
297+
**ted.com/**|*youtube.com/watch*|*youtube.com/playlist*|*youtu.be*|*//www.twitch.tv/*|*//twitch.tv/*|*.mp4|*.mkv|*.webm|*.mp3|*.flac|*.opus|*mp3?source*|*gifv|*.m3u|*.m3u8|*.mov)
270298
open_video_with "$cleanurl"
271299
;;
272300
*png|*jpg|*jpe|*jpeg|*gif|*.jpg\?r=*)
@@ -315,6 +343,7 @@ main(){
315343
url_handler ${arg/"$protocol://"}
316344
;;
317345
nbrowser)
346+
arg=$(echo "$*" | sed "s/%20/ /g")
318347
nbrowser ${arg/"$protocol://"}
319348
;;
320349
*)

0 commit comments

Comments
 (0)