From 8cbadb61604667b407b53ee1258433994fa4765a Mon Sep 17 00:00:00 2001 From: coasteen Date: Thu, 9 Jul 2026 10:42:28 +0330 Subject: init --- local/bin/brwmenu | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100755 local/bin/brwmenu (limited to 'local/bin/brwmenu') diff --git a/local/bin/brwmenu b/local/bin/brwmenu new file mode 100755 index 0000000..11628eb --- /dev/null +++ b/local/bin/brwmenu @@ -0,0 +1,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 + -- cgit v1.2.3