среда, 20 апреля 2022 г.

Загрузка Linux Mint с возможностью выбора предыдущих ядер

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

К сожалению, ранее известный мне предыдущий способ не сработал. Быстрый поиск в сети выдал огромное число "рецептов", среди которых наименее "страшным" своими последствиями мне показался следующий.

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

1. Открыть в текстовом редакторе файл настройки grub: 

       sudo xed /etc/default/grub

2. В первой строке настроек (после всех строк, начинающихся с символа #) заменить:

       GRUB_DEFAULT=0  на  GRUB_DEFAULT=saved

3. Во второй строке заменить

      GRUB_TIMEOUT_STYLE=hidden  на  GRUB_TIMEOUT_STYLE=menu

4. В третьей строке заменить время ожидания выбора пункта меню

      GRUB_TIMEOUT=0  на  GRUB_TIMEOUT=10

10 соответствует 10 секундам счётчика обратного отсчёта. По-моему, это будет достаточной величиной, так как 30 – это слишком много, а 5 – слишком мало.

5. Обновить grub – sudo update-grub

6. При следующей загрузке системы отобразится окно выбора. Например, в моей системе это 2 строки: "Linux Mint 20.3 Xfce" и "Дополнительные параметры для Linux Mint 20.3 Xfce". Первый пункт соответствует выбору самого последнего (свежего) ядра в системе, а второй даёт возможность выбора загрузки с одним из выбранных предыдущих ядер.

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

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

На момент публикации этого текста у меня в системе были установлены ядра версий 5.4.0-109, 5.4.0-107, 5.4.0-105. Соответственно, имеется возможность загрузки с любым из предыдущих ядер: 5.4.0-107 или 5.4.0-105.
 

вторник, 5 апреля 2022 г.

Открыть в fbless книгу fb2 через правое контекстное меню в Thunar

Иногда возникает необходимость быстро просмотреть начало книги. К тому же, неплохо иметь в своём арсенале ещё одну читалку, особенно когда читаешь несколько книг "одновременно" (то есть периодически переключаясь с книги на книгу) в разных читалках (например, fbreader, foliate, coolreader), и "терять" в одной из читалок возможность при запуске определённой читалки ставиться на последнее прочитанное место не хочется.

Консольную читалку, то есть запускаемую в окне терминала можно установить командой sudo apt install fbless 

Сразу оговорюсь, что файла настроек и кэша, как описано здесь и здесь, на своей системе Linux Mint 20.3 найдено не было. Тем не менее, читалка была признана рабочей.

Однако использование команды fbless путь_к_книге навевало определённую тоску 😟

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

Но оформленная через "Особое действие" (пример создания) команда

 xfce4-terminal -H -x sh -c 'fbless %f; exec bash'

при открытии для эксперимента книги /home/minter/01/Хроники особого отдела.fb2 завершалась неудачей.

Вывод через терминал показывал ошибку в python3, из которого было понятно, что

[Errno 2] Нет такого файла или каталога: '/home/minter/01/Хроники'

Добавление кавычек в путь "%f" приводило к пустому окну терминала с заголовком "Дочерний процесс завершился нормально с кодом 2."

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

Хроники особого отдела.fb2 --> Хроники-особого-отдела.fb2 - команда отрабатывалась нормально и книга открывалась.

Таким образом было понятно, что "особое действие" не понимает длинных путей в именах файлов и каталогов.

Тогда было решено получить полный путь к имени файла, а затем считать его и передать при запуске fbless. В приводимом ниже примере полученный полный путь записывается с файл /tmp/fbless.txt, а затем передаётся в читалку как $(cat /tmp/fbless.txt) в кавычках.

Команда в одну строку:

realpath %f > /tmp/fbless.txt && xfce4-terminal  -H -x sh -c '/usr/bin/fbless "$(cat /tmp/fbless.txt)"; exec bash'

При этом учитываюся как длинное имя (т.е. содержащее пробелы) файла, так и каталога. Для примера приводится открытие этой командой файла 

/home/minter/Загрузки/pCloud/Avtors/Дмитрий Леонидович/Проект "Пассионарность"/1. Судья.fb2

Однако, по совету более опытного товарища, вместо команды

xfce4-terminal -H -x sh -c 'fbless %f; exec bash'

необходимо вводить команду 

xfce4-terminal -H -x sh -c "fbless %f; exec bash"

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

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


В таком случае команде необходимо задать ещё и параметр -g, после которого числом указать нужное значение %, например, -g 15

Далее приводится решение "для себя". Оно не является программистским, так как его первая часть была заимствована из готового решения (источник дано забыт) ввода значений с использованием zenity.


Идея. 

1. Запрос ввода значения % соответствует "Да". Указывается ожидание времени выбора. Если за это время никакая кнопка нажата не была, то считается, что была нажата кнопка "Нет".

2. Вводится значение (цифра), которая записывается в файл, например в /tmp/proc.txt  Если в предыдущем п.1 была нажата кнопка "Нет" (или выбрана по умолчанию после истечения времени выбора), то в /tmp/proc.txt записывается значение 0, что условно соответствует началу книги.

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

$(cat /tmp/proc.txt)

Заимствованное готовое решение, оформляемое в виде исполняемого файла sh имеет листинг:

#!/bin/bash
zenity --width=180 --height=50 --question --text="Перейти на место,\nобозначенное % ?$task" --timeout 5
answer=$?
if [ "$answer" -eq 0 ]; then
    zenity --width=100 --title  "Ввод цифры" --text-info --editable > /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

За время ожидания выбора отвечает параметр -- timeout 5  В приведенном случае это соответствует 5 секундам. Экспериментальным способом вместо 5 можно подобрать удобное для своего использования значение.

🔰  Пояснение. Кнопке "Да" соответствует -eq1, кнопке "Нет" – -eq0, а выбор по умолчанию всегда будет -eq5. 

Увы но рабочий результат выполнения команды получился только с использованием тех "костылей", которые приводились в самом начале, то есть с применением realpath %f

Сначала выполняется скрипт получения значения процентов прочитанного, а потом собственно и запуск читалки с указанием этих процентов через параметр -g

путь_к_sh && xfce4-terminal -H -x sh -c "fbless %f -g $(cat /tmp/proc.txt); exec bash"

или (по первому варианту)

путь_к_sh && realpath %f > /tmp/fbless.txt && xfce4-terminal  -H -x sh -c '/usr/bin/fbless "$(cat /tmp/fbless.txt)" -g $(cat /tmp/proc.txt); exec bash'

🔰  Примечание. Следует отметить, что при вводе, например, значения 11 (11% книги), книга откроется именно в начале 11 %, но в книге отображаться будут 10%. 11 процентов начнутся тогда когда вы перейдёте на следующую строчку текста книги. 

Так как целочисленное значение % может соответствовать 2-3 страницам текста книги, то это может вызывать неудобство или раздражение. 

Выходом могло бы служить использование механизма закладок, которые записывается в файл fbless_save  Автоматически у меня он не создавался. Его приходилось создавать вручную здесь  ~/.fbless_save  или здесь  ~/.cache/fbless/fbless_save  Сведения о его местоположении взяты из этой публикации. Но как создать в fbless закладку мне неизвестно.

Официальную документацию для fbless читайте в файле /usr/share/doc/fbless/README.ru

✔  В качестве дополнения. Используя параметр -g 100 можно перейти в самый конец книги и узнать, является ли это окончанием всего цикла, окончанием отдельного тома или вообще ознакомительным фрагментом книги. Если необходимо это делать часто, то для этого можно создать дополнительное особое действие с командой:

xfce4-terminal  -H -x sh -c "fbless -g 100; exec bash"

понедельник, 28 марта 2022 г.

nload – быстро посмотреть активность сетевого интерфейса

Иногда возникает задача быстро посмотреть активность по определённому сетевому интерфейсу, то есть определить: осуществляется ли через него обмен данными или он "завис".

Установите программу nload – sudo apt install nload

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


На рисунке выше зелёная стрелка указывает на имя интерфейса Ethernet, а жёлтая – Wi-Fi.

Исходя из полученной информации, для вывода сведений, например, по интерфейсу Wi-Fi необходимо выполнить команду nload wlx000b819543a2:


Значения в строках будут постоянно меняться, но представление о текущем обмене данными вы получите. Примеры:



Чтобы не помнить команду её можно оформить как кнопку (в XFCE это будет называться значок) запуска, располагаемую на рабочем столе, панели, либо комбинацию клавиш. Ниже приводится пример значка запуска для панели XFCE:



P.S. В XFCE можно установить индикатор сети. Дополнительные материалы по nload на русском языке: ссылка 1, ссылка 2, ссылка 3 

В качестве альтернативного варианта запуска nload можно использовать кнопку запуска приложения. При этом она будет работать как в xfce, так и в Cinnamon. Подробности здесь.

вторник, 15 марта 2022 г.

Поиск Яндекс в Firefox

На днях в просматриваемом мной форуме было сообщение, в котором один из участников "пожаловался", что из браузера Firefox пропал поиск через Яндекс.

Так как с возрастом становишься совсем ленивым 😄, то вспомнив, что когда-то своим респондентам предоставлялся сценарий, осуществляющий ввод "что искать" и далее автоматически осуществляющий поиск в Google с выводом результатов, было принято решение поискать в своих загашниках аналогичный сценарий для поиска в Яндекс. Попытка была завершена неудачей и был предпринят поиск с целью найти на просторах Интернет что-либо подобное.

В целом, можно сказать, попытка увенчалась успехом, хотя и было найдено немного не то. Но после некоторого скрипения серым веществом найденное было переработано в свой сценарий (скрипт). Сценарий оформляется как исполняемый файл sh, который можно запустить как по кнопке (значку) запуска, так и через назначаемую в настройках клавиатуры комбинацию клавиш, в качестве команды которой прописывается 
sh -c полный_путь_к_скрипту, например 
sh -c /home/user/yandex.sh

Для функционирования скрипта требуется наличие в системе установленных zenity и xclip. Если насчёт отсутствия zenity утверждать не берусь, то xclip по умолчанию в системе отсутствует. Что, впрочем, легко исправляется:

sudo apt install zenity  и  sudo apt install xclip

Нужный код был честно ©пёрт отсюда. В процессе редактирования было "выброшено" лишнее и оставлено только то, что относится к поиску в Яндекс.

Как это выглядит:


После ввода текста и нажатия кнопки ОК откроется новая вкладка браузера Firefox с выводом результатов поискового запроса. Если ничего не вводить и нажать "Отменить", но новое окно Firefox запущено не будет.

Бонус  скрипта заключается в том, что если будет выделен какой либо текст (слово) и далее запущен скрипт, то выделенное автоматически подставляется в поле ввода текста для поиска.

Текст скрипта:

#!/bin/bash
out="/tmp/poisk.$$"
zenity --width=350 --title  "Поиск в Яндекс" --text "Введите текст для поиска" --entry --entry-text="$(xclip -o)" > "$out"
if [ $? -eq 0 -a "`cat "$out"`" != "" ]
then
url="https://www.yandex.ru/yandsearch?text=`cat "$out"`"
firefox -new-tab "$url" &
fi
rm "$out"
exit

   P.S. Скрипт можно запускать и с другим браузером. Для этого нужно только изменить команду firefox. При этом если другой браузер не используется как основной, то для предотвращения вопроса "а не желаете ли его назначить браузером по умолчанию" в параметрах запуска можно установить  -no-default-browser-check.

Примеры:

Waterfox – /opt/waterfox/waterfox -no-default-browser-check

LibreWolf – /usr/share/librewolf/librewolf -no-default-browser-check

Palemoon – /usr/bin/palemoon -no-default-browser-check

Opera – /usr/bin/opera -no-default-browser-check

Slimjet – /usr/bin/flashpeak-slimjet -no-default-browser-check

Vivaldi – /usr/bin/vivaldi-stable -no-default-browser-check

Brave – /opt/brave.com/brave/brave -no-default-browser-check

вторник, 15 февраля 2022 г.

Удаление записей из списка "Приложения" в настройке оповещений Linux Mint xfce

После удаления из системы двух ранее использовавшихся программ было обнаружено, что несмотря на удаление относящихся к данному ПО каталогов из ~/.cache ~/.config ~/.local/share, записи об этих программах остались в списке "Приложения":


Увы, интенсивный поиск в Интернет к желаемому ответу на поставленный вопрос не привёл. Получилось, что "спасение утопающих – дело рук самих утопающих".

Было выяснено, что за оповещения отвечает компонент notifyd. Поиск в файловой системе привёл к его файлу настроек xfce4-notifyd.xml (в файловом менеджере включить отображение скрытых файлов), расположенный в: ~/.config/xfce4/xconf/xfce-perchannel-xml


Открыть этот файл в текстовом редакторе и аккуратно удалить лишние записи от <value type= до (включая) >  Для образца можно посмотреть на предыдущие записи, например, Dropbox и FileZilla, FileZilla и Firefox ...  :


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


Делюсь, может быть кому-либо пригодится  😊

понедельник, 14 февраля 2022 г.

Определить запущен ли Transmission через bash

При написании сценария возникла проблема определения: работает ли клиент торрент Transmission. Быстрая команда pidof Transmission результата не выдает, несмотря на то, что в списке процессов данный процесс присутствует:

Как показало следствие, правильно процесс называется transmission-gtk. И тогда при такой инструкции:

[ "$(pidof transmission-gtk)" ] && echo "1" > /tmp/transmission.txt || echo "0" > /tmp/transmission.txt

при запущенном Transmission в файл transmission.txt будет записано значение 1, а при не запущенном – 0.

Магия, однако ...  😎 

четверг, 3 февраля 2022 г.

Интерпретация некоторых результатов вывода iwconfig

Про Wi-Fi написано много, но зачастую найти ответ на конкретный вопрос бывает затруднительно. 

Описываемая ниже ситуация является личным опытом, а изложенные выводы являются личным мнением, которое не претендует на то, чтобы быть "непреложной истиной". Употребление написания Wi-Fi обусловлено следованию английской аббревиатуре Wireless Fidelity. Подробности читайте здесь.

По завершении мероприятий по тонкой настройке своей точки Wi-Fi был дан запрос iwcоnfig.

Мероприятия по тонкой настройку Wi-Fi включали в себя выборы:
✔  взаимного расположения токи wifi и принимающего устройства, за которым чаще всего работаешь (также учитывалось наличие между ними различных предметов); 
✔  частоты вещания точки Wi-Fi; 
✔  ширины канала: 20/40 или только 20; 
✔  стандарта работы: B/G/N, G/N, только N; 
✔  мощности передатчика: по умолчанию 17 dBm (~ 50 мВт) или ниже. 

При этом также стояла задача обеспечения приемлемой величины Overal Tx CCQ (для себя – не ниже 60%). 

⤷  Пояснение. В качестве точки Wi-Fi был использован маршрутизатор MikroTik, на котором можно и увидеть данное значение. Не думаю, что на маршрутизаторах для домашнего Интернет, выдаваемых провайдером, его можно посмотреть. Overal Tx CCQ  интерпретируется как усреднённый CCQ (качество канала на передачу/приём) только на передачу Tx. На базовой станции он показывает усреднённые значения по качеству передачи на всех подключившихся Wi-Fi клиентах.

Сразу возникли вопросы типа "это хорошо или плохо?" и "можно ли считать это приемлемым?".

Первое – это значок с всплывающим при подведении к нему указателя мыши "... 68%"

Например, 3 полоски это ещё приемлемо или, всё-таки, необходимо выкручивать мощность передатчика в состояние default, чтобы попробовать добиться заполнения всех 4 полосок.

Второй блок вопросов касается результата вывода команды iwconfig

Например, Signal level=-51 dBm это приемлемо или нет?

К большому сожалению, в русскоязычных источниках быстрого ответа найти не удалось. Хотя и встречалось пояснение, касающихся степени заполнения 5 полосок индикатора Wi-Fi. Из него следует, что 3 полоски – это ещё нормально, 4 – хорошо, 5 – очень хорошо. 

Например, так выглядит беспроводное подключение на Windows:

Данное подключение установлено с точкой Wi-Fi, расположенной через стенку в соседнем помещении. Расстояние между точкой W-Fi и подключенным к ней компьютером по прямой составляет примерно 3,6-3,8 метра.

Как видно из рисунка, условия приёма не являются идеальными, поскольку в действительности сигнал проходит через 2 стенки да ещё на него налагаются и переотражения от угла. Несмотря на это, как видно из наличия 4-х заполненных столбиков, условия для работы вполне приемлемые. В эксперименте мощность передатчика была установлена в 10 dBm, а с учётом усиления антенны с коэффициентом 1,5 результирующая мощность составила 13 dBm.

Таким образом, будем считать, что в пересчёте 5 полосок в Windows на 4 в Linux, мои 3 полоски из 4 – это между "ещё нормально" и "хорошо" (но ближе к "хорошо").

Что касается Signal level=-51 dBm, то привожу информацию из этого источника (англ.).

Приемлемое значение, в зависимости от дальности расположения приёмника от точки Wi-Fi, колеблется в диапазоне от -55 dBm до -70 dBm. При этом приводятся следующие пояснения:

-30 dBm = Великолепно – максимально достижимая сила сигнала  – 4 полоски из 4. В большинстве случаев точка Wi-Fi расположена в нескольких футах (1 фут = 30,48 см.) от приёмника сигнала. Не является типичной ситуацией.

-67 dBm = Очень хорошо – минимальное значение силы сигнала для большинства бизнес-приложений (например, голосовая связь и потоковое видео) – 3 полоски из 4.

-70 dBm = OK – минимально допустимая сила сигнала, требуемая для приемлемой степени доставки пакетов (веб-серфинг, электронная почта) – 2 полоски из 4. Значение термина OK для себя определите сами.  📚

-80 dBm = Плохо – минимально допустимая сила сигнала для соединения с точкой Wi-Fi, но при этом доставка пакетов может оказаться под большим вопросом – 1 полоска из 4. Другими словами – вы не сможете нормально работать.

-90 dBm = Неприемлемо – чрезмерное количество пакетов, которые не могут быть доставлены получателю, большие шумы, интерференция между сигналами и т.п. Любая функциональность Wi-Fi невозможна.

Исходя из указанного выше, моё значение -51 dBm является "вполне так себе прилично", несмотря на то, что мощность передатчика составляет 5 dBm (3,16 мВт). 

Можно было бы предположить, что будь мощность побольше, то заполнились бы все 4 полоски индикатора Wi-Fi. Однако не всё так однозначно. 

Проверялось ещё одно устройство, расположенное чуточку дальше, чем упоминающееся. При подключении к точке число заполненных активных полосок индикатора Wi-Fi было 2, но в течение одной минуты все 4 полоски оказались заполненными, а при подведении указателя мыши к значку индикатора отобразилась надпись " ... 82%". Разница между устройствами, а точнее антеннами взаимодействующих устройств Wi-Fi заключается в их пространственной ориентации. 

Во-первых, на MikroTik и первом устройстве антенны являются внутренними и выполнены путём травления дорожек. Их взаимное расположение в пространстве отличается на 90 градусов. На втором устройстве антенна Wi-Fi также является встроенной (внешнее устройство, подключаемое через USB). Разъем USB имеет вертикальное расположение и по отношению к MikroTik антенна подключаемого устройства расположена практически в одной плоскости с ним. Ситуация навевает сюжет из детского киножурнала "Ералаш", в котором заключительная фраза главной героини звучит как "Ты, я и геомЭтрия".  😂

Во-вторых, – в сети можно найти материалы, в которых говорится, что повышение мощности передатчика Wi-Fi не всегда есть благо, так как мощное излучение от него в ряде случаев может "пересилить" ответ от подключаемого устройства, в результате чего связь будет никакая. Настройка мощности излучения под наименованием default каждым производителем выбирается из собственных соображений, но в большинстве случаев значение default равно максимально допустимой мощности излучения передатчика Wi-Fi в соответствии с требованиями regulatory-domain (для каждой страны это значение своё). 

Любопытно, что попытка установки на предоставленном провайдером маршрутизаторе Huawei HG8245Hv5 значения мощности Wi-Fi менее 100% вызывает у него "монаршее неудовольствие"  😡  

Установленная мной мощность передатчика MikroTik в 5 dBm обусловлена тем, что он установлен не где-то там в прихожей, а в жилой комнате и лишние мВт в ней ни к чему. К слову, тестирование данной точки с упоминавшимся выше устройством на Windows показало, что из 5 полосок закрашено 3, что, исходя из представленных выше сведений, описывается как "это ещё нормально". 

В завершение следует отметить, что идеального качества Wi-Fi вы вряд ли достигнете. В частности, это касается и роста значения параметра Invalid misc в результатах вывода iwconfig, которое в моём случае за три практически следующих друг за другом измерения составило 1024, 1033 и 1039. Для объяснения такого явления придётся вникать в тонкости реализации самой технологии Wi-Fi, а также обратиться к теории распространения радиоволн. Поэтому имею склонность согласиться с мнением, что если возможно, то вместо Wi-Fi всегда желательно использовать проводное соединение. 

В подтверждение последнего тезиса отмечу, что показываемая скорость в свойствах подключения (или iwconfig), например Bit Rate:150 Mb/s, показывает так называемую канальную скорость между устройством и точкой Wii-Fi (подробности). Она является скоростью подключения на физическом уровне, которая используется в текущее время в рамках выбранного стандарта (в данном примере – N). Казалось бы, что вот оно, счастье: 150 против 100 по кабелю (а нет – снова опыт). Если вы предпримете попытку передачи большого числа данных между устройствами, которые взаимодействуют только через Wi-Fi, то в плане быстроты отправки/получения большого числа файлов и папок испытаете глубокое разочарование. Потому что реальная скорость является совсем другим явлением и зависит от такого большого количества факторов, что временами пока дочитаешь до конца, то забудешь с чего начиналось.  👀   

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

А самым простым способом узнать реальную скорость приёма/передачи данных на на конкретном устройстве является установка какого-либо сетевого монитора, который будет отображать значения измерений скорости на указанном в его настройках интерфейсе (Wi-Fi или LAN). К примеру, на xfce такой сетевой монитор можно добавить на панель (подробности).