File rosagram-wrapper.sh of Package rosagram-docker
#!/bin/bash
# Wrapper скрипт для запуска Rosagram
ROSAGRAM_DIR="/opt/rosagram"
LOG_DIR="/var/log/rosagram-docker"
STATUS_FILE="/var/lib/rosagram-docker/status"
BUILD_SCRIPT="/usr/bin/rosagram-build"
LOG_FILE="$LOG_DIR/rosagram.log"
# Создаем директорию для логов если нет
mkdir -p "$LOG_DIR"
# Функция логирования
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
# Проверка статуса сборки
check_build_status() {
if [ ! -f "$STATUS_FILE" ]; then
echo "not_installed"
else
cat "$STATUS_FILE"
fi
}
# Проверка наличия собранного Rosagram
if [ ! -f "$ROSAGRAMA_DIR/Telegram/Telegram" ] && [ ! -f "$ROSAGRAMA_DIR/rosagram" ]; then
STATUS=$(check_build_status)
if [ "$STATUS" = "building" ]; then
log "Rosagram уже собирается в другом процессе"
log "Отслеживайте прогресс: tail -f $LOG_DIR/build.log"
exit 1
fi
if [ "$STATUS" = "failed" ]; then
log "Предыдущая сборка завершилась ошибкой"
log "Запустите принудительную пересборку:"
log " sudo rosagram-build --clean"
log " rosagram"
exit 1
fi
# Запускаем сборку
log "=========================================="
log "Первый запуск Rosagram"
log "=========================================="
log "Начинаем сборку в Docker контейнере..."
log "Это займет 5-10 минут."
log "Статус: tail -f $LOG_DIR/build.log"
# Запускаем сборку
"$BUILD_SCRIPT" 2>&1 | tee -a "$LOG_DIR/build.log"
BUILD_RESULT=${PIPESTATUS[0]}
if [ $BUILD_RESULT -ne 0 ] || [ ! -f "$ROSAGRAMA_DIR/Telegram/Telegram" ]; then
log "❌ Ошибка сборки!"
echo "failed" > "$STATUS_FILE"
exit 1
fi
log "✅ Сборка успешно завершена!"
echo "installed" > "$STATUS_FILE"
# Обновляем кэш KDE
if command -v kbuildsycoca6 &>/dev/null; then
kbuildsycoca6 --noincremental &>/dev/null || true
fi
log "Rosagram готов к запуску!"
fi
# Определяем путь к исполняемому файлу
if [ -f "$ROSAGRAMA_DIR/rosagram" ]; then
ROSAGRAM_BIN="$ROSAGRAMA_DIR/rosagram"
elif [ -f "$ROSAGRAMA_DIR/Telegram/Telegram" ]; then
ROSAGRAM_BIN="$ROSAGRAMA_DIR/Telegram/Telegram"
else
log "ERROR: Исполняемый файл Rosagram не найден!"
exit 1
fi
# Настройки для KDE Plasma 6
export XDG_CURRENT_DESKTOP="KDE"
export XDG_SESSION_DESKTOP="KDE"
export XDG_SESSION_TYPE="wayland"
# Для Wayland
if [ "$XDG_SESSION_TYPE" = "wayland" ] || [ -n "$WAYLAND_DISPLAY" ]; then
export WAYLAND_DISPLAY=${WAYLAND_DISPLAY:-wayland-0}
export MOZ_ENABLE_WAYLAND=1 # Для совместимости с некоторыми библиотеками
log "Запуск в режиме Wayland"
fi
# Для корректного отображения в KDE
export QT_QPA_PLATFORM="wayland;xcb" # Пробуем Wayland, падаем на X11
export QT_STYLE_OVERRIDE="breeze"
export QT_PLUGIN_PATH="/usr/lib64/qt5/plugins:/usr/lib64/qt6/plugins"
# Запускаем Rosagram
log "Запуск Rosagram с параметрами: $*"
exec "$ROSAGRAM_BIN" "$@"