суббота, 27 мая 2023 г.

Полностью прозрачная панель и полупрозрачное меню Cinnamon

Проблема установки прозрачности панели Cinnamon несколько раз возникла при установке Linux Mint 21 на ряде компьютеров как новой системы. По закону подлости порядок действий каждый раз забывался, а поиск решения на просторах Интернет каждый раз занимал время. Поэтому (больше для себя) было принято решение описать порядок действий, который характеризовался бы повторяемостью. Действия производились в Linux Mint 21.

Вызвать настройку системы и нажать на "Расширения".


Переключиться на вкладку "Загрузки". Transparent panels отобразится в первой позиции. Нажмите на кнопку установки расширения. Установленное расширение отобразится с галочкой слева.



Вернуться на вкладку "Настройка" и в нижней части окна нажать на кнопку плюс (+). Добавленное расширение отобразится с галочкой слева. Нажать на кнопку, указанную дёлтой стрелочкой и значение Type of transparency установить в положение "Fully transparent". 




Результат выполнения отобразится сразу же:





Следует отметить, что при этом меню Cinnamon не будет отображаться с какой-либо прозрачностью и его фон так и останется чёрным (при использовании оформления по умолчанию как в Linux Mint). Для придания главному меню определённой степени прозрачности можно подобрать соответствующую своему вкусу тему, например:








среда, 24 мая 2023 г.

Аналоговые часы на рабочем столе в xfce

По умолчанию в xfce не имеется возможности установить на рабочий стол стрелочные часы. По этому поводу публикации рекомендуют ставить Cairo и уже в нём добавлять часы. Но есть способ добавления часов и без необходимости устанавливать дополнительное программное обеспечение. Способ заключается в добавлении панели и установке на неё часов.

Вызвать правым кликом мыши на панели "Панель" и далее "Параметры панели". Нажать кнопку +. На рабочем столе будет создана новая пустая панель. Перетащите её за край в нужное место рабочего стола.



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




Добавьте на панель элемент "Часы" (Который час?)


Правым кликом мыши на элементе часы выберите "Свойства" и укажите "Аналоговые". Если необходимо, чтобы часы показывали секундную стрелку, то установите галочку в поле "Показывать секунды".





У вас должно получиться что-то похожее на рисунок ниже.



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



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




Если нужно, чтобы часы исчезали при наведении на них курсора мыши или при его прохождении сквозь часы (сквозь панель), то в параметрах панели (Внешний вид) установите непрозрачность 0 при наведении.


Для удаления часов (панели с элементом "Часы") вызовите первым кликом мыши "Панель" ‒ далее "Параметры панели". Увидите, что будет отображен номер панели. Он всегда будет больше 1. Панель с номером 1 ‒ это ваша нижняя панель, созданная при установке системы. Нажмите кнопку "минус" и ваша панель будет удалена. Если не желаете удалять панель, оставив на всякий случай, то можете с панели удалить только элемент "Часы".


 

Аналоговые часы для рабочего стола Cinnamon здесь.

вторник, 23 мая 2023 г.

Замена в Linux Mint xfce Network Manager на systemd-networkd для проводного соединения

Вопрос о замене встал после вычисления времени загрузки ОС (systemd-analyze и systemd-analyze-blame), в результате чего было выяснено, что менеджер сетевых соединений и всё связанное с ним вносит "весомый" вклад в длительность загрузки ОС. Результатом перехода явилось уменьшение времени загрузки моей ОС минимум на 10 секунд.

Обратите внимание, что вы должны обладать необходимым минимумом знаний для понимания смысла осуществляемых вами действий. В описываемом случае компьютер является стационарным узлом и для своей работы в сети использует исключительно проводное соединение, то есть подключение к Wi-Fi не осуществляется и не планируется. Необходимые подключения к сетям VPN осуществляет домашний роутер, ПО которого это обеспечивает. 

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

Порядок перехода по-русски изложен в этой публикации. Здесь же будут указаны только конкретные команды, выполняемые в терминале. 

В первоисточнике указано про файл resolv.conf и создание каталога /etc/systemd/network  Однако у меня в системе и необходимый каталог уже присутствовал (без файлов), и необходимая символическая ссылка resolv.conf

Сразу был создан конфигурационный файл  sudo xed /etc/systemd/network/20-dhcp.network

[Match]
Name=enp2s0

