пятница, 15 марта 2024 г.

Запланировать выключение компьютера через графическую форму

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


Указанное на рисунке выше третье значение +155 является результатом сложения чисел 60, 60, 35. То есть, оно является указанием значения в минутах ( для тех, кто не понял 😊 ).

Понятно, что после ввода в строку значения и последующего нажатия кнопки OK будет запланировано выключение компьютера "в" или "через". Если ничего не вводить и нажать ОК или нажать Отмена (пользователь передумал), или просто закрыть окно формы, то компьютер выключится через 1 минуту, так как будет выполнена команда shutdown без указания параметров. Но этого можно избежать, если после завершения работы формы будет произведена проверка на наличие введённого значения, то есть, чтобы файл не был пустым, например:


Собственно сам скрипт (исполняемый файл):

#!/bin/bash
zenity --width=220 --title "Когда выключить" --text="Ввод в формате xx:yy или + x\nПримеры ввода:\n23:59  = в 23 часа 59 минут.\n+15      = через 15 минут.\n+155   = через 2 часа 35 минут." --entry > /tmp/down.txt
if [[ ! -z $(cat /tmp/down.txt) ]] ; then
    shutdown $(cat /tmp/down.txt) &
  else
    zenity --width=150 --height=50 --info --timeout=5 --title="Уведомление" --text="Не указано время\nвыключения.\nЗадание не назначено."
fi
exit

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

--width= и --height= определяют ширину и высоту форм.

--timeout=5 указывает на интервал в 5 секунд, после которого форма уведомления автоматически будет закрыта. Если это не востребовано, то используйте:

#!/bin/bash
zenity --width=220 --title "Когда выключить" --text="Ввод в формате xx:yy или + x\nПримеры ввода:\n23:59  = в 23 часа 59 минут.\n+15      = через 15 минут.\n+155   = через 2 часа 35 минут." --entry > /tmp/down.txt
if [ -s /tmp/down.txt ]; then
    shutdown $(cat /tmp/down.txt) &
  else
    :
fi
exit

или так:

#!/bin/bash
zenity --width=220 --title "Когда выключить" --text="Ввод в формате xx:yy или + x\nПримеры ввода:\n23:59  = в 23 часа 59 минут.\n+15      = через 15 минут.\n+155   = через 2 часа 35 минут." --entry > /tmp/down.txt
if [[ ! -z $(cat /tmp/down.txt) ]] ; then
    shutdown $(cat /tmp/down.txt) &
fi
exit

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

✅    Добавление подтверждающих сообщений

Результат ввода значений можно отобразить информационным сообщением. Примеры:



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

var=`cat /tmp/down.txt`
if [[ $var =~ ":" ]]; then
    zenity --width=150 --height=50 --info --timeout=7 --title="Подтверждение" --text="Компьютер будет\nвыключен в $(cat /tmp/down.txt)"
  else
    zenity --width=150 --height=50 --info --timeout=7 --title="Подтверждение" --text="Компьютер будет\nвыключен\n через $(cut -c2- <<< $(cat /tmp/down.txt)) мин."
fi

Если в считанном значении будет найден символ двоеточия, то результатом будет вывод сообщения о выключении ЧЧ:ММ. В ином случае будет выводиться сообщение о выключении через М минут. При выводе второго сообщения не отображается символ +, что обеспечивается инструкцией $(cut -c2- <<< $(cat /tmp/down.txt)). --timeout=7 указывает, что после 7 секунд выводимое сообщение автоматически исчезнет. Таким образом, листинг скрипта с информационными сообщениями имеет вид: 

#!/bin/bash
zenity --width=220 --title "Когда выключить" --text="Ввод в формате xx:yy или + x\nПримеры ввода:\n23:59  = в 23 часа 59 минут.\n+15      = через 15 минут.\n+155   = через 2 часа 35 минут." --entry > /tmp/down.txt
if [[ ! -z $(cat /tmp/down.txt) ]] ; then
    shutdown $(cat /tmp/down.txt) &
      var=`cat /tmp/down.txt`
      if [[ $var =~ ":" ]]; then
            zenity --width=150 --height=50 --info --timeout=7 --title="Уведомление" --text="Компьютер будет\nвыключен в $(cat /tmp/down.txt)"
         else
           zenity --width=150 --height=50 --info --timeout=7 --title="Уведомление" --text="Компьютер будет\nвыключен\n через $(cut -c2- <<< $(cat /tmp/down.txt)) мин."
      fi
  else
    zenity --width=150 --height=50 --info --timeout=5 --title="Уведомление" --text="Не указано время\nвыключения.\nЗадание не назначено."
fi
exit

✅   Чтобы сделать кнопку вызова созданного скрипта в главном меню создайте файл .desktop, например, Shutdown-at.dеsktop, который должен располагаться в скрытой папке вашего домашнего каталога (папки) ~/.local/share/applications и впишите в него:

