марта 28, 2024, 23:07:33

Новости:

Перейти на сайт https://xubuntu-ru.net


Последние сообщения

Страницы 1 2 3 4 ... 10
11
How-To и FAQ / Смена анимации запуска и выклю...
Последний ответ от Igor360 - сентября 23, 2023, 14:44:06
Как поменять анимацию запуска "Xubuntu"? (то есть убрать текстовую анимацию и поставить графическую) И как сменить анимацию выключения "Xubuntu"? Заранее спасибо!
12
Различные вопросы / Re: Numlock при загрузке / при...
Последний ответ от butjapka - июля 10, 2023, 18:08:06
Решение для xubuntu 22.04
Если не установлен пакет numlockx, то ставим его
sudo apt install numlockx1. Открываем на редактирование файл
sudo mousepad /usr/share/lightdm/lightdm.conf.d/50-xubuntu-numlock.conf2. Комментируем строку
#greeter-setup-script=xubuntu-numlockx3. Добавляем в конец запись
greeter-setup-script=/usr/bin/numlockx on
13
Установка и восстановление / Re: Xubuntu Core
Последний ответ от butjapka - февраля 22, 2023, 21:11:24
Цитата: Dmitry от февраля 04, 2023, 17:39:41Разыскивается xubuntu-18.04-core-i386.iso

Ранее лежал на https://unit193.net/xubuntu/core/ но ни там, ни у автора Unit193 (связывался с ним в IRC) образа нет.

Торрент по магнету отсюда https://xubuntu.org/news/xubuntu-18-04-release/ [32-bit magnet] не качает - нет пиров уже более месяца.
качаешь образ mini.iso, ставишь основные пакеты, а потом накатываешm xfce на минималке, в итоге тот же xubuntu-core
14
Установка и восстановление / Xubuntu Core
Последний ответ от Dmitry - февраля 04, 2023, 17:39:41
Разыскивается xubuntu-18.04-core-i386.iso

Ранее лежал на https://unit193.net/xubuntu/core/ но ни там, ни у автора Unit193 (связывался с ним в IRC) образа нет.

Торрент по магнету отсюда https://xubuntu.org/news/xubuntu-18-04-release/ [32-bit magnet] не качает - нет пиров уже более месяца.
15
How-To и FAQ / Re: Лень-двигатель прогресса
Последний ответ от danwer - января 23, 2023, 13:57:42
С подачи el guahiro с его командой на ПКМ Thunar для записи скринкастов родился такой скрипт screencast.sh:
#!/bin/bash
#            ЗАПИСЬ ЭКРАНА

#Если существует временный файл .tmp1, то
if [ -f .tmp1 ]; then
#Закрытие индикатора записи в трее
pid2=$(<.tmp2)
kill -15 $pid2
exit
else

#Узнаём разрешение экрана
r=$(xdpyinfo -display :0.0 | grep dimensions | egrep -o "[0-9]+x[0-9]+ pixels" | egrep -o "[0-9]+x[0-9]+")

#Запись
ffmpeg -f alsa -ac 2 -i pulse -f x11grab -r 25 -s $r -i :0.0 -vcodec libx264 -pix_fmt yuv420p -crf 26 -threads 0 -acodec pcm_s16le -y ~/Видео/ScreenCasts/screencast_$(date +%d-%m-%Y_%H:%M:%S).mkv &
pid1=$!
echo "$pid1" > .tmp1

#Индикация записи в трее
yad --notification --image=/usr/local/icons/app/yad/screencast.png --text='Идёт запись экрана' &
pid2=$!
echo "$pid2" > .tmp2

#Пока присутствует индикатор записи в трее
while test -d /proc/$pid2/
do
sleep 0.1
done

#Стоп записи и удаление временных файлов
kill -15 $pid1 && rm -f .tmp1 .tmp2
sleep 0.5
notify-send -t 7000 -i /usr/local/icons/app/yad/screencast-2.png 'Готово! Скринкаст лежит в ~/Видео/ScreenCasts/'
fi

Должны быть установлены ffmpeg и yad.
Задаём хоткей на screencast.sh (у меня Ctrl+R). Жмём Ctrl+R - запись пошла. В трее появился индикатор. Снова жмём Ctrl+R - запись остановилась с извещением notify-send. Индикатор исчез. Всё просто. До этого я пользовался неплохой утилитой SimpleScreenRecorder. Но в ней всё-таки больше телодвижений, чтобы начать и остановить запись экрана.





16
Оборудование / Автоповорот экрана по данным а...
Последний ответ от BikeKot - января 20, 2023, 01:41:31
Приветствую всех!
Уже несколько дней бороздю просторы интернета на тему "Автоповорот экрана по данным акселерометра"

Есть нетбук, на нём ОС на основе ubuntu с XFCE4, dash.
Не могу заставить автоматически поворачивать экран по данным акселерометра. iio-sensor-proxy установлен, сервис работает, monitor-sensor тоже выдаёт данные о положении нетбука в пространстве. Натыкался на скрипты для bash, но они выдают кучу ошибок т.к. у меня dash. Ставил Cinnamon, в нём работает, но специфика дистрибутива заточена только под xfce. Если есть готовое решение из набора xfce - прошу поделиться хотя бы названием.
17
How-To и FAQ / Re: Лень-двигатель прогресса
Последний ответ от danwer - января 06, 2023, 15:22:45
Цитата: butjapka от января 05, 2023, 22:53:24
Цитата: danwer от января 05, 2023, 13:27:47скрипт fsaBackup.sh:
а если в этот скрипт, в случае отсутствия необходимых пакетов добавить команду по установке их и после установки продолжить выполнение скрипта
Отличное предложение!  :smile:
Поправил скрипт fsaBackup.sh:
#!/bin/bash

#              --СОХРАНЕНИЕ/ВОССТАНОВЛЕНИЕ БЭКАПА СИСТЕМЫ--


#Проверка установки дополнительных пакетов
yad=$(dpkg --status "yad" 2>/dev/null | grep "ok installed")
fsarchiver=$(dpkg --status "fsarchiver" 2>/dev/null | grep "ok installed")
wmctrl=$(dpkg --status "wmctrl" 2>/dev/null | grep "ok installed");
if ! [[ $yad = "Status: install ok installed" && $fsarchiver = "Status: install ok installed" && $wmctrl = "Status: install ok installed" ]]
then
# запуск терминала с параметром -e
x-terminal-emulator -e sh -c 'apt update && apt install -y yad fsarchiver wmctrl'                            
fi

bootrepair=$(dpkg --status "boot-repair" 2>/dev/null | grep "ok installed")
if ! [[ $bootrepair = "Status: install ok installed" ]]
then
# запуск терминала с параметром -e
x-terminal-emulator -e sh -c 'add-apt-repository -y ppa:yannubuntu/boot-repair && apt update && apt install -y boot-repair'
fi

#Сохранение в переменную списка всех устройств /dev/sd*
dev=( $(ls /dev/sd* -1 | cut -c6-) ) \


#Функция "Выбор системного раздела"
select_systemdrive(){
systemdrive=$(yad --list --column="":tip "${dev[@]}" \
--title "fsaBackup" \
--text "\n  Выбор системного раздела:" \
--window-icon=/usr/local/icons/app/yad/fsaBackup.png \
--geometry=300x500 \
--button="gtk-cancel:35" --button="gtk-ok:0" \
)
if [[ $? = 35 || $? = 252 ]]; then
exit
fi

# Удаление последнего символа | , т.к yad косячно добавляет его в конце
if [[ "$systemdrive" == *\| ]]; then
systemdrive=${systemdrive::-1}
fi
}


#Функция "Выбор домашнего раздела"
select_homedrive(){
homedrive=$(yad --list --column="":tip "${dev[@]}" \
--title "fsaBackup" \
--text "\n  Выбор домашнего раздела:" \
--window-icon=/usr/local/icons/app/yad/fsaBackup.png \
--geometry=300x500  \
--button="gtk-cancel:35" --button="gtk-ok:0" \
)
if [[ $? = 35 || $? = 252 ]]; then
exit
fi

# Удаление последнего символа | , т.к yad косячно добавляет его в конце
if [[ "$homedrive" == *\| ]]; then
homedrive=${homedrive::-1}
fi
}


#Функция "Выбор каталога сохранения бэкапа"
select_dir(){
dirplace=$(yad --file --directory \
--window-icon=/usr/local/icons/app/yad/fsaBackup.png \
--title "Выбор пустого каталога для сохранения бэкапа" \
--geometry=900x600 \
--button="gtk-cancel:35" --button="gtk-ok:0" \
  )

if [[ $? = 35 || $? = 252 ]]; then
exit
fi

if ! [ -z "$(ls -A "$dirplace")" ]; then
yad --skip-taskbar --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/error.png --title="" --geometry=300x100 --text="\nВыбранный каталог не пустой!" --button=Выход:0
exit
fi
}


