# ============================================================================ # DarkForge Linux — User Shell Profile (~/.zprofile) # ============================================================================ # Sourced on login to zsh. Auto-starts the full desktop session on tty1: # D-Bus user session → PipeWire audio → polkit agent → dwl compositor # ============================================================================ # --- XDG directories -------------------------------------------------------- export XDG_SESSION_TYPE=wayland export XDG_RUNTIME_DIR="/run/user/$(id -u)" export XDG_CONFIG_HOME="${HOME}/.config" export XDG_CACHE_HOME="${HOME}/.cache" export XDG_DATA_HOME="${HOME}/.local/share" export XDG_STATE_HOME="${HOME}/.local/state" export XDG_CURRENT_DESKTOP=dwl # --- NVIDIA Wayland environment --------------------------------------------- export GBM_BACKEND=nvidia-drm export __GLX_VENDOR_LIBRARY_NAME=nvidia export WLR_NO_HARDWARE_CURSORS=1 export LIBVA_DRIVER_NAME=nvidia # Hardware video decoding (Firefox, mpv) export MOZ_ENABLE_WAYLAND=1 # Firefox: use native Wayland backend export QT_QPA_PLATFORM=wayland # Qt applications: use Wayland backend export SDL_VIDEODRIVER=wayland # SDL2 games: prefer Wayland (falls back to X11 via XWayland) # --- Seatd environment (seat manager for wlroots) -------------------------- export LIBSEAT_BACKEND=seatd # Tell wlroots/dwl to use seatd for device access # --- Ensure XDG runtime directory exists ------------------------------------ if [ ! -d "${XDG_RUNTIME_DIR}" ]; then mkdir -p "${XDG_RUNTIME_DIR}" chmod 700 "${XDG_RUNTIME_DIR}" fi # --- Auto-start Wayland compositor on tty1 ---------------------------------- if [ -z "${WAYLAND_DISPLAY}" ] && [ "$(tty)" = "/dev/tty1" ]; then # Start user D-Bus session (required by PipeWire, polkit, desktop apps) if [ -z "${DBUS_SESSION_BUS_ADDRESS}" ]; then eval "$(dbus-launch --sh-syntax)" export DBUS_SESSION_BUS_ADDRESS fi # Start PipeWire audio stack (runs as user, not system service) pipewire & sleep 0.2 pipewire-pulse & # PulseAudio compatibility server — needed by Firefox, Steam, most apps wireplumber & # Session manager — handles audio routing and device management # Start polkit authentication agent (for GUI password prompts) lxqt-policykit-agent &>/dev/null & # Start the dwl Wayland compositor # -s "startup_cmd" runs a command after dwl starts (opens a terminal) exec dwl 2>/dev/null fi