Skip to content

Commit ff3dfa3

Browse files
authored
Fix markdown formatting in GNOME app shortcut guide
1 parent 8070141 commit ff3dfa3

File tree

1 file changed

+21
-21
lines changed

1 file changed

+21
-21
lines changed

DOC/Ikony-i-konfiguracja-skrótów-aplikacji-GNOME.md

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33

44
**Aplikacje symulacyjne SymShella teoretycznie mają własną, czarno białą ikonę. Dawniej to działało, ale od którejś wersji gnome przestało. Ta ikona nigdy i nigdzie nie jest widoczna i aplikacja ma jakąś standardową albo w ogóle jakby pustą.**
55

6-
Jest to klasyczny problem w nowoczesnych środowiskach graficznych Linuxa (szczególnie GNOME). Dawniej ikony ustawiane bezpośrednio przez API X11 (tzw. WM\_HINTS) były respektowane przez menedżery okien. Dzisiaj GNOME polega niemal wyłącznie na systemie **Desktop Entry** i standardzie **StartupWMClass**.
6+
Jest to klasyczny problem w nowoczesnych środowiskach graficznych Linuxa (szczególnie GNOME). Dawniej ikony ustawiane bezpośrednio przez API X11 (tzw. `WM\_HINTS`) były respektowane przez menedżery okien. Dzisiaj GNOME polega niemal wyłącznie na systemie **Desktop Entry** i standardzie **StartupWMClass**.
77

88
Jeśli stara aplikacja "straciła" ikonę, prawdopodobnie system nie wie, jak powiązać uruchomiony proces z plikiem graficznym na dysku. Oto jak możesz to naprawić, wykorzystując Fluttera jako "zarządcę" lub po prostu naprawiając strukturę aplikacji:
99

1010
### **1\. Rozwiązanie "Naprawcze" (StartupWMClass)**
1111

12-
Nawet jeśli Twoja aplikacja w C++ ma wewnątrz zakodowaną ikonę, GNOME jej nie wyświetli, jeśli nie znajdzie pasującego pliku .desktop.
12+
Nawet jeśli Twoja aplikacja w C++ ma wewnątrz zakodowaną ikonę, GNOME jej nie wyświetli, jeśli nie znajdzie pasującego pliku `.desktop`.
1313

14-
Musisz stworzyć plik /usr/share/applications/symulator.desktop (lub w folderze lokalnym):
14+
Musisz stworzyć plik `/usr/share/applications/symulator.desktop` (lub w folderze lokalnym):
1515

1616
```Ini, TOML
1717
\[Desktop Entry\]
@@ -22,7 +22,7 @@ Type=Application
2222
StartupWMClass=moja-binarka-cpp
2323
```
2424

25-
**Kluczowy moment:** Musisz upewnić się, że Twoja aplikacja w C++ ustawia klasę okna (WM\_CLASS) na taką samą wartość, jaka jest w StartupWMClass. W czystym X11 robi się to tak:
25+
**Kluczowy moment:** Musisz upewnić się, że Twoja aplikacja w C++ ustawia klasę okna (`WM\_CLASS`) na taką samą wartość, jaka jest w StartupWMClass. W czystym X11 robi się to tak:
2626

