Показаны сообщения с ярлыком Linux. Показать все сообщения
Показаны сообщения с ярлыком Linux. Показать все сообщения

четверг, 27 февраля 2025 г.

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

Описанное решение является дополнением к этой публикации и связано с определённой степенью лени использовать ввод команд в терминале.

Реализация задуманного заключается в создании исполняемого файла sh и соответствующей ему кнопки запуска в Cinnamon или значка запуска в xfce. 

Листинг файла sh: 

#!/bin/bash
zenity --width=200 --title "Носитель" --text="Указать носитель в виде sda, sdb, sdc..." --entry > /tmp/dev.txt
if [ -s /tmp/dev.txt ]; then
    echo " "
    echo " "
    echo " Заполнение носителя нулями."
    echo " "
    echo " После завершения процесса"
    echo " окно будет закрыто автоматически"
    echo " "
    sudo dd if=/dev/zero of=/dev/$(cat /tmp/dev.txt) bs=1M status=progress
  else
    echo " "
    echo " "
    echo " Не указан носитель (sda, sdb, sdc...)."
    echo " Повторите, указав нужный носитель."
fi
echo " "
echo " "
sleep 5
exit

Инструкция if [ -s /tmp/dev.txt ]; then проверяет наличие непустого файла /tmp/dev.txt, в который записывается носитель (флэшка). Если носитель указан, то происходит процесс заполнения её нулями. Если нет, то предлагается повторить операцию, указав нужный носитель. В графике выглядит следующим образом:



В строке указания носителя вводить именно так как просит форма: sda, sdb...  Вводить /dev/sda, /dev/sdb... не требуется, так как нужное подставляется командой в файле sh.

пятница, 14 февраля 2025 г.

Нет двустороннего соединения между Warpinator Linux и Winpinator Windows

Бывает ситуация, когда Warpinator на Linux не может установить двустороннее соединение с Winpinator на Windows (для Windows приложение Warpinator имеет наименование Winpinator). В соответствии с публикациями в сети по данному вопросу порядок действий рекомендуется следующий:

1. Сначала запускается Winpinator на Windows. В параметрах приложения указать действующий сетевой интерфейс. Если оставить "как есть", то есть автоматический выбор, то Winpinator может и не "сообразить" по какому сетевому интерфейсу осуществлять приём/передачу.

Вызвать в меню File – Preferences и далее обратиться к Connection:


2. Запустить Warpinator на Linux. Узлы должны увидеть друг друга. В дальнейшем рекомендуется запускать Warpinator на Linux после запуска Winpinator на Windows. Справедлива ли данная рекомендация для вас выясните самостоятельно.

3. Возможно, что имеет смысл аналогичную настройку произвести и на Linux:

4. Если всё равно возникают проблемы, то попробуйте приложение Dukto.

понедельник, 20 мая 2024 г.

Работа с несколькими аккаунтами MEGA

Как одним клиентом синхронизации MEGA работать с несколькими аккаунтами независимо друг от друга

Ранее уже рассматривался способ одновременной эксплуатации клиентов синхронизации для облака MEGA. Но здесь описан более простой приём.

Известно, что в Linux настройки для работы с учётной записью MEGA клиент хранит по пути 
/home/user/.local/share/data/Mega Limited/MEGAsync 
– где под user следует понимать Ваш домашний каталог. Чтобы увидеть это в файловом менеджере включите в нём показ скрытых файлов.

В Windows расположение этих данных примерно следующее:

C:\Users\user\AppData\Local\Mega Limited\MEGAsync (user – пользователь системы) 

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


Закройте клиент синхронизации. Скопируйте содержание папки MEGAsync в нужное место на вашем диске, в котором будут храниться настройки клиента MEGA для различных аккаунтов (создайте нужные папки заранее). Например, это можно сделать командой rsync. 

cd "/home/minter/.local/share/data/Mega Limited/MEGAsync"
rsync -azv --recursive * /home/minter/mega/M1 

В примере выше M1 является папкой, в которую были рекурсивно продублированы настройки синхронизации для первого аккаунта MEGA (содержание папки MEGAsync).

Для Windows, если не ошибаюсь, такой командой может быть:

Xcopy "C:\Users\user\AppData\Local\Mega Limited\MEGAsync" C:\Users\user\MegaConfig\Mega1\ /s /e

Удалите содержание папки MEGAsync, снова запустите клиент MEGA и настройте синхронизацию для другой учётной записи MEGA. Аналогично скопируйте сохранённые настройки и для второго своего аккаунта MEGA, например:

cd "/home/minter/.local/share/data/Mega Limited/MEGAsync"
rsync -azv --recursive * /home/minter/mega/M2 

Если у вас имеются ещё аккаунты MEGA, то сделайте для них то же самое.

Удалите папку MEGAsync со всем содержимым.

rm -fR "/home/minter/.local/share/data/Mega Limited/MEGAsync"

Создайте для каждой учётной записи свой скрипт (сценарий) запуска. Сохраните их как файлы sh (m1.sh, m2.sh или любые имена файлов на ваше усмотрение) с правом выполнения как программы. Примеры:

