← luna

Commit 2b59dd8

6
files
+70
added
-4
deleted
@@ -150,7 +150,7 @@ cargo test -p luna-demo --test interaction # te same interakcje jako aserc
150 150
151 151 `scripts/install.sh` buduje binarki w trybie release i instaluje **środowisko Luna**
152 152 (kompozytor `selene`, powłoka `luna-shell`, sesja `luna-session`, demo, tłumaczenia, motywy,
153 -wpis sesji Wayland):
153 +wpis sesji Wayland i **ikonę sesji**):
154 154
155 155 ```bash
156 156 # instalacja testowa do katalogu (bez ruszania systemu) — nic nie wymaga uprawnień
@@ -166,7 +166,9 @@ sudo ./scripts/install.sh --prefix /usr
166 166 sudo ./scripts/install.sh --prefix /usr --uninstall
167 167 ```
168 168
169 -Po instalacji sesja „Luna” pojawia się w menedżerze logowania (`share/wayland-sessions/selene.desktop`).
169 +Po instalacji sesja „Luna” pojawia się w menedżerze logowania (`share/wayland-sessions/selene.desktop`),
170 +z ikoną Luna (`share/icons/hicolor/.../apps/luna.svg` + PNG w kilku rozmiarach oraz `pixmaps/luna.png`,
171 +rysowanymi z `assets/branding/luna.svg`).
170 172 Na sprzęcie Selene przejmuje ekran przez DRM/KMS — trzeba **wylogować bieżący pulpit** (wolny
171 173 master DRM) i mieć dostęp do `/dev/input` (grupa `input`) dla wejścia. Testowo, obok działającej
172 174 sesji, można uruchomić `SELENE_BACKEND=nested selene` (okno na obecnym pulpicie) i podłączyć
173 175 new file mode 100644
@@ -0,0 +1,27 @@
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<!-- Ikona środowiska Luna (sesja w menedżerze logowania).
3 + Motyw: półksiężyc na akcentowym tle (Luna = Księżyc).
4 + Plik źródłowy — instaluje go `scripts/install.sh` do hicolor/scalable/apps. -->
5 +<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128">
6 + <defs>
7 + <linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
8 + <stop offset="0" stop-color="#4a97ec"/>
9 + <stop offset="1" stop-color="#2b6fc4"/>
10 + </linearGradient>
11 + <mask id="crescent">
12 + <rect x="0" y="0" width="128" height="128" fill="#000000"/>
13 + <circle cx="60" cy="70" r="38" fill="#ffffff"/>
14 + <circle cx="82" cy="52" r="33" fill="#000000"/>
15 + </mask>
16 + </defs>
17 +
18 + <!-- Tło: zaokrąglony kwadrat w akcencie Luny. -->
19 + <rect x="4" y="4" width="120" height="120" rx="28" ry="28" fill="url(#bg)"/>
20 +
21 + <!-- Półksiężyc. -->
22 + <rect x="0" y="0" width="128" height="128" fill="#ffffff" mask="url(#crescent)"/>
23 +
24 + <!-- Gwiazda (iskra) w prawym górnym rogu. -->
25 + <path d="M99 25 l3.2 7.8 7.8 3.2 -7.8 3.2 -3.2 7.8 -3.2 -7.8 -7.8 -3.2 7.8 -3.2 z"
26 + fill="#ffffff" opacity="0.92"/>
27 +</svg>
@@ -146,7 +146,9 @@ sudo ./scripts/install.sh --prefix /usr # instalacja syst
146 146 ```
147 147
148 148 Pliki sesji: `de/session/luna-session` (launcher) i `de/session/selene.desktop`
149 -(`share/wayland-sessions`).
149 +(`share/wayland-sessions`). Ikona sesji (`Icon=luna`) to `assets/branding/luna.svg` — instalator kładzie
150 +go w `share/icons/hicolor/scalable/apps` oraz rasteryzuje (rsvg-convert) do PNG w rozmiarach
151 +16–256 i `share/pixmaps`, więc greeter pokaże go nawet bez obsługi SVG.
150 152
151 153 Klienta podłączysz ustawiając `WAYLAND_DISPLAY=wayland-0` (`XDG_RUNTIME_DIR` klient wybierze
152 154 awaryjnie sam, tak jak Selene — patrz `libluna_core::runtime`). Renderowanie pojawi się, gdy
@@ -6,4 +6,5 @@ Comment=Luna desktop — Selene Wayland compositor
6 6 Comment[pl]=Środowisko Luna — kompozytor Wayland Selene
7 7 Exec=luna-session
8 8 TryExec=selene
9 +Icon=luna
9 10 DesktopNames=Luna
10 11 new file mode 100644
11 12 Binary files /dev/null and b/docs/images/luna-logo.png differ
@@ -4,6 +4,9 @@
4 4 # Buduje binarki w trybie release i instaluje je do prefiksu (domyślnie /usr/local):
5 5 # bin/selene, bin/luna-shell, bin/luna-demo, bin/luna-session
6 6 # share/wayland-sessions/selene.desktop (sesja „Luna” w menedżerze logowania)
7 +# share/icons/hicolor/scalable/apps/luna.svg (ikona sesji)
8 +# share/icons/hicolor/<N>x<N>/apps/luna.png (rastrowe, dla greeterów bez SVG)
9 +# share/pixmaps/luna.png
7 10 # share/luna/i18n/*.lang, share/luna/themes/*.theme
8 11 # share/licenses/luna/LICENSE
9 12 #
@@ -90,6 +93,7 @@ files() {
90 93 printf '%s|%s|%s\n' "$lib/gallery" "$dest/bin/luna-gallery" "755"
91 94 printf '%s|%s|%s\n' "$root/de/session/luna-session" "$dest/bin/luna-session" "755"
92 95 printf '%s|%s|%s\n' "$root/de/session/selene.desktop" "$dest/share/wayland-sessions/selene.desktop" "644"
96 + printf '%s|%s|%s\n' "$root/assets/branding/luna.svg" "$dest/share/icons/hicolor/scalable/apps/luna.svg" "644"
93 97 printf '%s|%s|%s\n' "$root/LICENSE" "$dest/share/licenses/luna/LICENSE" "644"
94 98 local f
95 99 for f in "$root"/crates/libluna-i18n/i18n/*.lang; do
@@ -100,16 +104,28 @@ files() {
100 104 done
101 105 }
102 106
107 +# Rozmiary rastrowej ikony sesji (greeter bez wsparcia SVG użyje którejś z nich).
108 +icon_sizes="16 24 32 48 64 128 256"
109 +
103 110 if [ "$uninstall" = 1 ]; then
104 111 step "Odinstalowywanie Luna z $dest"
105 112 while IFS='|' read -r _ dst _; do
106 113 do_cmd rm -f "$dst"
107 114 done < <(files)
115 + # Rastrowa ikona sesji (generowana w trakcie instalacji).
116 + for s in $icon_sizes; do
117 + do_cmd rm -f "$dest/share/icons/hicolor/${s}x${s}/apps/luna.png"
118 + done
119 + do_cmd rm -f "$dest/share/pixmaps/luna.png"
108 120 # Puste katalogi po naszych plikach.
109 121 for d in "$dest/share/luna/i18n" "$dest/share/luna/themes" "$dest/share/luna" \
110 - "$dest/share/wayland-sessions" "$dest/share/licenses/luna"; do
122 + "$dest/share/wayland-sessions" "$dest/share/licenses/luna" \
123 + "$dest/share/icons/hicolor/scalable/apps"; do
111 124 do_cmd rmdir "$d" 2>/dev/null || true
112 125 done
126 + for s in $icon_sizes; do
127 + do_cmd rmdir "$dest/share/icons/hicolor/${s}x${s}/apps" 2>/dev/null || true
128 + done
113 129 say "Gotowe."
114 130 exit 0
115 131 fi
@@ -144,6 +160,24 @@ while IFS='|' read -r src dst mode; do
144 160 do_cmd install -D -m "$mode" "$src" "$dst"
145 161 done < <(files)
146 162
163 +# Ikona sesji w rozmiarach rastrowych — dla greeterów bez rsvg.
164 +step "Ikona sesji (rastrowa)"
165 +if command -v rsvg-convert >/dev/null 2>&1; then
166 + for s in $icon_sizes; do
167 + dir="$dest/share/icons/hicolor/${s}x${s}/apps"
168 + do_cmd install -d "$dir"
169 + do_cmd rsvg-convert -w "$s" -h "$s" "$root/assets/branding/luna.svg" -o "$dir/luna.png"
170 + done
171 + do_cmd install -d "$dest/share/pixmaps"
172 + do_cmd rsvg-convert -w 256 -h 256 "$root/assets/branding/luna.svg" -o "$dest/share/pixmaps/luna.png"
173 + # Odświeżenie cache ikon tylko w instalacji systemowej (bez DESTDIR).
174 + if [ "$destdir" = "" ] && command -v gtk-update-icon-cache >/dev/null 2>&1; then
175 + do_cmd gtk-update-icon-cache -q -t -f "$dest/share/icons/hicolor" || true
176 + fi
177 +else
178 + say " (pomijam PNG — brak rsvg-convert; greeter użyje SVG)"
179 +fi
180 +
147 181 step "Gotowe"
148 182 say "Zainstalowano w: $dest"
149 183 say ""