четверг, 24 сентября 2020 г.

Открыть файлы odt без офисного пакета Libre Office


Иногда возникает необходимость быстро просмотреть содержание файла odt, особенно если этот файл небольшого размера, без запуска офисного пакета Libre Office. Рассматривается применительно к Linux Mint xfce.

1. Установите пакет odt2txt – sudo apt install -y odt2txt

2. Создайте в файловом менеджере Thunar пункт меню (например, ODT) через "Правка – Особые действия":


В строке "Команда" укажите:

xfce4-terminal -x sh -c 'odt2txt %f | less; exec bash'

В условии появления пункта меню поставьте галочку в поле "Другие файлы" и укажите шаблон имени файла *.odt :


3. Для быстрого открытия файла odt вызовите на нём пункт ODT правого контекстного меню. Содержание файла будет отображено в терминале. Графические элементы показаны не будут, но быстро прочитать тестовое содержание вы сможете. Пример:


понедельник, 14 сентября 2020 г.

Запуск процесса синхронизации при изменении содержания источника данных (автоматизация)


Идея автоматизации выполнения данной задачи родилась из периодической "забывчивости" осуществления резервирования данных на регулярной основе. Полагаю, что у каждого имеются файлы, которые было бы обидно потерять в случае какого-либо сбоя на файловой системе или отказа физического носителя.
 
Реализация рассматривается на примере создания резервной копии личной библиотеки книг fb2. В качестве источника рассматривается несколько папок, каждая из которых имеет своё назначение, например "прочитанные", "планируется прочитать", "только получено", "решение ещё не принято" и т.д. и т.п.

Решение создавалось для решения прикладной задачи личных нужд и не претендует на материал для обучения или описание единственно правильного написания сценария sh.

Необходимость запуска синхронизации определяется путём вычисления разницы между предыдущим содержанием папок и содержанием этих папок на момент запуска синхронизации. В моём случае такой запуск осуществляется по расписанию (см. пользовательское задание cron).

Мной были созданы 2 файла сценариев sh и 2 папки.


Папка Lists содержит файлы, на основании которых определяется необходимость запуска синхронизации. Файлы сценариев account.sh и do.sh представляют из себя набор команд, осуществляющих выполнение всех действий. Папка MEGAsync содержит данные, необходимые для работы конкретной учётной записи MEGA. Поскольку у меня имеется не один аккаунт, то существование данной папки определяется алгоритмом запуска клиента MEGA под разными учётными записями (подробности).

В папке Lists содержатся файлы list.txt , s.txt , value.txt  Их назначение поясняется в комментариях к листингу сценария do.sh


В приводимых листингах сценариев указываются пути для моего случая. Если возникнет желание применить их в своей системе, то укажите свои пути. Например, это касается значений log= , conf= , /home/minter/... 

Пояснения в сценариях читать после символа #.

Выполнение задачи осуществляется путём запуска файла do.sh

#!/bin/sh
#  Указывается файл протокола работы в конкретный день месяца.
day=`date '+%d'` 
log=/home/minter/Reports/mega/$day.data2.txt
#  Если файл log не существует, то он создаётся
if [ -f $log ]; then
  :
else
  > $log
  echo "  " >> $log
fi
# В conf указываются пути всех дополнительных файлов
conf=/home/minter/configs/mega/internet
# Файлы list.txt содержат список хранящихся в них объектов
# Аналогичные данные содержатся и в файлах s.txt
# Файлы s.txt содержат данные состояния до анализа необходимости синхронизации,
# то есть состояния после последней синхронизации.
# Файлы list.txt содержат сведения о содержании папок на момент принятия решения
# о необходимости осуществления синхронизации.
list1=$conf/Lists/list1.txt
list2=$conf/Lists/list2.txt
list3=$conf/Lists/list3.txt
list4=$conf/Lists/list4.txt
list5=$conf/Lists/list5.txt
list6=$conf/Lists/list6.txt
s1=$conf/Lists/s1.txt
s2=$conf/Lists/s2.txt
s3=$conf/Lists/s3.txt
s4=$conf/Lists/s4.txt
s5=$conf/Lists/s5.txt
s6=$conf/Lists/s6.txt
# Значения stor являются указания путей к папкам с синхронизируемым данным.
# Эти значения используются в командах создания списков содержания этих папок.
stor1=/home/minter/Books
stor2=/home/minter/FBbooks
stor3=/home/minter/Downloads/palemoon
stor4=/home/minter/Downloads/waterfox
stor5=/home/minter/Downloads/yandex
stor6=/home/minter/Downloads/opera
# Создаются списки содержания папок, подлежащих синхронизации с облаком.
# В комплекте поставки Linux Mint "из коробки" программа tree отсутствует.
# Её необходимо установить дополнительно:  sudo apt install -y tree
tree --noreport $stor1 > $list1
tree --noreport $stor2 > $list2
tree --noreport $stor3 > $list3
tree --noreport $stor4 > $list4
tree --noreport $stor5 > $list5
tree --noreport $stor6 > $list6
# Вычисляются величины, на основании которых сценарий будет принимать
# решение о необходимости осуществления запуск клиента MEGA.
# Сравнивается содержание файлов list.txt и s.txt
# Если файлы равны, то величине присваивается значение 0.
# Если файлы не равны, то величине присваивается значение 1.
# Действие производится для каждой из синхронизируемых папок.
# write value for stor1
if cmp -s $list1 $s1
  then
     v1=0
     echo $v1 > $conf/Lists/value1.txt
  else
     v1=1
     echo $v1 > $conf/Lists/value1.txt