#Функция "Выбор сохранённого файла бэкапа"
select_file(){
filebackup=$(yad --file \
--window-icon=/usr/local/icons/app/yad/fsaBackup.png \
--title "Выбор сохранённого файла бэкапа" \
--geometry=900x600 \
--button="gtk-cancel:35" --button="gtk-ok:0" \
  )

if [[ $? = 35 || $? = 252 ]]; then
exit
fi
}


#Функция "Выбор типа бэкапа"
select_option_backup(){
option=$(yad --list --column="                 Какой бэкап?":tip "Бэкап полный" "Бэкап системного раздела" "Бэкап домашнего раздела" \
--title "fsaBackup" \
--text "" \
--window-icon=/usr/local/icons/app/yad/fsaBackup.png \
--geometry=300x300 \
--button="gtk-cancel:35" --button="gtk-ok:0" \
)

if [[ $? = 35 || $? = 252 ]]; then
exit
fi

# Удаление последнего символа | , т.к yad косячно добавляет его в конце
if [[ "$option" == *\| ]]; then
option=${option::-1}
fi
}



#Функция "Индикация сохранения бэкапа с помощью прогресс-бара Yad"
indicate_savebackup(){
yad --progress --title="         Идёт сохранение бэкапа.." --auto-close --pulsate --button=Отмена:35 --progress-text="ждём.." --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=400x70 &
sleep 1

# цикл, пока не завершится распаковка(процесс $pid1)
while test -d /proc/$pid1/
do
sleep 0.5
if ! wmctrl -l | grep -e '         Идёт сохранение бэкапа..' ;then  #если принудительно закрыть окно Yad (кнопка "Отмена"), то
kill -15 $pid1
break
fi
done

#Закрытие окна Yad
wmctrl -F -c '         Идёт сохранение бэкапа..'
}



#Функция "Индикация восстановления бэкапа с помощью прогресс-бара Yad"
indicate_restorebackup(){
yad --progress --title="         Идёт восстановление бэкапа.." --auto-close --pulsate --button=Отмена:35 --progress-text="ждём.." --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=400x70 &
sleep 1

# цикл, пока не завершится распаковка(процесс $pid1)
while test -d /proc/$pid1/
do
sleep 0.5
if ! wmctrl -l | grep -e '         Идёт восстановление бэкапа..' ;then  #если принудительно закрыть окно Yad (кнопка "Отмена"), то
kill -15 $pid1
break
fi
done

#Закрытие окна Yad
wmctrl -F -c '         Идёт восстановление бэкапа..'
}





backup=$(yad --list --column="                 Что сделать?":tip "Сохранить бэкап" "Восстановить бэкап" \
--title "fsaBackup" \
    --text "" \
--window-icon=/usr/local/icons/app/yad/fsaBackup.png \
--geometry=300x300 \
--button="gtk-cancel:35" --button="gtk-ok:0" \
)

if [[ $? = 35 || $? = 252 ]]; then
exit
fi


# Удаление последнего символа | , т.к yad косячно добавляет его в конце
if [[ "$backup" == *\| ]]; then
backup=${backup::-1}
fi



if [[ $backup == "Сохранить бэкап" ]]; then

#вызов функции
select_option_backup


if [[ $option == "Бэкап полный" ]]; then

#вызов функций
select_systemdrive
select_homedrive

#Отмонтирование смонтированных дисков
if mount|grep /dev/"$systemdrive" ;then
umount /dev/"$systemdrive"
fi

if mount|grep /dev/"$homedrive" ;then
umount /dev/"$homedrive"
fi

#вызов функции
select_dir

#Проверка
yad --title="fsaBackup" --text="\n\nСистемный каталог:  /dev/"$systemdrive"  \n\nДомашний каталог:  /dev/"$homedrive" \n\nКаталог для сохранения бэкапа:  "$dirplace" \n\n\nЕсли всё правильно выбрано, то жмём ОК. " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=600x300 --button="gtk-cancel:35" --button="gtk-ok:0"

if [[ $? = 35 || $? = 252 ]]; then
exit
fi


#Сохранение полного бэкапа (индикация процесса с помощью yad)
fsarchiver savefs "$dirplace"/full-backup.fsa /dev/"$systemdrive" /dev/"$homedrive" &
pid1=$!