#!/bin/bash
ln -s /home/minter/Tools/mega/M1 "/home/minter/.local/share/data/Mega Limited/MEGAsync"
sleep 1
megasync
sleep 1
rm "/home/minter/.local/share/data/Mega Limited/MEGAsync"
exit

#!/bin/bash
ln -s /home/minter/Tools/mega/M2 "/home/minter/.local/share/data/Mega Limited/MEGAsync"
sleep 1
megasync
sleep 1
rm "/home/minter/.local/share/data/Mega Limited/MEGAsync"
exit

sleep 1 (заснуть на 1 секунду) можно не делать, если ваш жёсткий диск и система обладают достаточным быстродействием.

Для Windows командой создания символической ссылки на папку будет (пример):

mklink /D "C:\Users\user\AppData\Local\Mega Limited\MEGAsync" C:\Users\user\MegaConfig\Mega1

А сценарий запуска оформляется как файл bat примерно следующего содержания:

@echo off
mklink /D "C:\Users\user\AppData\Local\Mega Limited\MEGAsync" C:\Users\user\MegaConfig\Mega1
timeout /t 1 /nobreak
C:\Users\user\AppData\Local\MEGAsync\MEGAsync.exe
timeout /t 1 /nobreak
rmdir "C:\Users\user\AppData\Local\Mega Limited\MEGAsync"
exit

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

/home/user/.local/share/data/Mega Limited/MEGAsync (Linux)

C:\Users\user\AppData\Local\Mega Limited\MEGAsync (Windows)

После остановки работы клиента (процесс megasync) созданная символическая ссылка удаляется.

Теперь можно проверить работу клиента синхронизации для своих нескольких аккаунтов MEGA.


Кнопка запуска скрипта в Linux

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

[Desktop Entry]
Name=M20
Exec=/home/minter/Tools/mega/m20.sh
Comment=
Terminal=false
PrefersNonDefaultGPU=false
Icon=emblem-megasync-sand-dark
Type=Application

Как пояснялось выше, значок/кнопка запуска будет отображаться в категории "Прочее" (xfce) или "Прочие" (Cinnamon). Для указания другой категории добавьте в файл строку Categories= , в которой после знака равенства укажите необходимые значения. Например, для "Разработка" (xfce) или "Программирование" (Cinnamon) это будет иметь вид Categories=GTK;Development; , а для категории "Интернет" – Categories=Network;

Если надо, чтобы кнопка отображалась по-русски, то добавьте строку Name[ru]= и после знака равенства напишите русский текст, например, Синхронизация с облаком (без кавычек).

пятница, 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):

пятница, 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


суббота, 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

пятница, 8 декабря 2023 г.

Кнопка запуска пакетной передачи папок и файлов через rclone

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

Ожидаемый результат: все что расположено в специальной папке будет передано в выбранное облако, а исходные данные в папке передачи будут удалены.

Необходимые условия:
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


Пример ввода адреса в формате rclone: ydn1:Audio
Если в адресе имеются вложенные папки, то, к примеру, ydn1:Audio/папка1/папка2 
Если адрес имеет пробелы, то вводимые данные берутся в кавычки: "адрес"

Сценарий запуска передачи (пример)

#!/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]= и после знака равенства напишите русский текст, например, Передача файлов (без кавычек).

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

понедельник, 27 ноября 2023 г.

Перекодировать flac в mp3

На днях возникла необходимость перекодировать большое число файлов flac в формат mp3. Как всегда, в извечном споре "сделать самому или найти того кто сделает" победила природная лень 😁. Потому что сразу были предприняты поиски в Интернет насчёт необходимых команд в терминале. А поскольку было желание организовать всё так как описано в этой публикации, то возникло стремление получить аналогичное решение вопроса.  

Создаётся сценарий sh и кнопка запуска, указывающая на созданный сценарий. 

Сценарий (скрипт sh)

#!/bin/bash
dir=$(zenity --file-selection --directory)
find "$dir" -name "*.flac" -exec ffmpeg -i {} -acodec libmp3lame -ab 320k {}.mp3 \;
find "$dir" -name "*.flac" -exec rm {} \;
find "$dir" -name '*.flac.mp3' -exec sh -c 'mv "$0" "${0%.flac.mp3}.mp3"' {} \;

Что он делает:
1. Запрашивает папку расположения файлов flac.
2. В указанной папке рекурсивно перекодирует файлы flac в файлы формата mp3 с указанным битрейтом. В данном примере битрейт указан как 320k. Укажите желаемую вами степень сжатия (например, 196k).
3. Удаляются все исходные файлы с раcширением flac
4. Поскольку перекодированные в формат mp3 файлы имеют расширение flac.mp3, то осуществляется переименование их расширения в mp3

Кнопка запуска представляет собой файл вида .desktop (пример создания здесь). 

Пример содержания файла .desktop кнопки запуска:
[Desktop Entry]
Version=1.0
Type=Application
Name=flac-mp3
Comment=
Exec=/home/minter/Tools/scripts/modules/flac-mp3.sh
Icon=audio-x-flac
Path=
Terminal=true
StartupNotify=false

