summaryrefslogtreecommitdiff
path: root/raveos-gnome-theme/raveos-gnome-apply.sh
blob: c56ea3f1885f7b9be19cf91fad3449867c803dd7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#!/usr/bin/env bash
# raveos-gnome-apply.sh
# ---------------------
# Modern RaveOS GNOME inicializáló és beállító script:
#   - /etc/skel alá telepíti a sablonokat (új usereknek)
#   - Meglévő usereknél CSAK a hiányzó fájlokat pótolja (sosem ír felül meglévő beállításokat!)
#   - Nem futtat 'dconf load'-ot, így a felhasználó saját beállításai megmaradnak!
#   - Csak az általa létrehozott mappákat chownolja (biztonságos)

set -euo pipefail

PAYLOAD="/usr/share/raveos/gnome-theme/theme-data"
wallpaper_dst="/usr/share/backgrounds/raveos/raveos-main-bg.jpeg"

if [[ ! -d "$PAYLOAD" ]]; then
    echo "Hiba: hiányzó payload: $PAYLOAD" >&2
    exit 1
fi

if [[ ${EUID} -ne 0 ]]; then
    echo "Root jogosultság szükséges." >&2
    exit 1
fi

# ---------------------------------------------------------------------------
# SEGÉDFÜGGVÉNYEK
# ---------------------------------------------------------------------------

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
}

write_mimeapps_defaults() {
    local mimeapps_path="$1"
    mkdir -p "$(dirname "$mimeapps_path")"
    cat > "$mimeapps_path" <<'MIMEOF'
[Default Applications]
image/jpeg=org.gnome.eog.desktop
image/png=org.gnome.eog.desktop
image/webp=org.gnome.eog.desktop
image/gif=org.gnome.eog.desktop
image/bmp=org.gnome.eog.desktop
image/tiff=org.gnome.eog.desktop
image/avif=org.gnome.eog.desktop
image/heif=org.gnome.eog.desktop
image/heic=org.gnome.eog.desktop
MIMEOF
}

# ---------------------------------------------------------------------------
# RENDSZERSZINTŰ BEÁLLÍTÁSOK
# ---------------------------------------------------------------------------

# Elrejtett felesleges menüelemek
mkdir -p /usr/local/share/applications
for desktop_id in avahi-discover.desktop bssh.desktop bvnc.desktop qv4l2.desktop qvidcap.desktop vim.desktop; do
    cat > "/usr/local/share/applications/${desktop_id}" <<'DESKEOF'
[Desktop Entry]
NoDisplay=true
DESKEOF
done

# Egyedi alkalmazás menü ikon Adwaita alá (nem a csomagból tesszük fel, hogy ne ütközzön az adwaita-icon-theme csomaggal)
if [[ -f "${PAYLOAD}/icons/view-app-grid-symbolic.svg" ]]; then
    install -Dm644 "${PAYLOAD}/icons/view-app-grid-symbolic.svg" \
        /usr/share/icons/Adwaita/symbolic/actions/view-app-grid-symbolic.svg
fi

# dconf és gsettings adatbázisok frissítése
command -v dconf &>/dev/null && dconf update || true
command -v glib-compile-schemas &>/dev/null && glib-compile-schemas /usr/share/glib-2.0/schemas || true

# ---------------------------------------------------------------------------
# /etc/skel (ÚJ FELHASZNÁLÓK ALAPBEÁLLÍTÁSAI)
# ---------------------------------------------------------------------------

mkdir -p \
    /etc/skel/.config/kitty \
    /etc/skel/.config/fastfetch \
    /etc/skel/.config/burn-my-windows/profiles \
    /etc/skel/.config/raveos

[[ -f "${PAYLOAD}/kitty/kitty.conf" ]] && \
    install -Dm644 "${PAYLOAD}/kitty/kitty.conf" /etc/skel/.config/kitty/kitty.conf

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}/burn-my-windows/burn-my-windows.conf" ]] && \
    install -Dm644 "${PAYLOAD}/burn-my-windows/burn-my-windows.conf" \
        /etc/skel/.config/burn-my-windows/profiles/burn-my-windows.conf

write_mimeapps_defaults /etc/skel/.config/mimeapps.list
ensure_bashrc_hook /etc/skel/.bashrc
echo "1" > /etc/skel/.config/raveos/gnome-migrated

# ---------------------------------------------------------------------------
# MEGLÉVŐ USEREK FRISSÍTÉSE (KÍMÉLETES / NEM FELÜLÍRÓ MÓDBAN)
# ---------------------------------------------------------------------------

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

    # Csak akkor másolunk, ha még nincs saját beállítása
    mkdir -p \
        "${home}/.config/kitty" \
        "${home}/.config/fastfetch" \
        "${home}/.config/burn-my-windows/profiles" \
        "${home}/.config/raveos"

    # Kitty: csak ha nem létezik
    if [[ ! -f "${home}/.config/kitty/kitty.conf" && -f "${PAYLOAD}/kitty/kitty.conf" ]]; then
        install -Dm644 "${PAYLOAD}/kitty/kitty.conf" "${home}/.config/kitty/kitty.conf"
    fi

    # Fastfetch: csak ha nem létezik
    for f in config.jsonc config-kitty.jsonc raveos-logo.png raveos-logo.txt; do
        if [[ ! -f "${home}/.config/fastfetch/${f}" && -f "${PAYLOAD}/fastfetch/${f}" ]]; then
            install -Dm644 "${PAYLOAD}/fastfetch/${f}" "${home}/.config/fastfetch/${f}"
        fi
    done

    # Burn-my-windows: csak ha nem létezik
    if [[ ! -f "${home}/.config/burn-my-windows/profiles/burn-my-windows.conf" && -f "${PAYLOAD}/burn-my-windows/burn-my-windows.conf" ]]; then
        install -Dm644 "${PAYLOAD}/burn-my-windows/burn-my-windows.conf" \
            "${home}/.config/burn-my-windows/profiles/burn-my-windows.conf"
    fi

    # Mimeapps: csak ha nem létezik
    if [[ ! -f "${home}/.config/mimeapps.list" ]]; then
        write_mimeapps_defaults "${home}/.config/mimeapps.list"
    fi

    ensure_bashrc_hook "${home}/.bashrc"
    echo "1" > "${home}/.config/raveos/gnome-migrated"

    # BIZTONSÁGOS JOGBEÁLLÍTÁS: Csak az érintett konfigurációkat chownoljuk,
    # SOHA NE a teljes $home mappát!
    chown "${uid}:${gid}" "${home}/.config" "${home}/.config/mimeapps.list" 2>/dev/null || true
    chown -R "${uid}:${gid}" \
        "${home}/.config/kitty" \
        "${home}/.config/fastfetch" \
        "${home}/.config/burn-my-windows" \
        "${home}/.config/raveos" \
        "${home}/.bashrc" 2>/dev/null || true

done < /etc/passwd

echo "RaveOS GNOME beállítás sikeresen alkalmazva."