#вызов функции
indicate_savebackup

        yad --title="fsaBackup" --text="\n  Сохранение полного бэкапа \n  успешно завершено!  " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=300x100 --button="gtk-ok:0"

        exit

fi



if [[ $option == "Бэкап системного раздела" ]]; then

#вызов функции
select_systemdrive


#Отмонтирование смонтированного диска
if mount|grep /dev/"$systemdrive" ;then
umount /dev/"$systemdrive"
fi

#вызов функции
select_dir


#Проверка
yad --title="fsaBackup" --text="\n\nСистемный каталог:  /dev/"$systemdrive" \n\nКаталог для сохранения бэкапа:  "$dirplace" \n\n\nЕсли всё правильно выбрано, то жмём ОК. " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=600x300 --button="gtk-cancel:35" --button="gtk-ok:0"

if [[ $? = 35 || $? = 252 ]]; then
exit
fi


#Сохранение бэкапа системного раздела (индикация процесса с помощью yad)
fsarchiver savefs "$dirplace"/system-backup.fsa /dev/"$systemdrive" &
pid1=$!

#вызов функции
indicate_savebackup

        yad --title="fsaBackup" --text="\n  Сохранение бэкапа системного \n  раздела успешно завершено!  " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=300x100 --button="gtk-ok:0"

        exit

fi



if [[ $option == "Бэкап домашнего раздела" ]]; then

#вызов функции
select_homedrive


#Отмонтирование смонтированного диска
if mount|grep /dev/"$homedrive" ;then
umount /dev/"$homedrive"
fi

#вызов функции
select_dir

#Проверка
yad --title="fsaBackup" --text="\n\nДомашний каталог:  /dev/"$homedrive" \n\nКаталог для сохранения бэкапа:  "$dirplace" \n\n\nЕсли всё правильно выбрано, то жмём ОК. " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=600x300 --button="gtk-cancel:35" --button="gtk-ok:0"

if [[ $? = 35 || $? = 252 ]]; then
exit
fi


#Сохранение бэкапа домашнего раздела (индикация процесса с помощью yad)
fsarchiver savefs "$dirplace"/home-backup.fsa /dev/"$homedrive" &
pid1=$!

#вызов функции
indicate_savebackup

        yad --title="fsaBackup" --text="\n  Сохранение бэкапа домашнего \n  раздела успешно завершено!  " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=300x100 --button="gtk-ok:0"

        exit

fi


fi



if [[ $backup == "Восстановить бэкап" ]]; then

#вызов функции
select_option_backup

if [[ $option == "Бэкап полный" ]]; then

#вызов функций
select_systemdrive
select_homedrive

#Отмонтирование смонтированных дисков
if mount|grep /dev/"$systemdrive" ;then
umount /dev/"$systemdrive"
fi

if mount|grep /dev/"$homedrive" ;then
umount /dev/"$homedrive"
fi

#вызов функции
select_file

#Проверка
yad --title="fsaBackup" --text="\n\nСистемный каталог:  /dev/"$systemdrive"  \n\nДомашний каталог:  /dev/"$homedrive" \n\nФайл бэкапа:  "$filebackup" \n\n\nЕсли всё правильно выбрано, то жмём ОК. " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=600x300 --button="gtk-cancel:35" --button="gtk-ok:0"

if [[ $? = 35 || $? = 252 ]]; then
exit
fi


#Восстановление полного бэкапа (индикация процесса с помощью yad)
fsarchiver restfs "$filebackup" id=0,dest=/dev/"$systemdrive" id=1,dest=/dev/"$homedrive" &
pid1=$!

#вызов функции
indicate_restorebackup

        yad --title="fsaBackup" --text="\n  Восстановление полного бэкапа \n  успешно завершено!  " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=300x100 --button="gtk-ok:0"

        exit

fi


if [[ $option == "Бэкап системного раздела" ]]; then

#вызов функции
select_systemdrive

#Отмонтирование смонтированного диска
if mount|grep /dev/"$systemdrive" ;then
umount /dev/"$systemdrive"
fi

#вызов функции
select_file

#Проверка
yad --title="fsaBackup" --text="\n\nСистемный каталог:  /dev/"$systemdrive"  \n\nФайл бэкапа:  "$filebackup" \n\n\nЕсли всё правильно выбрано, то жмём ОК. " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=600x300 --button="gtk-cancel:35" --button="gtk-ok:0"

if [[ $? = 35 || $? = 252 ]]; then
exit
fi


