Автор Тема: Файловый менеджер Caja и его возможности  (Прочитано 16662 раз)

Оффлайн ivm

  • Ветеран
  • *****
  • Сообщений: 2708
  • Что бы ни случилось, всё будет хорошо!
Re: Файловый менеджер Caja и его возможности
« Ответ #15 : 07 Июня 2018, 11:51:29 »
Увидел в одном из официальных дистрибутивов в контекстном меню файлового менеджера неработающий пункт Отправить. Решил разобраться с этим пунктом применительно к Matuntu.
Такую возможность предоставляет пакет caja-sendto - интегрирует почтовые клиенты и Pidgin в файловый менеджер Caja.
Также понадобился почтовый клиент. В дополнительных пакетах рекомендованы Evolution, Pidgin, Claws-mail, Tunderbird и другие.
Воспользовался хорошо знакомой мне громовой птицей.
После всех настроек почтового клиента в контекстном меню Caja появился активный пункт Отправить

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

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

Оффлайн vita

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4155
  • Да будет свет!
Re: Файловый менеджер Caja и его возможности
« Ответ #16 : 07 Июня 2018, 14:40:40 »
Разработан ещё ряд расширений для файлового менеджера Caja, которые по личным соображениям не установлены в Matuntu, но при необходимости любой пользователь может без проблем инсталлировать расширение в установленную систему из основного репозитория Ubuntu.

caja-eiciel - MATE eiciel - графический редактор списков контроля доступа (ACL) и расширенные атрибуты (xattr), либо как расширение внутри Caja, либо как автономная утилита.

caja-seahorse - Seahorse caja - это расширение для caja, которое позволяет шифровать и дешифровать файлы OpenPGP с использованием GnuPG. Он интегрирован в caja. Щёлкните правой кнопкой мыши меню, но также можно использовать из командной строки. Это основано на морском seahorse-nautilus.

caja-share - расширение Caja share позволяет быстро обмениваться файлами в Caja без прав доступа root. Он использует Samba, поэтому ваши папки могут быть доступны для любой операционной системы.

caja-dropbox - Caja Dropbox - это расширение, которое объединяет веб-службу Dropbox с вашим рабочим столом MATE. Чтобы использовать этот пакет, вам необходимо установить собственный пакет Dropbox с https://www.dropbox.com/install.

caja-owncloud - сервис ownCloudSync позволяет вам всегда иметь доступ к самым свежим версиям ваших файлов, где бы вы ни находились. Просто укажите одну или несколько папок на локальном компьютере, которые необходимо синхронизировать с сервером. Можно настроить синхронизацию с сервером нескольких компьютеров и любые изменения в файлах на одном из компьютеров тихо и надёжно будут перенесены на все остальные.

deja-dup-caja - контекстное меню в браузере caja для резервного копирования / восстановления ваших файлов.
« Последнее редактирование: 07 Июня 2018, 14:48:35 от vita »
Делай с нами, делай как мы, делай лучше нас!

Оффлайн vita

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4155
  • Да будет свет!
Re: Файловый менеджер Caja и его возможности
« Ответ #17 : 23 Июля 2020, 15:38:02 »
Можно без запуска графического редактора мгновенно конвертировать снимки из формата JPEG в PNG и обратно

Случайно обнаружилось, что скрипт конвертирования форматов можно применять не только между JPEG и PNG, но и к другим форматам. Например, формат WebP при помощи скрипта в Caja из контекстного меню легко можно перевести в JPEG или PNG. При этом возможно пакетное преобразование форматов изображений.
Делай с нами, делай как мы, делай лучше нас!

Оффлайн vita

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4155
  • Да будет свет!
