1
0
mirror of https://github.com/RyanGreenup/cadmus.git synced 2025-04-21 02:01:50 +02:00

Added some logic for Rofi Find (See Joplin for some notes on this)

This commit is contained in:
Ryan Greenup 2020-11-16 15:03:26 +11:00
parent fd3e576e28
commit af3cf9359b
2 changed files with 105 additions and 16 deletions

View File

@ -97,7 +97,7 @@ function mainHelp() {
echo -e " 🔍 \e[1;93m \e[4mf\e[0m\e[1;93mind \e[0m \e[1;34m ┊┊┊ 🎆 \e[0m Find Notes based on FileName"
echo -e " 🔎 \e[1;32m \e[4ms\e[0m\e[1;32mearch \e[0m \e[1;34m ┊┊┊ 🎆 \e[0m Search through Notes using Recoll"
echo -e " 🏷 \e[1;33m \e[4mt\e[0m\e[1;33mags \e[0m \e[1;34m ┊┊┊ 📁\e[0m Use TMSU to work with tags"
echo -e " 📖 \e[1;33m \e[4mr\e[0m\e[1;33mofi \e[0m \e[1;34m ┊┊┊ 📁\e[0m Use ROFI instead of fzf "
echo -e " 📖 \e[1;33m \e[4mr\e[0m\e[1;33mofi \e[0m \e[1;34m ┊┊┊ 📁\e[0m Use ROFI instead of fzf (WIP) "
echo -e " 🔧 \e[1;34m \e[4mto\e[0m\e[1;34mols \e[0m \e[1;34m ┊┊┊ 📁\e[0m Tools for Editing"
echo -e " 📝 \e[1;35m \e[4me\e[0m\e[1;35mxport \e[0m \e[1;34m ┊┊┊ 📁\e[0m Export Notes to Different Formats "
echo -e " ⎋ \e[1;36m \e[4mc\e[0m\e[1;36monvert \e[0m \e[1;34m ┊┊┊ 📁\e[0m Convert Clipboard Contents to Different Formats "

View File

@ -59,21 +59,21 @@ Help () {
echo
echo -e " \e[3m By Design: No Options; No other Arguments\e[0m"
echo
echo -e " \e[3m\e[1m• Key Bindings\e[0m "
echo
echo
echo -e " \e[1;91m \e[1m Binding \e[0m\e[0m \e[1;34m┊┊┊ \e[0m Description "
echo -e " ..............\e[1;34m┊┊┊\e[0m........................................... "
echo -e " \e[1;95m Ctrl - q \e[0m \e[1;34m ┊┊┊ \e[0m \e[1m Search \e[0m with \e[0m\e[3mripgrep\e[0m"
echo -e " \e[1;93m Ctrl - w \e[0m \e[1;34m ┊┊┊ \e[0m \e[1m Copy \e[0m the Full Path to the Clipboard"
echo -e " \e[1;93m Alt - w \e[0m \e[1;34m ┊┊┊ \e[0m \e[1m Copy \e[0m the Relative Path to the Clipboard"
echo -e " \e[1;94m Alt - e \e[0m \e[1;34m ┊┊┊ \e[0m \e[1m Open \e[0m in Emacs"
echo -e " \e[1;94m Alt - v \e[0m \e[1;34m ┊┊┊ \e[0m \e[1m Open \e[0m in VSCode"
echo -e " \e[1;94m Ctrl - o \e[0m \e[1;34m ┊┊┊ \e[0m \e[1m Open \e[0m in Default Program"
echo
# echo -e " \e[3m\e[1m• Key Bindings\e[0m "
# echo
# echo
# echo -e " \e[1;91m \e[1m Binding \e[0m\e[0m \e[1;34m┊┊┊ \e[0m Description "
# echo -e " ..............\e[1;34m┊┊┊\e[0m........................................... "
# echo -e " \e[1;95m Ctrl - q \e[0m \e[1;34m ┊┊┊ \e[0m \e[1m Search \e[0m with \e[0m\e[3mripgrep\e[0m"
# echo -e " \e[1;93m Ctrl - w \e[0m \e[1;34m ┊┊┊ \e[0m \e[1m Copy \e[0m the Full Path to the Clipboard"
# echo -e " \e[1;93m Alt - w \e[0m \e[1;34m ┊┊┊ \e[0m \e[1m Copy \e[0m the Relative Path to the Clipboard"
# echo -e " \e[1;94m Alt - e \e[0m \e[1;34m ┊┊┊ \e[0m \e[1m Open \e[0m in Emacs"
# echo -e " \e[1;94m Alt - v \e[0m \e[1;34m ┊┊┊ \e[0m \e[1m Open \e[0m in VSCode"
# echo -e " \e[1;94m Ctrl - o \e[0m \e[1;34m ┊┊┊ \e[0m \e[1m Open \e[0m in Default Program"
# echo
echo -e " \e[3m\e[1m• Compatability \e[0m "
echo
# echo -e " \e[3m\e[1m• Compatability \e[0m "
# echo
}
@ -86,6 +86,7 @@ readFirstArgument () {
}
# *** Skim and Grep, the important stuff
#
rofi_over_Notes () {
## Change directory if One was specified, exit if no directory exists
@ -106,7 +107,95 @@ rofi_over_Notes () {
# **** Skim with Grep
RofiFind () {
echo "mynote.md"
## Change directory if One was specified, exit if no directory exists
# I took this bit from https://github.com/davatorium/rofi/issues/997
# Not totally sure how it works but it does :shrug
## Set Variables
local selected
local string
selected="${1:-}"
TEMP_DIR="/tmp/cadmus_rofi_preview"
mkdir -p "${TEMP_DIR}"
# schemes="$(fd '\.org$')" # TODO Only look at org-mode files (hmmmm)
schemes="$(find ./ -name '*\.org' -or -name '*\.md')"
lines=$(printf '%s\n' "${schemes}" | wc -l)
menu=$(printf '%s\n' "${schemes}" | rofi -matching fuzzy -location 1 -kb-row-up "" -kb-row-down "" -kb-custom-1 "Up" -kb-custom-2 "Down" -format 'd:s' -dmenu -selected-row $selected)
exit_code=$?
selected="${menu%:*}"
string="${menu##*:}"
case "${exit_code}" in
"1") exit 0;;
"0") PRINT_OUT "${string}" & disown;;
"10")
if [[ $selected == "1" ]]; then
foo_selected="${lines}"
call="3"
else
foo_selected="$(echo -e $(( ${selected} - 1 )))";
call=$(echo $(( ${selected} - 2 )))
fi
foo="$(printf '%s' "${schemes}" | sed -n "${foo_selected}"p)";
PRINT_OUT "${foo}" & disown;;
"11")
if [[ "${selected}" -ge "${lines}" ]]; then
foo_selected="1"
call="0"
else
foo_selected="$(echo -e $(( ${selected} + 1 )))";
call="${selected}"
fi
foo="$(printf '%s' "${schemes}" | sed -n "${foo_selected}"p)";
PRINT_OUT "${foo}" & disown
esac
RofiFind "${call}"
exit 0
}
# **** Convert the File with Pandoc and Show in Browser
PRINT_OUT () {
FILEPATH="$(realpath ${1})"
FILEPATH_NO_EXT="$(realpath ${1} | cut -f 1 -d '.')"
DIRECTORY="$(dirname ${FILEPATH}})"
NAME="$(basename ${@} | cut -f 1 -d '.')"
BROWSER="chromium"
# Simpler calls
# pandoc -f org -t html "${FILEPATH}" --quiet | cat
function pandoc_browser() {
#pandoc -f org -t html "${FILEPATH}" -A /home/ryan/Templates/CSS/gitOrgWrapped.css --mathjax -s --quiet -o "/dev/shm/${NAME}.html" && \
pandoc -t html "${FILEPATH}" --extract-media="${TEMP_DIR}/media_${NAME}" -A /home/ryan/Templates/CSS/gitOrgWrapped.css --katex -s --quiet -o "${TEMP_DIR}/${NAME}.html" && \
"${BROWSER}" "${TEMP_DIR}/${NAME}.html" > /dev/null & disown # Chromium is faster than firefox
}
## By caching the export in /dev/shm/ chrome will just go back to the last tab (quicker)
## and pandoc won't reconvert unnecessarily (quicker)
## Given that most of the time is spent looking and reading this makes a lot of sense
if [ "${FILEPATH}" -nt "${TEMP_DIR}/${NAME}.html" ]; then
# The Live_Reload_JS lets me reload this, otherwise do not disown this process
pandoc_browser & disown
else
"${BROWSER}" "${TEMP_DIR}/${NAME}.html" & disown
fi
# I tried this with org-ruby, no luck though for latex though
# Org-ruby is much faster than pandoc
# /home/ryan/.gem/ruby/2.7.0/bin/org-ruby "${FILEPATH}" -t html > /dev/shm/mpv.html
# cat /home/ryan/Templates/mathjax >> /dev/shm/mpv.html
# cat /home/ryan/Templates/CSS/gitOrgWrapped.css >> /dev/shm/mpv.html
# chromium /dev/shm/mpv.html & disown
}