Use file:"./Scripts/rofi-file-browser.sh"
in your modi.
Last active
March 22, 2017 21:22
-
-
Save rawsh/efb4a0d35dd1299746f154d8f9faebc0 to your computer and use it in GitHub Desktop.
find files using rofi and the "find" command
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# Various options for the file browser script: | |
ROFI_FB_GENERIC_FO="xdg-open" # command used for opening the selection | |
ROFI_FB_PREV_LOC_FILE=~/.local/share/rofi/rofi_fb_prevloc | |
ROFI_FB_HISTORY_FILE=~/.local/share/rofi/rofi_fb_history | |
ROFI_FB_HISTORY_MAXCOUNT=3 # maximum number of history entries | |
# Comment the next variable to always start in the last visited directory, | |
# otherwise rofi_fb will start in the specified directory: | |
ROFI_FB_START_DIR=$HOME # starting directory | |
# Uncomment the following line to disable history: | |
ROFI_FB_NO_HISTORY=1 | |
# Beginning of the script: | |
# Create the directory for the files of the script | |
if [ ! -d $(dirname "${ROFI_FB_PREV_LOC_FILE}") ] | |
then | |
mkdir -p "$(dirname "${ROFI_FB_PREV_LOC_FILE}")" | |
fi | |
if [ ! -d $(dirname "${ROFI_FB_HISTORY_FILE}") ] | |
then | |
mkdir -p "$(dirname "${ROFI_FB_HISTORY_FILE}")" | |
fi | |
# Initialize $ROFI_FB_CUR_DIR | |
if [ -d "${ROFI_FB_START_DIR}" ] | |
then | |
ROFI_FB_CUR_DIR="${ROFI_FB_START_DIR}" | |
else | |
ROFI_FB_CUR_DIR="$PWD" | |
fi | |
# Read last location, otherwise we default to $ROFI_FB_START_DIR or $PWD. | |
if [ -f "${ROFI_FB_PREV_LOC_FILE}" ] | |
then | |
ROFI_FB_CUR_DIR=$(cat "${ROFI_FB_PREV_LOC_FILE}") | |
fi | |
# Handle argument. | |
if [ -n "$@" ] | |
then | |
if [[ "$@" == /* ]] | |
then | |
ROFI_FB_CUR_DIR="$@" | |
else | |
ROFI_FB_CUR_DIR="${ROFI_FB_CUR_DIR}/$@" | |
fi | |
fi | |
# If argument is no directory. | |
if [ ! -d "${ROFI_FB_CUR_DIR}" ] | |
then | |
if [ -x "${ROFI_FB_CUR_DIR}" ] | |
then | |
coproc ( "${ROFI_FB_CUR_DIR}" > /dev/null 2>&1 ) | |
exec 1>&- | |
exit; | |
elif [ -f "${ROFI_FB_CUR_DIR}" ] | |
then | |
if [[ "${ROFI_FB_NO_HISTORY}" -ne 1 ]] | |
then | |
# Append selected entry to history and remove exceeding entries | |
sed -i "s|${ROFI_FB_CUR_DIR}|##deleted##|g" "${ROFI_FB_HISTORY_FILE}" | |
sed -i '/##deleted##/d' "${ROFI_FB_HISTORY_FILE}" | |
echo "${ROFI_FB_CUR_DIR}" >> "${ROFI_FB_HISTORY_FILE}" | |
if [ $(cat "${ROFI_FB_HISTORY_FILE}" | wc -l) -gt ${ROFI_FB_HISTORY_MAXCOUNT} ] | |
then | |
sed -i 1d "${ROFI_FB_HISTORY_FILE}" | |
fi | |
fi | |
# Open the selected entry with $ROFI_FB_GENERIC_FO | |
coproc ( "${ROFI_FB_GENERIC_FO}" "${ROFI_FB_CUR_DIR}" > /dev/null 2>&1 ) | |
if [ -d "${ROFI_FB_START_DIR}" ] | |
then | |
echo "${ROFI_FB_START_DIR}" > "${ROFI_FB_PREV_LOC_FILE}" | |
fi | |
exit; | |
fi | |
exit; | |
fi | |
# Process current dir. | |
if [ -n "${ROFI_FB_CUR_DIR}" ] | |
then | |
ROFI_FB_CUR_DIR=$(readlink -e "${ROFI_FB_CUR_DIR}") | |
echo "${ROFI_FB_CUR_DIR}" > "${ROFI_FB_PREV_LOC_FILE}" | |
pushd "${ROFI_FB_CUR_DIR}" >/dev/null | |
fi | |
# Output to rofi | |
if [[ "${ROFI_FB_NO_HISTORY}" -ne 1 ]] | |
then | |
tac "${ROFI_FB_HISTORY_FILE}" | grep "${ROFI_FB_CUR_DIR}" | |
fi | |
#echo ".." | |
find . -type f -not -path '*/\.*' -printf "%P\n" -maxdepth 4 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment