Больше закладок к Наутилусу

К сожалению, область закладки в Наутилусе не предлагает подпапок, и в моей системе только приблизительно 40 закладок могут быть видимы одновременно.

Закладки хранятся в в предварительно установленном файле ~/.config/gtk-3.0/bookmarks. В настоящее время я использую различные файлы закладки для различных проектов что-то, что действительно является стычкой.

Любая подсказка относительно практического руководства изменяет к лучшему, это ценится.

Там возможность состоит в том, чтобы использовать различные файлы закладки для различных проектов на запуске Наутилуса, или мы можем ожидать подпапки в ближайшем будущем?

2
задан 14 March 2018 в 18:34

1 ответ

Я нашел, что закладки Наутилуса динамично изменяются когда содержание файла ~/.config/gtk-3.0/bookmarks изменяется. Таким образом, мое предложение является следующим сценарием, который мог быть, связывают с пользовательским сочетанием клавиш. Вот ho, он работает:

enter image description here

  • Создайте исполняемый файл, названный nautilus-bookmarks-manager и расположенный в каталоге /usr/local/bin быть доступным как команда оболочки (или использовать другое имя и местоположение):

    sudo touch /usr/local/bin/nautilus-bookmarks-manager
    sudo chmod +x /usr/local/bin/nautilus-bookmarks-manager
    sudo nano /usr/local/bin/nautilus-bookmarks-manager
    
  • Создайте сочетание клавиш Custom, где команда должна быть:

    /usr/local/bin/nautilus-bookmarks-manager
    

Содержание сценария:

#!/bin/bash

# Initial variables; the last underscore in $PROFILE_NAME_TEMPLATE is important
BOOKMARKS_DIR="$HOME/.config/gtk-3.0"
BOOKMARKS="$BOOKMARKS_DIR/bookmarks"
PROFILES_DIR="$BOOKMARKS_DIR/bookmarks_profiles"
PROFILE_NAME_TEMPLATE="$PROFILES_DIR/bookmarks_profile_"

# If the profiles directory doesn't exist create it,
# otherwise renumber the existing profiles in case some of them were deleted
[[ ! -d $PROFILES_DIR ]] && mkdir -p "$PROFILES_DIR" || rename 's/[0-9]*$/our $i; sprintf("%d", 1+$i++)/e' "$PROFILES_DIR/"*

# Get the list of the profiles as an array,
# the expression `[[ -z ${PROFILES[@]##*\*} ]]` means `if the directory is empty` or not empty when there is a `!`
PROFILES=("$BOOKMARKS_DIR/bookmarks_profiles/"*)

main() {
        # Compare the current profile to each existing profile in $PROFILES and find the $CURRENT_PROFILE if it exists
        for profile in "${PROFILES[@]}"; do cmp -s "$BOOKMARKS" "$profile" && CURRENT_PROFILE="$profile"; done

        # Get the number of the current profile
        CURRENT_PROFILE_NUMBER="${CURRENT_PROFILE##*_}"

        # If the $CURRENT_PROFILE doesn't exist in the list of profiles and the directory is epty: $NEW_PROFILE_NUMBER = 1
        # If it doesn't exist and the directory is not epty: $NEW_PROFILE_NUMBER = ( number of the profiles + 1 )
        # If this is the last profile from the list the next profile number is 1: $NEW_PROFILE_NUMBER = 1
        # In all other case increment the $CURRENT_PROFILE_NUMBER by 1
        if   [[ -z ${CURRENT_PROFILE+x} && -z ${PROFILES[@]##*\*} ]]; then
                NEW_PROFILE_NUMBER=1
        elif [[ -z ${CURRENT_PROFILE+x} && ! -z ${PROFILES[@]##*\*} ]]; then
                NEW_PROFILE_NUMBER=$(( ${#PROFILES[@]} + 1 ))
        elif [[ $CURRENT_PROFILE_NUMBER -eq ${PROFILES[-1]##*_} ]]; then
                NEW_PROFILE_NUMBER=1
        else
                NEW_PROFILE_NUMBER=$(( CURRENT_PROFILE_NUMBER + 1 ))
        fi

        # If the current profile doesn't exist in the list add it, else just switch to the next profile
        if   [[ -z ${CURRENT_PROFILE+x} ]]; then
                cp "${BOOKMARKS}" "${PROFILE_NAME_TEMPLATE}${NEW_PROFILE_NUMBER}"
                echo "Profile ${NEW_PROFILE_NUMBER} is CREATED"
        else
                cp "${PROFILE_NAME_TEMPLATE}${NEW_PROFILE_NUMBER}" "${BOOKMARKS}"
                echo "Profile ${NEW_PROFILE_NUMBER} is ACTIVATED"
        fi
}

killall notify-osd >/dev/null 2>&1  # Kill all notify-send messages
notify-send "$(main 2>&1)"          # Call the `main` function and output all messages through `notify-send`

Сценарий сохранит каждый новый профиль в каталоге ~/.config/gtk-3.0/bookmarks_profiles. Если этот каталог не будет существовать, то он будет создан. Иначе сценарий попробует к renimber существующие профили в случае, если Вы удалили некоторых из них. Это приводит два случая:

  • Когда Вы хотите удалить определенный профиль, сначала необходимо активировать некоторый другой профиль;
  • Когда Вы хотите переместить определенный профиль в конец списка, активировать его, затем удалить его и выполнить сценарий.

Далее. Сценарий сравнит файл ~/.config/gtk-3.0/bookmarks с каждым файлом в ~/.config/gtk-3.0/bookmarks_profiles. Если совпадение будет найдено, то сценарий переключится на следующий профиль. Если не будет совпадения будет создан, то новый профиль.

Больше усовершенствованной версии сценария могло использовать названный (вместо этого пронумерованный) профили и и некоторый инструмент как zenity для получения названий новых профилей.

1
ответ дан 2 December 2019 в 04:45

Другие вопросы по тегам:

Похожие вопросы: