saikyo-packages-src/saikyo-branding/assets/bin/saikyo-first-login-kde

186 lines
6.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
set -euo pipefail
MARK_DIR="${XDG_CONFIG_HOME:-${HOME}/.config}/saikyo-os"
MARK_FILE="${MARK_DIR}/first-login-kde.done"
WALLPAPER_PATH="/usr/share/wallpapers/Saikyo/contents/images/saikyo-default.svg"
LOGO_PATH="/usr/share/saikyo-os/logos/saikyo-logo.svg"
AVATAR_PNG="/usr/share/icons/hicolor/512x512/apps/distributor-logo.png"
COLOR_SCHEME="SaikyoDark"
mkdir -p "${MARK_DIR}" 2>/dev/null || true
if [[ -f "${MARK_FILE}" ]]; then
exit 0
fi
if [[ ! -r "${WALLPAPER_PATH}" ]]; then
exit 0
fi
have_cmd() { command -v "$1" >/dev/null 2>&1; }
apply_look_and_feel() {
if have_cmd lookandfeeltool; then
lookandfeeltool -a org.saikyo.desktop >/dev/null 2>&1 || true
elif have_cmd lookandfeeltool5; then
lookandfeeltool5 -a org.saikyo.desktop >/dev/null 2>&1 || true
fi
}
apply_color_scheme() {
if have_cmd plasma-apply-colorscheme; then
plasma-apply-colorscheme "${COLOR_SCHEME}" >/dev/null 2>&1 || true
fi
if have_cmd kwriteconfig5; then
kwriteconfig5 --file kdeglobals --group General --key ColorScheme "${COLOR_SCHEME}" >/dev/null 2>&1 || true
elif have_cmd kwriteconfig6; then
kwriteconfig6 --file kdeglobals --group General --key ColorScheme "${COLOR_SCHEME}" >/dev/null 2>&1 || true
fi
}
restart_plasma_shell() {
if have_cmd kquitapp5 && have_cmd kstart5; then
kquitapp5 plasmashell >/dev/null 2>&1 || true
nohup kstart5 plasmashell >/dev/null 2>&1 &
elif have_cmd kquitapp6 && have_cmd kstart6; then
kquitapp6 plasmashell >/dev/null 2>&1 || true
nohup kstart6 plasmashell >/dev/null 2>&1 &
fi
}
set_wallpaper() {
local qdbus_cmd="$1"
"${qdbus_cmd}" org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript "
var Desktops = desktops();
for (i = 0; i < Desktops.length; i++) {
d = Desktops[i];
d.wallpaperPlugin = 'org.kde.image';
d.currentConfigGroup = ['Wallpaper', 'org.kde.image', 'General'];
d.writeConfig('Image', 'file://${WALLPAPER_PATH}');
}
" >/dev/null 2>&1 || return 1
return 0
}
if have_cmd qdbus; then
set_wallpaper qdbus || true
elif have_cmd qdbus6; then
set_wallpaper qdbus6 || true
fi
apply_color_scheme
apply_look_and_feel
restart_plasma_shell || true
add_panel_widgets_and_pins() {
local qdbus_cmd="$1"
"${qdbus_cmd}" org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript "
function firstPanel() {
var ps = panels();
if (!ps || ps.length === 0) return null;
return ps[0];
}
function ensureWidget(panel, pluginId) {
try {
var ws = panel.widgets();
for (var i = 0; i < ws.length; i++) {
if (ws[i].type === pluginId) return;
}
panel.addWidget(pluginId);
} catch (e) {
}
}
function ensureTaskManagerPins(panel, launchersStr) {
try {
var ws = panel.widgets();
for (var i = 0; i < ws.length; i++) {
if (ws[i].type === 'org.kde.plasma.taskmanager') {
var tm = ws[i];
tm.currentConfigGroup = ['General'];
tm.writeConfig('launchers', launchersStr);
return;
}
}
} catch (e) {
}
}
var p = firstPanel();
if (!p) return;
// License status widget
ensureWidget(p, 'org.saikyo.license');
// Pinned launchers in task manager
var launchers = [
'applications:org.kde.discover.desktop',
'applications:systemsettings.desktop',
'applications:saikyo-license.desktop'
].join(',');
ensureTaskManagerPins(p, launchers);
" >/dev/null 2>&1 || true
}
if have_cmd qdbus; then
add_panel_widgets_and_pins qdbus || true
elif have_cmd qdbus6; then
add_panel_widgets_and_pins qdbus6 || true
fi
desktop_dir="${HOME}/Desktop"
if [[ -r "${HOME}/.config/user-dirs.dirs" ]]; then
d=$(grep -E '^XDG_DESKTOP_DIR=' "${HOME}/.config/user-dirs.dirs" | head -n 1 | cut -d= -f2- | tr -d '"')
d=${d//\$HOME/${HOME}}
if [[ -n "${d}" ]]; then desktop_dir="${d}"; fi
fi
# Ensure KWallet doesn't require a pre-existing GPG key by default.
# This prevents first-run failures in apps that request KWallet integration.
mkdir -p "${XDG_CONFIG_HOME:-${HOME}/.config}" 2>/dev/null || true
{
echo "[Wallet]"
echo "UseGpg=false"
} > "${XDG_CONFIG_HOME:-${HOME}/.config}/kwalletrc" 2>/dev/null || true
# Set a default user avatar for new sessions (shown in KDE menus/panel).
# Prefer PNG (KDE reliably picks it up); fallback to SVG.
if [[ -r "${AVATAR_PNG}" ]]; then
cp -f "${AVATAR_PNG}" "${HOME}/.face.icon" 2>/dev/null || true
chmod 0644 "${HOME}/.face.icon" 2>/dev/null || true
elif [[ -r "${LOGO_PATH}" ]]; then
cp -f "${LOGO_PATH}" "${HOME}/.face.icon" 2>/dev/null || true
chmod 0644 "${HOME}/.face.icon" 2>/dev/null || true
fi
mkdir -p "${desktop_dir}" 2>/dev/null || true
if [[ -r /usr/share/applications/saikyo-license.desktop ]]; then
cp -f /usr/share/applications/saikyo-license.desktop "${desktop_dir}/SAIKYO OS License.desktop" 2>/dev/null || true
chmod 0755 "${desktop_dir}/SAIKYO OS License.desktop" 2>/dev/null || true
fi
if [[ -r /usr/share/applications/org.kde.discover.desktop ]]; then
cp -f /usr/share/applications/org.kde.discover.desktop "${desktop_dir}/SAIKYO Discover.desktop" 2>/dev/null || true
chmod 0755 "${desktop_dir}/SAIKYO Discover.desktop" 2>/dev/null || true
fi
if [[ -r /usr/share/applications/systemsettings.desktop ]]; then
cp -f /usr/share/applications/systemsettings.desktop "${desktop_dir}/System Settings.desktop" 2>/dev/null || true
chmod 0755 "${desktop_dir}/System Settings.desktop" 2>/dev/null || true
fi
if have_cmd kdialog; then
msg="Добро пожаловать в SAIKYO OS.\n\nНа этой системе действует пробный период 7 дней.\nПосле истечения пробного периода потребуется полная активация лицензии.\n\nРекомендуется выполнить активацию заранее."
if kdialog --title "SAIKYO OS" --icon "${LOGO_PATH}" --yes-label "Открыть активацию" --no-label "Позже" --yesno "${msg}" 2>/dev/null; then
if have_cmd saikyo-license-kde; then
nohup saikyo-license-kde >/dev/null 2>&1 &
fi
fi
fi
touch "${MARK_FILE}" 2>/dev/null || true
exit 0