Mais bookmarks para Nautilus

2

Infelizmente, o painel de indicadores do Nautilus não oferece subpastas e, no meu sistema, apenas cerca de 40 marcadores podem ser visíveis ao mesmo tempo.

Os marcadores são armazenados em um arquivo predefinido ~/.config/gtk-3.0/bookmarks . Atualmente, eu uso arquivos de favoritos diferentes para projetos diferentes, algo que realmente é um aborrecimento.

Qualquer dica sobre como melhorar isso é bem-vinda.

Existe alguma possibilidade de usar diferentes arquivos de favoritos para projetos diferentes na inicialização do Nautilus ou podemos esperar subpastas em um futuro próximo?

    
por user37342 14.03.2018 / 12:45

1 resposta

1

Descobri que os marcadores do Nautilus estão mudando dinamicamente quando o conteúdo do arquivo ~/.config/gtk-3.0/bookmarks é alterado. Então, minha sugestão é o seguinte script, que pode ser vinculado a um atalho de teclado personalizado. Aqui está ho funciona:

  • Crieoarquivoexecutável,chamadonautilus-bookmarks-managerelocalizadonodiretório/usr/local/binparaseracessívelcomocomandoshell(ouusenomeelocaldiferentes):

    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
  • Crie um atalho de teclado personalizado onde o comando deve estar:

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

O conteúdo do script é:

#!/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'

O script armazenará cada novo perfil no diretório ~/.config/gtk-3.0/bookmarks_profiles . Se este diretório não existir, ele será criado. Caso contrário, o script tentará renunciar aos perfis existentes no caso de você ter removido alguns deles. Isso leva a dois casos:

  • Quando você quiser excluir determinado perfil, primeiro você deve ativar algum outro perfil;
  • Quando você quiser mover determinado perfil para o final da lista, ative-o, exclua-o e execute o script.

Próximo. O script irá comparar o arquivo ~/.config/gtk-3.0/bookmarks com cada arquivo em ~/.config/gtk-3.0/bookmarks_profiles . Se a coincidência for encontrada, o script mudará para o próximo perfil. Se não houver coincidência, um novo perfil será criado.

Uma versão mais avançada do script pode usar perfis nomeados (e numerados) e algumas ferramentas como zenity para obter os nomes dos novos perfis.

    
por pa4080 14.03.2018 / 16:33