summaryrefslogtreecommitdiff
path: root/raveos-welcome/raveos_welcome.py
diff options
context:
space:
mode:
authorNippy <nippy@Nippy-Mac-mini.local>2026-09-17 16:35:07 +0200
committerNippy <nippy@Nippy-Mac-mini.local>2026-09-17 16:35:07 +0200
commit03be190e660dbe105fb52ba46d1267ffb00b576f (patch)
tree8b1faaf620a881d34ebd190de97cba7202b09fcd /raveos-welcome/raveos_welcome.py
parent8839d02e786f5ece0e1a502980fcaada6594e859 (diff)
downloadRaveOS-PKGBUILD-03be190e660dbe105fb52ba46d1267ffb00b576f.tar.gz
RaveOS-PKGBUILD-03be190e660dbe105fb52ba46d1267ffb00b576f.zip
welcome app fix
Diffstat (limited to 'raveos-welcome/raveos_welcome.py')
-rw-r--r--raveos-welcome/raveos_welcome.py339
1 files changed, 182 insertions, 157 deletions
diff --git a/raveos-welcome/raveos_welcome.py b/raveos-welcome/raveos_welcome.py
index 7d1d9e6..2ad5a6d 100644
--- a/raveos-welcome/raveos_welcome.py
+++ b/raveos-welcome/raveos_welcome.py
@@ -19,7 +19,7 @@ from PyQt6.QtWidgets import (
)
from PyQt6.QtCore import (
Qt, QThread, pyqtSignal, QTimer, QPropertyAnimation,
- QEasingCurve, QPoint, QSize, pyqtProperty, QObject, QProcess
+ QEasingCurve, QPoint, QSize, pyqtProperty, QObject, QProcess, QLocale
)
from PyQt6.QtGui import (
QFont, QFontDatabase, QColor, QPalette, QLinearGradient,
@@ -54,51 +54,68 @@ COLORS = {
# ─── Translations ─────────────────────────────────────────────────────────────
-_current_lang = "hu"
+def _detect_system_lang():
+ """Kezdőnyelv a rendszer locale alapján (hu/de, egyébként en)."""
+ try:
+ name = QLocale.system().name()
+ except Exception:
+ return "en"
+ if name.startswith("hu"):
+ return "hu"
+ if name.startswith("de"):
+ return "de"
+ return "en"
+
+_current_lang = _detect_system_lang()
T = {
# Nav
- "nav_back": {"hu": "← Vissza", "en": "← Back"},
- "nav_next": {"hu": "Tovább →", "en": "Next →"},
+ "nav_back": {"hu": "← Vissza", "de": "← Zurück", "en": "← Back"},
+ "nav_next": {"hu": "Tovább →", "de": "Weiter →", "en": "Next →"},
# Step bar
- "step_welcome": {"hu": "ÜDVÖZLÉS", "en": "WELCOME"},
- "step_network": {"hu": "HÁLÓZAT", "en": "NETWORK"},
- "step_optimize": {"hu": "OPTIMALIZÁCIÓ", "en": "OPTIMIZE"},
- "step_hyprland": {"hu": "HYPRLAND", "en": "HYPRLAND"},
- "step_credits": {"hu": "KÖZREMŰKÖDŐK", "en": "CREDITS"},
- "step_finish": {"hu": "BEFEJEZÉS", "en": "FINISH"},
+ "step_welcome": {"hu": "ÜDVÖZLÉS", "de": "WILLKOMMEN", "en": "WELCOME"},
+ "step_network": {"hu": "HÁLÓZAT", "de": "NETZWERK", "en": "NETWORK"},
+ "step_optimize": {"hu": "OPTIMALIZÁCIÓ", "de": "OPTIMIERUNG", "en": "OPTIMIZE"},
+ "step_hyprland": {"hu": "HYPRLAND", "de": "HYPRLAND", "en": "HYPRLAND"},
+ "step_credits": {"hu": "KÖZREMŰKÖDŐK", "de": "MITWIRKENDE", "en": "CREDITS"},
+ "step_finish": {"hu": "BEFEJEZÉS", "de": "ABSCHLUSS", "en": "FINISH"},
# Welcome page
- "welcome_tag": {"hu": "LINUX DISTRIBUTION", "en": "LINUX DISTRIBUTION"},
+ "welcome_tag": {"hu": "LINUX DISTRIBUTION", "de": "LINUX DISTRIBUTION", "en": "LINUX DISTRIBUTION"},
"welcome_about": {"hu": "RaveOS finomhangolás, kulcsra kész állapot!",
+ "de": "RaveOS optimiert, startklar!",
"en": "RaveOS tuned, ready to go!"},
- "btn_support": {"hu": "€ Támogatás", "en": "€ Support"},
+ "btn_support": {"hu": "€ Támogatás", "de": "€ Unterstützen", "en": "€ Support"},
"feat_perf": {"hu": "CachyOS kernel\noptimalizált teljesítmény",
+ "de": "CachyOS Kernel\noptimierte Leistung",
"en": "CachyOS kernel\noptimized performance"},
"feat_gaming": {"hu": "Gaming-ready\nProton, MangoHud, GameMode",
+ "de": "Gaming-ready\nProton, MangoHud, GameMode",
"en": "Gaming-ready\nProton, MangoHud, GameMode"},
"feat_apps": {"hu": "App Installer\negy kattintás, minden szoftver",
+ "de": "App Installer\nein Klick, alle Software",
"en": "App Installer\none click, all software"},
# WiFi page
- "wifi_title": {"hu": "HÁLÓZAT", "en": "NETWORK"},
- "wifi_subtitle": {"hu": "WiFi kapcsolat", "en": "WiFi connection"},
- "wifi_scan": {"hu": "Frissítés", "en": "Refresh"},
- "wifi_password": {"hu": "Jelszó:", "en": "Password:"},
- "wifi_connect": {"hu": "CSATLAKOZÁS", "en": "CONNECT"},
- "wifi_scanning": {"hu": "Hálózatok keresése...","en": "Scanning networks..."},
- "wifi_none": {"hu": "Nem találtam hálózatot.","en": "No networks found."},
- "wifi_found": {"hu": "{n} hálózat található","en": "{n} networks found"},
- "wifi_open": {"hu": " [nyílt]", "en": " [open]"},
- "wifi_encrypted": {"hu": " [titkosított]", "en": " [encrypted]"},
- "wifi_selected": {"hu": "Kiválasztva: {ssid}", "en": "Selected: {ssid}"},
- "wifi_connecting": {"hu": "Csatlakozás folyamatban...","en": "Connecting..."},
- "wifi_connected": {"hu": "Csatlakozva: {ssid}", "en": "Connected: {ssid}"},
- "wifi_error": {"hu": "Hiba: {err}", "en": "Error: {err}"},
- "wifi_timeout": {"hu": "Időtúllépés — próbáld újra","en": "Timeout — try again"},
- "wifi_unknown_err": {"hu": "Ismeretlen hiba", "en": "Unknown error"},
+ "wifi_title": {"hu": "HÁLÓZAT", "de": "NETZWERK", "en": "NETWORK"},
+ "wifi_subtitle": {"hu": "WiFi kapcsolat", "de": "WLAN-Verbindung", "en": "WiFi connection"},
+ "wifi_scan": {"hu": "Frissítés", "de": "Aktualisieren", "en": "Refresh"},
+ "wifi_password": {"hu": "Jelszó:", "de": "Passwort:", "en": "Password:"},
+ "wifi_connect": {"hu": "CSATLAKOZÁS", "de": "VERBINDEN", "en": "CONNECT"},
+ "wifi_scanning": {"hu": "Hálózatok keresése...","de": "Netzwerke werden gesucht...", "en": "Scanning networks..."},
+ "wifi_none": {"hu": "Nem találtam hálózatot.","de": "Kein Netzwerk gefunden.", "en": "No networks found."},
+ "wifi_found": {"hu": "{n} hálózat található","de": "{n} Netzwerke gefunden", "en": "{n} networks found"},
+ "wifi_open": {"hu": " [nyílt]", "de": " [offen]", "en": " [open]"},
+ "wifi_encrypted": {"hu": " [titkosított]", "de": " [verschlüsselt]", "en": " [encrypted]"},
+ "wifi_selected": {"hu": "Kiválasztva: {ssid}", "de": "Ausgewählt: {ssid}", "en": "Selected: {ssid}"},
+ "wifi_connecting": {"hu": "Csatlakozás folyamatban...","de": "Verbindung wird hergestellt...", "en": "Connecting..."},
+ "wifi_connected": {"hu": "Csatlakozva: {ssid}", "de": "Verbunden: {ssid}", "en": "Connected: {ssid}"},
+ "wifi_error": {"hu": "Hiba: {err}", "de": "Fehler: {err}", "en": "Error: {err}"},
+ "wifi_timeout": {"hu": "Időtúllépés — próbáld újra","de": "Zeitüberschreitung — bitte erneut versuchen", "en": "Timeout — try again"},
+ "wifi_unknown_err": {"hu": "Ismeretlen hiba", "de": "Unbekannter Fehler", "en": "Unknown error"},
# Optimize page
- "opt_title": {"hu": "OPTIMALIZÁCIÓ", "en": "OPTIMIZATION"},
- "opt_gaming": {"hu": "GAMING OPTIMALIZÁCIÓ — GPU: {gpu}", "en": "GAMING OPTIMIZATION — GPU: {gpu}"},
+ "opt_title": {"hu": "OPTIMALIZÁCIÓ", "de": "OPTIMIERUNG", "en": "OPTIMIZATION"},
+ "opt_gaming": {"hu": "GAMING OPTIMALIZÁCIÓ — GPU: {gpu}", "de": "GAMING-OPTIMIERUNG — GPU: {gpu}", "en": "GAMING OPTIMIZATION — GPU: {gpu}"},
"opt_sysctl": {"hu": "Kernel/sysctl tweaks",
+ "de": "Kernel/sysctl-Tweaks",
"en": "Kernel/sysctl tweaks"},
"opt_sysctl_desc": {"hu": "Kernel paraméterek optimalizálása gaming-hoz:\n"
"• vm.swappiness=10 — RAM preferálása swap helyett\n"
@@ -107,6 +124,7 @@ T = {
"• split_lock_mitigate=0 — egyes játékok gyorsabban futnak\n"
"• TCP FastOpen — gyorsabb hálózati kapcsolatok online játékhoz\n"
"Permanensen mentve: /etc/sysctl.d/99-gaming.conf",
+ "de": "Kernel-Parameter-Optimierung für Gaming:\n• vm.swappiness=10 — RAM statt Swap bevorzugen\n• THP=madvise — Transparent Huge Pages, weniger Micro-Stutter\n• NMI-Watchdog aus — weniger CPU-Interrupt-Overhead\n• split_lock_mitigate=0 — manche Spiele laufen schneller\n• TCP FastOpen — schnelleres Netzwerk für Online-Gaming\nDauerhaft gespeichert: /etc/sysctl.d/99-gaming.conf",
"en": "Kernel parameter optimization for gaming:\n"
"• vm.swappiness=10 — prefer RAM over swap\n"
"• THP=madvise — Transparent Huge Pages, less micro-stutter\n"
@@ -115,30 +133,35 @@ T = {
"• TCP FastOpen — faster network for online gaming\n"
"Saved permanently: /etc/sysctl.d/99-gaming.conf"},
"opt_io_sched": {"hu": "I/O Scheduler",
+ "de": "I/O Scheduler",
"en": "I/O Scheduler"},
"opt_io_sched_desc":{"hu": "Lemez olvasás/írás ütemező optimalizálása:\n"
"• SSD → mq-deadline: alacsonyabb latency mint BFQ\n"
"• NVMe → none: NVMe saját belső ütemezőt használ, külső felesleges\n"
"• HDD → bfq: legjobb forgódobos meghajtóhoz\n"
"Permanensen mentve: /etc/udev/rules.d/60-ssd-scheduler.rules",
+ "de": "Optimierung des I/O-Schedulers:\n• SSD → mq-deadline: geringere Latenz als BFQ\n• NVMe → none: NVMe nutzt seinen eigenen internen Scheduler\n• HDD → bfq: am besten für rotierende Laufwerke\nDauerhaft gespeichert: /etc/udev/rules.d/60-ssd-scheduler.rules",
"en": "Disk I/O scheduler optimization:\n"
"• SSD → mq-deadline: lower latency than BFQ\n"
"• NVMe → none: NVMe uses its own internal scheduler\n"
"• HDD → bfq: best for rotational drives\n"
"Saved permanently: /etc/udev/rules.d/60-ssd-scheduler.rules"},
"opt_ananicy": {"hu": "ananicy-cpp",
+ "de": "ananicy-cpp",
"en": "ananicy-cpp"},
"opt_ananicy_desc": {"hu": "Automatikus process prioritás kezelő:\n"
"• Játékok indításkor magasabb CPU prioritást kapnak\n"
"• Háttérfolyamatok (frissítők, indexelők) alacsonyabb prioritást kapnak\n"
"• Eredmény: stabilabb FPS, kevesebb frame drop\n"
"Telepíti: ananicy-cpp + cachyos-ananicy-rules, majd engedélyezi",
+ "de": "Automatische Prozess-Prioritätsverwaltung:\n• Spiele erhalten beim Start eine höhere CPU-Priorität\n• Hintergrundprozesse (Updater, Indexer) erhalten niedrigere Priorität\n• Ergebnis: stabilere FPS, weniger Frame-Drops\nInstalliert: ananicy-cpp + cachyos-ananicy-rules und aktiviert sie",
"en": "Automatic process priority handler:\n"
"• Games get higher CPU priority on launch\n"
"• Background processes (updaters, indexers) get lower priority\n"
"• Result: more stable FPS, fewer frame drops\n"
"Installs: ananicy-cpp + cachyos-ananicy-rules, then enables"},
"opt_gamemode": {"hu": "GameMode + MangoHud",
+ "de": "GameMode + MangoHud",
"en": "GameMode + MangoHud"},
"opt_gamemode_desc":{"hu": "GameMode: automatikus teljesítmény-boost játék közben:\n"
"• CPU governor powersave → performance játék indításkor\n"
@@ -148,6 +171,7 @@ T = {
"• FPS, frametime, GPU/CPU hőmérséklet, VRAM kijelzés\n"
"• GOverlay: grafikus felület a MangoHud beállításához\n"
"• Steam launch options: MANGOHUD=1 gamemoderun %command%",
+ "de": "GameMode: automatischer Leistungsschub beim Spielen:\n• CPU-Governor powersave → performance beim Spielstart\n• Wechselt beim Beenden des Spiels zurück zu powersave\n• I/O- und Prozesspriorität werden ebenfalls optimiert\n\nMangoHud: In-Game-Overlay:\n• FPS, Frametime, GPU/CPU-Temperatur, VRAM-Anzeige\n• GOverlay: GUI zum Konfigurieren von MangoHud\n• Steam-Startoptionen: MANGOHUD=1 gamemoderun %command%",
"en": "GameMode: automatic performance boost while gaming:\n"
"• CPU governor powersave → performance on game launch\n"
"• Reverts to powersave when game closes\n"
@@ -157,42 +181,49 @@ T = {
"• GOverlay: GUI to configure MangoHud\n"
"• Steam launch options: MANGOHUD=1 gamemoderun %command%"},
"opt_gpu_profile": {"hu": "GPU Power Profile — 3D Full Screen",
+ "de": "GPU Power Profile — 3D Full Screen",
"en": "GPU Power Profile — 3D Full Screen"},
"opt_gpu_profile_desc": {"hu": "AMDGPU teljesítmény profil átváltása 3D_FULL_SCREEN-re:\n"
"• Agresszívebb GPU órajel játék közben\n"
"• Alapértelmezett profil visszafogottabb teljesítményre törekszik\n"
"• Eredmény: magasabb és stabilabb FPS\n"
"Permanensen mentve: /etc/tmpfiles.d/gpu-power-profile.conf",
+ "de": "AMDGPU-Leistungsprofil auf 3D_FULL_SCREEN umstellen:\n• Aggressivere GPU-Takte beim Spielen\n• Das Standardprofil ist konservativer\n• Ergebnis: höhere und stabilere FPS\nDauerhaft gespeichert: /etc/tmpfiles.d/gpu-power-profile.conf",
"en": "AMDGPU power profile switch to 3D_FULL_SCREEN:\n"
"• More aggressive GPU clocks while gaming\n"
"• Default profile is more conservative\n"
"• Result: higher and more stable FPS\n"
"Saved permanently: /etc/tmpfiles.d/gpu-power-profile.conf"},
"opt_amd_overdrive": {"hu": "AMD Overdrive (ppfeaturemask)",
+ "de": "AMD Overdrive (ppfeaturemask)",
"en": "AMD Overdrive (ppfeaturemask)"},
"opt_amd_overdrive_desc": {"hu": "AMD GPU Overdrive funkciók feloldása:\n"
"• Lehetővé teszi a manuális órajel és feszültség állítást (LACT-ban)\n"
"• Alapértelmezetten az AMD zárolja ezeket a funkciókat\n"
"• Beállítás: /etc/modprobe.d/99-amdgpu-overdrive.conf\n"
"FIGYELEM: initramfs újraépítést igényel, újraindítás szükséges utána!",
+ "de": "AMD-GPU-Overdrive-Funktionen freischalten:\n• Ermöglicht manuelle Takt- und Spannungseinstellung (in LACT)\n• AMD sperrt diese Funktionen standardmäßig\n• Konfiguration: /etc/modprobe.d/99-amdgpu-overdrive.conf\nACHTUNG: erfordert einen initramfs-Neuaufbau, danach Neustart nötig!",
"en": "Unlock AMD GPU Overdrive features:\n"
"• Enables manual clock and voltage tuning (in LACT)\n"
"• AMD locks these features by default\n"
"• Config: /etc/modprobe.d/99-amdgpu-overdrive.conf\n"
"WARNING: requires initramfs rebuild, reboot needed after!"},
"opt_amd_powercap": {"hu": "AMD GPU Power Cap — Maximum",
+ "de": "AMD GPU Power Cap — Maximum",
"en": "AMD GPU Power Cap — Maximum"},
"opt_amd_powercap_desc": {"hu": "AMD GPU teljesítmény korlát feloldása maximumra:\n"
"• A GPU alapból korlátozott TDP-re van beállítva\n"
"• Ez beállítja a power1_cap értékét a maximálisan engedélyezett értékre\n"
"• Eredmény: GPU teljes teljesítményen futhat, magasabb FPS csúcsok\n"
"• Permanensen mentve: /etc/tmpfiles.d/amd-powercap.conf",
+ "de": "AMD-GPU-Leistungslimit auf Maximum freischalten:\n• Die GPU ist standardmäßig auf eine begrenzte TDP eingestellt\n• Setzt power1_cap auf den maximal erlaubten Wert\n• Ergebnis: GPU kann mit voller Leistung laufen, höhere FPS-Spitzen\n• Dauerhaft gespeichert: /etc/tmpfiles.d/amd-powercap.conf",
"en": "Unlock AMD GPU power cap to maximum:\n"
"• GPU is limited to restricted TDP by default\n"
"• Sets power1_cap to the maximum allowed value\n"
"• Result: GPU can run at full power, higher FPS peaks\n"
"• Saved permanently: /etc/tmpfiles.d/amd-powercap.conf"},
"opt_nvidia_perf": {"hu": "Nvidia Maximum Performance",
+ "de": "Nvidia Maximum Performance",
"en": "Nvidia Maximum Performance"},
"opt_nvidia_perf_desc": {"hu": "Nvidia GPU teljesítmény maximalizálása:\n"
"• nvidia-smi persistence mode bekapcsolva (gyorsabb driver válasz)\n"
@@ -200,108 +231,112 @@ T = {
"• GPU firmware offload letiltva (NVreg_EnableGpuFirmware=0)\n"
"Permanensen mentve: /etc/modprobe.d/99-nvidia-gaming.conf\n"
"FIGYELEM: initramfs újraépítést igényel, újraindítás szükséges utána!",
+ "de": "Nvidia-GPU-Leistung maximieren:\n• nvidia-smi Persistence Mode an (schnellere Treiberantwort)\n• Auto-Boost auf älteren Karten deaktiviert (stabilere Takte)\n• GPU-Firmware-Offload deaktiviert (NVreg_EnableGpuFirmware=0)\nDauerhaft gespeichert: /etc/modprobe.d/99-nvidia-gaming.conf\nACHTUNG: erfordert einen initramfs-Neuaufbau, danach Neustart nötig!",
"en": "Maximize Nvidia GPU performance:\n"
"• nvidia-smi persistence mode on (faster driver response)\n"
"• Auto-boost disabled on older cards (more stable clocks)\n"
"• GPU firmware offload disabled (NVreg_EnableGpuFirmware=0)\n"
"Saved permanently: /etc/modprobe.d/99-nvidia-gaming.conf\n"
"WARNING: requires initramfs rebuild, reboot needed after!"},
- "opt_apply": {"hu": "TELEPÍTÉS / ALKALMAZÁS", "en": "INSTALL / APPLY"},
- "opt_apply_empty": {"hu": "Nincs kijelölve semmi.", "en": "Nothing selected."},
- "opt_apply_missing":{"hu": "Hiányzó script: ", "en": "Missing script: "},
- "opt_apply_ok": {"hu": "Sikeresen alkalmazva!", "en": "Successfully applied!"},
+ "opt_apply": {"hu": "TELEPÍTÉS / ALKALMAZÁS", "de": "INSTALLIEREN / ANWENDEN", "en": "INSTALL / APPLY"},
+ "opt_apply_empty": {"hu": "Nincs kijelölve semmi.", "de": "Nichts ausgewählt.", "en": "Nothing selected."},
+ "opt_apply_missing":{"hu": "Hiányzó script: ", "de": "Fehlendes Skript: ", "en": "Missing script: "},
+ "opt_apply_ok": {"hu": "Sikeresen alkalmazva!", "de": "Erfolgreich angewendet!", "en": "Successfully applied!"},
"opt_apply_err": {"hu": "Hiba (kód: {code}) — napló: {log}",
+ "de": "Fehler (Code: {code}) — Protokoll: {log}",
"en": "Error (code: {code}) — log: {log}"},
"opt_reboot_needed": {"hu": "A GPU optimalizációk érvénybe lépéséhez a számítógépet újra kell indítani!",
+ "de": "Für die GPU-Optimierungen ist ein Neustart erforderlich!",
"en": "A reboot is required for GPU optimizations to take effect!"},
# Hyprland page
- "hypr_title": {"hu": "HYPRLAND — KEYBINDS", "en": "HYPRLAND — KEYBINDS"},
- "hypr_source": {"hu": "Forrás: ", "en": "Source: "},
- "hypr_none": {"hu": "Nem található Hyprland konfiguráció.", "en": "No Hyprland configuration found."},
+ "hypr_title": {"hu": "HYPRLAND — KEYBINDS", "de": "HYPRLAND — TASTENKÜRZEL", "en": "HYPRLAND — KEYBINDS"},
+ "hypr_source": {"hu": "Forrás: ", "de": "Quelle: ", "en": "Source: "},
+ "hypr_none": {"hu": "Nem található Hyprland konfiguráció.", "de": "Keine Hyprland-Konfiguration gefunden.", "en": "No Hyprland configuration found."},
# Hyprland descriptions
- "hypr_spotlight": {"hu": "Spotlight (DMS) megnyitása", "en": "Open Spotlight (DMS)"},
- "hypr_terminal": {"hu": "Terminál megnyitása (Kitty)", "en": "Open terminal (Kitty)"},
- "hypr_filemanager": {"hu": "Fájlkezelő megnyitása (Thunar)", "en": "Open file manager (Thunar)"},
- "hypr_launcher": {"hu": "App launcher megnyitása", "en": "Open app launcher"},
- "hypr_logout": {"hu": "Kijelentkezés / leállítás", "en": "Logout / shutdown"},
- "hypr_exit": {"hu": "Hyprland kilépés", "en": "Exit Hyprland"},
- "hypr_volume": {"hu": "Hangerő állítás", "en": "Adjust volume"},
- "hypr_mute": {"hu": "Némítás ki/be", "en": "Toggle mute"},
- "hypr_brightness": {"hu": "Fényerő állítás", "en": "Adjust brightness"},
- "hypr_next_track": {"hu": "Következő szám", "en": "Next track"},
- "hypr_prev_track": {"hu": "Előző szám", "en": "Previous track"},
- "hypr_play_pause": {"hu": "Lejátszás / szünet", "en": "Play / pause"},
- "hypr_clipboard": {"hu": "Vágólap megjelenítése", "en": "Show clipboard"},
- "hypr_screenshot": {"hu": "Képernyőkép készítése", "en": "Take screenshot"},
- "hypr_lock": {"hu": "Képernyőzár", "en": "Lock screen"},
- "hypr_kill": {"hu": "Aktív ablak bezárása", "en": "Close active window"},
- "hypr_float": {"hu": "Lebegő mód ki/be", "en": "Toggle floating mode"},
- "hypr_pseudo": {"hu": "Pseudo-tiling ki/be", "en": "Toggle pseudo-tiling"},
- "hypr_fullscreen": {"hu": "Teljes képernyős mód", "en": "Fullscreen mode"},
- "hypr_exit2": {"hu": "Kilépés", "en": "Exit"},
- "hypr_scratchpad": {"hu": "Scratchpad megjelenítése", "en": "Toggle scratchpad"},
- "hypr_focus_l": {"hu": "Fókusz mozgatása balra", "en": "Focus left"},
- "hypr_focus_r": {"hu": "Fókusz mozgatása jobbra", "en": "Focus right"},
- "hypr_focus_u": {"hu": "Fókusz mozgatása fel", "en": "Focus up"},
- "hypr_focus_d": {"hu": "Fókusz mozgatása le", "en": "Focus down"},
- "hypr_ws_goto": {"hu": "Váltás {p}. munkaterületre", "en": "Switch to workspace {p}"},
- "hypr_ws_move": {"hu": "Ablak áthelyezése {p}. munkaterületre", "en": "Move window to workspace {p}"},
- "hypr_ws_generic": {"hu": "Munkaterület: {p}", "en": "Workspace: {p}"},
- "hypr_ws_scratch": {"hu": "Ablak → scratchpad", "en": "Window → scratchpad"},
- "hypr_ws_scratch_t":{"hu": "Scratchpad ki/be", "en": "Toggle scratchpad"},
- "hypr_ws_next": {"hu": "Következő munkaterület", "en": "Next workspace"},
- "hypr_ws_prev": {"hu": "Előző munkaterület", "en": "Previous workspace"},
- "hypr_ws_goto_n": {"hu": "Váltás {n}. munkaterületre", "en": "Switch to workspace {n}"},
- "hypr_ws_move_n": {"hu": "Ablak áthelyezése {n}. munkaterületre", "en": "Move window to workspace {n}"},
- "hypr_layout": {"hu": "Layout: {p}", "en": "Layout: {p}"},
- "hypr_run": {"hu": "Futtatás: {prog}", "en": "Run: {prog}"},
- "hypr_run_generic": {"hu": "Program futtatása", "en": "Run program"},
+ "hypr_spotlight": {"hu": "Spotlight (DMS) megnyitása", "de": "Spotlight (DMS) öffnen", "en": "Open Spotlight (DMS)"},
+ "hypr_terminal": {"hu": "Terminál megnyitása (Kitty)", "de": "Terminal öffnen (Kitty)", "en": "Open terminal (Kitty)"},
+ "hypr_filemanager": {"hu": "Fájlkezelő megnyitása (Thunar)", "de": "Dateimanager öffnen (Thunar)", "en": "Open file manager (Thunar)"},
+ "hypr_launcher": {"hu": "App launcher megnyitása", "de": "App-Launcher öffnen", "en": "Open app launcher"},
+ "hypr_logout": {"hu": "Kijelentkezés / leállítás", "de": "Abmelden / Herunterfahren", "en": "Logout / shutdown"},
+ "hypr_exit": {"hu": "Hyprland kilépés", "de": "Hyprland beenden", "en": "Exit Hyprland"},
+ "hypr_volume": {"hu": "Hangerő állítás", "de": "Lautstärke anpassen", "en": "Adjust volume"},
+ "hypr_mute": {"hu": "Némítás ki/be", "de": "Stummschaltung umschalten", "en": "Toggle mute"},
+ "hypr_brightness": {"hu": "Fényerő állítás", "de": "Helligkeit anpassen", "en": "Adjust brightness"},
+ "hypr_next_track": {"hu": "Következő szám", "de": "Nächster Titel", "en": "Next track"},
+ "hypr_prev_track": {"hu": "Előző szám", "de": "Vorheriger Titel", "en": "Previous track"},
+ "hypr_play_pause": {"hu": "Lejátszás / szünet", "de": "Wiedergabe / Pause", "en": "Play / pause"},
+ "hypr_clipboard": {"hu": "Vágólap megjelenítése", "de": "Zwischenablage anzeigen", "en": "Show clipboard"},
+ "hypr_screenshot": {"hu": "Képernyőkép készítése", "de": "Screenshot erstellen", "en": "Take screenshot"},
+ "hypr_lock": {"hu": "Képernyőzár", "de": "Bildschirm sperren", "en": "Lock screen"},
+ "hypr_kill": {"hu": "Aktív ablak bezárása", "de": "Aktives Fenster schließen", "en": "Close active window"},
+ "hypr_float": {"hu": "Lebegő mód ki/be", "de": "Schwebenden Modus umschalten", "en": "Toggle floating mode"},
+ "hypr_pseudo": {"hu": "Pseudo-tiling ki/be", "de": "Pseudo-Tiling umschalten", "en": "Toggle pseudo-tiling"},
+ "hypr_fullscreen": {"hu": "Teljes képernyős mód", "de": "Vollbildmodus", "en": "Fullscreen mode"},
+ "hypr_exit2": {"hu": "Kilépés", "de": "Beenden", "en": "Exit"},
+ "hypr_scratchpad": {"hu": "Scratchpad megjelenítése", "de": "Scratchpad anzeigen", "en": "Toggle scratchpad"},
+ "hypr_focus_l": {"hu": "Fókusz mozgatása balra", "de": "Fokus nach links verschieben", "en": "Focus left"},
+ "hypr_focus_r": {"hu": "Fókusz mozgatása jobbra", "de": "Fokus nach rechts verschieben", "en": "Focus right"},
+ "hypr_focus_u": {"hu": "Fókusz mozgatása fel", "de": "Fokus nach oben verschieben", "en": "Focus up"},
+ "hypr_focus_d": {"hu": "Fókusz mozgatása le", "de": "Fokus nach unten verschieben", "en": "Focus down"},
+ "hypr_ws_goto": {"hu": "Váltás {p}. munkaterületre", "de": "Zu Arbeitsfläche {p} wechseln", "en": "Switch to workspace {p}"},
+ "hypr_ws_move": {"hu": "Ablak áthelyezése {p}. munkaterületre", "de": "Fenster auf Arbeitsfläche {p} verschieben", "en": "Move window to workspace {p}"},
+ "hypr_ws_generic": {"hu": "Munkaterület: {p}", "de": "Arbeitsfläche: {p}", "en": "Workspace: {p}"},
+ "hypr_ws_scratch": {"hu": "Ablak → scratchpad", "de": "Fenster → Scratchpad", "en": "Window → scratchpad"},
+ "hypr_ws_scratch_t":{"hu": "Scratchpad ki/be", "de": "Scratchpad umschalten", "en": "Toggle scratchpad"},
+ "hypr_ws_next": {"hu": "Következő munkaterület", "de": "Nächste Arbeitsfläche", "en": "Next workspace"},
+ "hypr_ws_prev": {"hu": "Előző munkaterület", "de": "Vorherige Arbeitsfläche", "en": "Previous workspace"},
+ "hypr_ws_goto_n": {"hu": "Váltás {n}. munkaterületre", "de": "Zu Arbeitsfläche {n} wechseln", "en": "Switch to workspace {n}"},
+ "hypr_ws_move_n": {"hu": "Ablak áthelyezése {n}. munkaterületre", "de": "Fenster auf Arbeitsfläche {n} verschieben", "en": "Move window to workspace {n}"},
+ "hypr_layout": {"hu": "Layout: {p}", "de": "Layout: {p}", "en": "Layout: {p}"},
+ "hypr_run": {"hu": "Futtatás: {prog}", "de": "Ausführen: {prog}", "en": "Run: {prog}"},
+ "hypr_run_generic": {"hu": "Program futtatása", "de": "Programm ausführen", "en": "Run program"},
# Credits page
- "credits_title": {"hu": "KÖZREMŰKÖDŐK", "en": "CONTRIBUTORS"},
- "credits_rp1_name": {"hu": "RavePriest1", "en": "RavePriest1"},
- "credits_rp1_role": {"hu": "Névadó, hivatalos naplopó", "en": "Namesake, official slacker"},
- "credits_rp1_desc": {"hu": "Nem tudja mit akar — magyar streamer.", "en": "Doesn't know what he wants — Hungarian streamer."},
- "credits_nippy_name": {"hu": "Nippy", "en": "Nippy"},
- "credits_nippy_role": {"hu": "Fejlesztő", "en": "Developer"},
- "credits_nippy_desc": {"hu": "Agyérgörcsöt kap PR1-től, mert nem tudja mit akar.", "en": "Gets an aneurysm from PR1 because he doesn't know what he wants."},
- "credits_gabesz_name": {"hu": "GabeszM", "en": "GabeszM"},
- "credits_gabesz_role": {"hu": "Fejlesztő", "en": "Developer"},
- "credits_gabesz_desc": {"hu": "Weboldal, GNOME kiegészítő és alt-tab dizájn — mert valakinek kellett.", "en": "Website, GNOME extension and alt-tab design — because someone had to."},
- "credits_stefi_name": {"hu": "Stefi", "en": "Stefi"},
- "credits_stefi_role": {"hu": "Design", "en": "Design"},
- "credits_stefi_desc": {"hu": "5000 lesz!", "en": "That'll be 5000!"},
+ "credits_title": {"hu": "KÖZREMŰKÖDŐK", "de": "MITWIRKENDE", "en": "CONTRIBUTORS"},
+ "credits_rp1_name": {"hu": "RavePriest1", "de": "RavePriest1", "en": "RavePriest1"},
+ "credits_rp1_role": {"hu": "Névadó, hivatalos naplopó", "de": "Namensgeber, offizieller Faulenzer", "en": "Namesake, official slacker"},
+ "credits_rp1_desc": {"hu": "Nem tudja mit akar — magyar streamer.", "de": "Weiß nicht, was er will — ungarischer Streamer.", "en": "Doesn't know what he wants — Hungarian streamer."},
+ "credits_nippy_name": {"hu": "Nippy", "de": "Nippy", "en": "Nippy"},
+ "credits_nippy_role": {"hu": "Fejlesztő", "de": "Entwickler", "en": "Developer"},
+ "credits_nippy_desc": {"hu": "Agyérgörcsöt kap PR1-től, mert nem tudja mit akar.", "de": "Bekommt von PR1 einen Nervenzusammenbruch, weil er nicht weiß, was er will.", "en": "Gets an aneurysm from PR1 because he doesn't know what he wants."},
+ "credits_gabesz_name": {"hu": "GabeszM", "de": "GabeszM", "en": "GabeszM"},
+ "credits_gabesz_role": {"hu": "Fejlesztő", "de": "Entwickler", "en": "Developer"},
+ "credits_gabesz_desc": {"hu": "Weboldal, GNOME kiegészítő és alt-tab dizájn — mert valakinek kellett.", "de": "Website, GNOME-Erweiterung und Alt-Tab-Design — weil es jemand machen musste.", "en": "Website, GNOME extension and alt-tab design — because someone had to."},
+ "credits_stefi_name": {"hu": "Stefi", "de": "Stefi", "en": "Stefi"},
+ "credits_stefi_role": {"hu": "Design", "de": "Design", "en": "Design"},
+ "credits_stefi_desc": {"hu": "5000 lesz!", "de": "Das macht 5000!", "en": "That'll be 5000!"},
# Finish page
- "finish_ok": {"hu": "OK", "en": "OK"},
- "finish_title": {"hu": "KÉSZ!", "en": "DONE!"},
- "finish_sub": {"hu": "A RaveOS be van állítva.", "en": "RaveOS is set up."},
- "finish_next_step": {"hu": "KÖVETKEZŐ LÉPÉS", "en": "NEXT STEP"},
+ "finish_ok": {"hu": "OK", "de": "OK", "en": "OK"},
+ "finish_title": {"hu": "KÉSZ!", "de": "FERTIG!", "en": "DONE!"},
+ "finish_sub": {"hu": "A RaveOS be van állítva.", "de": "RaveOS ist eingerichtet.", "en": "RaveOS is set up."},
+ "finish_next_step": {"hu": "KÖVETKEZŐ LÉPÉS", "de": "NÄCHSTER SCHRITT", "en": "NEXT STEP"},
"finish_inst_desc": {"hu": "Az App Installer segítségével telepíthetsz minden fontos "
"szoftvert egy helyen — böngészőtől kezdve a fejlesztőeszközökig.",
+ "de": "Mit dem App Installer kannst du die gesamte wichtige Software an einem Ort installieren — von Browsern bis zu Entwicklerwerkzeugen.",
"en": "With the App Installer you can install all important "
"software in one place — from browsers to developer tools."},
- "finish_install": {"hu": "APP INSTALLER INDÍTÁSA", "en": "LAUNCH APP INSTALLER"},
- "finish_reboot": {"hu": "ÚJRAINDÍTÁS", "en": "REBOOT SYSTEM"},
- "finish_close": {"hu": "Bezárás", "en": "Close"},
- "finish_install_missing": {"hu": "Nem található az App Installer.", "en": "App Installer not found."},
- "finish_install_err": {"hu": "Nem sikerült elindítani. Napló: {log}", "en": "Failed to launch. Log: {log}"},
+ "finish_install": {"hu": "APP INSTALLER INDÍTÁSA", "de": "APP INSTALLER STARTEN", "en": "LAUNCH APP INSTALLER"},
+ "finish_reboot": {"hu": "ÚJRAINDÍTÁS", "de": "SYSTEM NEU STARTEN", "en": "REBOOT SYSTEM"},
+ "finish_close": {"hu": "Bezárás", "de": "Schließen", "en": "Close"},
+ "finish_install_missing": {"hu": "Nem található az App Installer.", "de": "App Installer nicht gefunden.", "en": "App Installer not found."},
+ "finish_install_err": {"hu": "Nem sikerült elindítani. Napló: {log}", "de": "Start fehlgeschlagen. Protokoll: {log}", "en": "Failed to launch. Log: {log}"},
# Tooltip keys (for optimize page descriptions that use _ACTION_DESCS)
- "action_killactive": {"hu": "Aktív ablak bezárása", "en": "Close active window"},
- "action_togglefloat": {"hu": "Lebegő mód ki/be", "en": "Toggle floating mode"},
- "action_pseudo": {"hu": "Pseudo-tiling ki/be", "en": "Toggle pseudo-tiling"},
- "action_fullscreen": {"hu": "Teljes képernyős mód", "en": "Fullscreen mode"},
- "action_exit": {"hu": "Kilépés", "en": "Exit"},
- "action_scratchpad": {"hu": "Scratchpad megjelenítése", "en": "Toggle scratchpad"},
- "action_focus_l": {"hu": "Fókusz mozgatása balra", "en": "Focus left"},
- "action_focus_r": {"hu": "Fókusz mozgatása jobbra", "en": "Focus right"},
- "action_focus_u": {"hu": "Fókusz mozgatása fel", "en": "Focus up"},
- "action_focus_d": {"hu": "Fókusz mozgatása le", "en": "Focus down"},
+ "action_killactive": {"hu": "Aktív ablak bezárása", "de": "Aktives Fenster schließen", "en": "Close active window"},
+ "action_togglefloat": {"hu": "Lebegő mód ki/be", "de": "Schwebenden Modus umschalten", "en": "Toggle floating mode"},
+ "action_pseudo": {"hu": "Pseudo-tiling ki/be", "de": "Pseudo-Tiling umschalten", "en": "Toggle pseudo-tiling"},
+ "action_fullscreen": {"hu": "Teljes képernyős mód", "de": "Vollbildmodus", "en": "Fullscreen mode"},
+ "action_exit": {"hu": "Kilépés", "de": "Beenden", "en": "Exit"},
+ "action_scratchpad": {"hu": "Scratchpad megjelenítése", "de": "Scratchpad anzeigen", "en": "Toggle scratchpad"},
+ "action_focus_l": {"hu": "Fókusz mozgatása balra", "de": "Fokus nach links verschieben", "en": "Focus left"},
+ "action_focus_r": {"hu": "Fókusz mozgatása jobbra", "de": "Fokus nach rechts verschieben", "en": "Focus right"},
+ "action_focus_u": {"hu": "Fókusz mozgatása fel", "de": "Fokus nach oben verschieben", "en": "Focus up"},
+ "action_focus_d": {"hu": "Fókusz mozgatása le", "de": "Fokus nach unten verschieben", "en": "Focus down"},
}
def _t(key, **kwargs):
"""Get translation for key, with optional format kwargs."""
lang = _current_lang
- text = T.get(key, {}).get(lang, T.get(key, {}).get("hu", key))
+ text = T.get(key, {}).get(lang, T.get(key, {}).get("en", key))
if kwargs:
try:
return text.format(**kwargs)
@@ -701,7 +736,7 @@ class WelcomePage(QWidget):
links_row2.setSpacing(8)
all_links = [
- ("support", "https://ko-fi.com/ravepriest1"),
+ ("support", "https://ko-fi.com/raveteam"),
("RP Kick", "https://kick.com/rpslair"),
("RP YouTube", "https://www.youtube.com/@RPslair"),
("RP Twitch", "https://www.twitch.tv/ravepriest1"),
@@ -1943,7 +1978,12 @@ class FinishPage(QWidget):
class RaveOSWelcome(QMainWindow):
def __init__(self):
super().__init__()
- self.setWindowTitle("RaveOS — Üdvözlünk")
+ if _current_lang == "de":
+ self.setWindowTitle("RaveOS — Willkommen")
+ elif _current_lang == "en":
+ self.setWindowTitle("RaveOS — Welcome")
+ else:
+ self.setWindowTitle("RaveOS — Üdvözlünk")
self.setMinimumSize(720, 640)
self.resize(800, 720)
self.setStyleSheet(STYLESHEET)
@@ -1993,14 +2033,6 @@ class RaveOSWelcome(QMainWindow):
self.lang_hu_btn.setObjectName("lang_btn")
self.lang_hu_btn.setFixedHeight(30)
self.lang_hu_btn.setCheckable(True)
- self.lang_hu_btn.setChecked(True)
- self.lang_hu_btn.setStyleSheet(
- f"QPushButton {{ background: {COLORS['accent']}; color: #ffffff;"
- f" border: none; border-radius: 4px; padding: 4px 12px;"
- f" font-size: 11px; font-weight: 600; }}"
- f"QPushButton:hover {{ background: {COLORS['accent_hover']}; }}"
- f"QPushButton:checked {{ background: {COLORS['accent']}; color: #ffffff; }}"
- )
self.lang_hu_btn.clicked.connect(lambda: self._set_lang("hu"))
nav.addWidget(self.lang_hu_btn)
@@ -2008,17 +2040,18 @@ class RaveOSWelcome(QMainWindow):
self.lang_en_btn.setObjectName("lang_btn")
self.lang_en_btn.setFixedHeight(30)
self.lang_en_btn.setCheckable(True)
- self.lang_en_btn.setChecked(False)
- self.lang_en_btn.setStyleSheet(
- f"QPushButton {{ background: {COLORS['surface']}; color: {COLORS['text_dim']};"
- f" border: 1px solid {COLORS['border']}; border-radius: 4px; padding: 4px 12px;"
- f" font-size: 11px; font-weight: 600; }}"
- f"QPushButton:hover {{ border-color: {COLORS['accent']}; color: {COLORS['accent_light']}; }}"
- f"QPushButton:checked {{ background: {COLORS['accent']}; color: #ffffff; border: none; }}"
- )
self.lang_en_btn.clicked.connect(lambda: self._set_lang("en"))
nav.addWidget(self.lang_en_btn)
+ self.lang_de_btn = QPushButton("Deutsch")
+ self.lang_de_btn.setObjectName("lang_btn")
+ self.lang_de_btn.setFixedHeight(30)
+ self.lang_de_btn.setCheckable(True)
+ self.lang_de_btn.clicked.connect(lambda: self._set_lang("de"))
+ nav.addWidget(self.lang_de_btn)
+
+ self._apply_lang_buttons()
+
self.back_btn = QPushButton(_t("nav_back"))
self.back_btn.setObjectName("secondary")
self.back_btn.clicked.connect(self._prev_page)
@@ -2037,43 +2070,32 @@ class RaveOSWelcome(QMainWindow):
self.p_finish.launch_installer.connect(self._launch_installer)
self._update_nav()
- def _set_lang(self, lang):
- global _current_lang
- if _current_lang == lang:
- return
- _current_lang = lang
- self.lang_hu_btn.setChecked(lang == "hu")
- self.lang_en_btn.setChecked(lang == "en")
- if lang == "hu":
- self.lang_hu_btn.setStyleSheet(
- f"QPushButton {{ background: {COLORS['accent']}; color: #ffffff;"
- f" border: none; border-radius: 4px; padding: 4px 12px;"
- f" font-size: 11px; font-weight: 600; }}"
- f"QPushButton:hover {{ background: {COLORS['accent_hover']}; }}"
- f"QPushButton:checked {{ background: {COLORS['accent']}; color: #ffffff; }}"
- )
- self.lang_en_btn.setStyleSheet(
- f"QPushButton {{ background: {COLORS['surface']}; color: {COLORS['text_dim']};"
- f" border: 1px solid {COLORS['border']}; border-radius: 4px; padding: 4px 12px;"
- f" font-size: 11px; font-weight: 600; }}"
- f"QPushButton:hover {{ border-color: {COLORS['accent']}; color: {COLORS['accent_light']}; }}"
- f"QPushButton:checked {{ background: {COLORS['accent']}; color: #ffffff; border: none; }}"
- )
- else:
- self.lang_en_btn.setStyleSheet(
- f"QPushButton {{ background: {COLORS['accent']}; color: #ffffff;"
+ def _lang_btn_active_style(self):
+ return (f"QPushButton {{ background: {COLORS['accent']}; color: #ffffff;"
f" border: none; border-radius: 4px; padding: 4px 12px;"
f" font-size: 11px; font-weight: 600; }}"
f"QPushButton:hover {{ background: {COLORS['accent_hover']}; }}"
- f"QPushButton:checked {{ background: {COLORS['accent']}; color: #ffffff; }}"
- )
- self.lang_hu_btn.setStyleSheet(
- f"QPushButton {{ background: {COLORS['surface']}; color: {COLORS['text_dim']};"
+ f"QPushButton:checked {{ background: {COLORS['accent']}; color: #ffffff; }}")
+
+ def _lang_btn_inactive_style(self):
+ return (f"QPushButton {{ background: {COLORS['surface']}; color: {COLORS['text_dim']};"
f" border: 1px solid {COLORS['border']}; border-radius: 4px; padding: 4px 12px;"
f" font-size: 11px; font-weight: 600; }}"
f"QPushButton:hover {{ border-color: {COLORS['accent']}; color: {COLORS['accent_light']}; }}"
- f"QPushButton:checked {{ background: {COLORS['accent']}; color: #ffffff; border: none; }}"
- )
+ f"QPushButton:checked {{ background: {COLORS['accent']}; color: #ffffff; border: none; }}")
+
+ def _apply_lang_buttons(self):
+ active_btn = {"hu": self.lang_hu_btn, "en": self.lang_en_btn, "de": self.lang_de_btn}[_current_lang]
+ for btn in (self.lang_hu_btn, self.lang_en_btn, self.lang_de_btn):
+ btn.setChecked(btn is active_btn)
+ btn.setStyleSheet(self._lang_btn_active_style() if btn is active_btn else self._lang_btn_inactive_style())
+
+ def _set_lang(self, lang):
+ global _current_lang
+ if _current_lang == lang:
+ return
+ _current_lang = lang
+ self._apply_lang_buttons()
self._retranslate_all()
def _make_step_bar(self):
@@ -2121,6 +2143,7 @@ class RaveOSWelcome(QMainWindow):
self.next_btn.setText(_t("finish_close") if is_last else _t("nav_next"))
self.lang_hu_btn.setVisible(idx == 0)
self.lang_en_btn.setVisible(idx == 0)
+ self.lang_de_btn.setVisible(idx == 0)
self._update_steps(idx)
def _update_steps(self, idx):
@@ -2142,7 +2165,9 @@ class RaveOSWelcome(QMainWindow):
)
def _retranslate_all(self):
- if _current_lang == "en":
+ if _current_lang == "de":
+ self.setWindowTitle("RaveOS — Willkommen")
+ elif _current_lang == "en":
self.setWindowTitle("RaveOS — Welcome")
else:
self.setWindowTitle("RaveOS — Üdvözlünk")