пятница, 25 января 2019 г.

Автоматическое переназначение значка статуса Dropbox

Назначение пользовательского значка статуса "Синхронизировано" в Dropbox рассматривалось в публикации "Изменение значка статуса Dropbox в Linux".

С течением времени после обновления ПО Dropbox замена перезаписанного в процессе обновления графического файла dropboxstatus-idle.png всё время откладывалась на потом. В конце концов, постоянная "забывчивость" заставила поискать способ осуществление такой операции автоматически. Например, значка по умолчанию


на выбранный свой


Готовые значки можно взять здесь. Во вложенной папке Default colored расположены варианты окраски значка dropboxstatus-idle.png. При создании своих значков необходимо иметь в виду, что их размер должен быть 20x20.

Процесс выполняется скриптом bash, оформленным как исполняемый файл.

Для достижения цели необходимо знать несколько исходных данных:

– версию используемого ПО Dropbox;

– расположение значка из комплекта поставки (по умолчанию);

– расположение своего значка статуса "Синхронизировано".

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

В Ubuntu и Linux Mint имеется скрытый каталог ~/.dropbox-dist, в котором расположен файл VERSION, содержанием которого и является версия установленного ПО.

Значок статуса "Синхронизировано" расположен по пути

 ~/.dropbox-dist/dropbox-lnx.x86_64-vesrion/images/hicolor/16x16/status/,

где вместо version указаны цифры, соответствующие номеру версии ПО, например

~/.dropbox-dist/dropbox-lnx.x86_64-65.4.177/images/hicolor/16x16/status/

Для удобства написания (чтобы не указывать длинные команды) в скрипт вводится несколько переменных.

ver=`cat ~/.dropbox-dist/VERSION`
icon=~/.dropbox-dist/dropbox-lnx.x86_64-$ver/images/hicolor/16x16/status/
f1=~/.dropbox-dist/dropbox-lnx.x86_64-$ver/images/hicolor/16x16/status/dropboxstatus-idle.png
f2=~/Dropbox/dropboxstatus-idle.png

Переменная ver является номером версии ПО, который затем используется при определении значения переменной пути к значкам. Так как ПО Dropbox обновляется, то невозможно заранее указать номер следующей версии. Поэтому этот номер и считывается из файла VERSION.

icon указывает расположение каталога со значками состояния Dropbox.

f1 указывает путь к текущему файлу значка dropboxstatus-idle.png.

f2 указывает путь к своему файлу значка dropboxstatus-idle.png, который и должен заменить текущий.

Далее производится операция сравнения двух файлов dropboxstatus-idle.png: текущего и своего. Если они одинаковы, то не производится никаких действий. Если они отличаются, то текущий значок удаляется, а свой файл копируется в каталог со значками состояния Dropbox.

if cmp -s $f1 $f2 ; then
   :
else 
   rm $f1
   cp $f2 $icon
fi

Итого, полный текст скрипта:

#!/bin/bash
ver=`cat ~/.dropbox-dist/VERSION`
icon=~/.dropbox-dist/dropbox-lnx.x86_64-$ver/images/hicolor/16x16/status/
f1=~/.dropbox-dist/dropbox-lnx.x86_64-$ver/images/hicolor/16x16/status/dropboxstatus-idle.png
f2=~/Dropbox/dropboxstatus-idle.png
if cmp -s $f1 $f2 ; then
:
else 
rm $f1
cp $f2 $icon
fi
exit

Ожидается, что в результате его использования состояние Dropbox "Синхронизировано" будет постоянно отображаться назначенным значком.

Если имеется необходимость поменять на свой значок ещё и монохромный dropboxstatus-logo.png (отображается при старте клиента до его синхронизации с облаком), то после f2 укажите две переменные, описывающие расположение значков dropboxstatus-logo.png,

f3=~/.dropbox-dist/dropbox-lnx.x86_64-$ver/images/hicolor/16x16/status/dropboxstatus-logo.png
f4=~/Dropbox/dropboxstatus-logo.png

и аналогичную операцию сравнения после предыдущего цикла (после fi)

if cmp -s $f3 $f4 ; then
 :
else
rm $f3
cp $f4 $icon
fi

Данный скрипт можно поместить как отдельную команду в скрипт запуска Dropbox, который производится через кнопку запуска или по расписанию. Ниже приводится пример через кнопку запуска. Скрипт автокоррекции значка – dbi.sh

#!/bin/bash
~/Dropbox/scripts/dbi.sh
notify-send --icon=/home/user/.local/share/icons/Mint-X/emblems/48/emblem-sync-dropbox.png "Dropbox status" "Client is starting"
dropbox start -i
sleep 1200
notify-send --icon=/home/user/.local/share/icons/Mint-X/emblems/48/emblem-sync-dropbox-z.png "Dropbox status" "Dropbox is going to exit"
dropbox stop
exit

Комментариев нет:

Отправить комментарий