52 lines
1.4 KiB
Bash
Executable File
52 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Define variables for the script
|
|
USER_NAME="devuan"
|
|
auto_login="no"
|
|
SLIM_CONFIG="/etc/slim.conf"
|
|
DEST="/home/${USER_NAME}"
|
|
|
|
# --- Create the .xinitrc ---
|
|
conf_print_xinitrc() {
|
|
cat <<'EOF'
|
|
# 1. Define variables
|
|
DEFAULT_SESSION=enlightenment_start
|
|
session=${1:-$DEFAULT_SESSION}
|
|
|
|
# 2. Run helper scripts
|
|
if [ -d "${HOME}/.xinitrc.d" ]; then
|
|
for f in "${HOME}/.xinitrc.d/"*; do
|
|
[ -x "$f" ] && . "$f"
|
|
done
|
|
unset f
|
|
fi
|
|
|
|
# 3. Export to DBus
|
|
if command -v dbus-update-activation-environment >/dev/null; then
|
|
dbus-update-activation-environment --systemd --all
|
|
fi
|
|
|
|
# 4. EXECUTE the session
|
|
case $session in
|
|
enlightenment) exec enlightenment_start ;;
|
|
xfce|xfce4) exec startxfce4 ;;
|
|
*) exec $session ;;
|
|
esac
|
|
EOF
|
|
}
|
|
|
|
# Ensure the destination exists and write the file
|
|
mkdir -p "${DEST}"
|
|
conf_print_xinitrc >"${DEST}/.xinitrc"
|
|
chown "${USER_NAME}:${USER_NAME}" "${DEST}/.xinitrc"
|
|
chmod +x "${DEST}/.xinitrc"
|
|
|
|
# --- Configure SLiM ---
|
|
# Note: Using '|' as a sed delimiter to avoid conflicts with path slashes
|
|
sed -i "s|^.*auto_login.*|auto_login ${auto_login}|" "${SLIM_CONFIG}"
|
|
sed -i "s|^.*login_cmd.*|login_cmd exec /bin/bash -login ~/.xinitrc %session|" "${SLIM_CONFIG}"
|
|
sed -i "s|^.*default_user.*|default_user ${USER_NAME}|" "${SLIM_CONFIG}"
|
|
|
|
# Comment out sessiondir to force SLiM to use your .xinitrc logic instead of /usr/share/xsessions
|
|
sed -i "s|^sessiondir|# sessiondir|" "${SLIM_CONFIG}"
|