fi
# write value for stor2
if cmp -s $list2 $s2
  then
     v2=0
     echo $v2 > $conf/Lists/value2.txt
  else
     v2=1
     echo $v2 > $conf/Lists/value2.txt
fi
# write value for stor3
if cmp -s $list3 $s3
  then
     v3=0
     echo $v3 > $conf/Lists/value3.txt
  else
     v3=1
     echo $v3 > $conf/Lists/value3.txt
fi
# write value for stor4
if cmp -s $list4 $s4
  then
     v4=0
     echo $v4 > $conf/Lists/value4.txt
  else
     v4=1
     echo $v4 > $conf/Lists/value4.txt
fi
# write value for stor5
if cmp -s $list5 $s5
  then
     v5=0
     echo $v5 > $conf/Lists/value5.txt
  else
     v5=1
     echo $v5 > $conf/Lists/value5.txt
fi
# write value for stor6
if cmp -s $list6 $s6
  then
     v6=0
     echo $v6 > $conf/Lists/value6.txt
  else
     v6=1
     echo $v6 > $conf/Lists/value6.txt
fi
# Считываются полученные значения value.txt
# Каждое из значений записывается в переменную h
h1=`cat $conf/Lists/value1.txt`
h2=`cat $conf/Lists/value2.txt`
h3=`cat $conf/Lists/value3.txt`
h4=`cat $conf/Lists/value4.txt`
h5=`cat $conf/Lists/value5.txt`
h6=`cat $conf/Lists/value6.txt`
# Вычисляется сумма переменных h
# Полученная сумма сравнивается со значением 0.
# Если результат сравнения "не равно 0", то это означает, что содержание
# хоть одной из синхронизируемых папок было изменено, поэтому
# необходимо запустить синхронизацию.
# Если результат сравнения "равно 0", то это означает, что с момента предыдущей
# синхронизации содержание папок не изменилось и необходимость в
# осуществлении их синхронизации с облаком отсутствует. 
res1=$(( $h1 + $h2 + $h3 + $h4 + $h5 + $h6 ))
res0=0
if [ $res1 -eq $res0 ]; 
  then
     # в файл протокола вносится запись, что необходимости что-то делать не имеется.
     time=`date '+%H.%M.%S'`
     echo "$time nothing to do" >> $log
     echo "  " >> $log
  else
     # при необходимости синхронизации запускается клиент MEGA
     # запуск клиента MEGA осуществляется с параметром 
     # export DISPLAY=:0, так как клиент является графическим приложением
     export DISPLAY=:0 && $conf/account.sh
fi
# Содержание файлов s.txt перезаписывается содержанием файлов list.txt
cp $list1 $s1
cp $list2 $s2
cp $list3 $s3
cp $list4 $s4
cp $list5 $s5
cp $list6 $s6
time=`date '+%H.%M.%S'`
echo "$time lists replaced" >> $log
echo "  " >> $log
exit

Листинг сценария account.sh

#!/bin/sh
# Указывается расположение данных учётной записи MEGA
conf=/home/minter/configs/mega/data2
# Указывается расположение файла протокола задания
day=`date '+%d'`
log=/home/minter/Reports/mega/$day.data2.txt
# Так как в моём случае аккаунтов MEGA несколько, то 
# данные для предыдущие данные клиента MEGA удаляются
# и записываются данные нужной учётной записи MEGA.
rm -R "/home/minter/.local/share/data/Mega Limited/MEGAsync"
cp -R $conf/MEGAsync "/home/minter/.local/share/data/Mega Limited/MEGAsync" 
time=`date '+%H.%M.%S'`
echo "$time account data copied" >> $log
fi
sleep 5
# Запуск клиента MEGA. Запуск сопровождается отображением
# уведомления в верхней части экрана.
# В некоторых ubuntu-подобных дистрибутивах компонент notify-send
# может отсутствовать и его необходимо установить. 
# sudo apt install -y libnotify-bin
# Дополнительный материал по оформлению всплывающих сообщений.
notify-send --icon=/home/minter/.local/share/icons/gnome/48x48/emblems/emblem-sync-megasync.png "MEGA starting"
time=`date '+%H.%M.%S'`
echo "$time mega started" >> $log
# Значок & после команды запуска клиента указывает на
# переход к следующей команде. Если он будет отсутствовать,
# то следующая команда не будет выполнена до тех пор, пока
# будет активна команда megasync.
megasync &
# sleep 600 означает "спать 10 минут". Планируется, что 10 минут
# достаточно для выполнения синхронизации. 
sleep 600
# Команда завершения работы клиента MEGA без участия пользователя.
client="$(pidof megasync)"
kill -15 ${client}
time=`date '+%H.%M.%S'`
echo "$time mega stoped" >> $log
sleep 5
# После завершения работы клиента данные, относящиеся к процессу
# синхронизации с облаком MEGA записываются в папку с настройками
# учётной записи. Предыдущие данные удаляются, а данные
# выполненного сеанса синхронизации записываются на их место.
rm -R $conf/MEGAsync
cp -R "/home/minter/.local/share/data/Mega Limited/MEGAsync" $conf/MEGAsync
notify-send --icon=/home/minter/.local/share/icons/gnome/48x48/emblems/emblem-sync-megasync-blue.png "MEGA backuped"
time=`date '+%H.%M.%S'`
echo "$time account data copied to backup" >> $log
exit

Если имеется только 1 учётная запись MEGA, то содержание файла account.sh можно упростить до следующего:

#!/bin/sh
day=`date '+%d'`
log=/home/minter/Reports/mega/$day.data2.txt
notify-send --icon=/home/minter/.local/share/icons/gnome/48x48/emblems/emblem-sync-megasync.png "MEGA starting"
time=`date '+%H.%M.%S'`
echo "$time mega started" >> $log
megasync &
sleep 600
client="$(pidof megasync)"
kill -15 ${client}
time=`date '+%H.%M.%S'`
echo "$time mega stoped" >> $log
exit

Необходимость в наличии папки MEGAsync (см. в начале публикации) будет отсутствовать, так как не имеется необходимости в перезаписи содержания папки 
~/.local/share/data/Mega Limited/MEGAsync

среда, 5 августа 2020 г.

Koofr – облачное хранение и синхронизация данных


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

Штаб-квартира компании расположена в Словении. Почему выбрано название Koofr можно прочитать здесь (на англ. языке).

C 2022 г. при регистрации предлагается 10 Гб дискового пространства.

Как и любой подобный сервис, Koofr на указанный вами адрес e-mail пришлёт запрос на подтверждение создания вашего аккаунта, после чего вы можете зайти в свою учётную запись через браузер, нажав уже не на кнопку GET STARTED, а на кнопку Sign in.



Koofr через веб-браузер

Увы, но русского варианта не существует, поэтому вам придётся либо выучить немного английских слов, либо руководствоваться приведенными ниже сведениями.

На самом деле всё не так уж и сложно. В самой левой части страницы будет вертикальное меню:


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

Shared – предоставленные вам в доступ другие ресурсы Koofr.

Connect –можно присоединить ваши аккаунты:


Но содержание этих ваших облачных ресурсов будет отображаться только в браузере, синхронизировать их с папками вашего компьютера через десктопное приложение Koofr вы не сможете.

Deleted files – отображаются ваши удалённые через браузер или клиент (десктопное приложение) файлы и папки, то есть Корзина. Восстановление удалённого содержимого возможно в течение 15 суток с момента удаления.

Recent –недавние файлы или папки.

Верхнее горизонтальное меню:


Практический интерес представляется кнопка Add, то есть "Добавить":


По моему мнению, в 99 % случев вами будут использованы:

Upload file – загрузить файл

Upload folder – загрузить папку

Create folder – создать папку

В центральной части окна отображается содержание облака Koofr.

Как говорилось выше, по умолчанию здесь ничего не будет. Показанные ниже папки это:

My desktop sync – синхронизируемая с компьютером папка через клиент.