Re: Файловый менеджер Caja и его возможности
« Ответ #18 : 29 Ноября 2020, 16:29:20 »
Множество скриптов разработчики Mate реализовали в качестве расширений для файлового менеджера. Но тема скриптов ФМ до настоящего времени рассматривается на разных ресурсах, например, на гитхабе, минтовском форуме и т.д Доступны для просмотра и загрузки скрипты Caja из диска Google.
Показался полезным скрипт Сделать текстовый файл исполняемым
Сделать исполняемым
#!/bin/bash
# 20-03-2016 - Titanio
# Web: http://tetratitanio.blogspot.com/
# Licencia: GNU General Public License.
# Instalación: Solo funciona en "Caja", copia este archivo en el directorio ~/.config/caja/scripts y otorgarle permisos de ejecución.
# El script otorga permisos de ejecución al archivo seleccionado.
# Útil para darle permisos a los scripts de CAJA y a cualquier archivo ejecutable descargado de Internet.

path=$CAJA_SCRIPT_SELECTED_FILE_PATHS
path=${path%?}
quoted="file://$path"
chmod +x "$path"
zenity --info --text="The file $path is now executable."
    else

Также можно в каталоге размещения скриптов ~/.config/caja/scripts/ создать подкаталоги по тематике, т.е. древовидную структуру скриптов
Делай с нами, делай как мы, делай лучше нас!

Оффлайн vita

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4155
  • Да будет свет!
Re: Файловый менеджер Caja и его возможности
« Ответ #19 : 10 Октября 2021, 22:57:01 »
Автор скриптов для Caja Aalexeey внёс коррективы в некоторые скрипты и разместил их на форуме русскоязычного сообщества Debian.
Проверка контрольных сумм в современном Mate уже не актуальна, поскольку в Caja встроен плагин Дайджесты для проверки хэш-функции.
Показался интересным скрипт JPG‹–›PNG‹–›PDF, в котором объединены JPG, PNG и PDF конвертеры, добавлен выбор качества и информации о файле, исправлена передача размеров и разрешения
текст скрипта
#!/bin/bash

# AUTHOR: (c) Aalexeey :-)
# NAME: JPG‹–›PNG‹–›PDF
# DESCRIPTION:         GUI скрипт для Caja, конвертирует png и jpg в pdf
# REQUIRES: imagemagick, poppler-utils, awk, mate-dialogs-gnome | zenity, mate-notification, libnotify-bin
# LICENSE: GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
# WEBSITE: http://debianforum.ru/index.php?topic=9141.0
# ICON_USED:         /usr/share/icons/gnome-colors-common/16x16/apps/conduit.png

case $LANG in

ru* )
# Russian (ru-RU)
util="JPG‹–›PNG‹–›PDF"
util_pdf=" в PDF"
util_jpg=" в JPG"
util_png=" в PNG"
conv_out="Как будем конвертировать?"
job_pdf=" PNG или JPG в файл PDF"
job_jpg=" PDF или PNG в файл JPG"
job_png=" JPG или PDF в файл PNG"
file_info=" Вывести информацию о файле"
starting="Проверяю файл ожидайте ..."
conv_level="Качество файла на выходе:"
highq=" Высокое "
mediumq=" Среднее "
lowq=" Низкое "
colo_level="Качество цвета на выходе:"
converting=" Конвертирую выбранный файл\n"
nothing="Ничего не было выбрано"
no_dirs="Директория не выбрана"
terminated="работа скрипта была\nдосрочно прекращена!"
choose_dir="Где сохраняем?"
the_file="Файл"
in_dir="сохранён в выбранном ранее каталоге ..."
wrong_image="Неправильный выбор"
wrong_file="Расширение файла противоречит задаче\nработа скрипта не может быть продолжена!"
job_done="Конвертация была\nуспешно завершена."
job_failed="Работа была прервана\nне конвертировано!";;

esac

allnames=$(echo "$1");
wholename=$(basename "$allnames");
name=${wholename%.*};

# Если ничего не выбрано то сразу выходим из программы
if [[ "$1" == "" ]]; then
zenity --warning --title="$util" --text="$nothing\n$terminated" --width 250;
exit 0;
fi

if ! [[ "$1" =~ \.[pPjJpP][nNpPdD][gGgGfF]$ ]] || [[ "$1" =~ \.[jJ][pP][eE][gG]$ ]]; then
notify-send "$util" "$wrong_file"
zenity --warning --title="$util" --text="$wrong_image\n$terminated" --width 250;
exit 0;
fi

