initial commit
This commit is contained in:
commit
90cff4f16a
59 changed files with 6855 additions and 0 deletions
86
Rofi/Scripts/websearch.sh
Normal file
86
Rofi/Scripts/websearch.sh
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
#!/usr/bin/env bash
|
||||
# Rofi web search - with DuckDuckGo result preview
|
||||
# Supports both Hyprland (Wayland) and dwm (X11)
|
||||
|
||||
# ==============================================================================
|
||||
# Environment Detection
|
||||
# ==============================================================================
|
||||
if [[ -n "${HYPRLAND_INSTANCE_SIGNATURE:-}" ]]; then
|
||||
WM="hyprland"
|
||||
else
|
||||
WM="dwm"
|
||||
fi
|
||||
|
||||
switch_to_browser() {
|
||||
if [[ "$WM" == "hyprland" ]]; then
|
||||
hyprctl dispatch workspace 70
|
||||
else
|
||||
# Focus primary monitor first if not on mobile (single monitor) profile
|
||||
[[ $(autorandr --detected) != "mobile" ]] && echo "mon-prim" > /tmp/dwm.fifo
|
||||
echo "browser" > /tmp/dwm.fifo
|
||||
fi
|
||||
}
|
||||
|
||||
# Step 1: Query input (no list)
|
||||
QUERY=$(echo "" | rofi -dmenu -p "Search : " -l 0)
|
||||
[ -z "$QUERY" ] && exit 0
|
||||
|
||||
# Check if input looks like a URL - open directly
|
||||
if echo "$QUERY" | grep -qE '\.(com|org|net|io|dev|co|me|gov|edu|app|xyz|info)(/|$)'; then
|
||||
# Add https:// if no protocol specified
|
||||
[[ "$QUERY" =~ ^https?:// ]] || QUERY="https://$QUERY"
|
||||
switch_to_browser
|
||||
xdg-open "$QUERY"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Step 2: Engine selection (DuckDuckGo first)
|
||||
ENGINE=$(printf " DuckDuckGo\n Google\n MyNixOS\n Nixpkgs\n NerdFonts" | rofi -dmenu -p "Engine : " -no-custom -l 5)
|
||||
[ -z "$ENGINE" ] && exit 0
|
||||
|
||||
# Remove icon prefix
|
||||
ENGINE="${ENGINE#* }"
|
||||
|
||||
ENCODED=$(echo "$QUERY" | sed 's/ /%20/g; s/&/%26/g; s/?/%3F/g; s/=/%3D/g')
|
||||
|
||||
case "$ENGINE" in
|
||||
"DuckDuckGo")
|
||||
# Fetch top 5 results using ddgr
|
||||
RESULTS=$(ddgr --json -n 5 "$QUERY" 2>/dev/null | jq -r '.[] | "\(.title)\t\(.url)"')
|
||||
|
||||
if [ -z "$RESULTS" ]; then
|
||||
# Fallback to direct search if no results
|
||||
switch_to_browser
|
||||
xdg-open "https://duckduckgo.com/?q=$ENCODED"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Show results in rofi (title only)
|
||||
TITLES=$(echo "$RESULTS" | cut -f1)
|
||||
SELECTED=$(echo "$TITLES" | rofi -dmenu -p "Results : " -l 5)
|
||||
[ -z "$SELECTED" ] && exit 0
|
||||
|
||||
# Get URL for selected title
|
||||
URL=$(echo "$RESULTS" | grep "^$SELECTED " | cut -f2)
|
||||
if [ -n "$URL" ]; then
|
||||
switch_to_browser
|
||||
xdg-open "$URL"
|
||||
fi
|
||||
;;
|
||||
"Google")
|
||||
switch_to_browser
|
||||
xdg-open "https://www.google.com/search?q=$ENCODED"
|
||||
;;
|
||||
"MyNixOS")
|
||||
switch_to_browser
|
||||
xdg-open "https://mynixos.com/search?q=$ENCODED"
|
||||
;;
|
||||
"Nixpkgs")
|
||||
switch_to_browser
|
||||
xdg-open "https://search.nixos.org/packages?query=$ENCODED"
|
||||
;;
|
||||
"NerdFonts")
|
||||
switch_to_browser
|
||||
xdg-open "https://www.nerdfonts.com/cheat-sheet?q=$ENCODED"
|
||||
;;
|
||||
esac
|
||||
Loading…
Add table
Add a link
Reference in a new issue