[Desktop Entry]
Name=Shutdown-at
Exec=полный путь к файлу sh
Comment=Назначить время выключения
Terminal=false
PrefersNonDefaultGPU=false
Icon=укажите значок для кнопки, например, application-exit или system-shutdown
Type=Application
Categories=GTK;Development;

Если нужно, чтобы кнопка отображалась по-русски, то добавьте строку Name[ru]= , в которой укажите свой текст.

Строка Categries= не является обязательной. В данном случае она будет указывать на то, что кнопка будет отображаться в меню "Программирование" (Cinnamon) или "Разработка" (xfce).

Демонстрационный ролик (ниже или на Google Drive):

вторник, 12 марта 2024 г.

Монтирование облака с помощью rclone через форму выбора

Цель: смонтировать выбранное облако через rclone c помощью вызова кнопки запуска приложения.

Ожидаемый результат: в форме выбора желаемого облака оно будет смонтировано в указанную папку.

Несмотря на то что в источниках программного обеспечения Ubuntu или Linux Mint имеется программа графического управления работой rclone (rclone-browser) вопрос о монтировании выбранного облака можно решать через свой скрипт.

Пример:

В указанной форме в столбце выбора щелчком мыши выделяется желаемое облако и после нажатия кнопки OK оно будет смонтировано в папку для монтирования внешних ресурсов. К примеру, в рассматриваемом скрипте это папка /home/minter/Mount

Создаётся файл sh с содержанием (пример):

#!/bin/bash
zenity --width=50 --height=330 --list --title="Монтировать облако" --checklist --editable --column=" Выбор " --column " Имя по rclone " --text= "" "dropbox" "" "koofr" "" "pcloud" "" "mailru" "" "yandex" "" "mega"  "" "onedrive" "" "box.net" "" "jottacloud" > /tmp/mount.txt
rclone mount --vfs-cache-mode writes $(cat /tmp/mount.txt): /home/minter/Mount &
exit

Первые три строки определяют форму запроса (см. рисунок выше) и осуществляют запись выбранного облака в файл /tmp/mount.txt

Если ничего не будет выбрано или окно формы будет закрыто по кнопке закрытия окна, то ничего смонтировано не будет, так как создаваемый файл /tmp/mount.txt будет пустым, то есть будет иметь нулевой размер. 

Записи dropbox, koofr, pcloud ... в качестве примера. Вам необходимо будет указать имя подключения, которое было назначено при настройке ПО rclone. Эти имена можно подсмотреть в файле настроек rclone. Для этого откройте файл rclone.conf, который расположен по пути ~/.config/rclone в вашей домашней папке. Имя подключения будет указано в квадратных скобках, например, [kgm2]. 

Далее запускается собственно монтирование облака в выбранную папку. В данном примере это папка /home/minter/Mount  Имя подключения считывается из файла /tmp/mount.txt и подставляется в команду монтирования через $(cat /tmp/mount.txt):  Обратите внимание, что в команде подключения всего облака имя подключения должно завершаться двоеточием (синтаксис rclone). Следующий за командой монтирования символ & означает, что завершение выполнения монтирования облака ожидаться не будет и собственно скрипт sh прекратит свою работу. Активной останется только выполняемая команда 

rclone mount --vfs-cache-mode writes $(cat /tmp/mount.txt): /home/minter/Mount

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

☑  Дополнение. Как вариант, можно организовать автоматическое открытие папки Mount в новом окне файлового менеджера. При этом производится дополнительная проверка файла mount.txt на введённое значение. То есть, если нажимается кнопка "Отменить", то в файл mount.txt ничего записано не будет и не будет производиться ни попытки монтирования, ни автоматического открытия папки Mount. Пример:

#!/bin/bash
zenity --width=50 --height=330 --list --title="Монтировать облако" --checklist --editable --column=" Выбор " --column " Имя по rclone " --text= "" "dropbox" "" "koofr" "" "pcloud" "" "mailru" "" "yandex" "" "mega"  "" "onedrive" "" "box.net" "" "jottacloud" > /tmp/mount.txt
if [ -s /tmp/mount.txt ]; then
    rclone mount --vfs-cache-mode writes $(cat /tmp/mount.txt): /home/minter/Mount &
    #  ✔  Дать системе время, чтобы она успела смонтировать облако.
   
#  Цифру (число задержки в секундах) подберите экспериментально,
   
#   исходя из быстродействия вашей системы и скорости Интернет.
    sleep 2
❗ Выберите одну из двух следующих строк, исходя из применяемого Вами менеджера файлов (графического окружения)
    
nemo --tabs /home/minter/Mount & # для Cinnamon
    thunar /home/minter/Mount & # для xfce
  else
    :
fi
exit

Создайте в своей папке ~/.local/share/applications файл (например, mount.desktop), который будет являться кнопкой запуска скрипта sh  Пример:

[Desktop Entry]
Name=Mount cloud
Exec=полный_путь_до_скрипта_sh
Comment=Смонтировать Cloud
Terminal=false
PrefersNonDefaultGPU=false
Icon=имя_значка_под_которым_ кнопка_будет_отображаться
Type=Application
Categories=GTK;Development;
Name[ru]=Смонтировать облако

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