После создания кнопки запуска переместите её с рабочего стола в папку своего профиля ~/.local/share/applications  После этого созданная кнопка запуска будет отображаться в главном меню в разделе "Прочее", "Разное" или ей подобной (зависит от дистрибутива). Если есть необходимость её отображения в разделе "Мультимедиа", то откройте созданную вами кнопку в текстовом редакторе, например,

xed /home/ваш_профиль/.local/share/applications/ваша_кнопка.desktop

в впишите в него строку  Categories=AudioVideo;Audio;

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

суббота, 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

И, собственно, результат:


воскресенье, 1 октября 2023 г.

Исключение из синхронизации Syncthing файлов в папке. Файл stignore

При использовании в Windows стороннего ПО по назначению значков на папки всё, на первый взгляд, выглядит красиво:


Но эта "красота неописуемая" может быть моментально разрушена пользователем Syncthing, у которого используется Linux, а одна из указанных выше покрашенных папок назначена в синхронизацию через Syncthing. Дело в том, что за отрисовку таких папок отвечают файлы desktop.ini и, не обязательно, но в описываемом случае это имеет место, файлы с расширением ico. Если в Windows данные файлы являются скрытыми и по умолчанию в папке не отображаются, то в Linux они будут показаны явно. Ниже пример для папки WL-1 (см. рис. выше), которая через Syncthing синхронизируется с компьютером под управлением Linux:


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

Чтобы избежать такой ситуации в Windows создайте в синхронизируемой через Syncthing папке специального файла игнорирования .stignore (начинается с точки и расширения не имеет) и впишите в него нужные файлы. Сохраните и закройте текстовый редактор. В свойствах файлы укажите, что он скрытый. Пример ниже: 




После этого любые действия с этой папкой с использованием синхронизации её содержания через Syncthing не будут затрагивать указанные в .stignore файлы. Можно даже попросить респондента удалить файлы ini и ico – ваши файлы ini и ico эта операция не затронет. В панели управления Syncthing видно, что количество синхронизируемых объектов уменьшено шаблонами игнорирования:




В данной заметке изложен только частный случай использования возможностей синтакисиса файла .stignore  Перейдите в раздел документации (нижняя часть страницы панели управления Syncthing) и прочитайте документацию по файлу .stignore от разработчиков Syncthing.




четверг, 20 июля 2023 г.

Кнопка запуска (лаунчер) для запланированного выключения Linux Mint

Как указано в различных публикациях на тему запланированного выключения Linux, для этого необходимо выполнить в терминале одну из команд: 

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 смотрите по ссылкам: Cinnamonxfce. Указывать выполнение команды в терминале не требуется.

При создании кнопки запуска она по умолчанию создаётся на рабочем столе и в меню в категории "Разное". После создания кнопки запуска её с рабочего стола можно удалить (для поддержания его в чистоте 😀).

Если в категории "Разное" у вас имеется слишком много созданных кнопок запуска, то кнопку запуска запланированного выключения можно поместить в категорию "Программирование". Для этого откройте в менеджере файлов папку (каталог) своей домашней папки ~/.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 произведено не будет.

среда, 5 июля 2023 г.

Скрыть отображение отдельных элементов меню Linux

Иногда необходимо сделать так, чтобы созданные файлы (для запуска программ или сценариев на bash) .desktop, в меню не отображались. Если это созданные вами файлы, то откройте их с редакторе текста  xed ~/.local/share/applications/файл.desktop  (~ означает расположение в вашей папке пользователя системы).

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

  sudo xed /usr/share/applications/файл.desktop  

xed является текстовым редактором по умолчанию в Linux Mint. В других системах он будет иным, например, gedit в Ubuntu. 

В конце файла, который должен быть скрыт от отображения в меню допишите строку  OnlyShowIn=None  Проверьте результат. Если необходимо его отображать снова, то перед записью установите значок комментария  # .

четверг, 15 июня 2023 г.

Дополнительная настройка kazam

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

1. По умолчанию запись начинается через 5 секунд после запуска программы. Но ничто не мешает установить нулевую задержку, которая позволит начать запись сразу же.


2. Программа сохраняет записанные файлы в папку "Видео". В моём случае потребовалось сделать так, что записанные файлы сохранялись в другую папку и с другим именем. Для этого перейти в меню "Файл ‒ Параметры ‒ Запись экрана" и включить то что указано красной стрелкой, указать местоположение сохраняемых файлов (зелёная стрелка) и, при необходимости, указать имя файла, с которым записанный файл будет сохранён.


Применительно к указанным на рисунке выше настройкам результат будет таким:

Каждое последующее записанное видео увеличивает последнюю цифру в имени файла на единицу, например, Kazam_screencast_00001.mp4, Kazam_screencast_0002.mp4, Kazam_screencast_00003.mp4, Kazam_screencast_00004.mp4 

После команды "Завершить запись" запрос на то, что дальше делать с файлом появляться не будет и файл будет сохранён именно туда, куда это было определено в настройках.