59 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/usr/bin/env bash
 | 
						|
#
 | 
						|
# Script name: dmqute
 | 
						|
# Description: Search your qutebrowswer bookmarks and quickmarks.
 | 
						|
# Dependencies: dmenu, qutebrowser
 | 
						|
# GitLab: https://www.gitlab.com/dwt1/dmscripts
 | 
						|
# License: https://www.gitlab.com/dwt1/dmscripts/LICENSE
 | 
						|
# Contributors: Derek Taylor
 | 
						|
 | 
						|
if [ $(hostname) = "syl" ]; then
 | 
						|
    style="laptop"
 | 
						|
    #echo "this is hidpi"
 | 
						|
else 
 | 
						|
    style="desktop"
 | 
						|
    #echo "this is not hidpi"
 | 
						|
fi
 | 
						|
 | 
						|
# Defining location of bookmarks file
 | 
						|
BMFILE="$HOME/.config/qutebrowser/bookmarks/urls"
 | 
						|
 | 
						|
# Defining location of quickmarks file
 | 
						|
QMFILE="$HOME/.config/qutebrowser/quickmarks"
 | 
						|
 | 
						|
# Defining location of history database
 | 
						|
HISTDB="$HOME/.local/share/qutebrowser/history.sqlite"
 | 
						|
 | 
						|
# A separator that will appear in between quickmarks, bookmarks and history urls.
 | 
						|
SEPARATOR="----------"
 | 
						|
 | 
						|
# Read array of options to choose.
 | 
						|
readarray -t bmarks < "$BMFILE"
 | 
						|
readarray -t qmarks < "$QMFILE"
 | 
						|
 | 
						|
# Sort the bookmark, quickmark and history lists so that the url is the last field.
 | 
						|
# We will awk print the last field later.
 | 
						|
# History list is formed by grep'ing "http" from the history table.
 | 
						|
bmlist=$(printf '%s\n' "${bmarks[@]}" | awk '{print $2" - "$1}')
 | 
						|
qmlist=$(printf '%s\n' "${qmarks[@]}" | awk '{print "["$1"] - "$NF}' | sort)
 | 
						|
SQL="SELECT h.title, h.url FROM history as h where url like 'http%';"
 | 
						|
histlist=$(printf '%s\n' "$(sqlite3 "$HISTDB" "${SQL}")"  |  awk -F "|" '{print $1" - "$NF}')
 | 
						|
 | 
						|
# Piping the above lists into dmenu.
 | 
						|
# We use "printf '%s\n'" to format the array one item to a line.
 | 
						|
# The urls are listed quickmarks first, then the SEPARATOR, and then bookmarks.
 | 
						|
choice=$(printf '%s\n' "$qmlist" "$SEPARATOR" "$bmlist" "$SEPARATOR" "$histlist" | rofi -dmenu -p 'Qutebrowser open:' -config "/home/chris/.dotfiles/rofi/launchers-git/$style.rasi") "$@" || exit
 | 
						|
 | 
						|
# What to do if the separator is chosen from the list.
 | 
						|
# We simply launch qutebrowser without any url arguments.
 | 
						|
# shellcheck disable=SC2154
 | 
						|
if [ "$choice" == "$SEPARATOR" ]; then
 | 
						|
    qutebrowser
 | 
						|
# What to do when/if we choose a url to view.
 | 
						|
elif [ "$choice" ]; then
 | 
						|
  url=$(echo "${choice}" | awk '{print $NF}') || exit
 | 
						|
  qutebrowser "$url"
 | 
						|
# What to do if we just escape without choosing anything.
 | 
						|
else
 | 
						|
    echo "Program terminated." && exit 0
 | 
						|
fi
 |