Строка Name[ru]= указывает, что кнопка запуска должна отображаться не как "Mount cloud", а как "Смонтировать облако". Строка не обязательная и её также можно убрать.

Сделайте созданный файл исполняемым.

воскресенье, 10 марта 2024 г.

Предупреждение в окне терминала при обновлении списка пакетов после удаления FDM (Free Downloaf Manager)

После удаления программы FDM (Free Download Manager) при очередном ручном обновлении источников приложений sudo apt update в окне терминала появилась запись:

 https://debrepo.freedownloadmanager.org/dists/bionic/InRelease: Ключ хранится в унаследованной связке ключей trusted.gpg (/etc/apt/trusted.gpg), подробности см. в разделе DEPRECATION в apt-key(8).

Процедура "лечения" известна и сводится к нескольким действиям.

Выполните команду sudo apt-key list и найдите запись, относящуюся к этому ПО. Скопируйте последние 8 цифр (см. рисунок ниже).

Выполните команду sudo apt-key del 093B2149 (цифры указываются без пробела).

При удалении FDM запись об источнике этого ПО может остаться нетронутой. Откройте папку /etc/apt/sources.list.d  Если в ней присутствует файл  freedownloadmanager.list , то его можно удалить:  sudo rm /etc/apt/sources.list.d/freedownloadmanager.list 

При запуске sudo apt update указанное выше сообщение отображаться не должно.

вторник, 5 марта 2024 г.

Склеить файл, разрезанный при помощи split, в терминале без указания терминальной команды

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

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

#!/bin/bash
echo " "
echo " "
echo "     Выберите папку с исходными файлами,"
echo "     имена которых начинаются на x..."
echo " "
echo " "
sleep 3
dir=$(zenity --file-selection --directory)
zenity --width=280 --question --title "Имя файла" --text="Укажите полное имя склеиваемого файла,\nвключая его расширение, например:\n\nХудожественный фильм.mkv или\nДокументальная телепередача.mp4\n $task" \
--ok-label="Да" \
--cancel-label="Нет"
answer=$?
if [ "$answer" -eq 0 ]; then
    zenity --width=100 --title "Ввод текста" --text "Ввод имени файла с расширением:" --entry > /tmp/output.txt
      elif [ "$answer" -eq 1 ]; then
      > /tmp/output.txt
      elif [ "$answer" -eq 5 ]; then
      > /tmp/output.txt
fi
if [ -s /tmp/output.txt ]; then
    cd "$dir"
    echo "     Производится склейка частей"
    echo "     в файл с указанным именем."
    echo " "
    echo "     По завершении процесса Вы получите"
    echo "     сообщение в этом же окне."
    cat x* > "$dir/$(cat /tmp/output.txt)"
    find "$dir" -maxdepth 1 -name 'x*' -exec rm {} \;
    echo " "
    echo " "
    echo "     Процесс успешно завершён."
    echo "     Исходные файлы х... удалены."
    echo " "
    echo " "
    sleep 7
    xdg-open "$dir" &
  else
    echo " "
    echo "     Вы не указали имя файла."
    echo " "
    sleep 3
fi
rm /tmp/output.txt
exit

В процессе работы сценария (скрипта bash) отображаются две формы запросов:



C вариантами ответов "Да" и "OK" всё понятно. В результате выполнения указанных выше форм создаётся файл /tmp/output.txt , содержащий имя выходного файла с его расширением.

Если же выбрано "Нет" в первой форме или "Отменить" во второй, либо нажата кнопка закрытия окна запроса, то также создаётся файл /tmp/output.txt , но без какого-либо содержания. То есть, с точки зрения его наполнения он является пустым.

Далее при помощи инструкции if [ -s /tmp/output.txt ] файл анализируется на наличие в нём содержания. Если он признаётся как "не пустой", то в выбранной в самом начале папке содержание всех файлов, имена которых начинаются на букву x, копируются в файл, имя которого считывается из файла /tmp/output.txt  По завершении процесса исходные файлы x... удаляются и в сопоставленном приложении (как правило, файловом менеджере) открывается папка со склеенным файлом.

Процесс сопровождается поясняющими фразами, отображаемыми в окне терминала. Эти фразы указаны в строках, начинающихся с echo. Сами тексты сообщений содержатся между кавычками. Число пробелов от левой кавычки до буквы подбиралось экспериментально с целью наилучшего восприятия строк текста в окне терминала.

При удалении исходных файлов используется инструкция maxdepth 1, которая указывает скрипту не искать файлы во вложенных папках, ограничившись верхним уровнем указываемого пути.

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

После этого производится удаление /tmp/output.txt и работа скрипта завершается с автоматическим закрытием окна терминала.

После создания скрипта sh создайте для него кнопку запуска для его вызова из меню, например,

xed /home/minter/.local/share/applications/join.desktop

и впишите в него следующее:

