diff options
Diffstat (limited to 'raveos-hyprland-theme/raveos-hyprland-apply.sh')
| -rw-r--r-- | raveos-hyprland-theme/raveos-hyprland-apply.sh | 259 |
1 files changed, 160 insertions, 99 deletions
diff --git a/raveos-hyprland-theme/raveos-hyprland-apply.sh b/raveos-hyprland-theme/raveos-hyprland-apply.sh index e91b900..6d7ab85 100644 --- a/raveos-hyprland-theme/raveos-hyprland-apply.sh +++ b/raveos-hyprland-theme/raveos-hyprland-apply.sh @@ -19,24 +19,24 @@ xdg_lang="" xdg_lang="${xdg_lang%%.*}"; xdg_lang="${xdg_lang%%_*}" case "$xdg_lang" in hu) - XDG_DESKTOP="Asztal"; XDG_DOWNLOAD="Letöltések"; XDG_TEMPLATES="Sablonok" + XDG_DESKTOP="Asztal"; XDG_DOWNLOAD="Letöltések"; XDG_TEMPLATES="Sablonok" XDG_PUBLIC="Nyilvános"; XDG_DOCUMENTS="Dokumentumok"; XDG_MUSIC="Zenék" - XDG_PICTURES="Képek"; XDG_VIDEOS="Videók"; XDG_PROJECTS="Projektek" - BM_DOCUMENTS="Dokumentumok"; BM_MUSIC="Zen%C3%A9k"; BM_PICTURES="K%C3%A9pek" + XDG_PICTURES="Képek"; XDG_VIDEOS="Videók"; XDG_PROJECTS="Projektek" + BM_DOCUMENTS="Dokumentumok"; BM_MUSIC="Zen%C3%A9k"; BM_PICTURES="K%C3%A9pek" BM_VIDEOS="Vide%C3%B3k"; BM_DOWNLOAD="Let%C3%B6lt%C3%A9sek" ;; de) - XDG_DESKTOP="Schreibtisch"; XDG_DOWNLOAD="Download"; XDG_TEMPLATES="Vorlagen" - XDG_PUBLIC="Öffentlich"; XDG_DOCUMENTS="Dokumente"; XDG_MUSIC="Musik" - XDG_PICTURES="Bilder"; XDG_VIDEOS="Videos"; XDG_PROJECTS="Projekte" - BM_DOCUMENTS="Dokumente"; BM_MUSIC="Musik"; BM_PICTURES="Bilder" + XDG_DESKTOP="Schreibtisch"; XDG_DOWNLOAD="Download"; XDG_TEMPLATES="Vorlagen" + XDG_PUBLIC="Öffentlich"; XDG_DOCUMENTS="Dokumente"; XDG_MUSIC="Musik" + XDG_PICTURES="Bilder"; XDG_VIDEOS="Videos"; XDG_PROJECTS="Projekte" + BM_DOCUMENTS="Dokumente"; BM_MUSIC="Musik"; BM_PICTURES="Bilder" BM_VIDEOS="Videos"; BM_DOWNLOAD="Download" ;; *) - XDG_DESKTOP="Desktop"; XDG_DOWNLOAD="Downloads"; XDG_TEMPLATES="Templates" - XDG_PUBLIC="Public"; XDG_DOCUMENTS="Documents"; XDG_MUSIC="Music" - XDG_PICTURES="Pictures"; XDG_VIDEOS="Videos"; XDG_PROJECTS="Projects" - BM_DOCUMENTS="Documents"; BM_MUSIC="Music"; BM_PICTURES="Pictures" + XDG_DESKTOP="Desktop"; XDG_DOWNLOAD="Downloads"; XDG_TEMPLATES="Templates" + XDG_PUBLIC="Public"; XDG_DOCUMENTS="Documents"; XDG_MUSIC="Music" + XDG_PICTURES="Pictures"; XDG_VIDEOS="Videos"; XDG_PROJECTS="Projects" + BM_DOCUMENTS="Documents"; BM_MUSIC="Music"; BM_PICTURES="Pictures" BM_VIDEOS="Videos"; BM_DOWNLOAD="Downloads" ;; esac @@ -56,7 +56,8 @@ setup_xdg_dirs() { "${home}/${XDG_VIDEOS}" \ "${home}/${XDG_PROJECTS}" - cat > "${dirs}" <<EOF + if [[ ! -f "$dirs" ]]; then + cat > "${dirs}" <<EOF XDG_DESKTOP_DIR="\$HOME/${XDG_DESKTOP}" XDG_DOWNLOAD_DIR="\$HOME/${XDG_DOWNLOAD}" XDG_TEMPLATES_DIR="\$HOME/${XDG_TEMPLATES}" @@ -67,6 +68,7 @@ XDG_PICTURES_DIR="\$HOME/${XDG_PICTURES}" XDG_VIDEOS_DIR="\$HOME/${XDG_VIDEOS}" XDG_PROJECTS_DIR="\$HOME/${XDG_PROJECTS}" EOF + fi } install_gtk_bookmarks() { @@ -120,57 +122,83 @@ set_hypr_keyboard() { sed -i "s/kb_variant[[:space:]]*=[[:space:]]*\"\"/kb_variant = \"${kb_variant}\"/" "$hypr_lua" } -mkdir -p /etc/skel/.config/hypr +ensure_bashrc_hook() { + local bashrc_path="$1" + local hook_line='[[ -f /etc/profile.d/raveos-fastfetch.sh ]] && source /etc/profile.d/raveos-fastfetch.sh' + touch "$bashrc_path" + if ! grep -Fqx "$hook_line" "$bashrc_path" 2>/dev/null; then + printf '\n%s\n' "$hook_line" >> "$bashrc_path" + fi +} + +install_user_avatar() { + local user="$1" + local home="$2" + local uid="$3" + local gid="$4" + + mkdir -p /usr/share/sddm/faces + chmod 755 /usr/share/sddm/faces + + if [[ -f "${PAYLOAD}/hyprland-pp.png" ]]; then + install -Dm644 "${PAYLOAD}/hyprland-pp.png" "/usr/share/sddm/faces/${user}.face.icon" + if [[ ! -f "${home}/.face" ]]; then + install -Dm644 "${PAYLOAD}/hyprland-pp.png" "${home}/.face" + chown "${uid}:${gid}" "${home}/.face" 2>/dev/null || true + fi + if [[ ! -f "${home}/.face.icon" ]]; then + install -Dm644 "${PAYLOAD}/hyprland-pp.png" "${home}/.face.icon" + chown "${uid}:${gid}" "${home}/.face.icon" 2>/dev/null || true + fi + fi +} + +# skel konfiguracio uj felhasznaloknak +mkdir -p \ + /etc/skel/.config/hypr \ + /etc/skel/.config/dms \ + /etc/skel/.config/quickshell/pockets/DMS \ + /etc/skel/.config/DankMaterialShell \ + /etc/skel/.config/kitty \ + /etc/skel/.config/fastfetch \ + /etc/skel/.config/raveos \ + /etc/skel/.local/share/flatpak/overrides + if [[ -d "${PAYLOAD}/hypr" ]]; then cp -rf "${PAYLOAD}/hypr/." /etc/skel/.config/hypr/ - # Ha Lua konfig létezik, a legacy .conf-ot töröljük [[ -f /etc/skel/.config/hypr/hyprland.lua ]] && rm -f /etc/skel/.config/hypr/hyprland.conf set_hypr_keyboard /etc/skel/.config/hypr/hyprland.lua fi -mkdir -p /etc/skel/.config/dms \ - /etc/skel/.config/quickshell/pockets/DMS \ - /etc/skel/.config/DankMaterialShell - -DMS_SRC="${PAYLOAD}/dms" -if [[ -d "$DMS_SRC" ]]; then - cp -r "${DMS_SRC}/." /etc/skel/.config/quickshell/pockets/DMS/ - cp -r "${DMS_SRC}/." /etc/skel/.config/dms/ - if [[ -d "${DMS_SRC}/matugen/configs" ]]; then +if [[ -d "${PAYLOAD}/dms" ]]; then + cp -r "${PAYLOAD}/dms/." /etc/skel/.config/quickshell/pockets/DMS/ + cp -r "${PAYLOAD}/dms/." /etc/skel/.config/dms/ + if [[ -d "${PAYLOAD}/dms/matugen/configs" ]]; then mkdir -p /etc/skel/.config/matugen - cp -r "${DMS_SRC}/matugen/configs/." /etc/skel/.config/matugen/ + cp -r "${PAYLOAD}/dms/matugen/configs/." /etc/skel/.config/matugen/ fi fi -[[ -f "${PAYLOAD}/DankMaterialShell/settings.json" ]] && \ - install -Dm644 "${PAYLOAD}/DankMaterialShell/settings.json" \ - /etc/skel/.config/DankMaterialShell/settings.json -[[ -f "${PAYLOAD}/DankMaterialShell/.firstlaunch" ]] && \ - install -Dm644 "${PAYLOAD}/DankMaterialShell/.firstlaunch" \ - /etc/skel/.config/DankMaterialShell/.firstlaunch -mkdir -p /etc/skel/.config/kitty -[[ -d "${PAYLOAD}/kitty" ]] && cp -r "${PAYLOAD}/kitty/." /etc/skel/.config/kitty/ +if [[ -d "${PAYLOAD}/DankMaterialShell" ]]; then + cp -rf "${PAYLOAD}/DankMaterialShell/." /etc/skel/.config/DankMaterialShell/ +fi + +if [[ -d "${PAYLOAD}/kitty" ]]; then + cp -r "${PAYLOAD}/kitty/." /etc/skel/.config/kitty/ +fi -mkdir -p /etc/skel/.config/fastfetch for f in config.jsonc config-kitty.jsonc raveos-logo.png raveos-logo.txt; do [[ -f "${PAYLOAD}/fastfetch/${f}" ]] && \ install -Dm644 "${PAYLOAD}/fastfetch/${f}" "/etc/skel/.config/fastfetch/${f}" done -[[ -f "${PAYLOAD}/profile.d/raveos-fastfetch.sh" ]] && \ - install -Dm755 "${PAYLOAD}/profile.d/raveos-fastfetch.sh" /etc/profile.d/raveos-fastfetch.sh - -[[ -d "${PAYLOAD}/skel" ]] && \ - cp -r --no-preserve=ownership "${PAYLOAD}/skel/." /etc/skel/ - -setup_xdg_dirs /etc/skel -install_gtk_bookmarks /etc/skel - [[ -f "${PAYLOAD}/background.jpg" ]] && \ install -Dm644 "${PAYLOAD}/background.jpg" /etc/skel/.config/background.jpg -[[ -f "${PAYLOAD}/hyprland-pp.png" ]] && \ +if [[ -f "${PAYLOAD}/hyprland-pp.png" ]]; then install -Dm644 "${PAYLOAD}/hyprland-pp.png" /etc/skel/.face + install -Dm644 "${PAYLOAD}/hyprland-pp.png" /etc/skel/.face.icon +fi for d in gtk-3.0 gtk-4.0 nwg-look Thunar xfce4 xsettingsd Kvantum; do if [[ -d "${PAYLOAD}/${d}" ]]; then @@ -182,110 +210,143 @@ done [[ -f "${PAYLOAD}/raveswitch/config.ron" ]] && \ install -Dm644 "${PAYLOAD}/raveswitch/config.ron" /etc/skel/.config/raveswitch/config.ron +if [[ -d "${PAYLOAD}/skel" ]]; then + cp -r --no-preserve=ownership "${PAYLOAD}/skel/." /etc/skel/ +fi + +setup_xdg_dirs /etc/skel +install_gtk_bookmarks /etc/skel +ensure_bashrc_hook /etc/skel/.bashrc +echo "1" > /etc/skel/.config/raveos/hyprland-migrated +# Meglevo felhasznalok beallitasa while IFS=: read -r user _ uid gid _ home shell; do [[ "$uid" -ge 1000 ]] || continue [[ -d "$home" ]] || continue [[ "$shell" != "/usr/bin/nologin" && "$shell" != "/bin/false" ]] || continue - mkdir -p "${home}/.config/hypr" \ - "${home}/.config/quickshell/pockets/DMS" \ - "${home}/.config/dms" \ - "${home}/.config/DankMaterialShell" \ - "${home}/.config/matugen" \ - "${home}/.config/kitty" \ - "${home}/.config/fastfetch" + mkdir -p \ + "${home}/.config/hypr" \ + "${home}/.config/dms" \ + "${home}/.config/quickshell/pockets/DMS" \ + "${home}/.config/DankMaterialShell" \ + "${home}/.config/matugen" \ + "${home}/.config/kitty" \ + "${home}/.config/fastfetch" \ + "${home}/.config/raveos" \ + "${home}/.local/state/DankMaterialShell" \ + "${home}/.local/share/flatpak/overrides" # Hyprland konfig - pkill -u "$user" hyprpaper 2>/dev/null || true - if [[ -d "${PAYLOAD}/hypr" ]]; then + if [[ ! -f "${home}/.config/hypr/hyprland.lua" && -d "${PAYLOAD}/hypr" ]]; then cp -rf "${PAYLOAD}/hypr/." "${home}/.config/hypr/" - [[ -f "${home}/.config/hypr/hyprland.lua" ]] && \ - rm -f "${home}/.config/hypr/hyprland.conf" + rm -f "${home}/.config/hypr/hyprland.conf" set_hypr_keyboard "${home}/.config/hypr/hyprland.lua" fi - # hyprpaper konfig (háttérkép daemon) - printf 'preload = %s/.config/background.jpg\nwallpaper = ,%s/.config/background.jpg\nsplash = false\n' \ - "$home" "$home" > "${home}/.config/hypr/hyprpaper.conf" + # hyprpaper konfig + if [[ ! -f "${home}/.config/hypr/hyprpaper.conf" ]]; then + printf 'preload = %s/.config/background.jpg\nwallpaper = ,%s/.config/background.jpg\nsplash = false\n' \ + "$home" "$home" > "${home}/.config/hypr/hyprpaper.conf" + fi - # DMS per-user konfig - if [[ -d "$DMS_SRC" ]]; then - cp -r "${DMS_SRC}/." "${home}/.config/quickshell/pockets/DMS/" - cp -r "${DMS_SRC}/." "${home}/.config/dms/" - if [[ -d "${DMS_SRC}/matugen/configs" ]]; then - cp -r "${DMS_SRC}/matugen/configs/." "${home}/.config/matugen/" + # DMS konfig + if [[ -d "${PAYLOAD}/dms" ]]; then + cp -rn "${PAYLOAD}/dms/." "${home}/.config/quickshell/pockets/DMS/" 2>/dev/null || true + cp -rn "${PAYLOAD}/dms/." "${home}/.config/dms/" 2>/dev/null || true + if [[ -d "${PAYLOAD}/dms/matugen/configs" ]]; then + cp -rn "${PAYLOAD}/dms/matugen/configs/." "${home}/.config/matugen/" 2>/dev/null || true fi fi - [[ -f "${PAYLOAD}/DankMaterialShell/settings.json" ]] && \ - install -Dm644 "${PAYLOAD}/DankMaterialShell/settings.json" \ - "${home}/.config/DankMaterialShell/settings.json" - [[ -f "${PAYLOAD}/DankMaterialShell/.firstlaunch" ]] && \ - install -Dm644 "${PAYLOAD}/DankMaterialShell/.firstlaunch" \ - "${home}/.config/DankMaterialShell/.firstlaunch" - # DMS session.json: háttérkép beállítása - mkdir -p "${home}/.local/state/DankMaterialShell" - cat > "${home}/.local/state/DankMaterialShell/session.json" <<-SEOF + if [[ -d "${PAYLOAD}/DankMaterialShell" ]]; then + for item in "${PAYLOAD}/DankMaterialShell"/{.[!.]*,*}; do + [[ -e "$item" ]] || continue + dest="${home}/.config/DankMaterialShell/$(basename "$item")" + [[ -e "$dest" ]] || cp -r "$item" "$dest" + done + fi + + # DMS session.json hatterkep + if [[ ! -f "${home}/.local/state/DankMaterialShell/session.json" ]]; then + cat > "${home}/.local/state/DankMaterialShell/session.json" <<-SEOF { "wallpaperPath": "${home}/.config/background.jpg" } SEOF + fi - # Skel tartalom - [[ -d "${PAYLOAD}/skel" ]] && \ - cp -r --no-preserve=ownership "${PAYLOAD}/skel/." "$home/" - - setup_xdg_dirs "$home" - install_gtk_bookmarks "$home" - - # Háttérkép - [[ -f "${PAYLOAD}/background.jpg" ]] && \ + # Hatterkep + if [[ ! -f "${home}/.config/background.jpg" && -f "${PAYLOAD}/background.jpg" ]]; then install -Dm644 "${PAYLOAD}/background.jpg" "${home}/.config/background.jpg" + fi + + # SDDM es user avatar + install_user_avatar "$user" "$home" "$uid" "$gid" # Kitty - [[ -d "${PAYLOAD}/kitty" ]] && \ + if [[ ! -f "${home}/.config/kitty/kitty.conf" && -d "${PAYLOAD}/kitty" ]]; then cp -r "${PAYLOAD}/kitty/." "${home}/.config/kitty/" - - # Felhasználói avatar - [[ -f "${PAYLOAD}/hyprland-pp.png" ]] && \ - install -Dm644 "${PAYLOAD}/hyprland-pp.png" "${home}/.face" + fi # Fastfetch for f in config.jsonc config-kitty.jsonc raveos-logo.png raveos-logo.txt; do - [[ -f "${PAYLOAD}/fastfetch/${f}" ]] && \ + if [[ ! -f "${home}/.config/fastfetch/${f}" && -f "${PAYLOAD}/fastfetch/${f}" ]]; then install -Dm644 "${PAYLOAD}/fastfetch/${f}" "${home}/.config/fastfetch/${f}" + fi done - # GTK, Thunar, nwg-look, xsettingsd, Kvantum konfigok + # GTK, Thunar, nwg-look, xsettingsd, Kvantum for d in gtk-3.0 gtk-4.0 nwg-look Thunar xfce4 xsettingsd Kvantum; do - if [[ -d "${PAYLOAD}/${d}" ]]; then + if [[ ! -d "${home}/.config/${d}" && -d "${PAYLOAD}/${d}" ]]; then mkdir -p "${home}/.config/${d}" cp -rf "${PAYLOAD}/${d}/." "${home}/.config/${d}/" fi done - # RaveSwitch alap config (modifier: Super, lasd fentebb a skel-agnal) - if [[ -f "${PAYLOAD}/raveswitch/config.ron" && ! -f "${home}/.config/raveswitch/config.ron" ]]; then + # RaveSwitch + if [[ ! -f "${home}/.config/raveswitch/config.ron" && -f "${PAYLOAD}/raveswitch/config.ron" ]]; then install -Dm644 "${PAYLOAD}/raveswitch/config.ron" "${home}/.config/raveswitch/config.ron" fi - # Icon és GTK téma beállítása (dconf/gsettings) - # A settings.ini nem elég — a GTK daemonok a dconf-ot olvassák - # Chroot-ban (Calamares) dbus-launch lehet hogy nincs — ezért set +e + # Flatpak global override + if [[ ! -f "${home}/.local/share/flatpak/overrides/global" && -f "${PAYLOAD}/skel/.local/share/flatpak/overrides/global" ]]; then + install -Dm644 "${PAYLOAD}/skel/.local/share/flatpak/overrides/global" \ + "${home}/.local/share/flatpak/overrides/global" + fi + + setup_xdg_dirs "$home" + install_gtk_bookmarks "$home" + ensure_bashrc_hook "${home}/.bashrc" + echo "1" > "${home}/.config/raveos/hyprland-migrated" + + # GTK tema beallitasa gsettings-szel ( runuser -u "$user" -- dbus-launch gsettings set org.gnome.desktop.interface gtk-theme 'Yaru-olive-dark' 2>/dev/null runuser -u "$user" -- dbus-launch gsettings set org.gnome.desktop.interface icon-theme 'Adwaitaru-olive' 2>/dev/null ) || true - # Tulajdonos visszaállítása - chown -R "${uid}:${gid}" "$home" - - # matugen: wallpaper-alapú színséma generálás + # matugen: wallpaper-alapu szinseme generalas ha elerheto if command -v matugen &>/dev/null && [[ -f "${home}/.config/background.jpg" ]]; then runuser -u "$user" -- matugen image "${home}/.config/background.jpg" 2>/dev/null || true fi + # Kizarolag az erintett konfiguraciok es konyvtarak jogosultsagait javitjuk + chown "${uid}:${gid}" "${home}/.config" "${home}/.local" "${home}/.bashrc" 2>/dev/null || true + chown "${uid}:${gid}" \ + "${home}/${XDG_DESKTOP}" \ + "${home}/${XDG_DOWNLOAD}" \ + "${home}/${XDG_TEMPLATES}" \ + "${home}/${XDG_PUBLIC}" \ + "${home}/${XDG_DOCUMENTS}" \ + "${home}/${XDG_MUSIC}" \ + "${home}/${XDG_PICTURES}" \ + "${home}/${XDG_VIDEOS}" \ + "${home}/${XDG_PROJECTS}" 2>/dev/null || true + chown -R "${uid}:${gid}" \ + "${home}/.config" \ + "${home}/.local" 2>/dev/null || true + done < /etc/passwd -echo "Telepítés kész." +echo "RaveOS Hyprland beállítás sikeresen alkalmazva." |