[Network]
DHCP=yes

enp2s0 является именем моего сетевого интерфейса (в данном случае ‒ проводного), информация о котором была получена по результатам выполнения команды ifconfig

Далее были выполнены команды:

sudo systemctl disable NetworkManager

sudo systemctl enable systemd-networkd

sudo systemctl enable systemd-resolved

sudo systemctl start systemd-resolved

sudo systemctl restart systemd-networkd

Можно проверить состояние служб systemd-networkd и ystemd-resolved:

systemctl status systemd-networkd

systemctl status systemd-resolved

или перезагрузить систему и проверить их состояние.

Следующим шагом явилось полное удаление Network Manager и сопутствующих ему компонентов  sudo apt purge -y network-manager*

Чтобы не "нервировал" этот значок на панели 



выполните команду предотвращения автостарта апплета менеджера сетевых соединений:

sudo mv /etc/xdg/autostart/nm-applet.desktop /etc/xdg/autostart/nm-applet.desktop.disabled

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

При вызове редактора меню MenuLibre может отобразиться ошибка:



При нажатии на кнопку "Details" будут показаны сведения об ошибке:


Из пояснения ошибки видно, что имеется файл nm-applet_mate.desktop, который ссылается на уже отсутствующий в системе менеджер сетевых соединений.

Для устранения ошибки выполните команду  

sudo mv /usr/share/applications/nm-applet_mate.desktop /usr/share/applications/nm-applet_mate.desktop.disabled

При следующем запуске редактора меню ошибка исчезнет.

Чтобы "контролировать" имеется ли какое-нибудь соединение сети или нет можно использовать Сетевой монитор или nload.

С большой долей вероятности DHCP назначит компьютеру новый IP адрес. У меня, например, до замены был адрес ... .94, а после замены стал ... .87

суббота, 20 мая 2023 г.

Переключение синхронизации времени в Linux Mint xfce на systemd

При использовании на своих компьютерах Linux с графическими окружениями Cimmanon и xfce замечено, что в них используются разные способы синхронизации времени: через systemd в Cinnamon и через службу ntp в xfce. Поэтому с целью некого подобия стандартизации было принято решение переключить синхронизацию времени в Linux Mint xfce на systemd.

Отсутствие синхронизации времени через systemd в Linux Mint xfce можно проверить через команду  systemctl status systemd-timesyncd.service 

systemd-timesyncd.service
     Loaded: masked (Reason: Unit systemd-timesyncd.service is masked.)
     Active: inactive (dead)

Состояние синхронизации в Linux Mint xfce отображается через  ntpq -p 

Звёздочкой будет показан используемый сервер времени на момент запроса. Подробнее о синхронизации времени в xfce можно прочитать здесь.

Сначала настроим файл конфигурации службы:  sudo xed /etc/systemd/timesyncd.conf

[Time]
NTP=
FallbackNTP=ntp.ubuntu.com
RootDistanceMaxSec=5
PollIntervalMinSec=32
PollIntervalMaxSec=2048

NTP – один или несколько ntp серверов через пробелы;

FallbackNTP – один или несколько резервных ntp серверов;

RootDistanceMaxSec – максимальное время в секундах, за которое пакет от сервера эталонного времени должен доходить до сервера к которому вы подключены;

PollIntervalMinSec и PollIntervalMaxSec – минимальный и максимальный интервалы синхронизаций времени. Вначале используется минимальный интервал, а затем он увеличивается если система видит что локальное время со временем ntp-сервера не расходится. По умолчанию минимальный интервал устанавливается в 32 секунды, а максимальный в 32 минуты 8 секунд (2048 с). Минимальный интервал не может быть менее 16 секунд. Максимальное значение не ограничивается. 

В строке NTP= можно вписать 0.ubuntu.pool.ntp.org 1.ubuntu.pool.ntp.org 2.ubuntu.pool.ntp.org 3.ubuntu.pool.ntp.org, либо 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org, 3.pool.ntp.org, либо сервер(ы) времени, предоставляемые вашим провайдером Интернет, либо указать выбранные вами из личных предпочтений. Можно попробовать автоматический выбор из пула, например, NTP=by.pool.ntp.org  

