#!/bin/bash
# AUTHOR: (c) Aalexeey :-)
# NAME: Packages_list
# DESCRIPTION: GUI скрипт для dpkg создающий список пакетов, включая их версию, в системе
# REQUIRES: dpkg, mate-dialogs | zenity, mate-dialogs-gnome, mate-notification, libnotify-bin
# LICENSE: GNU GPL v3 (
http://www.gnu.org/licenses/gpl.html)
# WEBSITE:
http://debianforum.ru/index.php?topic=9141.0# ICON_USED: /usr/share/icons/gnome/16x16/actions/edit-paste.png
case $LANG in
ru* )
# Russian (ru-RU)
util="Packages_list"
choose="Выбор папки и имени списка пакетов..."
attention="Внимание"
list_build=" Создание списка deb пакетов...."
cancel="Каталог не выбран....\nPackages_list остановлен!"
job_done="Список deb пакетов успешно создан в"
job_canceled="Работа скрипта прервана, списка нет!"
job_failed="Что-то пошло не так, списка нет!";;
esac
dpkg -l | cut -c 5- | sed -n '/=======/,$p' | sed -e 's/:amd64 / /' -e '1s/-//' -e '1s/-.*//' > /tmp/packages_tmp.txt;
packages_width=$(sed -n '1p' /tmp/packages_tmp.txt | wc -m);
save_file=$(zenity --file-selection --save --confirm-overwrite --title="$choose");
if [ "$?" = 1 ]; then
zenity --info --title="$attention" --text="$cancel" &
notify-send "$util" "$job_canceled"
exit 0;
else
file=$(basename "$save_file");
cat /tmp/packages_tmp.txt | cut -c -"$packages_width" | sed -e '1d' -e 's/[[:space:]]*$//' > $save_file;
sleep 1
rm /tmp/packages_tmp.txt;
i=0
(while [ $((i <= 100)) '=' 1 ]
do
echo $i
sleep 0.1
i=$((i + 5))
done) | zenity --progress --no-cancel --text="$list_build" --auto-close --width=300
if [ -f "$save_file" ]; then
notify-send "$util" "$job_done\n<b>$file</b>"
else
notify-send "$util" "$job_failed"
fi
fi