#Восстановление бэкапа системного раздела (индикация процесса с помощью yad)
fsarchiver restfs "$filebackup" id=0,dest=/dev/"$systemdrive" &
pid1=$!

#вызов функции
indicate_restorebackup

        yad --title="fsaBackup" --text="\n  Восстановление бэкапа системного \n  раздела успешно завершено!  " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=300x100 --button="gtk-ok:0"

        exit

fi


if [[ $option == "Бэкап домашнего раздела" ]]; then

#вызов функции
select_homedrive

#Отмонтирование смонтированного диска
if mount|grep /dev/"$homedrive" ;then
umount /dev/"$homedrive"
fi

#вызов функции
select_file

#Проверка
yad --title="fsaBackup" --text="\n\nДомашний каталог:  /dev/"$homedrive" \n\nФайл бэкапа:  "$filebackup" \n\n\nЕсли всё правильно выбрано, то жмём ОК. " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=600x300 --button="gtk-cancel:35" --button="gtk-ok:0"

if [[ $? = 35 || $? = 252 ]]; then
exit
fi


#Восстановление бэкапа домашнего раздела (индикация процесса с помощью yad)
fsarchiver restfs "$filebackup" id=0,dest=/dev/"$homedrive" &
pid1=$!

#вызов функции
indicate_restorebackup

        yad --title="fsaBackup" --text="\n  Восстановление бэкапа домашнего \n  раздела успешно завершено!  " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=300x100 --button="gtk-ok:0"

        exit

fi


fi


18
How-To и FAQ / Re: Лень-двигатель прогресса
Последний ответ от butjapka - января 05, 2023, 22:53:24
Цитата: danwer от января 05, 2023, 13:27:47скрипт fsaBackup.sh:
а если в этот скрипт, в случае отсутствия необходимых пакетов добавить команду по установке их и после установки продолжить выполнение скрипта
19
How-To и FAQ / Re: Лень-двигатель прогресса
Последний ответ от danwer - января 05, 2023, 13:27:47
Существует замечательная консольная утилита fsArchiver для сохранения/восстановления бэкапов системы. Очень удобно с её помощью переносить настроенную систему на другие компы. Также она есть и в GUI-обёртке под названием Qt5-fsarchiver. Но не всем хочется её устанавливать с притягиванием всяких Qt-шных зависимостей. В таком случае предлагаю свой вариант в GTK-шном виде. К тому же и выглядит всё это более нативно для Xubuntu.
Итак, должны быть установлены утилиты fsArchiver , yad и wmctrl.  Если нет, то:
sudo apt install fsarchiver yad wmctrl
Создаём в /opt каталог fsaBackup. Закидываем туда иконку fsaBackup.png для значка запуска(кому какая нравится) и скрипт fsaBackup.sh:
#!/bin/bash

#              --СОХРАНЕНИЕ/ВОССТАНОВЛЕНИЕ БЭКАПА СИСТЕМЫ--



#Проверка установлен ли yad
dpkg --status "yad" 2>/dev/null | grep "ok installed"
if ! [ $? == 0 ]; then
notify-send -t 7000 -i /usr/local/icons/app/yad/error.png 'Не установлена утилита Yad !'
exit
fi

#Проверка установлен ли fsarchiver
dpkg --status "fsarchiver" 2>/dev/null | grep "ok installed"
if ! [ $? == 0 ]; then
notify-send -t 7000 -i /usr/local/icons/app/yad/error.png 'Не установлена утилита FSArchiver !'
exit
fi

#Проверка установлен ли wmctrl
dpkg --status "wmctrl" 2>/dev/null | grep "ok installed"
if ! [ $? == 0 ]; then
notify-send -t 7000 -i /usr/local/icons/app/yad/error.png 'Не установлена утилита wmctrl !'
exit
fi

#Сохранение в переменную списка всех устройств /dev/sd*
dev=( $(ls /dev/sd* -1 | cut -c6-) ) \


#Функция "Выбор системного раздела"
select_systemdrive(){
systemdrive=$(yad --list --column="":tip "${dev[@]}" \
--title "fsaBackup" \
--text "\n  Выбор системного раздела:" \
--window-icon=/usr/local/icons/app/yad/fsaBackup.png \
--geometry=300x500 \
--button="gtk-cancel:35" --button="gtk-ok:0" \
)
if [[ $? = 35 || $? = 252 ]]; then
exit
fi

# Удаление последнего символа | , т.к yad косячно добавляет его в конце
if [[ "$systemdrive" == *\| ]]; then
systemdrive=${systemdrive::-1}
fi
}


