diff --git a/qb b/qb index f2a1980..ecb8361 100755 --- a/qb +++ b/qb @@ -61,6 +61,11 @@ define_vars() { # {{{ ## Store selected content to a temp file choice_temp_file="$(mktemp -t ${PROGNAME}-XXXXXX.tmp)" + ## Variables to get Qutebrowser currents buffers + QUTEBROWSER_SESSION_FILE="/tmp/qutebrowser_buffers_zsbd" + QUTEBROWSER_SOCKET_FILE="${XDG_RUNTIME_DIR}/qutebrowser/ipc-$(echo -n "$USER" | md5sum | cut -d' ' -f1)" + QUTEBROWSER_GLOBAL_CONTENT="/tmp/qutebrowser_global_content" + } # }}} debug_message() { # {{{ @@ -196,25 +201,55 @@ Qutebrowser window ID : ${RED}${qutebrowser_window_id}${COLOR_DEBUG} on deskto } # }}} -search_qb_bookmark() { # {{{ +get_qutebrowser_buffers() { # {{{ - debug_message "search_qb_bookmark − \ -Search in Qutebrowser's bookmarks." + ## Clear previous buffers list + [ -f "${QUTEBROWSER_SESSION_FILE}" ] && rm -f -- "${QUTEBROWSER_SESSION_FILE}" - st -g 90x30+0+540 -n QuteBrowser -t QuteBrowser -e sh -c "cat ~/.config/qutebrowser/quickmarks ~/.config/qutebrowser/bookmarks/urls | fzf +m > ${choice_temp_file}" + ## Run save_buffers.py in Qutebrowser + echo '{"args":[":save-window-and-buffers"], "target_arg":"", "protocol_version":1}' |\ + socat - UNIX-CONNECT:"$QUTEBROWSER_SOCKET_FILE" + + ## Wait to get the buffers list + i="0" + while [ "${i}" -lt "5" ]; do + if [ -f "${QUTEBROWSER_SESSION_FILE}" ]; then + break + else + sleep 0.01 + fi + i=$((i+1)) + done + + sed "s/^/ff /g" "${QUTEBROWSER_SESSION_FILE}" >> "${QUTEBROWSER_GLOBAL_CONTENT}" + +} +# }}} +search_qb_content() { # {{{ + + debug_message "search_qb_content − \ +Search in Qutebrowser's content (*marks, buffers,…)." + + ## Get current buffers from Qutebrowser + get_qutebrowser_buffers + ## Add quickmarks and bookmarks to global Qutebrowser content + cat "${HOME}/.config/qutebrowser/quickmarks" >> "${QUTEBROWSER_GLOBAL_CONTENT}" + cat "${HOME}/.config/qutebrowser/bookmarks/urls" >> "${QUTEBROWSER_GLOBAL_CONTENT}" + + st -g 90x30+0+540 -n QuteBrowser -t QuteBrowser -e sh -c "cat ${QUTEBROWSER_GLOBAL_CONTENT} | fzf +m > ${choice_temp_file}" if [ -s "${choice_temp_file}" ]; then - debug_message "search_qb_bookmark − \ + debug_message "search_qb_content − \ Store results in ${choice_temp_file}." - return_search_qb_bookmark="0" + return_search_qb_content="0" else - debug_message "search_qb_bookmark − \ + debug_message "search_qb_content − \ Search aborded or can't find matching bookmark." - return_search_qb_bookmark="1" + return_search_qb_content="1" fi - return "${return_search_qb_bookmark}" + return "${return_search_qb_content}" } # }}} @@ -240,6 +275,12 @@ URL from classic bookmark ${RED}${url}${COLOR_DEBUG}." debug_message "get_url − \ URL from quickmark ${RED}${url}${COLOR_DEBUG}." ;; + ff* ) ## Buffer + url="" + return_get_url="1" + debug_message "get_url − \ +Buffer not yet managed." + ;; * ) debug_message "get_url − \ Content not yet managed." @@ -265,7 +306,7 @@ goto_existing_qutebrowser() { # {{{ Try to open content in existing instance." ## Try to open Qutebrowser content - search_qb_bookmark \ + search_qb_content \ && get_url \ && open_in_qutebrowser