blob: 11628ebe1e7f322d95bdfea0837e0db69e799d86 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
#!/bin/sh
WMENU="wmenu"
DMENU="dmenu"
BROWSER="firefox-bin"
NOTIFY="notify-send"
CHOICES="Paulgo
URL
Incognito URL
YouTube
Codeberg
Tildegit
IPLeak
Safebooru
Wikipedia"
notify() {
"$NOTIFY" "$1" "$2" 2>/dev/null
}
run_wmenu() {
printf '%s\n' "$1" | $WMENU -p "$2"
}
run_dmenu() {
printf '' | $DMENU -p "$1"
}
urlencode() {
python3 -c "import sys, urllib.parse as ul; print(ul.quote_plus(sys.argv[1]))" "$1"
}
open_url() {
url="$1"
if pgrep -x "$BROWSER" >/dev/null; then
"$BROWSER" --new-tab "$url" &
else
"$BROWSER" "$url" &
fi
}
main() {
choice=$(run_wmenu "$CHOICES" "Where to?")
[ -z "$choice" ] && notify "Error" "No selection made" && exit 1
case "$choice" in
Codeberg)
repo=$(run_dmenu "Username & repo (user/repo):")
[ -z "$repo" ] && notify "Error" "No input" && exit 1
open_url "https://codeberg.org/$repo"
;;
Tildegit)
repo=$(run_dmenu "Username & repo (user/repo):")
[ -z "$repo" ] && notify "Error" "No input" && exit 1
open_url "https://tildegit.org/$repo"
;;
IPLeak)
open_url "https://ipleak.net"
;;
Paulgo)
query=$(run_dmenu "Search Paulgo:")
[ -z "$query" ] && notify "Error" "No input" && exit 1
qenc=$(urlencode "$query")
open_url "https://paulgo.io/search?q=$qenc"
;;
Wikipedia)
query=$(run_dmenu "Search Wikipedia:")
[ -z "$query" ] && notify "Error" "No input" && exit 1
qenc=$(urlencode "$query")
open_url "https://en.wikipedia.org/wiki/Special:Search?search=$qenc"
;;
URL)
url=$(run_dmenu "Enter URL:")
[ -z "$url" ] && notify "Error" "No URL entered" && exit 1
case "$url" in
http*) ;;
*) url="https://$url" ;;
esac
open_url "$url"
;;
"Incognito URL")
url=$(run_dmenu "Enter incognito URL:")
[ -z "$url" ] && notify "Error" "No URL entered" && exit 1
case "$url" in
http*) ;;
*) url="https://$url" ;;
esac
"$BROWSER" --private-window "$url" &
;;
YouTube)
query=$(run_dmenu "Search YouTube:")
[ -z "$query" ] && notify "Error" "No input" && exit 1
qenc=$(urlencode "$query")
open_url "https://youtube.com/results?search_query=$qenc"
;;
Safebooru)
query=$(run_dmenu "Search Safebooru:")
[ -z "$query" ] && notify "Error" "No input" && exit 1
qenc=$(urlencode "$query")
open_url "https://safebooru.org/index.php?page=post&s=list&tags=$qenc"
;;
*)
notify "Error" "Invalid selection: $choice"
exit 1
;;
esac
}
for cmd in "$WMENU" "$DMENU" "$BROWSER" "$NOTIFY"; do
if ! command -v "$cmd" >/dev/null 2>&1; then
echo "Error: required command '$cmd' not found" >&2
exit 1
fi
done
main
|