summaryrefslogtreecommitdiff
path: root/raveos-cosmic-theme/raveos-cosmic-apply.sh
blob: 3cedb60d98d07cf66fcfdfab5029eaa01b5ea053 (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
#!/usr/bin/env bash
set -euo pipefail

PAYLOAD="/usr/share/raveos/cosmic-theme/theme-data"

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

if [[ ${EUID} -ne 0 ]]; then
    echo "Root jogosultsag szukseges." >&2
    exit 1
fi

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_cosmic_xkb() {
    local target_cosmic="$1"
    local kb_layout="hu"
    local kb_variant=""
    local xorg_kb="/etc/X11/xorg.conf.d/00-keyboard.conf"

    if [[ -f "${xorg_kb}" ]]; then
        kb_layout="$(awk '/XkbLayout/ {print $3}' "${xorg_kb}" 2>/dev/null | tr -d '"' | head -1)"
        kb_layout="${kb_layout%%,*}"
        kb_variant="$(awk '/XkbVariant/ {print $3}' "${xorg_kb}" 2>/dev/null | tr -d '"' | head -1)"
        kb_variant="${kb_variant%%,*}"
    elif [[ -f /etc/default/keyboard ]]; then
        kb_layout="$(awk -F'"' '/^XKBLAYOUT=/{print $2; exit}' /etc/default/keyboard 2>/dev/null)"
        kb_layout="${kb_layout%%,*}"
        kb_variant="$(awk -F'"' '/^XKBVARIANT=/{print $2; exit}' /etc/default/keyboard 2>/dev/null)"
        kb_variant="${kb_variant%%,*}"
    elif command -v localectl >/dev/null 2>&1; then
        local loc_layout loc_var
        loc_layout="$(localectl status 2>/dev/null | awk -F': ' '/X11 Layout/{print $2}')"
        [[ -n "$loc_layout" ]] && kb_layout="${loc_layout%%,*}"
        loc_var="$(localectl status 2>/dev/null | awk -F': ' '/X11 Variant/{print $2}')"
        [[ -n "$loc_var" ]] && kb_variant="${loc_var%%,*}"
    fi
    [[ -n "$kb_layout" ]] || kb_layout="hu"

    mkdir -p "${target_cosmic}/com.system76.CosmicComp/v1"
    if [[ ! -f "${target_cosmic}/com.system76.CosmicComp/v1/xkb_config" ]]; then
        cat > "${target_cosmic}/com.system76.CosmicComp/v1/xkb_config" <<XKB_EOF
(
    rules: "",
    model: "",
    layout: "${kb_layout}",
    variant: "${kb_variant}",
    options: None,
    repeat_delay: 600,
    repeat_rate: 25,
)
XKB_EOF
    fi
}

# Rendszerszintu hatterkep es fastfetch
[[ -f "${PAYLOAD}/background" ]] && \
    install -Dm644 "${PAYLOAD}/background" /usr/share/backgrounds/raveos/raveos-main-bg.jpeg

[[ -f "${PAYLOAD}/profile.d/raveos-fastfetch.sh" ]] && \
    install -Dm755 "${PAYLOAD}/profile.d/raveos-fastfetch.sh" /etc/profile.d/raveos-fastfetch.sh

# Skel beallitasa uj felhasznaloknak
mkdir -p \
    /etc/skel/.config/kitty \
    /etc/skel/.config/fastfetch \
    /etc/skel/.config/cosmic

[[ -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

if [[ -d "${PAYLOAD}/cosmic" ]]; then
    cp -r "${PAYLOAD}/cosmic/." /etc/skel/.config/cosmic/
fi

write_cosmic_xkb /etc/skel/.config/cosmic
ensure_bashrc_hook /etc/skel/.bashrc

# Meglevo felhasznalok kimeletes frissitese
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

    user_marker="${home}/.config/raveos-cosmic-theme/.applied"
    [[ -f "$user_marker" ]] && continue

    mkdir -p \
        "${home}/.config/kitty" \
        "${home}/.config/fastfetch" \
        "${home}/.config/cosmic" \
        "${home}/.config/raveos-cosmic-theme"

    if [[ -f "${PAYLOAD}/kitty/kitty.conf" && ! -f "${home}/.config/kitty/kitty.conf" ]]; then
        install -Dm644 "${PAYLOAD}/kitty/kitty.conf" "${home}/.config/kitty/kitty.conf"
    fi

    for f in config.jsonc config-kitty.jsonc raveos-logo.png raveos-logo.txt; do
        if [[ -f "${PAYLOAD}/fastfetch/${f}" && ! -f "${home}/.config/fastfetch/${f}" ]]; then
            install -Dm644 "${PAYLOAD}/fastfetch/${f}" "${home}/.config/fastfetch/${f}"
        fi
    done

    if [[ -d "${PAYLOAD}/cosmic" ]]; then
        cp -rn "${PAYLOAD}/cosmic/." "${home}/.config/cosmic/" 2>/dev/null || true
    fi

    write_cosmic_xkb "${home}/.config/cosmic"
    ensure_bashrc_hook "${home}/.bashrc"
    touch "$user_marker"

    for dir in "${home}/.config/kitty" "${home}/.config/fastfetch" "${home}/.config/cosmic" "${home}/.config/raveos-cosmic-theme"; do
        [[ -d "$dir" ]] && chown -R "${uid}:${gid}" "$dir" 2>/dev/null || true
    done
    [[ -f "${home}/.bashrc" ]] && chown "${uid}:${gid}" "${home}/.bashrc" 2>/dev/null || true
done < /etc/passwd

echo "COSMIC tema telepites kesz."