rosenrot/scripts/dmenu_rose.sh

66 lines
1.7 KiB
Bash
Executable File

#!/bin/sh
BOOKMARKS_PATH=~/.cache/rose/bookmarks
search()
{
[ -f $BOOKMARKS_PATH ] || touch $BOOKMARKS_PATH
BOOKMARKS=$(cat ~/.cache/rose/bookmarks)
CURRENT_ID=$(xdotool getactivewindow)
SEARCH=$(printf "Add\nRemove\n$(printf "$BOOKMARKS" | cut -f1 -d" ")" | dmenu -p SEARCH:)
[ "$SEARCH" = Add ] && {
printf "" | dmenu -p Url: | sed 's/\./ /g' >> $BOOKMARKS_PATH
$0 & exit
}
[ "$SEARCH" = Remove ] && {
printf "$(grep -v "$(printf "$BOOKMARKS" | dmenu -p Select:)" $BOOKMARKS_PATH)" > $BOOKMARKS_PATH
$0 & exit
}
[ -z "$SEARCH" ] && exit
ROSE_GO=$(xprop -id "$CURRENT_ID" | grep _ROSE_URI)
[ -z "$1" ] || ROSE_GO=''
[ -z "$ROSE_GO" ] || {
[ -z "$(printf "$BOOKMARKS" | grep -w "$SEARCH")" ] && {
xprop -id "$CURRENT_ID" -f "_ROSE_GO" 8u -set "_ROSE_GO" https://duckduckgo.com/?q="$SEARCH"
exit
} || {
FULL_URL=$(printf "$BOOKMARKS" | grep -w "$SEARCH" | sed 's/ /\./g')
xprop -id "$CURRENT_ID" -f "_ROSE_GO" 8u -set "_ROSE_GO" $FULL_URL
exit
}
}
[ -z "$(printf "$BOOKMARKS" | grep -w "$SEARCH")" ] && {
rose https://duckduckgo.com/?q="$SEARCH"
} || {
FULL_URL="$(printf "$BOOKMARKS" | grep "$SEARCH" | sed 's/ /\./g')"
rose https://"$FULL_URL"
}
}
find()
{
FIND=$(printf "" | dmenu -p Find:)
CURRENT_ID=$(xdotool getactivewindow)
ROSE_FIND=$(xprop -id "$CURRENT_ID" | grep _ROSE_URI)
[ -z "$ROSE_FIND" ] || xprop -id "$CURRENT_ID" -f "_ROSE_FIND" 8u -set "_ROSE_FIND" "$FIND"
}
[ -z "$1" ] && search || {
INSTALL_PATH=/usr/local/bin/dmenu_rose
case "$1" in
install) (set -x; cp $0 $INSTALL_PATH);;
uninstall) (set -x; rm $INSTALL_PATH);;
add_bookmark) echo "$2" >> $BOOKMARKS_PATH;;
new_window) search new;;
find) find;;
esac
}