#Функция "Выбор домашнего раздела"
select_homedrive(){
homedrive=$(yad --list --column="":tip "${dev[@]}" \
--title "fsaBackup" \
--text "\n  Выбор домашнего раздела:" \
--window-icon=/usr/local/icons/app/yad/fsaBackup.png \
--geometry=300x500  \
--button="gtk-cancel:35" --button="gtk-ok:0" \
)
if [[ $? = 35 || $? = 252 ]]; then
exit
fi

# Удаление последнего символа | , т.к yad косячно добавляет его в конце
if [[ "$homedrive" == *\| ]]; then
homedrive=${homedrive::-1}
fi
}


#Функция "Выбор каталога сохранения бэкапа"
select_dir(){
dirplace=$(yad --file --directory \
--window-icon=/usr/local/icons/app/yad/fsaBackup.png \
--title "Выбор пустого каталога для сохранения бэкапа" \
--geometry=900x600 \
--button="gtk-cancel:35" --button="gtk-ok:0" \
  )

if [[ $? = 35 || $? = 252 ]]; then
exit
fi

if ! [ -z "$(ls -A "$dirplace")" ]; then
yad --skip-taskbar --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/error.png --title="" --geometry=300x100 --text="\nВыбранный каталог не пустой!" --button=Выход:0
exit
fi
}


#Функция "Выбор сохранённого файла бэкапа"
select_file(){
filebackup=$(yad --file \
--window-icon=/usr/local/icons/app/yad/fsaBackup.png \
--title "Выбор сохранённого файла бэкапа" \
--geometry=900x600 \
--button="gtk-cancel:35" --button="gtk-ok:0" \
  )

if [[ $? = 35 || $? = 252 ]]; then
exit
fi
}


#Функция "Выбор типа бэкапа"
select_option_backup(){
option=$(yad --list --column="                 Какой бэкап?":tip "Бэкап полный" "Бэкап системного раздела" "Бэкап домашнего раздела" \
--title "fsaBackup" \
--text "" \
--window-icon=/usr/local/icons/app/yad/fsaBackup.png \
--geometry=300x300 \
--button="gtk-cancel:35" --button="gtk-ok:0" \
)

if [[ $? = 35 || $? = 252 ]]; then
exit
fi

# Удаление последнего символа | , т.к yad косячно добавляет его в конце
if [[ "$option" == *\| ]]; then
option=${option::-1}
fi
}



#Функция "Индикация сохранения бэкапа с помощью прогресс-бара Yad"
indicate_savebackup(){
yad --progress --title="         Идёт сохранение бэкапа.." --auto-close --pulsate --button=Отмена:35 --progress-text="ждём.." --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=400x70 &
sleep 1

# цикл, пока не завершится распаковка(процесс $pid1)
while test -d /proc/$pid1/
do
sleep 0.5
if ! wmctrl -l | grep -e '         Идёт сохранение бэкапа..' ;then  #если принудительно закрыть окно Yad (кнопка "Отмена"), то
kill -15 $pid1
break
fi
done

#Закрытие окна Yad
wmctrl -F -c '         Идёт сохранение бэкапа..'
}



#Функция "Индикация восстановления бэкапа с помощью прогресс-бара Yad"
indicate_restorebackup(){
yad --progress --title="         Идёт восстановление бэкапа.." --auto-close --pulsate --button=Отмена:35 --progress-text="ждём.." --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=400x70 &
sleep 1

# цикл, пока не завершится распаковка(процесс $pid1)
while test -d /proc/$pid1/
do
sleep 0.5
if ! wmctrl -l | grep -e '         Идёт восстановление бэкапа..' ;then  #если принудительно закрыть окно Yad (кнопка "Отмена"), то
kill -15 $pid1
break
fi
done

#Закрытие окна Yad
wmctrl -F -c '         Идёт восстановление бэкапа..'
}





backup=$(yad --list --column="                 Что сделать?":tip "Сохранить бэкап" "Восстановить бэкап" \
--title "fsaBackup" \
    --text "" \
--window-icon=/usr/local/icons/app/yad/fsaBackup.png \
--geometry=300x300 \
--button="gtk-cancel:35" --button="gtk-ok:0" \
)

if [[ $? = 35 || $? = 252 ]]; then
exit
fi


