A Quick Command-Line Interface for Safari History
I got so frustrated by not being able to quickly find web pages in my Safari history that I hacked together a simple command-line interface that lets me search my history with fzf
.
It comes in two pieces, a shell script that uses the sqlite3
command-line utility to dump the title and URL of each web page:
read -r -d '' select << EOM
SELECT title, url
FROM history_visits
INNER JOIN history_items
ON history_visits.history_item = history_items.id
ORDER BY visit_time desc
LIMIT 1000;
EOM
sqlite3 -noheader -separator $'\t' ~/Library/Safari/History.db \
"$select" 2>/dev/null \
| uniq
And a zsh
function that pipes its output through fzf
:
fzf-safari-history-open() {
local result=$(safari-history-dump \
| FZF_DEFAULT_OPTS="-m --reverse --prompt \"Safari History> \" \
--height ${FZF_TMUX_HEIGHT:-40%} $FZF_DEFAULT_OPTS" $(__fzfcmd) +m \
| cut -f2)
if [[ -n $result ]]; then
open "$result"
fi
}
Here’s what it looks like: