Commit 4a706bfa authored by Roman Alifanov's avatar Roman Alifanov

Initial commit

parents
[submodule "ximper-workroom"]
path = ximper-workroom
url = https://gitlab.eterfund.ru/ximperlinux/ximper-workroom
MIT License
Copyright (c) 2024 Roman Alifanov
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
#!/bin/bash
# Проверяем, установлен ли yad
if ! command -v yad &> /dev/null; then
echo "Необходимо установить yad. Запустите 'sudo apt-get install yad' для установки."
exit 1
fi
if command -v pkexec &> /dev/null; then
SUDO_CMD="pkexec"
else
echo "Не удалось найти подходящий метод выполнения команд с привилегиями root."
exit 1
fi
SCRIPT_DIR=$(dirname "$(realpath "$0")")
if [ "$SCRIPT_DIR" == "/bin" ] || [ "$SCRIPT_DIR" == "/usr/bin" ]; then
DIRECTORY_WITH_INFO="/usr/share/ximper-desktop-environment-installer/DE/"
else
DIRECTORY_WITH_INFO="$(dirname "$(realpath "$0")")/../data/DE/"
fi
source "$(dirname "$(realpath "$0")")/../ximper-workroom/ximper-yad-respondent-func.sh"
pkg-installed-check() {
if rpm -q $1 &> /dev/null; then
echo "TRUE"
else
echo "FALSE"
fi
}
de-dirs-list() {
local DIR
for DIR in "$DIRECTORY_WITH_INFO"*/; do
# Проверка, что это директория
if [ -d "$DIR" ]; then
echo "$DIR"
fi
done
}
de-info-and-status() {
local DE
local DE_NAME
local DE_DESCRIPTION
local DE_PKGS_LIST
local DE_RANDOM
local -n DE_INFO=$1
for DE in $(de-dirs-list); do
DE_RANDOM=$RANDOM
DE_NAME=$(basename "$DE")
DE_DESCRIPTION=$(xmllint --xpath 'string(//de-info/description/text())' "$DE/info.xml" | sed 's/^[ \t]*//;1d')
DE_PKGS_LIST=$(xmllint --xpath 'normalize-space(de-info/packages)' "$DE/info.xml")
DE_INFO+=("$DE_RANDOM" "FALSE" "$DE_NAME" "$DE_DESCRIPTION")
done
}
de-info-and-status DE_INFORMATION
YAD_RANDOM=$RANDOM
INSTALL_LIST=$(
yad --list --tree --checklist \
--title="ximper-desktop-environment-installer" --class="ximper-desktop-environment-installer" \
--width=700 --height=500 \
--separator='|' --print-column=2 \
--column=check --column=Имя:TEXT --column=Описание:TEXT \
"${DE_INFORMATION[@]}" | tr -d '|'
)
# Получаем PID окна yad
YAD_PID=$!
echo "$INSTALL_LIST"
for DE in $INSTALL_LIST; do
LIST_OF_PKGS_TO_INSTALL+="$(xmllint --xpath 'normalize-space(de-info/packages)' "$DIRECTORY_WITH_INFO$DE/info.xml") "
done
if [ -z "$LIST_OF_PKGS_TO_INSTALL" ]; then
echo "Нечего устанавливать"
else
ximper_respondent "pkexec epmi $LIST_OF_PKGS_TO_INSTALL " "$(dirname "$(realpath "$0")")/..//ximper-workroom/testlog" respondent respondent | sed -u 's/^/# /' | yad \
--title="Установка пакетов" \
--progress --width=800 --height=500 \
--enable-log="Лог" --log-expanded --log-on-top \
--auto-kill --auto-close
fi
# Завершаем окно yad
# kill ${YAD_PID}
<de-info>
<description>
GNOME (GNU Network Object Model Environment) — это популярная среда рабочего стола для
Unix-подобных систем. Она предлагает пользователю интуитивно понятный и функциональный
интерфейс с открытым исходным кодом.
</description>
<packages>
gnome-super-mininal
</packages>
</de-info>
\ No newline at end of file
<de-info>
<description>
Hyprland предоставляет новейшие функции Wayland, динамическую разбивку на плитки,
все удобства для глаз, мощные плагины и многое другое.
</description>
<packages>
hyprland hyprshot
wofi waybar wlogout
pwvucontrol kitty mako
playerctl
</packages>
</de-info>
\ No newline at end of file
Subproject commit 3e03f786070017b2947fda5b580e91768f3f9ca1
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment