#!/usr/bin/env bash # Desktop taskserv preparation script set -euo pipefail log() { echo "[$(date +'%Y-%m-%d %H:%M:%S')] PREPARE: $1" } # Create desktop user home directory structure prepare_user_directories() { local desktop_user="${DESKTOP_USER:-desktop}" local desktop_home="${DESKTOP_HOME:-/home/$desktop_user}" log "Preparing directories for user $desktop_user" # Create standard user directories mkdir -p "$desktop_home"/{Desktop,Documents,Downloads,Pictures,Videos,Music} mkdir -p "$desktop_home"/.config mkdir -p "$desktop_home"/.local/{bin,share} # Set proper ownership if user exists if id "$desktop_user" &>/dev/null; then chown -R "$desktop_user:$desktop_user" "$desktop_home" fi } # Download application assets download_assets() { log "Downloading application assets..." # Create assets directory mkdir -p /tmp/desktop-assets # Download Zed editor GPG key for verification if command -v curl >/dev/null 2>&1; then curl -fsSL https://zed.dev/install.sh > /tmp/desktop-assets/zed-install.sh chmod +x /tmp/desktop-assets/zed-install.sh fi } # Prepare configuration templates prepare_configs() { log "Preparing configuration templates..." # Create XFCE configuration template mkdir -p /tmp/desktop-configs/xfce4 cat > /tmp/desktop-configs/xfce4/desktop.xml << 'EOF' EOF # Create application menu template cat > /tmp/desktop-configs/applications.menu << 'EOF' Applications X-GNOME-Menu-Applications.directory Development Development.directory Development Graphics Graphics.directory Graphics Internet Network.directory Network Office Office.directory Office System System-Tools.directory System EOF } # Main preparation function main() { log "Starting desktop taskserv preparation..." prepare_user_directories download_assets prepare_configs log "Desktop taskserv preparation completed!" } # Run main function if script is executed directly if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then main "$@" fi