Как интегрировать 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" ;;
Работает хорошо.