понедельник, 20 июня 2016 г.

XFCE: добавить пункты "Копировать в" и "Переместить в" в Thunar

После некоторого времени использования файлового менеджера Thunar в декстопном окружении Xfce появился интерес к возможности его дополнительной настройки. В частности, это касалось расширения списка операций, отображаемых в правом контекстном меню.

По результатам поиска было найдено решение по добавлению действий "Копировать в" и "Переместить в" на сайте Zen Way. Однако, как показала практика, при этом отсутствовало графическое отображение выполняемых действий.

К счастью, дальнейшие попытки увенчались успехом. Ниже приводятся инструкции, справедливые для Ubuntu и убунтоподобных дистрибутивов (например, Liunux Mint).

Запустите Thunar и перейдите в меню "Правка" – "Особые действия".



Чтобы добавить действие, нажмите на "плюсик", как показано выше.

В следующих двух окнах выбора указываются операция и условия её применимости к папкам или конкретным файлам.



В нашем случае необходимо создать 2 операции ("Копировать в" и "Переместить в"). При необходимости применения этих операций ко всем папкам и файлам (независимо от типа файла) в окне условий появления отметить все пункты.



В качестве значков операций на указанной выше картинке выбрано изображение "document-export". Вы можете указать тот значок, который Вам понравится.


Как указывалось выше, выполнение предлагаемых на Zen Way команд
"Копировать в"   cp -r %F $(zenity --file-selection --directory)  и
"Переместить в"   mv %F $(zenity --file-selection --directory)  не будет сопровождаться графическим отображением хода операций.

На одном из форумов вместо команды cp -r %F $(zenity --file-selection --directory) было предложено такое решение:

d=$(zenity --file-selection --directory --title="Куда копируем?");n=0;for i in %N;do let "n=n+1";done;k=0;for i in %N;do cp -r $i $d\/$i;let "k=k+1";let "x=k*100/n";echo $x;done|zenity --progress --title="Копирование"

При практической его проверке было установлено, что индикаторы присутствуют, но ход процесса не отображается, ограничиваясь следующим:



И только указанные ниже команды привели к желаемому результату (справедливо для группы объектов: 2 объекта и более).

Для копирования в:

d=$(zenity --file-selection --directory --title="Куда копируем?");n=0;for i in %N;do n=$((n+1));done;k=0 ;for i in %N;do k=$((k+1));x=$((k*100/n));echo $x ;cp $i "$d/$i";done|zenity --progress --title="Копирование"

Для перемещения в:

d=$(zenity --file-selection --directory --title="Куда переместить?");n=0;for i in %N;do n=$((n+1));done;k=0 ;for i in %N;do k=$((k+1));x=$((k*100/n));echo $x ;mv $i "$d/$i";done|zenity --progress --title="Перемещение"



Если Вы желаете другой текст в заголовках диалоговых окон, то измените его:
--title="Куда копируем?" и --title="Копирование"

При этом, например, копирование можно считать завершённым только после того, как кнопка "Отменить" перестанет быть активной.


Перезапустите Thunar, чтобы изменения вступили в силу:  thunar -q

Справедливости ради следует отметить, что индикатор процесса показывает не проценты от выполненного, а часть, кратную целочисленному значению объектов. Т.е. при копировании (перемещении), например, трёх объектов, индикатор сначала будет установлен в положение 1/3, потом 2/3, затем полностью займёт строку.

Кроме того, при этом варианте перестают обрабатываться файлы, в имени которых присутствует fb2. Например, file.fb2 или file.fb2.7z, а также папки, содержащие такие файлы, не будут копироваться или перемещаться. В этом случае необходимо использовать самый первый из описанных выше наборов команд:

"Копировать в"   cp -r %F $(zenity --file-selection --directory)  и
"Переместить в"   mv %F $(zenity --file-selection --directory)


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

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