xworkspace-console/scripts/switch-desktop-mode.sh
Haitao Pan 2184c9fa09 fix: improve switch-desktop-mode.sh for proper config deployment
- Remove dest dir before copy to avoid stale config files
- Copy xworkspace-shell.service and .desktop for minimal mode
- Copy XFCE channel configs to proper xfce-perchannel-xml location
2026-06-10 11:52:53 +08:00

66 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
CONFIG_FILE="${ROOT_DIR}/config/xworkspace-desktop.yaml"
MODE="${1:-xfce}"
case "${MODE}" in
xfce)
XFCE_DIR="${HOME}/.config/xfce4"
DEST_DIR="${XFCE_DIR}"
;;
minimal|xface-minimal)
XFCE_DIR="${ROOT_DIR}/config/xface-minimal"
DEST_DIR="${HOME}/.config/xfce4"
;;
*)
echo "Unknown mode: ${MODE}" >&2
echo "Usage: $0 [xfce|minimal]" >&2
exit 1
;;
esac
mkdir -p "${DEST_DIR}"
mkdir -p "${HOME}/.config/xfce4/panel"
mkdir -p "${HOME}/.config/xfce4/xfconf/xfce-perchannel-xml"
mkdir -p "${HOME}/.config/autostart"
mkdir -p "${HOME}/.config/systemd/user"
echo "Setting up XWorkspace Desktop in ${MODE} mode..."
cp -R "${ROOT_DIR}/config/systemd/." "${HOME}/.config/systemd/user/"
if [[ -d "${XFCE_DIR}" ]]; then
rm -rf "${DEST_DIR}" && mkdir -p "${DEST_DIR}"
cp -R "${XFCE_DIR}/." "${DEST_DIR}/"
fi
cp -R "${ROOT_DIR}/config/autostart/." "${HOME}/.config/autostart/"
if [[ "${MODE}" == "minimal" || "${MODE}" == "xface-minimal" ]]; then
cp "${XFCE_DIR}/xworkspace-shell.service" "${HOME}/.config/systemd/user/" 2>/dev/null || true
cp "${XFCE_DIR}/xworkspace-shell.desktop" "${HOME}/.config/autostart/" 2>/dev/null || true
mkdir -p "${HOME}/.config/xfce4/xfconf/xfce-perchannel-xml"
[[ -f "${DEST_DIR}/panel.xml" ]] && cp "${DEST_DIR}/panel.xml" "${HOME}/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml"
[[ -f "${DEST_DIR}/xfwm4.xml" ]] && cp "${DEST_DIR}/xfwm4.xml" "${HOME}/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml"
[[ -f "${DEST_DIR}/desktop-icons.xml" ]] && cp "${DEST_DIR}/desktop-icons.xml" "${HOME}/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml"
fi
python3 - "${HOME}/.config/autostart/xworkspace-console.desktop" <<'PY'
import sys
from pathlib import Path
desktop_file = Path(sys.argv[1])
text = desktop_file.read_text()
desktop_file.write_text(text.replace("http://127.0.0.1:17000", "http://127.0.0.1:17000"))
PY
if command -v systemctl >/dev/null 2>&1; then
systemctl --user daemon-reload || true
fi
echo "XWorkspace Desktop ${MODE} mode configured."
echo "To apply: logout and login, or run 'xfce4-session --replace' for immediate effect."