sa – созданная папка (Create folder), предоставленная в доступ.

При выделении галочкой слева от папки (папок) или файла (файлов) появляется дополнительное горизонтальное меню:


Copy – копировать выделенное в другое место облака Koofr.

Move – перенести выделенное в другое место облака Koofr.

Download – скачать выделенное на компьютер.

Delete – удалить выделенное.

Cancel – отменить выделение.

Наконец, при клике по самому правому значку верхнего горизонтального меню появится вертикальное меню, в котором указаны различные сведения о вашем облаке. Если так можно выразиться, то наиболее ценными будут сведения о вашей учётной записи (зелёный значок – аватар уже установлен), информация о расходовании вашего облака (зелёный значок Koofr) и приглашение другим пользователям присоединиться к Koofr (Invite friends). Всё на английском языке, но интуитивно будет понятно.


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






Koofr через клиент (десктопное приложение)

Клиент можно сказать по этой ссылке. Скачайте клиент для вашей операционной системы. Для Linux клиент распространяется в виде архива tar.gz (пример ниже)



В составе архива имеется папка koofr, а установочный файл в ней называется installer.sh (проверьте, чтобы он был исполняемым).



Для установки запустите файл installer.sh через терминал. В процессе установки будет задан вопрос о расположении установочных файлов клиента koofr, которые по умолчанию предлагается поместить в папку .koofr-dist, например,

minter@H-4:~$ /home/minter/Dropbox/Linux/koofr/installer.sh
Program will be installed to /home/minter/.koofr-dist/.
Do you want to change destination? [y]es or [n]o

Можно ответить утвердительно, нажав на клавишу y. После установки клиента кнопка для его запуска будет доступна в разделе "Интернет" главного меню.


Настройка клиента на первый взгляд может показать несколько запутанной. При вызове клиента должно открыться окно приложения. Если оно не открылось, то щёлкните по значку koofr на панели правой кнопкой мыши и вызовите пункт "Open application"


Чтобы при запуске клиента каждый раз не открывалось окно приложения перейдите в Settings и установите галочку в поле как показано на рисунках ниже:



По умолчанию папка вашего компьютера Koofr синхронизируется с папкой облака My desktop sync. Синхронизации всех остальных папок нужно настраивать дополнительно. Для этого нажмите на Syncs.


Здесь будут указаны все синхронизации вашего клиента. Нажмите на кнопку CREATE NEW. В появившемся окне укажите папку на вашем компьютере. её расположение на диске может быть любым.


Выделите курсором желаемую папку. Вам может показаться, что выделение не зафиксировалось, но на самом деле это не так. Нажмите книзу кнопку Next.


Появится окно выбора сопоставления папки облака выбранной ранее папки компьютера. Сопоставлена м.б. как папка вашего облака Koofr, так и переданная вам в доступ папка другого пользователя Koofr (для этого раскройте их список, нажав на Shared):



Нажмите внизу на кнопку Finish.

Если необходимо настроить синхронизацию на новую папку облака, то создавать её через браузер не обязательно, можно и через клиент. Станьте курсором на зелёный значок Koofr и справа появится Create new folder. Нажмите на эту ссылку, укажите имя новой папки и нажмите Create.


Сопоставленные папки (для синхронизации) можно менять. Для изменения выделите секцию соответствующего сопоставления. В появившемся окне нажмите Remove для удаления синхронизации или значок справа вверху для изменения.



Предоставление папки в доступ другому пользователю

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

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


Из выпадающего меню выберите Add people


и в появившемся окне укажите e-mail другого пользователя Koofr


Как только вы напечатали адрес e-mail щелкните курсором по адресу, чтобы его зафиксировать, иначе строка так и останется незаполненной. После этого нажмите кнопку Add. Адрес появится в списке ниже. Если пользователь установил в своём профиле аватар, то он будет отображён.

Для прекращения доступа пользователя к своей папке нажмите значок "минус" в соответствующей строке.

Пользователь на свой адрес e-mail получит сообщение, например:



Данное сообщение является исключительно информационным. Каких-то дополнительных действий, как в случае Dropbox, MEGA или Yandex.Disk от него не требуется. зайдя в свой аккаунт в секции Shared он увидит папку, которую ему предоставили в доступ и которую он может синхронизировать в папкой своего компьютера.



Запуск и остановка клиента Koofr

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


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

/home/minter/.koofr-dist//storagegui

Вместо minter будет указана папка вашего профиля.

Обратите внимание, что в команде присутствует двойной слэш. Это не является ни опиской, ни опечаткой. именно такая команда запускает клиент Koofr.

