OSDN Git Service

[add] : Added plasma bookmarks
authorhayao <shun819.mail@gmail.com>
Sat, 26 Dec 2020 12:11:29 +0000 (21:11 +0900)
committerhayao <shun819.mail@gmail.com>
Sat, 26 Dec 2020 12:11:29 +0000 (21:11 +0900)
alterlinux-plasma-bookmarks/alterlinux-plasma-bookmarks [new file with mode: 0755]

diff --git a/alterlinux-plasma-bookmarks/alterlinux-plasma-bookmarks b/alterlinux-plasma-bookmarks/alterlinux-plasma-bookmarks
new file mode 100755 (executable)
index 0000000..10e6c78
--- /dev/null
@@ -0,0 +1,169 @@
+#!/usr/bin/env bash
+# Yamada Hayao
+# Twitter: @Hayao0819
+# Email  : hayao@fascode.net
+#
+# (c) 2019-2020 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 <dir>        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