[Desktop Entry]
Name=Join
Exec=/home/minter/Tools/scripts/modules/join.sh
Comment=
Terminal=true
PrefersNonDefaultGPU=false
Icon=emblem-plus
Type=Application
Categories=GTK;Development;
Name[ru]=Склеить файлы

В строке Exec= указывается полный путь до созданного файла sh

Icon= указывает на значок, под которым эта кнопка запуска будет отображаться в меню.

Categories=GTK;Development; означает, что кнопка будет расположена в меню "Программирование" в Cinnamon или "Разработка" в xfce. Если эту строку убрать, то кнопка будет расположена в меню "Прочие" в Cinnamon или "Прочее" в xfce.

 Name[ru]=Склеить файлы является необязательной строкой, указывающей на то, что кнопка должна отображаться не под именем Join, а под именем "Склеить файлы".

Перейдите в каталог applications

xdg-open /home/user/.local/share/applications

(user – это ваша домашняя папка) и в свойствах созданной кнопки запуска в разделе "Права" укажите, что его можно исполнять как программу. В Cinnamon он будет отображён как файл Склеить файлы без расширения, а в xfce как файл Join.desktop  Чтобы в файловом менеджере Thunar вместо значка шестерёнки отображался значок, указанный в строке Icon= в свойствах файла перейдите в раздел "Значок запуска" и поставьте галочку в поле "Установить этот файл как доверенный".

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

Добавить своё фоновое изображение в системные фоновые рисунки Linux Mint

В Linux Mint Cinnamon через правое контекстное меню "Изменить фон рабочего стола" можно добавить своё фоновое изображение, нажав на кнопку + в левом нижнем углу окна. Но своё фоновое изображение можно добавить и в стандартный набор поставки Linux Mint. В данной заметке показано как добавить своё фоновое изображение в раздел Linux Mint.

При указании фонового изображения рабочего стола Linux Mint 21.3 в левом столбце окна с перечислением фоновых рисунков отображены разделы, из которых можно выбрать фоновый рисунок: Linux Mint, Vanessa, Vera, Victoria, Virginia, Изображения. Чтобы добавляемое фоновое изображение отобразилось в каком-либо разделе необходимо осуществить два действия: добавить своё изображения в нужную папку и дополнить соответствующую запись в файл настроек.

Добавляю своё фоновое изображение файл Orion,jpg в раздел Linux Mint:

sudo cp /home/minter/Orion.jpg /usr/share/backgrounds/linuxmint

Для внесение изменения в файл настроек откройте папку 

/usr/share/cinnamon-background-properties 

под правами root, например 

sudo nemo /usr/share/cinnamon-background-properties

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

<wallpaper deleted="false">
    <name>Linux Mint</name>
    <filename>/usr/share/backgrounds/linuxmint/Orion.jpg</filename>
    <options>zoom</options>
    <shade_type>solid</shade_type>
    <pcolor>#000000</pcolor>
    <scolor>#000000</scolor>
    <artist>Network</artist>
</wallpaper>

В строке <name></name> указан путь к моему файлу Orion.jpg

Строка <artist></artist> указывает на автора изображения. Так как моё изображение было получено из Интернет, то мной было указано, что автором является Network. Результат:


🔰  Примечание. Как сделать аналогичную операцию в xfce читать здесь.
 

пятница, 1 марта 2024 г.

Папка /tmp как tmpfs в Ubuntu и Linux Mint

Перевод папки /tmp в файловую систему tmpfs, что по сути дела равносильно её перемещению в оперативную память компьютера, может в некоторой степени способствовать экономии ресурса твердотельного  накопителя SSD.

В сети имеется большое количество различных публикаций на эту тему. Но, как оказалось, в Ubuntu / Linux Mint это делается проще простого.

– Так ведь кражи не будет.
– Всё уже урадено до нас.
                     (операция "Ы")    
😁

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

sudo cp /usr/share/systemd/tmp.mount /etc/systemd/system/

sudo systemctl enable tmp.mount

Перезагрузите систему и выполните команду cat /etc/mtab

У вас должна присутствовать строка  tmpfs /tmp tmpfs ...

 
Другим вариантом проверки является команда df 
Предпоследняя строка на рисунке ниже показывает, что /tmp в tmpfs:






При таком решении в интересах /tmp может быть задействовано до 50% от общего размера оперативной памяти. Например, в моём случае размер оперативной памяти составляет 3655644k (свой размер можно узнать по команде free ), а в соответствующей строке вывода cat /etc/mtab указано, что

tmpfs /tmp tmpfs rw,nosuid,nodev,size=1827824k 

вторник, 27 февраля 2024 г.

Выполнение составной команды через ПКМ Thunar и Nemo

При необходимости настройки выполнения составной команды через правое контекстное меню, как оказалось, в файловых менеджерах Thunar и Nemo имеются различия. Для своих нужд создавалась процедура автозамены ряда символов в файле txt через bash. При этом сначала определялся путь и имя обрабатываемого файла с тем расчётом, чтобы впоследствии первоначальный файл заменить обработанным в рамках выполнения скрипт.sh

В файловом менеджере Thunar вопрос решился просто – в строке команды особых действий указывается: 1-я команда && 2-я команда. Пример:

realpath %f > /tmp/filename.txt && /home/minter/Tools/scripts/modules/replace.sh

Остаётся только указать условия появления этого пункта в ПКМ Thunar и значок.

В файловом менеджере Nemo реализация осуществляется по-другому, так как указанная выше составная команда, будучи указанной в строке Exec файла скрипт.nemo_action не выполняется. Чтобы указанная последовательность команд была выполнена в строке Exec= необходимо указать (всё в одну строку):

Exec=sh -c 'realpath %F > /tmp/filename.txt && /home/minter/Tools/scripts/modules/replace.sh; exec bash'

пятница, 23 февраля 2024 г.

Размер выбранных данных через правое меню Nemo

В правом контекстном меню файлового менеджера Nemo (Cinnamon) можно добавлять пункты своих команд. В данной заметке рассматривается создание пункты подсчёта занимаемого места выделенных объектов (файлы/папки).

В принципе, такую информацию можно получить и через "Cвойства". Но в этом случае будет отображён размер занимаемого места на диске, а создаваемая команда отобразит "чистый" размер. Как пояснение можно привести следующий пример: "чистый" размер данных в 1 килобайт займёт 4 килобайт дискового пространства, другими словами, эти данные займут 1 кластер. При форматировании носителя по умолчанию применяется значение размера кластера в 4 килобайта. При форматировании с другим размером кластера он указывается явно.

Создадим файл size.nemo_action  Можно использовать любое другое имя для создаваемого файла, главное чтобы соответствовало правилу: имя.nemo_action

xed /home/.../.local/share/nemo/acrions/size/nemo_action

Вместо ... укажите имя своей домашней папки. Для Ubuntu или другой системы используйте имеющийся у вас редактор текста (например, gedit в Ubuntu).

В окне редактора впишите следующее (пример):

[Nemo Action]
Active=true
Name=Size
Exec=sh -c 'du -chs --apparent-size %F | zenity --text-info; exec bash'
Icon-Name=emblem-ap-only-office
Selection=any
Extensions=any;
Quote=double

🔰  Пояснение. В строке Icon= указан используемый мной значок. Укажите свой значок из имеющихся в вашей системе.

Сохраните изменения и закройте окно текстового редактора Сделайте созданный файл исполняемым либо через свойства файла (Права ‒ Разрешить исполнять как программу), либо командой  

chmod u+x /home/.../.local/share/nemo/actions/size.nemo_action

Что указывать вместо многоточия см. выше. Подробности по команде здесь.

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


Вывод можно организовать и в окне терминала. В этом случае содержание файла будет следующим:

[Nemo Action]
Active=true
Name=Size
Exec=sh -c 'du -chs --apparent-size %F | cat - /dev/tty; exec bash'
Icon-Name=emblem-ap-only-office
Selection=any
Extensions=any;
Quote=double
Terminal=true


суббота, 17 февраля 2024 г.

Дополнительные цветные значки папок в Cinnamon

В Cinnamon при использовании одной из предустановленных тем значков наборов Mint-Y отдельно взятой папке через правое контекстное меню менеджера файлов Nemo можно задать значок, под которым данная папка будет отображаться. Но для своих нужд набора из 12 цветов в некоторых случаях мне было недостаточно. Поэтому был создан дополнительный набор, элементы которого не отображаются при вызове правого контекстного меню, но доступны при назначении значка в свойствах выбранной папки:



Дополнительные значки для папок:

Дополнительные значки для папок в своей основной массе взяты из набора значков Papirus. В комплекте поставки данные значки являются изображениями формата svg, которые были преобразованы в png, который используется в наборах значков Mint-Y. Значок серой папки (folder-grey) при наличии аналогического значка в Mint-Y-Grey обусловлен тем, что по восприятию он немного более тёмный и насыщенный. То же самое относится и к значку жёлтой папки (folder-yellow) В качестве примера на рисунке ниже верхняя папка использует значок темы Mint-Y-Grey, а нижней назначен значок folder-grey: 


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

Поместите содержимое этого архива в скрытую папку ~/.icons или ~/.local/share/icons папки своего профиля (домашняя папка). Дополнительные значки отобразятся при переназначении значка папки. Пример для темы значков Mint-Y-Sand:


Если Вы намерены постоянно использовать одну и ту же тему значок и никогда её не менять, то поместите в указанное выше одно из мест только папку Miny-Y, а затем переименуйте её в название вашей темы значков (в составе архива значки для всех тем). Данное действие обусловлено тем, что собственно сами дополнительные значки содержатся только в папке Mint-Y, а во всех остальных папках находятся только символические ссылки на значки папки Mint-Y.

среда, 7 февраля 2024 г.

В Linux Mint 21.3 пропал wifi через usb wifi Realtek 8188eu