# Выбор каталога для сохранения изображений
save_dir=$(zenity --file-selection --directory --title="$choose_dir");
if [[ "$?" != 0 ]]; then
zenity --warning --title="$util" --text="$no_dirs\n$terminated" --width 250;
exit 0;
fi

savedfile=$(echo "$save_dir/$name");

IFS=$'\t\n';

function jpg2pdf {
# Если выделенный файл png
if [[ "$fileselect" =~ \.[pP][nN][gG]$ ]]; then
png_pdf_job=$(zenity --list --radiolist --title="$util $util_pdf" --column "↓" --column "$colo_level" TRUE "$highq($colors)" FALSE "$mediumq(2700)" FALSE "$lowq(900)" --width=300 --height=200 | sed 's/[^0-9]//g');
if [ "$png_pdf_job" = "" ]; then
zenity --warning --title="$util $util_pdf" --text="$nothing\n$terminated" --width 250;
exit 0;
fi
(
echo
convert -background white -alpha remove -alpha off $fileselect -units PixelsPerInch -density $imagedpi -geometry $resolution $transit_flif &&
echo
convert +dither -colors $png_pdf_job $transit_flif -units PixelsPerInch -density $imagedpi -geometry $resolution $savedfile.pdf
) | zenity --progress --no-cancel --pulsate --text="$converting $name" --auto-close
rm $transit_flif
fi
# Если выделенный файл jpg
if [[ "$fileselect" =~ \.[jJ][pP][gG]$ ]] || [[ "$fileselect" =~ \.[jJ][pP][eE][gG]$ ]]; then
jpg_pdf_job=$(zenity --list --radiolist --title="$util $util_pdf" --column "↓" --column "$conv_level" TRUE "$highq(100%)" FALSE "$mediumq(~90%)" FALSE "$lowq(~60%)" --width=300 --height=200 | sed 's/[^0-9]//g');
if [ "$jpg_pdf_job" = "" ]; then
zenity --warning --title="$util $util_pdf" --text="$nothing\n$terminated" --width 250;
exit 0;
fi
(
echo
convert -background white -alpha remove -alpha off -quality $jpg_pdf_job $fileselect -units PixelsPerInch -density $imagedpi -geometry $resolution $savedfile.pdf
) | zenity --progress --no-cancel --pulsate --text="$converting $name" --auto-close
fi
sleep 0.5
if [ -f "$savedfile.pdf" ]; then
notify-send "$util $util_pdf" "$the_file $name.pdf\n$in_dir"
sleep 0.5
zenity --info --title="$util $util_pdf" --text="$job_done" --width 250;
else
zenity --warning --title="$util $util_pdf" --text="$job_failed" --width 250;
exit 0;
fi
}

function pdf2jpg {
# Если выделенный файл pdf
if [[ "$fileselect" =~ \.[pP][dD][fF]$ ]]; then
pdf_jpg_job=$(zenity --list --radiolist --title="$util $util_jpg" --column "↓" --column "$conv_level" FALSE "$highq(300)" TRUE "$mediumq(150)" FALSE "$lowq(100)" --width=300 --height=200 | sed 's/[^0-9]//g');
if [ "$pdf_jpg_job" = "" ]; then
zenity --warning --title="$util $util_jpg" --text="$nothing\n$terminated" --width 250;
exit 0;
fi
(
echo
#gs -dNOPAUSE -dBATCH -sDEVICE=jpeg -r$pdf_jpg_job -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sOutputFile="$savedfile-%d" "$fileselect"
pdftoppm -r $pdf_jpg_job -cropbox -jpeg "$fileselect" "$savedfile"
) | zenity --progress --no-cancel --pulsate --text="$converting $name" --auto-close
fi
# Если выделенный файл png
if [[ "$fileselect" =~ \.[pP][nN][gG]$ ]]; then
png_jpg_job=$(zenity --list --radiolist --title="$util $util_jpg" --column "↓" --column "$conv_level" TRUE "$highq(100%)" FALSE "$mediumq(~90%)" FALSE "$lowq(~60%)" --width=300 --height=200 | sed 's/[^0-9]//g');
if [ "$png_jpg_job" = "" ]; then
zenity --warning --title="$util $util_jpg" --text="$nothing\n$terminated" --width 250;
exit 0;
fi
(
echo
convert $fileselect -background white -alpha remove -alpha off -quality $png_jpg_job -units PixelsPerInch -density $imagedpi -geometry $resolution $savedfile.jpg
) | zenity --progress --no-cancel --pulsate --text="$converting $name" --auto-close
fi
sleep 0.5
if [ -f "$savedfile.jpg" ] || [ -f "$savedfile-1.jpg" ]; then
notify-send "$util $util_jpg" "$the_file $name*.jpg\n$in_dir"
sleep 0.5
zenity --info --title="$util $util_jpg" --text="$job_done" --width 250;
else
zenity --warning --title="$util $util_jpg" --text="$job_failed" --width 250;
exit 0;
fi
}

function jpg2png {
# Если выделенный файл pdf
if [[ "$fileselect" =~ \.[pP][dD][fF]$ ]]; then
pdf_png_job=$(zenity --list --radiolist --title="$util $util_png" --column "↓" --column "$conv_level" FALSE "$highq(300)" TRUE "$mediumq(150)" FALSE "$lowq(100)" --width=300 --height=200 | sed 's/[^0-9]//g');
if [ "$pdf_png_job" = "" ]; then
zenity --warning --title="$util $util_png" --text="$nothing\n$terminated" --width 250;
exit 0;
fi
(
echo
#gs -dNOPAUSE -dBATCH -sDEVICE=png16m -r$pdf_png_job -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sOutputFile="$savedfile-%d" "$fileselect"
pdftoppm -r $pdf_png_job -cropbox -png "$fileselect" "$savedfile"
) | zenity --progress --no-cancel --pulsate --text="$converting $name" --auto-close
fi
# Если выделенный файл jpg
if [[ "$fileselect" =~ \.[jJ][pP][gG]$ ]] || [[ "$fileselect" =~ \.[jJ][pP][eE][gG]$ ]]; then
jpg_png_job=$(zenity --list --radiolist --title="$util $util_png" --column "↓" --column "$colo_level" TRUE "$highq($colors)" FALSE "$mediumq(2700)" FALSE "$lowq(900)" --width=300 --height=200 | sed 's/[^0-9]//g');
if [ "$jpg_png_job" = "" ]; then
zenity --warning --title="$util $util_png" --text="$nothing\n$terminated" --width 250;
exit 0;
fi
(
echo
convert $fileselect -units PixelsPerInch -density $imagedpi -geometry $resolution $transit_flif &&
echo
convert +dither -colors $jpg_png_job $transit_flif -background white -alpha remove -alpha off -units PixelsPerCentimeter -density $imageppcm -geometry $resolution $savedfile.png
) | zenity --progress --no-cancel --pulsate --text="$converting $name" --auto-close
rm $transit_flif
fi
sleep 0.5
if [ -f "$savedfile.png" ] || [ -f "$savedfile-1.png" ]; then
notify-send "$util $util_png" "$the_file $name*.png\n$in_dir"
sleep 0.5
zenity --info --title="$util $util_png" --text="$job_done" --width 250;
else
zenity --warning --title="$util $util_png" --text="$job_failed" --width 250;
exit 0;
fi
}

# Цикл перебора выделенных файлов
for fileselect in `echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"`
do

notify-send "$util" "$starting"

#Вывести информацию о файле
fileinfo=$(identify -verbose $fileselect);

#Определение разрешения оригинала
imagedpi=$(identify -units PixelsPerInch -format "%x" $fileselect | awk '{print sprintf("%.0f",$0/2)*2}');
imageppcm=$(bc<<<"scale=3;$imagedpi/2.53968" | awk '{printf("%.2f \n",$1)}');
xresolution=$(identify -units PixelsPerInch -format "%[fx:w]" $fileselect);
yresolution=$(identify -units PixelsPerInch -format "%[fx:h]" $fileselect);
resolution=$(echo "$xresolution"x"$yresolution");