Для остановки клиента кликните по его значку правой кнопкой и вызовите команду Exit.

Если имеется необходимость остановить приложение кнопкой запуска или по расписанию, то можно использовать сценарий на bash:

#!/bin/bash
output="$(pidof storagegui)"
kill -15 ${output}
exit

Если перед командой добавить время задержки, например sleep 600, то его можно записать в автозапускаемые приложения и клиент Koofr выключится через 10 минут после своего автостарта.

Если необходимо запускать клиент по расписанию, то в свой cron внесите запись

export DISPLAY=:0 && путь_к_вашему_скрипту.sh

Ниже приводится пример запуска/остаовки клиента Koofr. Если за время работы в папке общего использования появятся какие-либо файлы (или хотя бы 1 файл), то автоматически откроется файловый менеджер Thunar.

#!/bin/bash
sa=/home/minter/Inbox/sa
/home/minter/.koofr-dist//storagegui &
sleep 360
/home/minter/Dropbox/scripts/stop-koofr.sh
countsa=`find $sa -type f | wc -l`
if [ $count -eq 0 ];
 then
  :
 else
  thunar $sa
fi
exit

Работа клиента сопровождается значками на панели. Значок имеется два состояния: синхронизируется (с кружочком) и синхронизировано (с галочкой).



Дополннение. Иногда при работе клиента индикация его синхронизации может загораться красным значком. Это означает временную ошибку синхронизации. По опыту своего использования такое случалось пару раз на синхронизациях большого числа файлов и папок. Лечение простое – перезапуск клиента. Как правило, штатная работа восстанавливается.

Для удаления клиента Koofr удалите в папке своего профиля установочные файлы и настройки, которым соответствуют скрытые папки (с точкой)


Затем перейдите в ~/.local/share/applications и удалите файл koofr.desktop, который соответствует записи Koofr в секции Интернет главного меню.


В завершение перейдите к настройке автозапускаемых приложений при старте вашей системы и удаите из списка запись Koofr, если такая имеется.


Koofr и webdav

К облаку koofr можно подключиться и по webdav. Для включения этой функции зайдите в секцию Settings клиента и в разделе Network drive нажмите на кнопку Enable. Для выключения этой функции там же нажмите кнопку Disable. Файловый менеджер м.б. подключен к облаку Koofr по webdav. Лично у меня практического применения не нашло, но, может быть, кому-либо это необходимо.




На подключенный koofr по webdav в файловом менеджере можно создать закладку и пользоваться облаком без клиента:




Koofr через rclone

Koofr c rclone работает и очень хорошо. Однако папки из Shared недоступны. Настройка для rclone простая – требуется указать только тип хранилища, пользователя (e-mail) и пароль.

Пример записи в rclone.conf

[k8]
type = koofr
user = renevars@yandex.com
password = YC1D ...RsGNQ


Эмблемы Koofr 

Желающие могут использовать набор дополнительных эмблем Koofr:

Создайте в своём домашнем каталоге необходимые каталоги

mkdir ~/.local/share/icons

mkdir ~/.local/share/icons/gnome

Скопируйте в каталог gnome 2 файла:

/usr/share/icons/gnome/index.theme

/usr/share/icons/gnome/icon-theme.cache

Поместите папки из архива в каталог ~/.local/share/icons/gnome

В терминале выполните команду

gtk-update-icon-cache /home/---/.local/share/icons/gnome/

вместо --- впишите имя своего домашнего каталога.

Вы должны получить сообщение терминала:

Cache file created successfully.

Теперь можно назначать значки из установленного набора Koofr как эмблемы на каталоги в xfce или как значки папок и/или эмблемы к ним в Cinnamon.

вторник, 4 августа 2020 г.

В Linux Mint 20 не запускается XnView


После установки в Linux Mint 20 приложения XnView MP 0.96.4 в виде скачанного deb-файла приложение не запускалось, а при запуске из терминала присутствовали записи

qt5ct: using qt5ct plugin
Segmentation fault (core dumped)

Первоначально имевшая место проблема была решена путём замены устанавливаемого в систему приложения на версию Linux AppImage 64bit

Затем на форуме xnview пользователь ben_sa_2000 написал, что данная проблема обусловена несоответствием библиотеки libfreetype.so из состава xnview такой же системной библиотеке.

Предложенное им решение заключается в удалении libfreetype.so из состава файлов xnview:

sudo rm /opt/XnView/lib/libfreetype.so

После этого действия приложение XnView MP 0.96.4 стало запускаться.