Долгое время мной использовался usb wifi Realtek, драйвер Linux которого 8188eu был "из коробки", то есть никаких дополнительных действий для его определения в системе не требовалось. Но сегодня случился "сюрприз" 😈 : компьютер сетей wifi не видит. 

Осуществить загрузку системы с предыдущим ядром не представлялось возможным, поскольку предыдущее ядро и его модули были удалены в процессе автоматической очистки. При этом команда lsusb даёт вывод:

Bus 002 Device 002: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless Network Adapter

То есть, можно считать, что железо системой определяется.

Следующий шаг: sudo modprobe 8188eu

И вот здесь обнаружилась причина:

modprobe: FATAL: Module 8188eu not found in directory /lib/modules/5.15.0-92-generic

Почему? Может быть после тестирования другого usb Realtek, может быть ещё по какой-либо причине, детально разбираться не было времени и желания. Не исключено также, что способом перетыкания модема в usb его работоспособность была бы восстановлена. Но в дальнейшем хотелось бы иметь хоть призрачную гарантию того, что при очередном обновлении ядра wifi останется в рабочем состоянии.

Проба: sudo apt install rtl8188eu-dkms
Результат: Невозможно найти пакет rtl8188eu-dkms

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

Предпринятые действия:

sudo add-apt-repository ppa:kelebek333/kablosuz
sudo apt update
sudo apt install rtl8188eu-dkms

Результат:

8188eu.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/5.15.0-92-generic/updates/dkms/
depmod............
rtl8188eufw.bin firmware file copied to /lib/firmware/rtlwifi/
update-initramfs: deferring update (trigger activated)
Обрабатываются триггеры для initramfs-tools (0.140ubuntu13.4) …
update-initramfs: Generating /boot/initrd.img-5.15.0-92-generic

После перезагрузки wifi работает.  

суббота, 3 февраля 2024 г.

Инструменты просмотра скорости интерфейса сети в Cinnamon и xfce

Если в Cinnamon или xfce имеется необходимость получить информацию о текущей скорости сети (входящая/исходящая), то имеются, конечно, готовые инструменты. В Cinnamon – это апплет:


В xfce – это сетевой монитор, добавляемый на панель через команду правого контекстного меню "Панель – Добавить на панель" или "Панель – Параметры панели – Элементы – Добавить" (может потребоваться установить соответствующий пакет: sudo apt install -y xfce4-netload-plugin).


Но если не стоит задача постоянно отслеживать входящую/исходящую скорость, то можно ограничиться консольной утилитой nload (sudo apt install -y nload).

Чтобы для её запуска не вводить команду в терминал создайте в своей домашней папке  ~/.local/share/applications  файл c разрешением исполнять как команду, например, Net traffic.desktop (в Cinnamon он отобразится как просто Net traffic) c содержанием:

[Desktop Entry]
Version=1.0
Type=Application
Name=Net traffic
Comment=
Exec=nload -u K wlx000b81935b9a
Icon=network-transmit-receive
Path=
Terminal=true
StartupNotify=false
Categories=GTK;Development;

В строке Exec запись wlx000b81935b9a соответствует имени беспроводного интерфейса, полученного из вывода команды iwconfig. Имя проводного интерфейса можно узнать из вывода команды ifconfig.

-u K указывает, что скорости необходимо отображать в значениях kByte/s. Как указать другие единицы можно узнать, набрав в терминале nload --help.

В строке Icon значение network-transmit-receive указывает на значок, под которым будет отображаться созданная кнопка запуска.

Categories=GTK;Development; указывает, что кнопку запуска нужно отобразить в разделе "Программирование" для Cinnamon или "Разработка" для xfce. Если такую строку не добавлять, то кнопка запуска будет отображена в разделе "Прочие" для Cinnamon или "Прочее" для xfce.

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

 

Если значение величины собственной лени стремится к возрастанию 😊, то можно сделать так, чтобы окно терминала с отображаемой в нём информацией закрывалось автоматически. Для этого создайте исполняемый файл, например, net-traffic.sh с содержанием:

#!/bin/bash
sh -c 'nload -u K wlx000b81935b9a; exec bash' &
sleep 15
exit

А в созданном файле .desktop в строке Exec укажите путь к этому файлу, например,

Exec=/home/minter/Tools/scripts/modules/net-traffic.sh

После запуска окна терминала с отображением входящей и исходящей скоростей наступит период ожидания (пауза), длительность которого задаётся командой sleep. В указанном примере этот период соответствует 15 секундам. Нужное вам значение подберите экспериментально. 

суббота, 20 января 2024 г.

Заполнить флэшку нулями в Linux с отображением хода процесса

Возникла необходимость очистить флэшку, которая ранее использовалась как загрузочная для системы Linux. Но переформатирование стандартными способами (Инструменты/Диски и GParted) терпели неудачу по причине того, что на загрузочной флэшке присутствовали два раздела, при удалении которых постоянно возникала ошибка.

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

