@ -27,18 +27,17 @@ add_bookmarks(){
done
echo "${encoded_string}"
}
BOOKMARKS_PATH="${HOME}/.config/gtk-3.0/bookmarks"
if [[ -f ${HOME}/.config/user-dirs.dirs ]]; then
source "${HOME}/.config/user-dirs.dirs"
else
XDG_DESKTOP_DIR=$(xdg-user-dir DESKTOP 2>/dev/null)
XDG_DOWNLOAD_DIR=$(xdg-user-dir DOWNLOAD 2>/dev/null)
XDG_TEMPLATES_DIR=$(xdg-user-dir TEMPLATES 2>/dev/null)
XDG_PUBLICSHARE_DIR=$(xdg-user-dir PUBLICSHARE 2>/dev/null)
XDG_DOCUMENTS_DIR=$(xdg-user-dir DOCUMENTS 2>/dev/null)
XDG_MUSIC_DIR=$(xdg-user-dir MUSIC 2>/dev/null)
XDG_PICTURES_DIR=$(xdg-user-dir PICTURES 2>/dev/null)
XDG_VIDEOS_DIR=$(xdg-user-dir VIDEOS 2>/dev/null)
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} \
@ -47,17 +46,31 @@ add_bookmarks(){
else
return 0
fi
[[ -e ${HOME}/.config/gtk-3.0/bookmarks ]] || touch ${BOOKMARKS_PATH}
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_TEMPLATES_DIR}" "${XDG_PUBLICSHARE_DIR}" "${XDG_DOCUMENTS_DIR}" "${XDG_MUSIC_DIR}" "${XDG_PICTURES_DIR}" "${XDG_VIDEOS_DIR}"; do
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}")"
grep -Eq "^${URLENCODE_XDG_DIR}$" ${BOOKMARKS_PATH} || echo "${URLENCODE_XDG_DIR}" >> ${BOOKMARKS_PATH}
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
t ru e
return 0
}
################