From a25edbd1c668af43ac92cfd7cfe271097e252b4e Mon Sep 17 00:00:00 2001 From: asmeron Date: Sun, 12 Oct 2025 00:07:43 +0600 Subject: [PATCH] Add ublinux/rc.desktop/all/bookmarks --- ublinux/rc.desktop/all/bookmarks | 62 ++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 3 deletions(-) diff --git a/ublinux/rc.desktop/all/bookmarks b/ublinux/rc.desktop/all/bookmarks index 4fb2e26..4d6baed 100755 --- a/ublinux/rc.desktop/all/bookmarks +++ b/ublinux/rc.desktop/all/bookmarks @@ -1,10 +1,66 @@ -#!/bin/sh +#!/usr/bin/env bash ENABLED=yes [[ ${ENABLED} == "yes" ]] || exit 0 . /usr/lib/ublinux/default -# Фиксим ~/.config/gtk-3.0/bookmarks подставляя тукущего пользователя вместо ${USER} +SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null - sed -i "s/\${USER}/${USER}/g" ~/.config/gtk-3.0/bookmarks +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}" + } + 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) + 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 + [[ -e ${HOME}/.config/gtk-3.0/bookmarks ]] || touch ${BOOKMARKS_PATH} + for SELECT_XDG_DIR in "${XDG_DESKTOP_DIR}" "${XDG_DOWNLOAD_DIR}" "${XDG_TEMPLATES_DIR}" "${XDG_PUBLICSHARE_DIR}" "${XDG_DOCUMENTS_DIR}" "${XDG_MUSIC_DIR}" "${XDG_PICTURES_DIR}" "${XDG_VIDEOS_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} + done + + # Создадим ссылку символическую на публичный общий каталог, для быстрого общего доступа + [[ -d ${XDG_PUBLICSHARE_DIR} && -d /home/usershares && ! -L ${XDG_PUBLICSHARE_DIR}/usershares ]] && ln -s /home/usershares ${XDG_PUBLICSHARE_DIR}/usershares + true +} + +################ +##### MAIN ##### +################ + + add_bookmarks