web-dev-qa-db-fra.com

Comment intégrer Dropbox à Thunar?

Comment puis-je intégrer Dropbox dans Thunar? J'utilise Xubuntu 14.04 avec Xfce 4.12 installé via PPA et thunar-dropbox-plugin a été cassé. J'ai aussi entendu dire que cela ne fonctionnait pas sous Xubuntu 16.04.

4
jbrock

Heureusement, Dropbox a récemment développé ses capacités CLI pour inclure des liens de partage, etc. Pour intégrer Dropbox à Thunar, procédez comme suit:

La configuration initiale

Créez un répertoire ~/bin dans votre dossier personnel, s'il n'a pas déjà été créé. Téléchargez le Dropbox python script . Renommez-le simplement dropbox. (L'extension n'est pas nécessaire.) Rendez-le exécutable chmod +x ~/bin/dropbox.

Si le répertoire ~/bin n'est pas déjà ajouté à votre $PATH (la fin de la tabulation ne fonctionne pas pour le script, etc.), vous ajouterez les éléments suivants à ~/.profile. Puis déconnectez-vous et à nouveau.

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Installez xsel en collant Sudo apt-get install xsel dans le terminal. Ce programme donne une fonctionnalité de presse-papiers au script ci-dessous.

Enregistrez le script suivant dans un fichier texte, enregistrez-le dans ~/bin et exécutez-le. Le mien s'appelle dropbox-online. Remplacez icon_path="/full/path/to/dropbox-icon.png" par le chemin de votre icône Dropbox .

#!/bin/bash

# Name:     Dropbox Thunar Integration
# Author:   jbrock
# Dependencies: xsel (in Ubuntu repository), Dropbox python script https://linux.dropbox.com/packages/dropbox.py
# Installation: http://askubuntu.com/questions/777878/how-to-integrate-dropbox-in-thunar

notify_time=5000
icon_path="/full/path/to/dropbox-icon.png"
internet_status=$(ping -c 1 dropbox.com > /dev/null 2>&1; echo $?)
dropbox_status=$(dropbox status)

web_directory () {
    prepend_path="https://www.dropbox.com/home/"
    append_path=$(pwd | cut -d "/" -f5-)
    xdg-open "$prepend_path$append_path"
}

gui_notify () {
    notify-send -t "$notify_time" -i "$icon_path" "$1"
}

# Check: 1. internet connection; 2. if Dropbox is running; 3. if in Dropbox or Public folder.

if [ "$internet_status" != 0 ]; then
    gui_notify "There is an internet connectivity issue."
    exit 1
fi

if [ "$dropbox_status" = "Dropbox isn't running!" ]; then
    gui_notify "Dropbox isn't running."
    exit 1
fi

if [[ "$2" != *Dropbox* ]]; then
    gui_notify "You are not in Dropbox."
    exit 1
fi  

if [[ "$1" = -p && "$2" != *Dropbox\/Public* ]]; then
    gui_notify "You are not in the Dropbox/Public folder."
    exit 1
fi

case "$1" in
    -p )
        dropbox puburl "$2" | tr -d '\n' | xsel -ib && gui_notify "Public Link Copied" ;;
    -s )
        dropbox sharelink "$2" | tr -d '\n' | xsel -ib && gui_notify "Share Link Copied" ;;
    -d )
        web_directory ;;
esac

Intégration Thunar

Intégrer à Thunar. Allez dans Edition> Configurer des actions personnalisées. Cliquez sur le plus pour ajouter une action personnalisée. Configurez les trois actions personnalisées suivantes:

Add Share Link

Add Public Link

Add Directory Online

Rappelez-vous également que vous pouvez ajouter votre propre icône pour apparaître dans les éléments du menu contextuel Thunar.

Pour chacun de ces éléments, procédez comme suit dans le deuxième onglet, car vous souhaitez pouvoir partager tout type de fichier ou de répertoire.

Appearance Conditions

Le seul inconvénient est que les trois éléments du menu Dropbox apparaissent globalement dans Thunar, pas seulement dans Dropbox. Cependant, le script vous indique si vous êtes accidentellement en dehors de Dropbox.

Mise à jour: La commande dropbox puburl ne fonctionne plus. Dropbox n'a plus le dossier Public pour les comptes gratuits et le supprime pour les comptes payants le 1er septembre 2017.

5
jbrock

[Cela devrait être un commentaire, excusez-moi mais je n'ai pas encore la réputation.]

@ jbrock

Je vous remercie! J'ai constaté que je devais écrire par exemple pour le lien de partage:

dropbox-online -s %n

plutôt que% f, et il semble être assez intelligent pour savoir où il se trouve dans le système de fichiers.

En outre, j'exécute deux processus Dropbox; pour moi j'en ai absolument besoin pour un seul d'entre eux, c'est pourquoi j'ai placé l'enveloppe HOME env dans les lignes vers la fin de votre script:

HOME=/home/mike/.dropbox-work dropbox sharelink "$2" | tr -d '\n' | xsel -ib && gui_notify "Share Link Copied" ;;

Fonctionne bien.

0
djnz0feh