Решение простое, команду dd необходимо запускать с параметром status=progress. Ниже показан пример хода процесса для 4 ГБ флэшки Mirex, которая в программе "Диски" (дисковая утилита Gnome) была показана как устройство /dev/sdd.

sudo dd if=/dev/zero of=/dev/sdd bs=1M status=progress

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




Когда заполненность носителя достигла своего предела команда dd отобразила невозможность на него дальнейшей записи:

При запуске программ "Диски" и GParted флэшка была отображена как неразмеченный носитель, то есть устройство без файловой системы. 


После создания на нём новой таблицы разделов и форматирования в FAT32 флэшка воспринимается операционной системой, может быть смонтирована и на неё можно записывать данные.



четверг, 18 января 2024 г.

Кнопки запуска в меню для браузеров Waterfox и Palemoon

 

Браузеры Waterfox и Palemoon для Linux распространяются в виде архивов tar.bz2 и tar.xz соответственно. То есть выбранный браузер может быть запущен из любого расположения на файловой системе диска пользователя. Однако при этом в меню никакой кнопки запуска автоматически не создаётся. Кнопку запуска в меню для Waterfox или Palemoon можно создать самому.

Кнопка запуска для браузера Waterfox

Перейдите в скрытую папку своего профиля ~/.local/share/applications  Создайте в ней файл Waterfox.desktop  Откройте его в текстовом редакторе и впишите него:

[Desktop Entry]
Name=Waterfox
Exec=/opt/waterfox/waterfox
Comment=
Terminal=false
PrefersNonDefaultGPU=false
Icon=emblem-www-waterfox
Type=Application
Categories=Network;

🔰   Пояснения 

Строка Exec= указывает на расположение в файловой системе папки waterfox. В приведенном примере эта папка расположена в каталоге /opt  В вашем случае расположение папки waterfox может быть другим, например, /home/user/Programs/waterfox  
Строка Icon= указывает на значок, под которым кнопка запуска будет отображена в меню. Вам потребуется указать свой значок.
Строка Categories=Network; указывает на то, что кнопка запуска браузера Waterfox будет отображена в разделе "Интернет" вашего меню.

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

Кнопка запуска для браузера Palemoon

Перейдите в скрытую папку своего профиля ~/.local/share/applications  Создайте в ней файл Palemoon.desktop  Откройте его в текстовом редакторе и впишите него:

[Desktop Entry]
Version=1.0
Type=Application
Name=Palemoon
Comment=
Exec=/opt/palemoon/palemoon
Icon=emblem-web-1
Path=
Terminal=false
StartupNotify=false
Categories=Network;

🔰   Пояснения 

Строка Exec= указывает на расположение в файловой системе папки palemoon. В приведенном примере эта папка расположена в каталоге /opt  В вашем случае расположение папки waterfox может быть другим, например, /home/user/Programs/palemoon  
Строка Icon= указывает на значок, под которым кнопка запуска будет отображена в меню. Вам потребуется указать свой значок.
Строка Categories=Network; указывает на то, что кнопка запуска браузера Palemoon будет отображена в разделе "Интернет" вашего меню.

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

понедельник, 15 января 2024 г.

Добавление в меню Cinnamon дополнительных меню (категорий) и элементов в них

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

Щёлкните правой кнопкой мыши на кнопке меню Cinnamon. Вы увидите пункт "Редактировать меню". Нажмите на него левой кнопкой мыши и перейдите в редактор меню.


Выделите пункт меню "Приложения" и через кнопку "Новое меню" создайте новую папку в меню, а также соответствующий ей значок. После создания выделите созданное новое меню и через кнопку "Новый Элемент" укажите необходимые команды для выполнения и соответствующие им значки. Поясняющая картинки ниже:



Указанные на рисунке новые элементы были автоматически созданы в папке профиля ~/.local/share/applications под именами:

alacarte-made-dd064802-b39c-11ee-abe3-87598b93d49f.desktop

alacarte-made-f7c38fec-b39c-11ee-abe3-87598b93d49f.desktop

В приводимом примере их содержание соответственно:

[Desktop Entry]
Name=Upload folder
Exec=/home/minter/Tools/scripts/modules/upload.sh
Comment=
Terminal=true
PrefersNonDefaultGPU=false
Icon=emblem-arrow-1-orange
Type=Application

[Desktop Entry]
Name=Upload file
Exec=/home/minter/Tools/scripts/modules/upload-file-cinnamon.sh
Comment=
Terminal=true
PrefersNonDefaultGPU=false
Icon=emblem-arrow-1-green
Type=Application

четверг, 4 января 2024 г.

Использование split без ввода в терминале команды с параметрами

Терминальную команду split можно использовать более удобным образом для пользовательского применения. Для этого заранее создаётся два сценария (скрипта bash), которые и обеспечивают желаемый процесс, а также кнопка запуска, собственно и запускающая процесс. Публикация описывает создание инструмента для личных нужд. Вдруг кому и пригодится. 🙏