Server: 194.158.196.172 (by.pool.ntp.org)
Poll interval: 17min 4s (min: 32s; max 34min 8s)
Leap: normal
Version: 4
Stratum: 2
Reference: 596DFB18
Precision: 1us (-23)
Root distance: 64.040ms (max: 5s)
Offset: +145us
Delay: 3.899ms
Jitter: 112us
Packet count: 5
Frequency: -6,452ppm

В строке FallbackNTP можно указать ntp.ubuntu.com либо другой сервер, который вам известен, например, time.google.com. На мой взгляд, предпочтительнее указать time.cloudflare.com, до которого "достучаться" можно минимум в 3 раза быстрее, чем до time.google.com и раз в 10 быстрее, чем до ntp.ubuntu.com (утверждение основано на моих результатах команды ping). Если имеется возможность настройки своего сервера DNS (например, на маршрутизаторе), то можно сделать запись типа CHAME, которая укажет, что узлу ntp.ubuntu.com соответствует узел time.cloudflare.com

Кроме указанных строк может ещё присутствовать строка ConnectionRetrySec= (отсутствует по умолчанию). Она отвечает за интервал между последующими попытками синхронизации с другими серверами времени, если первый сервер в списке не ответил. По умолчанию принимается значение 30 секунд и не может быть менее 1 секунды (подбробности). 

Примечание. Если сервер DHCP выдаёт адреса серверов времени, то поле NTP можно не заполнять, так как эти значения будут иметь наивысший приоритет и использоваться для синхронизации в первую очередь. В случае недоступности таких серверов будет выполняться синхронизация с серверами, указанными в поле NTP, а если недоступны и они, тогда синхронизация времени будет произведена в сервером, указанным в FallbackNTP. Пример выдачи сервером DHCP MikroTik адресов серверов точного времени:


[Time]
NTP=
FallbackNTP=time.google.com

Результат при запросе состояния синхронизации: Server: 31.130.200.2 (31.130.200.2)

Дополнительно. Пишут, что при использовании systemd-timesync служба не может осуществлять выборы между узлами пула серверов NTP на предмет определения наиболее лучшего из них, как это реализовано в службе NTP. Однако для домашних компьютеров использование systemd для синхронизации времени компьютера с серверами точного времени является вполне приемлемым. Но в Linux Mint (Ubuntu) это может не работать. Как заставить systemd-timesync понимать адреса серверов NTP, которые предоставляет DHCP, читайте здесь.

Далее выполняется команда: 

sudo apt purge -y ntp && sudo apt install -y systemd-timesyncd

Включаем использование  systemd-timesyncd  для синхронизации времени:

sudo timedatectl set-ntp true

Включаем и перезапускаем службу  systemd-timesyncd:

sudo systemctl enable --now systemd-timesyncd.service && sudo systemctl restart systemd-timesyncd.service

Всё можно сделать одной командой:

sudo apt purge -y ntp && sudo apt install -y systemd-timesyncd && sudo timedatectl set-ntp true && sudo systemctl enable --now systemd-timesyncd.service && sudo systemctl restart systemd-timesyncd.service

Проверяем состояние службы:  systemctl status systemd-timesyncd.service

...
Status: "Initial synchronization to time server 31.130.200.2:123 (ns1.datahata.by)."
...

Через 1-2 минуты можно проверить состояние синхронизации времени компьютера:  timedatectl status

...
Time zone: Europe/Moscow (MSK, +0300)
System clock synchronized: yes
              NTP service: active

Детальную информацию о состоянии синхронизации времени можно посмотреть командой  timedatectl timesync-status

Графического инструмента, который отображал бы информацию о расхождении часов вашего компьютера с сервером точного времени в службе systemd-timesyncd не имеется. Но можно воспользоваться сторонними решениями. Мне, например, понравилось предоставление информации с этого сайта.

После старта системы более часа назад расхождение по времени в момент запроса на моё восприятие оказалось неожиданно минимальным:

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

Для получения информации о состоянии синхронизации можно на рабочем столе создать значок запуска с именем NTP status, указав команду 

 xfce4-terminal -H -x sh -c "timedatectl timesync-status; exec bash"


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

 /home/ваш_каталог/.local/share/applications

В нём появится файл  NTP status.desktop  с содержанием

[Desktop Entry]
Version=1.0
Type=Application
Name=NTP status
Comment=
Exec=xfce4-terminal -H -x sh -c 'timedatectl timesync-status; exec bash'
Icon=dcc_nav_datetime
Path=
Terminal=false
StartupNotify=false

