Как интегрировать Dropbox в Thunar?

Как я могу интегрировать Dropbox в Thunar? Я использую Xubuntu 14.04 с Xfce 4.12, установленным через PPA, и thunar-dropbox-plugin был сломан. Я также слышал, что он не работает на Xubuntu 16.04.

2 ответа

Решение

К счастью, Dropbox недавно расширил возможности CLI, добавив в него ссылки и т. Д. Чтобы интегрировать Dropbox в Thunar, сделайте следующее:

Начальная настройка

Создать ~/bin каталог в вашей домашней папке, если он еще не создан. Загрузите скрипт Python Dropbox. Переименовать его как просто dropbox, (Расширение не требуется.) Сделайте его исполняемым chmod +x ~/bin/dropbox,

Если ~/bin каталог еще не добавлен в ваш $PATH (т. е. завершение вкладки не работает для скрипта и т. д.), вы должны добавить следующее к ~/.profile, Затем выйдите и войдите снова.

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

устанавливать xsel вставив sudo apt-get install xsel в терминале. Эта программа предоставляет функции буфера обмена для приведенного ниже сценария.

Сохраните следующий скрипт в простой текстовый файл, сохраните его в ~/bin и сделайте его исполняемым. Шахта названа dropbox-online, + Изменить icon_path="/full/path/to/dropbox-icon.png" к пути к вашей иконке 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://Ask-ubuntu.ru/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

Тунарная интеграция

Интегрировать в Тунар. Перейдите в "Правка"> "Настроить пользовательские действия". Нажмите на плюс, чтобы добавить настраиваемое действие. Установите следующие три пользовательских действия:

Также помните, что вы можете добавить свой собственный значок для отображения в пунктах контекстного меню Thunar.

Для каждого из них вы должны будете сделать следующее на второй вкладке, учитывая, что вы хотите иметь доступ к любому типу файла или каталога.

Единственным недостатком является то, что три пункта меню Dropbox отображаются глобально в Thunar, а не только в Dropbox. Тем не менее, скрипт сообщает вам, если вы случайно оказались за пределами Dropbox.

Обновление: команда dropbox puburl больше не работает. В Dropbox больше нет общей папки для бесплатных аккаунтов, и она закрывается для платных 1 сентября 2017 года.

[Это должен быть комментарий, извинения, но у меня пока нет репутации.]

@jbrock

Спасибо! Я обнаружил, что мне нужно написать, например, для ссылки Share:

dropbox-online -s %n

а не% f, и кажется, что он достаточно умен, чтобы определить, где он находится в файловой системе.

Кроме того, я запускаю два процесса dropbox; для меня это в подавляющем большинстве случаев необходимо для одного из них, поэтому я поставил строку HOME env var в конце вашего сценария:

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

Работает хорошо.

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