про свой опыт решения некоторых проблем и использования ряда возможностей ОС и приложений
понедельник, 25 декабря 2023 г.
Особенности установки Koodo Reader в Ubuntu и Linux Mint
вторник, 19 декабря 2023 г.
Boinc 7.20.5 в Linux Mint 21 (Ubuntu 22.04)
sudo apt update
пятница, 15 декабря 2023 г.
Исправление в Linux Mint 21 (Ubuntu 22.04) – systemd timesync не понимает серверы NTP от DHCP
К сожалению, лично у меня реальное состояние дел опровергло данное утверждение. Несмотря на то что сервер DHCP выдавал 2 адреса серверов NTP, синхронизация времени велась либо от серверов NTP в настройках файла timesyncd.conf, либо от сервера ntp.ubuntu.com, когда данный файл был приведен в "исходное" состояние, которое он имеет после установки системы:
[Time]
#NTP=
#FallbackNTP=ntp.ubuntu.com
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048
Имеется два варианта "заставить" компьютер синхронизировать своё время от серверов NTP, адреса которых предоставляет сервер DHCP:
1) перевести синхронизацию времени с systemd на ntp (подробности);
2) использовать корректирующий скрипт.
Корректирующий скрипт был найден на этом ресурсе.
Под правами root создаётся файл 10-update-timesyncd
sudo xed /etc/NetworkManager/dispatcher.d/10-update-timesyncd
с содержанием:
#! /usr/bin/bash
[ -n "$CONNECTION_UUID" ] || exit
INTERFACE=$1
ACTION=$2
case $ACTION in
up | dhcp4-change | dhcp6-change)
[ -n "$DHCP4_NTP_SERVERS" ] || exit
mkdir -p /etc/systemd/timesyncd.conf.d/
cat<<EOF > /etc/systemd/timesyncd.conf.d/$CONNECTION_UUID.conf
[Time]
NTP=$DHCP4_NTP_SERVERS
RootDistanceMaxSec=15
EOF
systemctl restart systemd-timesyncd
;;
down)
rm -f /etc/systemd/timesyncd.conf.d/$CONNECTION_UUID.conf
systemctl restart systemd-timesyncd
;;
esac
и установленным правом на выполнение (как программы).
После создания указанного файла в целях чистоты эксперимента перезагрузите систему.
При проведении проверки мой DHCP сервер (в локальной сети) предоставлял серверы NTP 194.158.196.171 и 194.158.196.172 При запросе состояния синхронизации времени timedatectl timesync-status был получен ответ:
понедельник, 11 декабря 2023 г.
Клиент Filezilla – выключить отображение скрытых файлов и папок
Чтобы убрать отображение скрытых файлов и папок вызовите в верхнем меню "Вид – Фильтры построения списка каталогов" и установите галочку в полях "Configuration files. В результате испытаете "чувство глубокого удовлетворения" 😁
пятница, 8 декабря 2023 г.
Кнопка запуска пакетной передачи папок и файлов через rclone
Ожидаемый результат: все что расположено в специальной папке будет передано в выбранное облако, а исходные данные в папке передачи будут удалены.
Необходимые условия:
1) папка, откуда будут передаваться данные;
2) установленное и соответствующим образом настроенное ПО rclone;
3) сценарий для указания адреса передачи в синтаксисе rclone (скрипт bash);
4) сценарий запуска передачи (скрипт bash);
5) собственно сама кнопка запуска.
Сценарий для указания адреса передачи в синтаксисе rclone
#!/bin/bash
out=/tmp/to.txt # файл, в который будет записан адрес передачи
zenity --width=200 --title "Cloud" --text="Адрес в формате rclone:" --entry > $out
exit
Сценарий запуска передачи (пример)
#!/bin/bash
/home/minter/Tools/scripts/modules/what-cloud.sh
rclone move --delete-empty-src-dirs --progress /home/minter/Документы/Send $(cat /tmp/to.txt)
exit
$(cat /tmp/to.txt) подставляет в строку команды считанное из файла /tmp/to.txt значение адреса передачи.
Строка move --delete-empty-src-dirs --progress указывает rclone, что должно быть осуществлено перемещение данных в облако (со всей иерархией папок), а оставшиеся после перемещения данных пустые папки должны быть удалены. При этом передача будет сопровождаться отображением хода процесса, например:
Кнопка запуска приложения
На рабочем столе создаётся значок запуска (xfce), либо кнопка запуска (Cinnamon), в которой указывается вызов сценария запуска (передачи), в параметрах которой указано выполнение в терминале. Созданный значок запуска (кнопку запуска) переместите в свою папку ~/.local/share/applications Значок/кнопка запуска представляет из себя исполняемый файл .desktop, который можно редактировать в текстовом редакторе. Пример:
[Desktop Entry]
Version=1.0
Type=Application
Name=Upload
Comment=
Exec=/home/minter/Tools/scripts/modules/upload.sh
Icon=mintupload
Path=
Terminal=true
StartupNotify=false
По умолчанию, значок/кнопка запуска будет отображаться в категории "Прочее" (xfce) или "Прочие" (Cinnamon). Для указания другой категории добавьте в файл строку Categories= , в которой после знака равенства укажите необходимые значения. Например, для "Разработка" (xfce) или "Программирование" (Cinnamon) это будет иметь вид Categories=GTK;Development; , а для категории "Интернет" – Categories=Network;
Если надо, чтобы кнопка отображалась по-русски, то добавьте строку Name[ru]= и после знака равенства напишите русский текст, например, Передача файлов (без кавычек).
После успешного завершения процесса передачи окно терминала будет закрыто автоматически.
четверг, 7 декабря 2023 г.
Запуск Boinc в Wine
Необходимость Boinc обусловлена невозможностью отключить автопарковку головок в "злочастном" винчестере Toshiba MQ01ABD050 (AX002K), к которому отсутствует необходимая утилита от производителя для выключения автопарковки в прошивке контроллера этого жёсткого диска. Если не добиваться выключения парковки, то значение параметра 193 SMART будет расти настолько быстрыми темпами, что за год-два интенсивной работы на компьютере может достигнуть значений в 300 тысяч, что уже может являться пределом жизненной стойкости механизма позиционирования головок диска.
Было принято решение попробовать запускать ПО Boinc через Wine.
1. Устанавливается WineHQ по инструкции с сайта.
2. Скачивается и устанавливается ПО Boinc для Windows с сайта проекта Boinc.
В секции Windows 64 bit имеется 2 варианта нужного ПО: Вownload BOINC + VirtualBox и просто Вownload BOINC (файл exe). Было выбрано второе, так как интересующий проект Boinc для своей работы не предъявляет требований к наличию ПО виртуальной среды. При запуске установки через Wine система установит нужный для работы ПО Boinc в Wine отсутствующий компонент Mono.
Запуск производится через главное меню, секция Wine – BOINC Manager.
3. Далее необходимо включить BOINC в автозагрузку Linux. Это обусловлено тем, что процесс вычислений в Liknux при работе в Wine не начинается. Запуск работы производится именно через BOINC Manager, подтверждением чему служит то, что процесс boinc.exe запускается следующим образом:
C:\Program Files\BOINC\boinc.exe --redirectio --launched_by_manager
Файл .desktop, при вызове которого будет запущен BOINC Manager расположен не в корне папки пользователя ~/.local/share/applications, а вложен в дочерние папки:
Для автозапуска BOINC Manager при старте системы указанный на рисунке файл .desktop необходимо скопировать в папку пользователя ~/.config/autostart
Только тогда запись BOINC Manager появится в списке загружаемого ПО при старте системы. Если использовать графическое окружение Cinnamon, то при этом можно установить и желаемую задержку автостарта (до 99 секунд), например:
После старта BOINC Manager (в Wine) можно нажать на крестик закрытия окна, после чего ПО будет работать в фоновом режиме с отображением значка на панели (на рисунке крайний слева):
Проект BOINC воспринимает такую реализацию как компьютер с Microsoft Windows. Отображаемая версия Windows берётся из настройки Wine (winecfg): Приложения – Версия Windows.
Решение, конечно, "так себе", но времени разбираться с причинами невозможности работы штатного ПО Boinc времени не было. На многих сайтах говорится о том, что версия 7.18, которая используется в Ubuntu 22.04 (Linux Mint 21) является "сырой" или частично работоспособной. Установка предыдущей версии 7.16 в системе может оказаться невозможной, а версия 7.20 может появиться в официальных источниках приложений, а может и не появиться вплоть до следующего релиза ОС. Так что пока вот так. Может кому и пригодится.
По большому счёту пора бы и заменить этот упоминаемый в самом начале винчестер на что-либо другое, но покупка SSD аналогичной ёмкости в ближайшее время не планируется. Системный блок представляет из себя мини-бокс в безвентиляторном исполнении, АКБ отсутствует. Так что он больше относится к стационарному системному блоку, несмотря на ноутбучные комплектующие.
📗 Примечание. Как вариант, можно попробовать Boinc 7.20.5 из неофициального PPA.
понедельник, 27 ноября 2023 г.
Перекодировать flac в mp3
суббота, 25 ноября 2023 г.
Запросы пользователю на монтирование дисков в папки его профиля
Про автоматическое монтирование дисков при старте системы имеется достаточное количество материалов. Но в большинстве случаев такие решения сводятся к внесению изменений в файл /etc/fstab. У меня же возникла необходимость выдачи запроса на монтирование дисков. При положительном ответе "да" диски будут смонтированы, при отрицательном "нет" монтирование производится не будет.
Обусловлено личными потребностями, так как упоминаемые диски могут быть временно изъяты из компьютера и при обычном автомонтировании через /etc/fstab система будет на некоторое время сильно задумываться, пока не сообразит, что упоминаемых дисков не имеется и загрузка может быть продолжена.
Для удобства целесообразно создать стартовый сценарий, например, start.sh, который будет автоматически выполняться при каждом входе пользователя в систему. То есть, создать файл и установить его в автозагрузку. В Linux xfce это настраивается в Система/Сеансы и запуск, а в Cinnamon – Параметры/Автозагрузка.
#!/bin/bash
...
...
exit
Создаются 2 файла sh, которые собственно и командуют монтирование дисков. При этом каждый диск у меня идетифицируется не как /dev/sd... , а по своему uuid. Связано с тем, что при обратной установке шлейфы могут быть воткнуты не туда где были раньше, то есть порядок определения дисков по /dev/sd... может быть перепутан. А так как мои диски монтируются в папки AG-2 и AN-2 моего домашнего каталога, то не хочется быть удивлённым тому, что содержание данных папок потом будет не таким, как было раньше. uuid дисков определяется через команду
sudo blkid
Для 1-го диска файл mount-g2.sh
#!/bin/bash
mount --uuid="c57e4566-84ed-4d54-8cd4-1e0eaeac5b4e" /home/minter/AG-2 &
exit
Для второго диска файл mount-n2.sh
#!/bin/bash
mount --uuid="b72b0384-9782-4eaf-9606-ca48469ef6da" /home/minter/AN-2 &
exit
Поскольку монтирование осуществляется через sudo, то имеет смысл внести в файл /etc/sudoers записи, в соответствии с которыми пароль для sudo запрашиваться не будет.
sudo xed /etc/sudoers и внести строки (пример):
minter ALL=NOPASSWD: /home/minter/Tools/scripts/modules/mount-g2.sh
minter ALL=NOPASSWD: /home/minter/Tools/scripts/modules/mount-n2.sh
minter – это мой логин в системе.
Создаются 2 файла запросов на монтирование каждого из дисков. Пример приводится для 1-го диска (для второго будет аналогично):
#!/bin/bash
log=/home/minter/Документы/Reports/$(date '+%d').txt
zenity --width=150 --height=50 --question --timeout=10 --title="Запрос" --text="\nМонтировать G-2? \n$task" \
--ok-label="Нет" \
--cancel-label="Да"
answer=$?
if [ "$answer" -eq 0 ]; then
:
echo "$(date '+%H.%M.%S') – G-2 not mounted" >> $log
echo "0" >> /tmp/mount1.txt
elif [ "$answer" -eq 1 ]; then
sudo /home/minter/Tools/scripts/modules/mount-g2.sh
echo "$(date '+%H.%M.%S') – G-2 mounted" >> $log
echo "1" >> /tmp/mount1.txt
elif [ "$answer" -eq 5 ]; then
sudo /home/minter/Tools/scripts/modules/mount-g2.sh
echo "$(date '+%H.%M.%S') – G-2 mounted" >> $log
echo "1" >> /tmp/mount1.txt
fi
exit 0
Если не нужно вести протокола и записывать результат "смонтировано" или "не смонтировано" в файлы /tmp/mount...txt, то строку log= и начинаются с echo строки можно удалить. Мне они нужны для протоколирования отработки стартового сценария в целом, а также процедур по автоматической очистке Корзин на монтируемых дисках с удалением из них всех объектов (папки и файлы) старше 3 суток.
При появлении окна запроса система ожидает решения пользователя 10 секунд. Если за это время ничего не было выбрано, то система будет считать, что пользователь выбрал "Да", то есть монтировать и, соответственно перейдёт к команде монтирования диска, то есть
sudo /home/minter/Tools/scripts/modules/mount-g2.sh
Если выбрано "Нет", то монтирование диска не производится.
В start.sh вносятся команды с запросами монтирования с интервалом между ними 5 секунд и 5-секундным интервалом после запроса на монтирование 2-го диска. Интервал в 5 секунд необходим для того, чтобы окно запроса на монтирование 2-го диска не перекрывало окно запроса на монтирование 1-го диска. Вспомним, что система ожидает решения пользователя 10 секунд.
sleep 5
$do/modules/querry-mount-g2.sh
sleep 5
$do/modules/querry-mount-n2.sh
sleep 5
И, собственно, результат:
четверг, 23 ноября 2023 г.
Создание в меню кнопки запуска для приложения Cozy Drive
Что такое облако Cozy на русском можно прочитать здесь.
Откройте текстовый редактор и впишите в него следующее (пример):
[Desktop Entry]
Name=Cozy Drive
Comment=Cozy Drive cloud client
Exec=/home/minter/Tools/Cozy-Drive-3.39.0-x86_64.AppImage
Terminal=false
Type=Application
Icon=emblem-cozy-drive-1
Categories=Network;
В строке Exec= указывается полный путь файла AppImage.
В строке Icon= указывается имя значка для приложения.
Сохраните этот файл с расширением .desktop
Переместите его в папку вашего профиля ~/.local/share/applications
В свойствах файла установите права на исполнение как программы. Для xfce можно дополнительно указать, что данный файл является доверенным.
Как это выглядит у меня в папке ~/.local/share/applications~/.local/share/application и в меню:
Набор из трёх эмблем для папок (размеры 16, 22, 24, 32, 48) можно взять здесь.
Создайте две папки в своём профиле:
mkdir /home/ваш_профиль/.local/share/icons
mkdir /home/ваш_профиль/.local/share/icons/gnome
Поместите содержимое скачанного архива в папку /home/ваш_профиль/.local/share/icons/gnome
Скопируйте в папку gnome своего профиля 2 нужных файла:
cp /usr/share/icons/gnome/icon-theme.cache /home/ваш_профиль/.local/share/icons/gnome
cp /usr/share/icons/gnome/index.theme /home/ваш_профиль/.local/share/icons/gnome
Выполните в терминале обновление кэша значков для своего профиля:
gtk-update-icon-cache /home/ваш_профиль/.local/share/icons/gnome/
воскресенье, 1 октября 2023 г.
Исключение из синхронизации Syncthing файлов в папке. Файл stignore
Чтобы избежать такой ситуации в Windows создайте в синхронизируемой через Syncthing папке специального файла игнорирования .stignore (начинается с точки и расширения не имеет) и впишите в него нужные файлы. Сохраните и закройте текстовый редактор. В свойствах файлы укажите, что он скрытый. Пример ниже:
В данной заметке изложен только частный случай использования возможностей синтакисиса файла .stignore Перейдите в раздел документации (нижняя часть страницы панели управления Syncthing) и прочитайте документацию по файлу .stignore от разработчиков Syncthing.
среда, 2 августа 2023 г.
Командой "Снимок экрана" в Cinnamon делать снимок выбранной области экрана по умолчанию
import subprocess
subprocess.Popen(["/usr/bin/xfce4-screenshooter"])
К своему сожалению, при использовании Cinnamon при вызове аналогичной команды "Снимок экрана" (gnome-screenshoter) выбор по последнему действию не сохранялся, снова предлагая сделать выбор "что фотографировать".
При обращении к справке (gnome-screenshoter --help) было обнаружено, что сразу делать снимок выделенной части экрана необходимо командой gnome-screenshoter -a
Если такую команду указать в программе autokey
import subprocess
subprocess.Popen(["/usr/bin/gnome-screenshoter -a"])
то она не будет распознана и вам будет отображена ошибка выполнения. Для назначения команды снимка части экрана в этом случае необходимо вызвать скрипт, например (свой пример):
subprocess.Popen(["/home/minter/Tools/scripts/modules/screenshot.sh"])
Листинг скрипта screenshot.sh простой:
#!/bin/bash
gnome-screenshot -a
exit
Для добавления команды gnome-screenshoter -a в главное меню (секция "Стандартные") откройте каталог /usr/share/applications с правами root, например,
sudo nemo /usr/share/applications
Найдите файл кнопки запуска "Снимок экрана" и и откройте его в текстовом редакторе:
Сохраните его "как" (с другим именем), например Screenshot-part.desktop
Измените содержание нового файла на примерно такое:
[Desktop Entry]
Name=Screenshot part screen
Comment=Save images of your individual windows
# Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
Keywords=snapshot;capture;print;screenshot;
Exec=gnome-screenshot -a
Terminal=false
Type=Application
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
Icon=org.gnome.Screenshot
StartupNotify=true
Categories=GTK;GNOME;Utility;X-GNOME-Utilities;
NotShowIn=KDE;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gnome-utils
X-GNOME-Bugzilla-Component=screenshot
Actions=screen-shot;window-shot;
DBusActivatable=true
Сохраните изменения и закройте текстовый редактор. Найдите свой созданный файл по имени Screenshot part screen и в его свойствах (Права) отметьте "Разрешить исполнять как программу".
Пример того, что должно получиться:
Теперь такое наименование дополнительной кнопки запуска будет отображаться в меню Cinnamon. Чтобы созданную новую кнопку запуска "русифицировать" добавьте в конец файла Screenshot-part.desktop строку (пример):
Name[ru]=Снимок части экрана
В результате новая кнопка запуска будет отображаться по-русски:
После этого в меню Cinnamon (Стандартные) будет иметься 2 кнопки запуска c одним и тем же значком фотоаппарата: "Снимок части экрана" (созданная вами) и "Снимок экрана" (по умолчанию).
#!/bin/bash
xfce4-screenshooter -r
exit
воскресенье, 30 июля 2023 г.
Найти в папке все файлы sh и сделать их исполняемыми
После передачи папки с вложенными папками и файлами на другой компьютер была обнаружена неприятная ситуация: у всех переданных файлов "слетело" разрешение исполнять файл как программу, то есть все файлы стали неисполняемыми. А так как всего в папке насчитывалось 228 файлов, то перспектива вручную делать каждый файл исполняемым навевала тоску. 😞
Проблема была решена выполнением команды, которая ищет по указанному пути все файлы sh и делает их исполняемыми:
find /home/minter/Tools/scripts -name "*.sh" -exec chmod u+x {} \;
Вместо /home/minter/Tools/scripts укажите нужный вам путь к папке с файлами sh.
вторник, 25 июля 2023 г.
Посчитать число файлов fb2 в выбранной папке (действие в Nemo)
По аналогии с подсчётом числа файлов fb2 в выбранной папке через правое контекстное меню в xfce аналогичное действие в Nemo выполняется следующим образом.
Выполните в терминале команду nemo ~/.local/share/nemo/actions У вас откроется нужная папка, в которой создайте файл с расширением .nemo_action
В описываемом примере рассматривается файл count_fb2_files.nemo_action Его содержание:
[Nemo Action]
Active=true
Name=Подсчет fb2
Comment=Сколько всего файлов fb2 в папке
Exec=sh -c 'find %F -name "*.fb2" | wc -l | cat - /dev/tty'
Icon-Name=emblem-hexagon-green
Selection=s
Extensions=dir;
Quote=double
Terminal=true
В строке Icon-Name= указано имя значка, под которым будет отображаться команда в правом контекстном меню (ПКМ).
В свойствах файла (Права) отметьте, что его разрешено выполнять как программу.
Для подсчёта числа любых файлов в выбранной папке строку Exec= укажите в виде:
Exec=sh -c 'find %F -type f | wc -l | cat - /dev/tty'
Количество файлов в выбранной папке будет отображено в окне терминала.
четверг, 20 июля 2023 г.
Кнопка запуска (лаунчер) для запланированного выключения Linux Mint
shutdown часов:минут для выключения в определённое время, например, 22:59 – shutdown 22:59;
shutdown +40 для выключения через 40 минут.
✅ Примечание. Обычно приводится команда shutdown -h часов:минут, но, как показала практика, достаточно команды shutdown часов:минут.
Для своих нужд (в угоду собственной ленивости 😄) было принято решение создать в меню кнопку запуска (лаунчер), которая, в зависимости от потребности, позволила бы вводить различные значения времени выключения и передавать их команде shudown.
Сначала создаётся скрипт (сценарий), который будет вызывать кнопка запуска, а затем создаётся сама кнопка запуска.
1. Скрипт (сценарий) представляет из себя файл текста (с расширением sh или без него), в свойствах которого (Права) указано, что его разрешено выполнять как программу.
#!/bin/bash
zenity --width=220 --title "Когда выключить" --text="Ввод в формате, например,\n в часов:минут – 23:59 или\n через 15 минут – +15\nНичего не вводить или\nОтменить – через 1 минуту\n" --entry > /tmp/down.txt
shutdown $(cat /tmp/down.txt) &
exit
Выполняется запрос ввода времени когда или через сколько необходимо выключить компьютер. Введённое значение записывается во временный файл, например, /tmp/down.txt :
zenity --width=220 --title "Когда выключить" --text="Ввод в формате, например,\n в часов:минут – 23:59 или\n через 15 минут – +15\nНичего не вводить или\nОтменить – через 1 минуту\n" --entry > /tmp/down.txt
Значение --width=220 указывает на ширину окна формы запроса. Изменяя значение после знака = можно отрегулировать желаемую ширину окна формы запроса.
Символы \n указывают переходы на следующую строку.
shutdown $(cat /tmp/down.txt) & соответствует выполнению команды shutdown и значения, которое считывается из сохранённого файла /tmp/down.txt, после чего выполнение самого скрипта (сценария) завершается. Символ & означает переход к выполнению следующей команды, не дожидаясь завершения выполнения предыдущей.
Как это выглядит:
Если поясняющего текста формы отображать не требуется, то листинг формы запроса будет иметь вид:
zenity --width=220 --title "Когда выключить" --entry > /tmp/down.txt
2. Кнопка запуска (лаунчер) создаётся на рабочем столе через правое контекстное меню мыши. Примеры для Cinnamon и xfce смотрите по ссылкам: Cinnamon, xfce. Указывать выполнение команды в терминале не требуется.
При создании кнопки запуска она по умолчанию создаётся на рабочем столе и в меню в категории "Разное". После создания кнопки запуска её с рабочего стола можно удалить (для поддержания его в чистоте 😀).
Если в категории "Разное" у вас имеется слишком много созданных кнопок запуска, то кнопку запуска запланированного выключения можно поместить в категорию "Программирование". Для этого откройте в менеджере файлов папку (каталог) своей домашней папки ~/.local/share/applications , найдите в ней свой созданный файл .desktop (в Cinnamon расширение .desktop отображаться не будет, будут отображены только названия файлов) и откройте его в текстовом редакторе. В конец файла добавьте строку
Categories=GTK;Development;
и сохраните его. После этого ваша кнопка будет отображаться в категории "Программирование" (Cinnamon) или "Разработка" (xfce).
Протестируйте работу, указывая различные варианты запланированного времени выключения.
🔔 Будьте внимательны при вызове созданной кнопки запуска. Если вы даже ничего не вводили или нажали кнопку "Отменить", то у вас уже передана команда shutdown. Команда shutdown без аргументов соответствует команде выключения компьютера через 60 секунд.
При необходимости подбора ширины окна формы запроса времени выключения вводите в терминале команду:
zenity --width=220 --title "Когда выключить" --text="Ввод в формате, например,\n в часов:минут – 23:59 или\n через 15 минут – +15\nНичего не вводить или\nОтменить – через 1 минуту\n" --entry > /tmp/down.txt
При этом передачи системе команды shutdown произведено не будет.
суббота, 15 июля 2023 г.
Открыть книгу fb2 в читалке fb2less через правое контекстное меню Nemo
Иногда возникает необходимость быстро просмотреть начало книги. К тому же, неплохо иметь в своём арсенале ещё одну читалку, особенно когда читаешь несколько книг "одновременно" (то есть периодически переключаясь с книги на книгу) в разных читалках (например, fbreader, foliate, coolreader), и "терять" в одной из читалок возможность при запуске определённой читалки ставиться на последнее прочитанное место не хочется.
Консольную читалку, то есть запускаемую в окне терминала можно установить командой sudo apt install fbless
Сразу оговорюсь, что файла настроек и кэша, как описано здесь и здесь, на своей системе Linux Mint 21.2 найдено не было. Тем не менее, читалка была признана рабочей.
Однако использование команды fbless путь_к_книге навевало определённую тоску 😟
В результате было принято решение попробовать открыть файл с помощью fbless через правое контекстное меню файлового менеджера Cinnamon.
Открыть книгу fb2
В папке ~/.local/share/nemo/actions (~ означает папки своего профиля) создайте файл fbless.nemo_action и в его свойствах (секция "Права") установите галочку в поле "Выполнение" – Разрешить исполнять как программу. Содержание файла:
[Nemo Action]
Active=true
Name=fbless
Comment=Открыть файл в fbless
Exec=sh -c 'fbless %F; exec bash'
Icon-Name=FBReader
Selection=s
Extensions=fb2;
Mimetypes=text/plain;
Quote=double
Terminal=true
Icon-Name=FBReader соответствует значку раскрытой книги голубого цвета.
Теперь при выделении книги fb2 и вызове правого контекстного меню мыши можно вызвать пункт fbless (его название указывается в строке Name=, поэтому можно указать своё), после чего выбранная книга будет открыта в терминальной читалке fbless.
Вторым вариантом команды в строке Exec может являться просто fbless %F
Открыть книгу fb2 и перейти на место чтения в %, которое вы запомнили с прошлого сеанса чтения
По аналогии с предыдущим пунктом в папке ~/.local/share/nemo/actions (~ означает папки своего профиля) создайте файл fbless-proc.nemo_action и в его свойствах (секция "Права") установите галочку в поле "Выполнение" – Разрешить исполнять как программу. Содержание файла:
[Nemo Action]
Active=true
Name=fbless proc
Comment=Открыть файл в fbless в месте %
Exec=sh -c 'fbless %F -g $(/home/minter/Tools/scripts/modules/fbless-proc.sh && cat /tmp/proc.txt); exec bash'
Icon-Name=fbreader
Selection=s
Extensions=fb2;
Mimetypes=text/plain;
Quote=double
Terminal=true
Icon-Name=fbreader соответствует значку раскрытой книги фиолетового цвета.
#!/bin/bash
zenity --width=180 --height=50 --question --text="Перейти на место,\nобозначенное % ?$task" --timeout 5
answer=$?
if [ "$answer" -eq 0 ]; then
zenity --width=100 --title "Ввод цифры" --entry > /tmp/proc.txt
elif [ "$answer" -eq 1 ]; then
echo '0' > /tmp/proc.txt
elif [ "$answer" -eq 5 ]; then
echo '0' > /tmp/proc.txt
fi
exit
Вводимое в строку запроса значение % записывается в файл /tmp/proc.txt, откуда он потом считывается при выполнении команды правого контекстного меню Nemo. Если в течение 5 секунд не было введено никакой цифры, то в файл автоматически записывается значение 0, соответствующее самому началу книги.
Короткий ролик, демонстрирующий выполнение описанных настроек смотрите здесь.
📌 Примечание. Значение 13% вместо введённых 14% обусловлено небольшим расхождением в несколько строк текста книги. В то же время программа "не понимает" дробных значений, например, 18,6 , поэтому в место, например, 35% может укладываться несколько десятков строк текста.
Похожее решение для Thunar здесь.
понедельник, 10 июля 2023 г.
Удаление лишних шрифтов в Linux Mint 21
1. Вызвать "Настройки ‒ Языки ‒ Установка и удаление языков". Отобразится список, в котором выделять по одному языку и нажимать кнопку "Удалить".
У себя оставляю только 2 языка: английский (США) и русский. Если отображается "Отсутствуют некоторые языковые пакеты", то выделить язык и в нижней части окна нажать на кнопку "Установить языковые пакеты". После выполнения необходимых операций в строке присутствующих языков должна быть надпись "Полностью установлено".
2. После удаления языков шрифты удалённых языковых пакетов всё равно ещё присутствуют. В этом можно убедиться, вызвав менеджер пакетов Synaptic и введя в поле запрос fonts:
Удалим эти шрифты. Чтобы не выделять вручную "ненужные" шрифты (которых много и среди которых можно запутаться) имеет смысл удалить их пакетным заданием ‒ командой терминала в 1 строку:
sudo apt purge -y fonts-beng* fonts-deva* fonts-gargi fonts-gubbi fonts-gujr* fonts-guru* fonts-indic fonts-kacst* fonts-kalapi fonts-khmeros-core fonts-knda fonts-lao fonts-lklug-sinhala fonts-lohit* fonts-mlym fonts-nakula fonts-navilu fonts-noto-cjk fonts-orya* fonts-pagul fonts-sahadeva fonts-samyak* fonts-sarai fonts-sil* fonts-smc* fonts-taml fonts-telu* fonts-thai* fonts-tibetan* fonts-tlwg* fonts-yrsa-rasa
Символ * означает, что кроме самого шрифты также будут удалены и сопутствующие ему шрифты, например, telu и teluguvijayam.
Появление предупреждения, например, dpkg: предупреждение: при удалении fonts-lohit-gujr каталог «/usr/share/fonts/truetype/lohit-gujarati» не пуст, поэтому не удалён означает, что в системной папке шрифтов после удаления ненужного шрифты всё ещё остаётся папка с именем удалённого шрифта.
3. Для удаления оставшихся папок удалённых шрифтов удалите эти папки, открыв в менеджере папок под правами суперпользователя /usr/share/fonts/truuetype. Кроме того в папке /usr/share/fonts/opentype удалите папку malayalam.
Чтобы не удалять папки вручную можно выполнить команду в терминале (в одну строку):
sudo rm -r /usr/share/fonts/opentype/malayalam /usr/share/fonts/truetype/abyssinica /usr/share/fonts/truetype/fonts-beng-extra /usr/share/fonts/truetype/fonts-deva-extra /usr/share/fonts/truetype/fonts-gujr-extra /usr/share/fonts/truetype/fonts-guru-extra /usr/share/fonts/truetype/fonts-kalapi /usr/share/fonts/truetype/fonts-orya-extra /usr/share/fonts/truetype/fonts-telu-extra /usr/share/fonts/truetype/fonts-yrsa-rasa /usr/share/fonts/truetype/Gargi /usr/share/fonts/truetype/Gubbi /usr/share/fonts/truetype/kacst /usr/share/fonts/truetype/kacst-one /usr/share/fonts/truetype/lao /usr/share/fonts/truetype/malayalam /usr/share/fonts/truetype/Nakula /usr/share/fonts/truetype/Navilu /usr/share/fonts/truetype/padauk /usr/share/fonts/truetype/pagul /usr/share/fonts/truetype/Sahadeva /usr/share/fonts/truetype/Sarai /usr/share/fonts/truetype/sinhala /usr/share/fonts/truetype/teluguvijayam /usr/share/fonts/truetype/tibetan-machine /usr/share/fonts/truetype/tlwg /usr/share/fonts/truetype/ttf-khmeros-core /usr/share/fonts/truetype/lohit* /usr/share/fonts/truetype/samyak*
В идеале содержание папок /usr/share/fonts/opentype и /usr/share/fonts/truetype должно быть таким:
Если какая-либо папка не была удалена или при выполнении операции удаления папок возникли какие-либо ошибка (неверная команда, объект отсутствует), то лишние папки можно удалить в менеджере файлов вручную под правами суперпользователя.