#!/bin/sh # Dmenu for doing everything web related ScriptName=${0##*/} Version=1.0.0 browser='dbrowsel' search_engine='https://duckduckgo.com/?q=' # Set menu options: SearchWeb='0. Search the web.' OpenLink='1. Open a link.' OpenBrowser='2. Open a browser.' MenuOpen='3. Open a bookmark.' MenuSave='4. Create new bookmark.' RunFirefox='5. Run Firejailed Firefox.' ChosenMenu=$(printf '%s\n%s\n%s\n%s\n%s\n%s' \ "$SearchWeb" "$OpenLink" "$OpenBrowser" "$MenuOpen" "$MenuSave" "$RunFirefox" \ | dmenu -i -l 10 -p "$ScriptName:") # Open browser if [ "$ChosenMenu" = "$OpenBrowser" ]; then exec dbrowsel & fi # Open Link if [ "$ChosenMenu" = "$OpenLink" ]; then exec dbrowsel $(dmenu -i -l 10 -p "Link:") & fi # Search web if [ "$ChosenMenu" = "$SearchWeb" ]; then search=$(dmenu -l 1 -i -p "Search:") [ "$search" ] && $($browser "$search_engine$(echo $search | sed -r 's/ /+/g')") & fi # run firefox if [ "$ChosenMenu" = "$RunFirefox" ]; then gtk-launch Firejail-Firefox # Open bookmark: elif [ "$ChosenMenu" = "$MenuOpen" ]; then buku --np -p -f 5 \ | awk -F '\t' '{print $1, "-", $2, "#(" $3 ")"}' \ | dmenu -i -l 30 \ | awk '{print $1}' \ | xargs --no-run-if-empty buku --np -o # Create bookmark: elif [ "$ChosenMenu" = "$MenuSave" ]; then # Get the name of the active window: ActiveWindow=$(ps -p "$(xdotool getwindowfocus getwindowpid)" -o comm=) # Set the name if the active window is a chromium based browser: printf '%s' "$ActiveWindow" | grep -Eq 'chromium|chrome|brave' \ && ActiveWindow='chromium-based' ### Haven't actually checked whether Chromium's window name is chromium. # Get URL/title based on browser: if [ "$ActiveWindow" = 'qutebrowser' ]; then xdotool search --name qutebrowser key --clearmodifiers y P sleep 0.1 URL=$(xclip -o) sleep 0.1 xdotool search --name qutebrowser key --clearmodifiers y T sleep 0.1 Title=$(xclip -o) elif [ "$ActiveWindow" = 'chromium-based' ]; then xdotool key --clearmodifiers ctrl+l sleep 0.1 xdotool key --clearmodifiers ctrl+c sleep 0.1 URL=$(xclip -o) sleep 0.1 ### Maybe write it to a file in the background to speed it up. ### Doesn't work for some generated sites. Title=$(curl -s "$URL" \ | awk -F '