#Качество цвета транзитного flif
transit_flif=$(echo "/tmp/$name.flif");
colors=$(identify -format "unique_colors:%k" $fileselect | sed 's/[^0-9]//g' | head -c 6);

# Если выделенный файл jpg
if [[ "$fileselect" =~ \.[jJ][pP][gG]$ ]] || [[ "$fileselect" =~ \.[jJ][pP][eE][gG]$ ]]; then
selectedjpg=`zenity --list --radiolist --title="$util" --column "↓" --column "$conv_out" TRUE "$job_pdf" FALSE "$job_png" FALSE "$file_info" --width=300 --height=200`;
if  [ "$selectedjpg" = "$job_pdf" ]; then
# то вызываем функцию конвертирования
jpg2pdf
elif  [ "$selectedjpg" = "$job_png" ]; then
# то вызываем функцию конвертирования
jpg2png
elif  [ "$selectedjpg" = "$file_info" ]; then
echo "$fileinfo" | zenity --text-info --title="$util" --width 700 --height=500;
elif  [ "$?" = 1 ]; then
zenity --warning --title="$util" --text="$nothing\n$terminated" --width 250;
exit 0;
fi
# Если выделенный файл png
elif [[ "$fileselect" =~ \.[pP][nN][gG]$ ]]; then
selectedpng=`zenity --list --radiolist --title="$util" --column "↓" --column "$conv_out" TRUE "$job_pdf" FALSE "$job_jpg" FALSE "$file_info" --width=300 --height=200`;
if  [ "$selectedpng" = "$job_pdf" ]; then
# то вызываем функцию конвертирования
jpg2pdf
elif  [ "$selectedpng" = "$job_jpg" ]; then
# то вызываем функцию конвертирования
pdf2jpg
elif  [ "$selectedpng" = "$file_info" ]; then
echo "$fileinfo" | zenity --text-info --title="$util" --width 700 --height=500;
elif  [ "$?" = 1 ]; then
zenity --warning --title="$util" --text="$nothing\n$terminated" --width 250;
exit 0;
fi
# Если выделенный файл pdf
elif [[ "$fileselect" =~ \.[pP][dD][fF]$ ]]; then
selectedpdf=`zenity --list --radiolist --title="$util" --column "↓" --column "$conv_out" TRUE "$job_png" FALSE "$job_jpg" FALSE "$file_info" --width=300 --height=200`;
if  [ "$selectedpdf" = "$job_png" ]; then
# то вызываем функцию конвертирования
jpg2png
elif  [ "$selectedpdf" = "$job_jpg" ]; then
# то вызываем функцию конвертирования
pdf2jpg
elif  [ "$selectedpdf" = "$file_info" ]; then
echo "$fileinfo" | zenity --text-info --title="$util" --width 700 --height=500;
elif  [ "$?" = 1 ]; then
zenity --warning --title="$util" --text="$nothing\n$terminated" --width 250;
exit 0;
fi
fi

done

fi

Немного переработан + fakeroot скрипт deb_Repacker
текст скрипта
#!/bin/bash

# AUTHOR: (c) Aalexeey :-)
# NAME: deb Repacker
# DESCRIPTION:         GUI скрипт для Caja, для разборки и сборки deb пакетов
# REQUIRES: awk| gawk | mawk, dpkg, fakeroot, mate-dialogs-gnome | zenity, mate-notification, libnotify-bin
# LICENSE: GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
# WEBSITE: http://debianforum.ru/index.php?topic=9141.0
# ICON_USED:         /usr/share/icons/gnome-colors-common/16x16/actions/extract-archive.png

case $LANG in