1. Создание сценария (исполняемого файла sh), который запишет число частей, на которые необходимо разбить исходный файл. Например: 

#!/bin/bash
zenity --width=200 --title "Количество частей" --text="На сколько частей разбить файл:" --entry > /tmp/parts.txt
exit

--title "..." и --text="..." можно указать свои. В рассматриваемом примере результат будет таким:


Введённое значение будет записано в файл /tmp/parts.txt

2. Сценарий выполнения команды split сначала запросит местоположение файлы, который необходимо разбить на части, а затем разобьёт его на указанное в п.1 количество частей. Количество частей будет введено из ранее созданного файла /tmp/parts.txt  Чтобы в процессе выполнения команды split окно терминала не было пустым, то в него добавлен поясняющий текст.

#!/bin/bash
file=$(zenity --file-selection)
/home/minter/Tools/scripts/modules/what-parts.sh
echo " "
echo " "
echo "     Результат в виде файлов с именем x..."
echo "     будет размещён в домашнем каталоге."
echo " "
echo "     После завершения процесса окно"
echo "     терминала закроется автоматически."
echo " "
echo " "
split "$file" -x -n$(cat /tmp/parts.txt) -a2
exit

В приведенном примере /home/minter/Tools/scripts/modules/what-parts.sh является сценарием, который указан в п.1 (см. выше). Результат:


Сценарий также оформляется как исполняемый файл sh

3. Другая реализация изложенного выше подразумевает использование только одного файла sh, например, split.sh , но работа которого более наглядна и удобна для пользователя.

#!/bin/bash
zenity --file-selection > /tmp/filename.txt
file=`cat /tmp/filename.txt`
zenity --width=180 --height=50 --question --timeout=10 --title="Запрос" --text="На сколько частей\nразбить файл ?$task" \
--ok-label="2 и больше" \
--cancel-label="Отмена"
answer=$?
if [ "$answer" -eq 0 ]; then
    zenity --width=50 --height=330 --list --title="Разрезать файл" --checklist --editable --column=" на сколько " --column " частей " --text= "" "2" "" "3" "" "4" "" "5" "" "6" "" "7" "" "8" "" "9" "" "10" > /tmp/parts.txt
elif [ "$answer" -eq 1 ]; then
    > /tmp/parts.txt
elif [ "$answer" -eq 5 ]; then
    > /tmp/parts.txt
fi
if [ -s /tmp/parts.txt ]; then
    echo " "
    echo " "
    echo "     Результат в виде файлов с именем x..."
    echo "     будет размещён в домашней папке."
    echo " "
    echo "     После завершения процесса окно"
    echo "     терминала закроется автоматически."
    echo " "
    echo " "
    split "$file" -x -n$(cat /tmp/parts.txt) -a2
    sleep 3
  else
    echo " "
    echo " "
    echo "     Не указано количество частей."
    echo "     Повторите, указав количество частей."
    echo " "
    sleep 5
fi 
exit

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


В данной форме указано 9 вариантов: от 2 до 10. Если необходимо больше, то измените строку --text= путём добавления "" "11" "" "12" и т. д. Также, запуская сценарий, подберите значение по вертикали  --height=330 В противном случае у вас справа будет отображаться вертикальная полоса прокрутки, что на мой взгляд, не совсем удобно.

Если ничего не введено, то есть нажата кнопка закрытия окна или "Отменить", то файл указания частей /tmp/parts.txt создаётся пустым, то есть не содержащим какой-либо цифры. Далее идёт проверка данного файла на "пустоту" и если он будет признан "пустым", то у вас появится сообщение о невозможности выполнить запрошенную операцию.


4. Кнопка запуска для сценария выполнения команды split сначала создаётся на рабочем столе через правое контекстное меню мыши "Создать значок запуска" (xfce) или "Создать кнопку запуска" (Cinnamon). Созданный файл представляет из себя запускаемый файл .desktop, который в xfce необходимо переместить в скрытый каталог ~/.local/share/applications (домашней папки). В Cinnamon при создании такого файла система сразу же предлагает создать такой файл в указанном месте. Содержание файла (пример):

[Desktop Entry]
Version=1.0
Type=Application
Name=Split
Comment=
Exec=/home/minter/Tools/scripts/modules/split.sh
Icon=partitionmanager
Path=
Terminal=true
StartupNotify=false

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

Categories=Utility;

Если имя созданной кнопки было указано на английском языке, а в меню вам необходимо отобразить её на русском, то добавьте в файл строку (как пример):

Name[ru]=Разрезать файл

Icon= указывает на значок, под которым созданная кнопка будет отображаться. В поле Comment= добавить поясняющий текст для чего это нужно и "с чем его едят" 😁.

При тестовом запуске созданной кнопки и указания числа частей 30 при резке файла размером в 4,3 ГБ сначала были созданы файлы x00 ... x09. Затем были созданы файлы x0a, x0b, x0c, x0d, x0e, x0f  Впоследствии создавались файлы с именами x10 ... x19, а за ними – x1a, x1b, x1c, x1d