2727
```C++
2828
XClassHint \*class\_hint \= XAllocClassHint();
@@ -41,7 +41,7 @@ Bez tego GNOME widzi "nieznane okno" i przypisuje mu domyślną ikonę (lub pust
4141
Skoro i tak planujesz użyć Fluttera do menu, możesz sprawić, by to **Flutter był głównym punktem wejścia (entry point)** aplikacji.
4242
4343
1. Użytkownik klika ikonę "Symulator" (która w rzeczywistości uruchamia Twoją apkę we Flutterze).
44-
2. Flutter ma ustawioną ładną ikonę w swoim projekcie (robisz to jednym kliknięciem w narzędziu flutter\_launcher\_icons).
44+
2. Flutter ma ustawioną ładną ikonę w swoim projekcie (robisz to jednym kliknięciem w narzędziu _flutter\_launcher\_icons_).
4545
3. Flutter po starcie ukrywa swoje okno, dodaje ikonkę do traya i uruchamia proces C++ w tle (Process.start).
4646
4747
W ten sposób w systemie "głównym" procesem z perspektywy UI jest Flutter, który ma poprawną, nowoczesną ikonę, a okno X11 z symulacją jest traktowane jako okno pomocnicze.
@@ -53,28 +53,26 @@ W ten sposób w systemie "głównym" procesem z perspektywy UI jest Flutter, kt
5353
GNOME i Wayland odchodzą od pobierania ikon z protokołu X11, ponieważ:
5454
5555
* **Skalowanie:** Ikony w X11 były często małymi bitmapami (np. 32x32). Na ekranach 4K wyglądają tragicznie.
56-
* **Bezpieczeństwo i porządek:** System chce mieć centralną bazę ikon w /usr/share/icons, a nie ufać binarkom, że "coś tam sobie narysują" w rogu okna.
56+
* **Bezpieczeństwo i porządek:** System chce mieć centralną bazę ikon w `/usr/share/icons`, a nie ufać binarkom, że "coś tam sobie narysują" w rogu okna.
5757
5858
### **Co możesz więcej zrobić?**
5959
6060
Jeśli chcesz, aby Twoje menu we Flutterze "przejęło" reprezentowanie aplikacji:
6161
6262
1. Wstaw do folderu assets Fluttera ikonę w formacie PNG (np. 512x512).
63-
2. Użyj wspomnianego wcześniej tray\_manager, aby ta ikona była zawsze widoczna w zasobniku (tam, gdzie GNOME niczego nie blokuje).
64-
3. W pliku .desktop, który przygotujesz dla użytkowników, wskaż ikonę Fluttera.
63+
2. Użyj _tray\_manager_, aby ta ikona była zawsze widoczna w zasobniku (tam, gdzie GNOME niczego nie blokuje).
64+
3. W pliku `.desktop`, który przygotujesz dla użytkowników, wskaż ikonę Fluttera.
6565
6666
Dzięki temu Twoja aplikacja wreszcie przestanie wyglądać jak "puste okno" i zyska profesjonalny wygląd na pasku zadań.
6767
6868
69-
### **4\. Katalog lokalny **
69+
## **Katalog lokalny**
7070
71-
Jeśli chodzi o lokalny katalog dla użytkownika (bez uprawnień roota), to w systemach Linux zgodnych ze standardem **XDG**, pliki .desktop (które w Twoim przypadku pełnią rolę "opisu aplikacji", choć mają składnię INI, a nie TOML) należy umieszczać tutaj:
71+
Jeśli chodzi o lokalny katalog dla użytkownika (bez uprawnień roota), to w systemach Linux zgodnych ze standardem **XDG**, pliki `.desktop` (które w Twoim przypadku pełnią rolę "opisu aplikacji", choć mają składnię INI, a nie TOML) należy umieszczać tutaj...
7272
73-
### ---
73+
### **Ścieżka lokalna**
7474
75-
### **Ścieżka lokalna:**
76-
77-
\~/.local/share/applications/
75+
Definicje aplikacji lokalne dla użytkownika oczekiwane są w katalogu: `\~/.local/share/applications/`
7876
7977
Jeśli ten katalog nie istnieje, możesz go utworzyć komendą:
8078
@@ -86,12 +84,12 @@ mkdir \-p \~/.local/share/applications
8684
8785
Warto tutaj wyjaśnić pewne nieporozumienie terminologiczne:
8886
89-
* **Pliki .desktop**: To standard w Linuxie (GNOME, KDE, XFCE). Mimo że wyglądają podobnie do formatu TOML (mają sekcje w nawiasach kwadratowych jak \[Desktop Entry\]), to technicznie jest to format **Desktop Entry Specification**. Systemy Linux szukają właśnie tych plików, aby wyświetlić ikonę w menu czy na pasku zadań.
87+
* **Pliki .desktop**: To standard w Linuxie (GNOME, KDE, XFCE). Mimo że wyglądają podobnie do formatu TOML (mają sekcje w nawiasach kwadratowych jak `[Desktop Entry]`), to technicznie jest to format **Desktop Entry Specification**. Systemy Linux szukają właśnie tych plików, aby wyświetlić ikonę w menu czy na pasku zadań.
9088
* **TOML**: Jest używany przez nowsze narzędzia (np. Rust, niektóre konfiguratory), ale sam menedżer okien (GNOME) go nie odczyta jako definicji skrótu do aplikacji.
9189
92-
### ---
90+
---
9391
94-
### **Jak powinien wyglądać ten plik, aby naprawić Twój problem z ikoną?**
92+
### **Jak powinien wyglądać ten plik, aby naprawić nasz problem z ikoną?**
9593
9694
Stwórz plik o nazwie np. symulator.desktop w powyższym katalogu i wypełnij go tak:
9795
@@ -112,13 +110,15 @@ StartupWMClass=symulator\_bin
112110
### **Co to daje?**
113111

114112
1. **Ikona w Menu**: Aplikacja pojawi się w wyszukiwarce systemowej z Twoją grafiką.
115-
2. **Grupowanie okien**: Gdy uruchomisz program, GNOME "zobaczy" StartupWMClass, dopasuje go do pliku .desktop i podświetli właściwą ikonę na pasku zadań (zamiast pokazywać znak zapytania lub puste okno).
113+
2. **Grupowanie okien**: Gdy uruchomisz program, GNOME "zobaczy" `StartupWMClass`, dopasuje go do pliku `.desktop` i podświetli właściwą ikonę na pasku zadań (zamiast pokazywać znak zapytania lub puste okno).
116114
3. **Brak potrzeby roota**: Instalujesz to tylko dla swojego użytkownika, nie psując nic w systemie.
117115

118116
### **Jak sprawdzić czy działa?**
119117

120-
Po zapisaniu pliku w \~/.local/share/applications/, system powinien go wykryć automatycznie w ciągu kilku sekund. Możesz też wymusić odświeżenie bazy komendą:
121-
update-desktop-database \~/.local/share/applications
122-
Czy chciałbyś, aby Twój program we Flutterze generował taki plik automatycznie przy pierwszym uruchomieniu, żeby użytkownik nie musiał robić tego ręcznie?
118+
Po zapisaniu pliku w `~/.local/share/applications/`, system powinien go wykryć automatycznie w ciągu kilku sekund. Możesz też wymusić odświeżenie bazy komendą:
119+
```
120+
update-desktop-database \~/.local/share/applications
121+
```
122+
123123

124124

0 commit comments

Comments
 (0)