ru* )
# Russian (ru-RU)
util="deb_Repacker"
target="Поставленная задача"
rebuild="Воссоздать deb пакет"
fakeroot="Воссоздать пакет с fakeroot"
extract="Распаковать deb пакет"
cancel="Работа скрипта прекращена!"
deb_file="Для запуска скрипта выделяйте deb файл"
no_deb="Не был выбран Debian пакет!"
refused="Вы отказались от намеченного"
deb_folder="Содержимое deb пакета в папке"
unpacking="удалён, ждите распаковывается"
choose="Выберите подготовленный каталог, должен быть!"
no_folder="Ни один каталог не выбран."
md5_gen="сгенерирован, ожидайте...."
deb_build="Собирается ваш deb пакет, возможно,\nэтот процесс займёт некоторое время!"
deb_save="Ваш пакет сохранён в одной\nс его каталогом директории."
panic="Что то пошло совсем не так,\nвозможно это файл <b>control</b>,"
cyrilic="кодировка символов имени \nдиректории и.т.п.";;

esac

fileselect="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
filetype=$(file -b $fileselect | awk '{ print $1}' | tr -d '\n')
defaultdir="./"`basename $1 .deb`"[new]"
dirlog=`basename $1 .deb`"[new]"

selectedjob=$(zenity --list --radiolist --title="$util" --column "↓" --column "$target" FALSE "$rebuild" TRUE "$fakeroot" FALSE "$extract" --width=300 --height=200);

if  [ "$?" = 1 ]; then
    zenity --warning --title="$util" --text="$refused\n$cancel" --width=300
    exit 0;
fi

if  [ "$filetype" != "Debian" ] && [ "$selectedjob" = "$extract" ]; then
    notify-send "$util" "$deb_file"
    zenity  --warning --title="$util" --text="$no_deb\n$cancel" --width=300
    exit -1;
fi

if  [ "$selectedjob" = "$extract" ]; then
    dpkg-deb -R $fileselect $defaultdir/ | notify-send "$util" "md5sums $unpacking"
    rm $defaultdir/DEBIAN/md5sums
    rm $defaultdir/DEBIAN/md5sum
    cat /tmp/deb_repack_dpkg.log
    echo -n "$dirlog" > /tmp/deb_repack_dpkg.log
    sleep 1
    zenity --info --title="$util" --text="$deb_folder\n$defaultdir" --width=300
exit 0;
fi

savedlog=`cat /tmp/deb_repack_dpkg.log`

dirselect=$(zenity --file-selection --directory --title="$choose $savedlog");

if  [ "$?" = 1 ]; then
    zenity --warning --title="$util" --text="$no_folder\n$cancel" --width=300
    exit 0;
fi

if  [ "$selectedjob" = "$rebuild" ]; then
    cd $dirselect && find . -type f ! -regex '.*.hg.*' ! -regex '.*?debian-binary.*' ! -regex '.*?DEBIAN.*' -printf '%P ' | xargs md5sum > $dirselect/DEBIAN/md5sums
    notify-send "$util" "md5sums $md5_gen"
    dpkg-deb -b $dirselect | zenity --progress --no-cancel --pulsate --text="$deb_build" --auto-close --width=300
    cp /dev/null /tmp/deb_repack_dpkg.log
    sleep 1
fi

if  [ "$selectedjob" = "$fakeroot" ]; then
    cd $dirselect && find . -type f ! -regex '.*.hg.*' ! -regex '.*?debian-binary.*' ! -regex '.*?DEBIAN.*' -printf '%P ' | xargs md5sum > $dirselect/DEBIAN/md5sums
    notify-send "$util" "md5sums $md5_gen"
    fakeroot dpkg-deb -b $dirselect | zenity --progress --no-cancel --pulsate --text="$deb_build" --auto-close --width=300
    cp /dev/null /tmp/deb_repack_dpkg.log
    sleep 1
fi

if  [ -f "$dirselect.deb" ]; then   
    zenity --info --title="$util" --text "$deb_save" --width=300
else
    zenity --error --title="$util" --text "$panic\n$cyrilic\n$cancel" --width=300
exit 0;
fi

С остальными скриптами можно ознакомиться по приведённой выше ссылке.
Делай с нами, делай как мы, делай лучше нас!