#!/usr/bin/bash # # Author: Dmitry Razumov # Copyright (c) 2021-2025 UBLinux # # SPDX-License-Identifier: AGPL-3.0-or-later # ENABLED=yes [[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; } . /usr/lib/ublinux/default SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null add_bookmarks(){ urlencode(){ local LC_ALL=C local input_string="$1" local encoded_string="" local char for (( i = 0; i < ${#input_string}; i++ )); do char="${input_string:i:1}" case "${char}" in [a-zA-Z0-9/.~_-]) encoded_string+="${char}" ;; *) printf -v hex_char '%%%02X' "'${char}" encoded_string+="${hex_char}" ;; esac done echo "${encoded_string}" } if [[ -f ${HOME}/.config/user-dirs.dirs ]]; then source "${HOME}/.config/user-dirs.dirs" else local XDG_DESKTOP_DIR=$(xdg-user-dir DESKTOP 2>/dev/null) local XDG_DOWNLOAD_DIR=$(xdg-user-dir DOWNLOAD 2>/dev/null) local XDG_TEMPLATES_DIR=$(xdg-user-dir TEMPLATES 2>/dev/null) local XDG_PUBLICSHARE_DIR=$(xdg-user-dir PUBLICSHARE 2>/dev/null) local XDG_DOCUMENTS_DIR=$(xdg-user-dir DOCUMENTS 2>/dev/null) local XDG_MUSIC_DIR=$(xdg-user-dir MUSIC 2>/dev/null) local XDG_PICTURES_DIR=$(xdg-user-dir PICTURES 2>/dev/null) local XDG_VIDEOS_DIR=$(xdg-user-dir VIDEOS 2>/dev/null) fi # Если не получены каталоги, то выйти if [[ -n ${XDG_DESKTOP_DIR} || -n ${XDG_DOWNLOAD_DIR} || -n ${XDG_TEMPLATES_DIR} || -n ${XDG_PUBLICSHARE_DIR} \ || -n ${XDG_DOCUMENTS_DIR} || -n ${XDG_MUSIC_DIR} || -n ${XDG_PICTURES_DIR} || -n ${XDG_VIDEOS_DIR} ]]; then true else return 0 fi local BOOKMARKS_PATH="${HOME}/.config/gtk-3.0/bookmarks" local BOOKMARKS_DATA= local BOOKMARKS_DATA_NEW= if [[ -e ${BOOKMARKS_PATH} ]]; then BOOKMARKS_DATA="$(< ${BOOKMARKS_PATH})" # Если последний символ содержит переход на новую строку и конец файла, инчае вставляем $'\n' [[ -z $(tail -c 1 "${BOOKMARKS_PATH}") ]] || BOOKMARKS_DATA_NEW+=$'\n' # Через условие не сделать, в переменой обрезает все последние \n и последний является $ концом #[[ "${BOOKMARKS_DATA}" =~ $'\n'$ ]] && BOOKMARKS_DATA_NEW+="--"$'\n' fi # Исключаем "${XDG_DESKTOP_DIR}" т.к. уже присутствует for SELECT_XDG_DIR in "${XDG_DOWNLOAD_DIR}" "${XDG_DOCUMENTS_DIR}" "${XDG_MUSIC_DIR}" "${XDG_PICTURES_DIR}" "${XDG_VIDEOS_DIR}" "${XDG_TEMPLATES_DIR}" "${XDG_PUBLICSHARE_DIR}"; do [[ ${SELECT_XDG_DIR} == ${HOME} ]] && continue URLENCODE_XDG_DIR="file://$(urlencode "${SELECT_XDG_DIR}")" if [[ ${BOOKMARKS_DATA} == "" ]]; then BOOKMARKS_DATA_NEW+="${URLENCODE_XDG_DIR}"$'\n' elif [[ ! ${BOOKMARKS_DATA} =~ (^|$'\n')${URLENCODE_XDG_DIR}($'\n'|$) ]]; then BOOKMARKS_DATA_NEW+="${URLENCODE_XDG_DIR}"$'\n' fi done [[ -n ${BOOKMARKS_DATA_NEW} ]] && echo -n "${BOOKMARKS_DATA_NEW}" >> "${BOOKMARKS_PATH}" # Создадим ссылку символическую на публичный общий каталог, для быстрого общего доступа [[ -d ${XDG_PUBLICSHARE_DIR} && -d /home/usershares && ! -L ${XDG_PUBLICSHARE_DIR}/usershares ]] && ln -s /home/usershares ${XDG_PUBLICSHARE_DIR}/usershares return 0 } ################ ##### MAIN ##### ################ add_bookmarks