Если необходимо, добавьте пояснение в поле Comment=

По умолчанию этот значок (кнопка) запуска будет расположен в категории "Прочее". Если нужно, чтобы он отображался, например, в категории "Система", то добавьте строку (открыть в текстовом редакторе) 

Categories=Network;System;

Содержание файла NTP status.desktop  может быть и немного другим, если при создании значка запуска была установлена галочка в поле "Запускать в терминале (актуально для Cinnamon), а команда указана как

sh -c 'timedatectl timesync-status | cat - /dev/tty'

[Desktop Entry]
Version=1.0
Type=Application
Name=NTP status
Comment=
Exec=sh -c 'timedatectl timesync-status | cat - /dev/tty'
Icon=dcc_nav_datetime
Path=
Terminal=true
StartupNotify=false

При вызове сведений о состоянии синхронизации времени по этому значку отобразится окно терминала с отображаемой информацией.

Пример вывода:

Server: 31.130.200.2 (31.130.200.2)
Poll interval: 17min 4s (min: 32s; max 34min 8s)
Leap: normal
Version: 4
Stratum: 2
Reference: 596DFB18
Precision: 1us (-23)
Root distance: 16.868ms (max: 5s)
Offset: -420us
Delay: 2.028ms
Jitter: 390us
Packet count: 6
Frequency: -1,643ppm

Интерес могут представлять следующие сведения:

Server:  IP-адрес сервера, с которым было синхронизировано время;

Poll interval:  время, прошедшее с последней синхронизации с сервером времени. Также будет указаны значения минимального и максимального промежутков между запросами синхронизации времени (min: 32s; max 34min 8s). Эти значения считываются из файла настройки /etc/systemd/timesyncd.conf (строки PollIntervalMin и PollIntervalMax);

Stratum:  класс точности сервера времени, с которым была произведена синхронизация;

Offset:  расхождение ваших часов и сервера времени, с которым была произведена синхронизация;

Delay:  время задержки на запрос о синхронизации времени;

Jitter:  мера статистических отклонений от значения смещения по нескольким успешным парам запрос-ответ. Чем это значение меньше, тем время синхронизируется точнее.

Packet count:  количество отправленных запросов с момента старта службы синхронизации времени. 

Значение ms соответствует миллисекунд, а значение us соответствует микросекунд (хвостик буквы "мю" вниз не отобразился).

🔰   Дополнение. 

Если нужно, чтобы у вас отобразилось окно терминала на определённое количество секунд, например, 25, то сделайте следующее:

1) создайте исполняемый файл timesync.sh с содержанием:

#!/bin/bash
sh -c '
'timedatectl timesync-status | cat - /dev/tty' &
sleep 25
exit

2) в созданном лаунчере (см. выше) измените

Exec=sh -c 'timedatectl timesync-status | cat - /dev/tty'

на Exec=полный_путь_к_timesync.sh


При написании были использованы материалы этого источника

воскресенье, 14 мая 2023 г.

Удаление устаревших файлов приложений 4K Videodownloader и 4K Slideshow Maker

При активном использовании приложений 4K Videodownloader и 4K Slideshow Maker создаются файлы протоколов работы этих приложений log и файлы миграции базы данных  sqlite.migration.bak (при обновлениях ПО 4K Videodownloader). Не было замечено, чтобы данные файлы автоматически удалялись по мере их устаревания.

Файлы 4K Videodownloader расположены в каталоге
~/.local/share/4kdownload.com/4K Video Downloader/4K Video Downloader

Файлы 4K Slideshow Maker  расположены в каталоге
~/.local/share/4kdownload.com/4K Slideshow Maker/4K Slideshow Maker

Для своих нужд был написан маленький сценарий, который при загрузке системы удалит файлы log и sqlite.migration.bak старше 5 суток:

#!/bin/bash
find "/home/minter/.local/share/4kdownload.com/4K Slideshow Maker/4K Slideshow Maker" -name "*.log" -mtime +5 -delete
find "/home/minter/.local/share/4kdownload.com/4K Video Downloader/4K Video Downloader" -name "*.log" -mtime +5 -delete
find "/home/minter/.local/share/4kdownload.com/4K Video Downloader/4K Video Downloader" -name "*.sqlite.migration.bak" -mtime +5 -delete
exit