# Удаление последнего символа | , т.к yad косячно добавляет его в конце
if [[ "$backup" == *\| ]]; then
backup=${backup::-1}
fi



if [[ $backup == "Сохранить бэкап" ]]; then

#вызов функции
select_option_backup


if [[ $option == "Бэкап полный" ]]; then

#вызов функций
select_systemdrive
select_homedrive

#Отмонтирование смонтированных дисков
if mount|grep /dev/"$systemdrive" ;then
umount /dev/"$systemdrive"
fi

if mount|grep /dev/"$homedrive" ;then
umount /dev/"$homedrive"
fi

#вызов функции
select_dir

#Проверка
yad --title="fsaBackup" --text="\n\nСистемный каталог:  /dev/"$systemdrive"  \n\nДомашний каталог:  /dev/"$homedrive" \n\nКаталог для сохранения бэкапа:  "$dirplace" \n\n\nЕсли всё правильно выбрано, то жмём ОК. " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=600x300 --button="gtk-cancel:35" --button="gtk-ok:0"

if [[ $? = 35 || $? = 252 ]]; then
exit
fi


#Сохранение полного бэкапа (индикация процесса с помощью yad)
fsarchiver savefs "$dirplace"/full-backup.fsa /dev/"$systemdrive" /dev/"$homedrive" &
pid1=$!

#вызов функции
indicate_savebackup

        yad --title="fsaBackup" --text="\n  Сохранение полного бэкапа \n  успешно завершено!  " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=300x100 --button="gtk-ok:0"

        exit

fi



if [[ $option == "Бэкап системного раздела" ]]; then

#вызов функции
select_systemdrive


#Отмонтирование смонтированного диска
if mount|grep /dev/"$systemdrive" ;then
umount /dev/"$systemdrive"
fi

#вызов функции
select_dir


#Проверка
yad --title="fsaBackup" --text="\n\nСистемный каталог:  /dev/"$systemdrive" \n\nКаталог для сохранения бэкапа:  "$dirplace" \n\n\nЕсли всё правильно выбрано, то жмём ОК. " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=600x300 --button="gtk-cancel:35" --button="gtk-ok:0"

if [[ $? = 35 || $? = 252 ]]; then
exit
fi


#Сохранение бэкапа системного раздела (индикация процесса с помощью yad)
fsarchiver savefs "$dirplace"/system-backup.fsa /dev/"$systemdrive" &
pid1=$!

#вызов функции
indicate_savebackup

        yad --title="fsaBackup" --text="\n  Сохранение бэкапа системного \n  раздела успешно завершено!  " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=300x100 --button="gtk-ok:0"

        exit

fi



if [[ $option == "Бэкап домашнего раздела" ]]; then

#вызов функции
select_homedrive


#Отмонтирование смонтированного диска
if mount|grep /dev/"$homedrive" ;then
umount /dev/"$homedrive"
fi

#вызов функции
select_dir

#Проверка
yad --title="fsaBackup" --text="\n\nДомашний каталог:  /dev/"$homedrive" \n\nКаталог для сохранения бэкапа:  "$dirplace" \n\n\nЕсли всё правильно выбрано, то жмём ОК. " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=600x300 --button="gtk-cancel:35" --button="gtk-ok:0"

if [[ $? = 35 || $? = 252 ]]; then
exit
fi


#Сохранение бэкапа домашнего раздела (индикация процесса с помощью yad)
fsarchiver savefs "$dirplace"/home-backup.fsa /dev/"$homedrive" &
pid1=$!

#вызов функции
indicate_savebackup

        yad --title="fsaBackup" --text="\n  Сохранение бэкапа домашнего \n  раздела успешно завершено!  " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=300x100 --button="gtk-ok:0"

        exit

fi


fi



if [[ $backup == "Восстановить бэкап" ]]; then

#вызов функции
select_option_backup

if [[ $option == "Бэкап полный" ]]; then

#вызов функций
select_systemdrive
select_homedrive

#Отмонтирование смонтированных дисков
if mount|grep /dev/"$systemdrive" ;then
umount /dev/"$systemdrive"
fi

if mount|grep /dev/"$homedrive" ;then
umount /dev/"$homedrive"
fi

#вызов функции
select_file

#Проверка
yad --title="fsaBackup" --text="\n\nСистемный каталог:  /dev/"$systemdrive"  \n\nДомашний каталог:  /dev/"$homedrive" \n\nФайл бэкапа:  "$filebackup" \n\n\nЕсли всё правильно выбрано, то жмём ОК. " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=600x300 --button="gtk-cancel:35" --button="gtk-ok:0"

if [[ $? = 35 || $? = 252 ]]; then
exit
fi


#Восстановление полного бэкапа (индикация процесса с помощью yad)
fsarchiver restfs "$filebackup" id=0,dest=/dev/"$systemdrive" id=1,dest=/dev/"$homedrive" &
pid1=$!

#вызов функции
indicate_restorebackup

        yad --title="fsaBackup" --text="\n  Восстановление полного бэкапа \n  успешно завершено!  " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=300x100 --button="gtk-ok:0"

        exit

fi


if [[ $option == "Бэкап системного раздела" ]]; then

#вызов функции
select_systemdrive

#Отмонтирование смонтированного диска
if mount|grep /dev/"$systemdrive" ;then
umount /dev/"$systemdrive"
fi

#вызов функции
select_file

#Проверка
yad --title="fsaBackup" --text="\n\nСистемный каталог:  /dev/"$systemdrive"  \n\nФайл бэкапа:  "$filebackup" \n\n\nЕсли всё правильно выбрано, то жмём ОК. " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=600x300 --button="gtk-cancel:35" --button="gtk-ok:0"

if [[ $? = 35 || $? = 252 ]]; then
exit
fi


#Восстановление бэкапа системного раздела (индикация процесса с помощью yad)
fsarchiver restfs "$filebackup" id=0,dest=/dev/"$systemdrive" &
pid1=$!

#вызов функции
indicate_restorebackup

        yad --title="fsaBackup" --text="\n  Восстановление бэкапа системного \n  раздела успешно завершено!  " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=300x100 --button="gtk-ok:0"

        exit

fi


if [[ $option == "Бэкап домашнего раздела" ]]; then

#вызов функции
select_homedrive

#Отмонтирование смонтированного диска
if mount|grep /dev/"$homedrive" ;then
umount /dev/"$homedrive"
fi

#вызов функции
select_file

#Проверка
yad --title="fsaBackup" --text="\n\nДомашний каталог:  /dev/"$homedrive" \n\nФайл бэкапа:  "$filebackup" \n\n\nЕсли всё правильно выбрано, то жмём ОК. " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=600x300 --button="gtk-cancel:35" --button="gtk-ok:0"

if [[ $? = 35 || $? = 252 ]]; then
exit
fi


#Восстановление бэкапа домашнего раздела (индикация процесса с помощью yad)
fsarchiver restfs "$filebackup" id=0,dest=/dev/"$homedrive" &
pid1=$!

#вызов функции
indicate_restorebackup

        yad --title="fsaBackup" --text="\n  Восстановление бэкапа домашнего \n  раздела успешно завершено!  " --window-icon=/usr/local/icons/app/yad/empty.png --image=/usr/local/icons/app/yad/fsaBackup.png --geometry=300x100 --button="gtk-ok:0"

        exit

fi


fi


Ложим в /usr/share/applications/ или в ~/.local/share/applications/ значок запуска fsaBackup.desktop:
[Desktop Entry]
Name=fsaBackup
Comment=Резервное копирование и восстановление системы
Exec=bash -c 'pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /opt/fsaBackup/fsaBackup.sh'
Type=Application
Categories=System
Icon=/opt/fsaBackup/fsaBackup.png

Не забываем дать права на исполнение /opt/fsaBackup/fsaBackup.sh
Ну в общем-то и всё! В меню whisker находим fsaBackup и запускаем его. Дальше всё интуитивно понятно.
Ах да, чуть не забыл. Т.к. бэкапить нужно действующую систему, то запускать всё это хозяйство необходимо из под live-системы, чтобы архивируемые диски были отмонтированы. Варианты как делать настроенную live-систему были представлены здесь на форуме. Я предлагал wasta-remastersys, а уважаемый el guahiro с помощью systemback. На крайняк можно загрузиться и с голой live-USB (изкоропки), по-быстрому установить fsarchiver и yad, и запустить скрипт:
sudo /путь/к/fsaBackup.sh










20
Обо всём / С Новым годом 2023!!!
Последний ответ от butjapka - декабря 31, 2022, 11:54:35
Поздравляем всех форумчан и гостей форума с Новым годом! Желаем, чтобы в этом году все поставленные цели были достигнуты, проблемы решены, а сюрпризы были только приятными. Пусть этот год будет веселым, беззаботным и благополучным!

Страницы 1 2 3 4 ... 10