#!/bin/sh # Script that searches config files and scripts # User-config--------------------------- # Define editor to open file in and if it should fork EDITOR="aliases emacs" BACKGROUND="" # List of directories to exclude EXCLUDES=" code documents dotfiles downloads pictures .cache .clangd .config/chromium .config/emacs/elpa .config/ElectronChrome .config/vim/pack/plugins .electron-gyp .emacs.d/elpa .gradle .jd .local/share .mozilla/firefox/dotfiles.profile/storage .node-gyp .npm .nvm .wine " # List of files to include INCLUDES=" documents/vm/backup/backup.sh documents/vm/commands.org dotfiles/dotfiles.sh " # -------------------------------------- # Execute relative to $HOME cd "$HOME" || exit 1 # Generate exclude string to use with find for EXCLUDE in $EXCLUDES; do EXCLUDE_STRING="$EXCLUDE_STRING -path ./$EXCLUDE -o" done EXCLUDE_STRING=${EXCLUDE_STRING%???} # Find the files FILES="$( (find . \( $EXCLUDE_STRING \) -prune -o -type f -printf '%P\n'; echo "$INCLUDES") \ | grep -vx "" | sort)" # If no name provided if [ -z "$1" ]; then SELECTED="$(printf "%s" "$FILES" | rofi -dmenu -p "Select file to edit")" # Else try to search for that file else SELECTED="$(printf "%s" "$FILES" | grep "$1" | head -n 1)" fi # Exit if nothing selected if [ -z "$SELECTED" ]; then exit fi # Start editor with selected file if [ -z "$BACKGROUND" ]; then $EDITOR "$SELECTED" else $EDITOR "$SELECTED" > /dev/null 2>&1 & fi