#!/usr/bin/env bash # Yamada Hayao # Twitter: @Hayao0819 # Email : hayao@fascode.net # # (c) 2019-2021 Fascode Network. # set -e force=false alterlive=false config_file="${HOME}/.local/share/user-places.xbel" remove () { local _list local _file _list=($(echo "$@")) for _file in "${_list[@]}"; do if [[ -f ${_file} ]]; then rm -f "${_file}" elif [[ -d ${_file} ]]; then rm -rf "${_file}" fi done } _help() { echo "usage ${0} [options] [command]" echo echo " General options:" echo " -f | --force Force overwriting." echo " -h | --help This help message and exit." echo echo " General command:" echo " add Add items to the sidebar." echo " delete Delete all sidebar items." echo " init Initializes the sidebar." echo " help This help message and exit." } output() { echo "${@}" >> "" } _msg_error() { echo "${@}" >&2 } prepare() { if [[ ! -d "${HOME}/.config/gtk-3.0/" ]]; then mkdir -p "${HOME}/.config/gtk-3.0/" fi if [[ ! -f "${config_file}" ]]; then touch "${config_file}" fi } add() { prepare local dir for dir in ${@}; do if [[ ! -d "${dir}" ]]; then _msg_error "${dir} does not exist." exit 1 else output "file://${dir}" fi done } init() { remove "${config_file}" prepare source "${HOME}/.config/user-dirs.dirs" output "file://${XDG_DOCUMENTS_DIR} Documents" output "file://${XDG_DOWNLOAD_DIR} Downloads" output "file://${XDG_MUSIC_DIR} Music" output "file://${XDG_PICTURES_DIR} Pictures" output "file://${XDG_VIDEOS_DIR} Videos" } # Argument analysis and processing options="${@}" _opt_short="fh" _opt_long="force,help,alterlive" OPT=$(getopt -o ${_opt_short} -l ${_opt_long} -- "${@}") if [[ ${?} != 0 ]]; then exit 1 fi eval set -- "${OPT}" unset OPT unset _opt_short unset _opt_long while true; do case ${1} in -f | --force) force=true shift 1 ;; -h | --help) _help shift 1 exit 0 ;; --alterlive) alterlive=true shift 1 ;; --) shift break ;; *) _msg_error "Invalid argument '${1}'" _help exit 1 ;; esac done mode="${1}" case "${1}" in add) shift 1 if [[ -z "${*}" ]]; then _msg_error "Please specify a directory." exit 1 else add "${@}" fi exit 0 ;; delete) remove "${config_file}" exit 0 ;; init) if [[ -f "${config_file}" ]] && [[ "${force}" = false ]]; then _msg_error "The sidebar already exists. Use -f to force initialization." exit 1 else init fi exit 0 ;; help) _help exit 0 ;; *) _msg_error "Please specify a command." exit 1 ;; esac if [[ "${alterlive}" = true ]]; then remove ~/.config/autostart/gensidebar.desktop fi