Я обнаружил, что закладки Nautilus динамически меняются при изменении содержимого файла ~/.config/gtk-3.0/bookmarks. Поэтому мое предложение - это следующий скрипт, который может быть привязан к пользовательскому сочетанию клавиш. Здесь ho это работает:
Создайте исполняемый файл, названный 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
Создать пользовательскую комбинацию клавиш, где должна быть команда: /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`
Скрипт сохранит каждый новый профиль в каталоге [ f7]. Если этот каталог не существует, он будет создан. В противном случае скрипт попытается обновить существующие профили, если вы удалили некоторые из них. Это приводит к двум случаям:
Создайте исполняемый файл, названный 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
[ ! d5] Если вы хотите переместить определенный профиль в конец списка, активируйте его, а затем удалите и выполните сценарий. Далее. Скрипт будет сравнивать файл ~/.config/gtk-3.0/bookmarks с каждым файлом в ~/.config/gtk-3.0/bookmarks_profiles. Если совпадение найдено, скрипт переключится на следующий профиль. Если нет совпадения, будет создан новый профиль.
В более продвинутой версии сценария могут использоваться именованные (вместо пронумерованных) профили и некоторый инструмент, например , чтобы получить имена новых профилей.
Я знаю, это может показаться немного странным, но вы используете стороннюю тему GTK? Если это так, попробуйте изменить тему на тему по умолчанию (например, Ambiance) и посмотрите, исправляет ли она это.
Я бы разместил это как комментарий, но, видимо, мне не хватает кармы, чтобы сделать это.
Я знаю, это может показаться немного странным, но вы используете стороннюю тему GTK? Если это так, попробуйте изменить тему на тему по умолчанию (например, Ambiance) и посмотрите, исправляет ли она это.
Я бы разместил это как комментарий, но, видимо, мне не хватает кармы, чтобы сделать это.
Я знаю, это может показаться немного странным, но вы используете стороннюю тему GTK? Если это так, попробуйте изменить тему на тему по умолчанию (например, Ambiance) и посмотрите, исправляет ли она это.
Я бы разместил это как комментарий, но, видимо, мне не хватает кармы, чтобы сделать это.