Примечания. В тексте сценария /minter/ означает домашний каталог пользователя. У Вас он будет под другим именем. Значение +5 указывает на пять полных суток (полные сутки соответствуют 24 часам 00 минутам). Укажите нужное значение, исходя из своих потребностей.

Сценарий можно выполнять не при каждом запуске системы, а, допустим, только в понедельник. В этом случае текст сценария будет следующим:

#!/bin/bash
if [ $(date '+%w') -eq 1 ];
  then
    find "/home/minter/.local/share/4kdownload.com/4K Slideshow Maker/4K Slideshow Maker" -name "*.log" -mtime +5 -delete
    find "/home/minter/.local/share/4kdownload.com/4K Video Downloader/4K Video Downloader" -name "*.log" -mtime +5 -delete
    find "/home/minter/.local/share/4kdownload.com/4K Video Downloader/4K Video Downloader" -name "*.sqlite.migration.bak" -mtime +5 -delete
  else
    :
fi
exit

В первой строке запрашивается текущий день недели $(date '+%w'). Если он совпадает с понедельником  -eq 1 , то очистка выполняется. В противном случае никаких действий не производится.

пятница, 12 мая 2023 г.

Пакетное переименование расширения файлов JPG в jpg

При использовании 4K Slideshow Maker на Linux Mint было обнаружено, что при добавлении в слайшоу файлов изображений с расширением JPG в списке добавленных программа этих файлов не видит и, соответственно, не обрабатывает. Такое расширение файлов JPG необходимо переименовывать в jpg.

Для своих нужд написан маленький сценарий, при запуске которого выбирается каталог (папка), в котором необходимо произвести замену расширений JPG на jpg.

#!/bin/bash
dir=$(zenity --file-selection --directory)
find "$dir" -name '*.JPG' -exec sh -c 'mv "$0" "${0%.JPG}.jpg"' {} \;
exit

Сценарий можно оформить как кнопку запуска приложений. Кнопка запуска приложений представляет из себя обычный текстовый файл с расширением .desktop. который размещается в скрытом каталоге домашнего каталога пользователя ~/.local/share/applications и имеет права на выполнение (в качестве программы).

[Desktop Entry]
Version=1.0
Type=Application
Name=Переименовать JPG в jpg
Comment=
Exec=/home/minter/Tools/scripts/modules/rename-nemo-JPG-to-jpg.sh
Icon=emblem-cozy-drive-1
Path=
Terminal=false
StartupNotify=false

Значение Exec= указывает на расположение данного сценария в файловой системе.
Значение Icon= указывает на значок, под которым кнопка запуска приложений будет отображаться. Значок указывается только по имени, то есть без пути и без расширения.

Если необходимо чтобы сценарий был запущен в терминале, то измените Terminal=false на Terminal=true

При указанном выше листинге файла desktop кнопка запуска "Переименовать JPG в jpg" будет расположена в категории "Прочее". Чтобы эта кнопка запуска отобразилась в категории "Графика" добавьте в конец файла строку Categories=Graphics;

четверг, 11 мая 2023 г.

Изменение категории расположения кнопки запуска 4K Slideshow Maker в меню приложений

Среди предлагаемых на 4kdownload.com программ имеется программа создания слайдшоу 4K Slideshow Maker. Из каких-то своих соображений разработчики посчитали, что при установке в Linux значок для запуска данной программы должен быть расположен в категории Интернет. Лично мне это представляется неправильным, так как исходя из назначения данной программы её следовало бы расположить в категории "Мультимедиа".

Изменение категории, в которой отображается кнопка запуска 4K Slideshow Maker производится через редактироание файла desktop, расположенного в папке (каталоге) /usr/share/applications/

Следует отметить, что если в файловом менеджере Thunar файлы desktop отображаются в папках с отображением своего расширения, то в файловом менеджере Nemo отображением расширения desktop будет отсутствовать.




Изменение категории отображения производится редактированием файла desktop в текстовом редакторе:  sudo xed /usr/share/applications/4kslideshowmaker.desktop  (для Linux Mint)  В других дистрибутивах Linux используйте команду запуска текстового редактора, установленного в системе, например gedit.

Найдите в файле строку Categories= и измените её значение с Network;Qt; на AudioVideo;Qt;  Значение AudioVideo как раз и является указанием для размещения кнопки запуска программы в категорию "Мультимедиа".