diff --git a/noctalia-visual-layer/BarWidget.qml b/noctalia-visual-layer/BarWidget.qml new file mode 100755 index 00000000..23e53154 --- /dev/null +++ b/noctalia-visual-layer/BarWidget.qml @@ -0,0 +1,72 @@ +import Quickshell +import qs.Commons +import qs.Services.UI +import qs.Widgets + +NIconButton { + id: root + + property var pluginApi: null + + property ShellScreen screen + property string widgetId: "" + property string section: "" + + // --- LÓGICA ESTÁNDAR DE CONFIGURACIÓN (1:1 Hello World) --- + property var cfg: pluginApi?.pluginSettings || ({}) + property var defaults: pluginApi?.manifest?.metadata?.defaultSettings || ({}) + + // Aquí definimos el color. Si no hay config, usa "primary" por defecto. + readonly property string iconColorKey: cfg.iconColor ?? defaults.iconColor ?? "onSurface" + + // --- DATOS PROPIOS DEL PLUGIN --- + icon: "adjustments-horizontal" + tooltipText: pluginApi?.tr("widget.tooltip") || "Noctalia Visual Layer" + + // --- ESTILOS DEL SISTEMA (1:1 Hello World) --- + // Usamos las variables globales para máxima compatibilidad + tooltipDirection: BarService.getTooltipDirection(screen?.name) + baseSize: Style.getCapsuleHeightForScreen(screen?.name) + applyUiScale: false + + customRadius: Style.radiusL // El estándar usa Radius L + + // Colores del sistema (Cápsula sólida) + colorBg: Style.capsuleColor + colorFg: Color.resolveColorKey(iconColorKey) + + border.color: Style.capsuleBorderColor + border.width: Style.capsuleBorderWidth + + // --- INTERACCIÓN --- + onClicked: { + if (pluginApi) { + pluginApi.openPanel(root.screen, this); + } + } + + // --- MENÚ CONTEXTUAL ESTÁNDAR --- + NPopupContextMenu { + id: contextMenu + + model: [ + { + "label": pluginApi?.tr("menu.settings") || "Ajustes", + "action": "settings", + "icon": "settings" + }, + ] + + onTriggered: function (action) { + contextMenu.close(); + PanelService.closeContextMenu(screen); + if (action === "settings") { + BarService.openPluginSettings(root.screen, pluginApi.manifest); + } + } + } + + onRightClicked: { + PanelService.showContextMenu(contextMenu, root, screen); + } +} diff --git a/noctalia-visual-layer/LEEME.md b/noctalia-visual-layer/LEEME.md new file mode 100755 index 00000000..fae538a8 --- /dev/null +++ b/noctalia-visual-layer/LEEME.md @@ -0,0 +1,154 @@ +
+
+
+
+
hyprland.conf einfügen. Wenn Sie das Plugin über die Shell deinstallieren, reinigt sich das System beim nächsten Neustart selbst, ohne Hyprland-Fehler zu verursachen."
+ },
+ "features": {
+ "title": "Funktionen",
+ "description": "Die Evolution Ihres Desktops.",
+ "list": {
+ "fluid_anim": "✨ Flüssige Animationen",
+ "smart_borders": "🎨 Smarte Ränder",
+ "realtime_shaders": "🕶️ Echtzeit-Shader",
+ "non_destructive": "🛡️ Nicht-destruktiv"
+ }
+ },
+ "docs": {
+ "title": "Technische Dokumentation",
+ "description": "Interne Struktur und Guide.",
+ "btn_show": "Struktur anzeigen",
+ "btn_hide": "Struktur verbergen",
+ "content": {
+ "arch_title": "MODULARE ARCHITEKTUR",
+ "arch_desc": "Fragment-System zur Vermeidung von Konflikten.",
+ "struct_title": "DATEISTRUKTUR",
+ "flow_title": "DATENFLUSS",
+ "flow_1": "1. Aktivierung erstellt Datei in fragments/.",
+ "flow_2": "2. Script assemble.sh verbindet alles.",
+ "flow_3": "3. Saubere overlay.conf wird generiert.",
+ "flow_4": "4. Hyprland lädt ohne Fehler neu.",
+ "debug_title": "DEBUGGING",
+ "debug_desc": "Bei Fehlern overlay.conf prüfen."
+ }
+ },
+ "credits": {
+ "title": "Credits",
+ "description": "Dank an HyDE Project.",
+ "btn_hyde": "Inspiriert von HyDE",
+ "ai_title": "Co-Coded mit KI",
+ "ai_desc": "Danke an Gemini für QML-Support."
+ }
+ },
+ "animations": {
+ "header_title": "Bewegungsbibliothek",
+ "header_subtitle": "Wählen Sie den Animationsstil für Ihren Desktop",
+ "presets": {
+ "01_relampago": {
+ "title": "Blitz",
+ "desc": "Maximale visuelle Reaktion."
+ },
+ "02_inercia_elastica": {
+ "title": "Elastische Trägheit",
+ "desc": "Organische Bewegung. Schwung beim Beenden und Abprallen beim Eintritt."
+ },
+ "03_seda_minimalista": {
+ "title": "Minimalistische Seide",
+ "desc": "Absolute Sanftheit. Perfekte Landungen im macOS-Stil."
+ },
+ "04_minimalismo_snappy": {
+ "title": "Snappy-Minimalismus",
+ "desc": "Optimiert für maximale Geschwindigkeit."
+ },
+ "05_material_moderno": {
+ "title": "Modernes Material",
+ "desc": "Google Pixel Ästhetik. Organische Animationen."
+ },
+ "06_impacto_clasico": {
+ "title": "Klassischer Aufprall",
+ "desc": "\"Jelly\"-Effekt. Elastisches Abprallen und Antizipation."
+ },
+ "07_lineal": {
+ "title": "Linear",
+ "desc": "Mathematische Präzision. \"Sci-Fi HUD\"-Stil."
+ },
+ "08_cristal": {
+ "title": "Glas",
+ "desc": "Ätherisches Gleiten. Gefühl von schwebendem Glas."
+ },
+ "09_seda_silk": {
+ "title": "Seide (Silk)",
+ "desc": "Verfeinerter JaKooLit-Stil. Energische Einträge."
+ },
+ "10_retro_arcade": {
+ "title": "Retro Arcade",
+ "desc": "\"Toon\"-Effekt. Übertriebenes Springen und Abprallen."
+ },
+ "11_futurista": {
+ "title": "Futuristisch",
+ "desc": "Holografisches Interface. Digitaler vertikaler Fluss."
+ },
+ "12_rebote": {
+ "title": "Abprall",
+ "desc": "Vertikale Federphysik. Fenster fallen und prallen ab."
+ },
+ "13_organico": {
+ "title": "Organisch",
+ "desc": "Sanftes vertikales Wachstum und langsames Verblassen."
+ },
+ "14_elastico": {
+ "title": "Elastisch",
+ "desc": "Gummiband-Physik. Dynamische Dehnung."
+ },
+ "15_desvanecido": {
+ "title": "Verblassen",
+ "desc": "Spektrale Materialisierung ohne Bewegung."
+ },
+ "16_dinamico": {
+ "title": "Dynamisch",
+ "desc": "Organischer Rhythmus. Geschwindigkeit und Sanftheit."
+ },
+ "17_sutil": {
+ "title": "Subtil",
+ "desc": "Keine Ablenkungen. Absolute Sanftheit."
+ },
+ "18_energico": {
+ "title": "Energisch",
+ "desc": "Maximaler visueller Effekt. Rückstoß-Exits."
+ }
+ }
+ },
+ "borders": {
+ "geometry": {
+ "title": "Dicke",
+ "desc": "Breite (0-3px)"
+ },
+ "header_title": "Visuelle Stile",
+ "header_subtitle": "Fensterpersönlichkeit",
+ "presets": {
+ "01_cascade": {
+ "title": "Kaskade",
+ "desc": "Sanfter Verlauf."
+ },
+ "02_diagonal": {
+ "title": "Diagonal",
+ "desc": "Winkelverlauf."
+ },
+ "03_duo": {
+ "title": "Duo",
+ "desc": "Starker Kontrast."
+ },
+ "04_tri": {
+ "title": "Dreizack",
+ "desc": "Dreifarbige Eleganz."
+ },
+ "05_spectrum": {
+ "title": "Spektrum",
+ "desc": "Vier Farben."
+ },
+ "06_pulse": {
+ "title": "Puls",
+ "desc": "Rotiert bei Auswahl."
+ },
+ "07_infinity": {
+ "title": "Unendlich",
+ "desc": "Konstante Rotation."
+ },
+ "08_neon": {
+ "title": "Neon",
+ "desc": "Langsame Oszillation."
+ },
+ "09_glitch": {
+ "title": "Cyber Glitch",
+ "desc": "Aggressiv, schnell."
+ },
+ "10_golden": {
+ "title": "Gold",
+ "desc": "Metallische Reflexe."
+ },
+ "11_toxic": {
+ "title": "Giftgrün",
+ "desc": "Fluoreszierende Reflexe."
+ },
+ "12_neon_cyberpunk": {
+ "title": "Neon Cyber-Glow (Dual)",
+ "desc": "Simulation zweifarbiger Helligkeit mit einer weiß-violetten Lichtbasis."
+ },
+ "13_the_joker": {
+ "title": "Der Joker",
+ "desc": "Joker-Ästhetik: Säuregrün und tiefes Lila mit elektrischem Leuchten."
+ }
+ }
+ },
+ "shaders": {
+ "header_title": "Bildschirmfilter",
+ "header_subtitle": "Echtzeit-Verarbeitung",
+ "presets": {
+ "01_night": {
+ "title": "Nachtlicht",
+ "desc": "Augenschutz."
+ },
+ "02_mono": {
+ "title": "Monochrom",
+ "desc": "Graustufen."
+ },
+ "03_vibrant": {
+ "title": "Lebendig",
+ "desc": "Verstärkt Farben."
+ },
+ "04_sharp": {
+ "title": "Schärfe",
+ "desc": "Verbessert Kanten."
+ },
+ "05_ink": {
+ "title": "E-Ink",
+ "desc": "Papier-Textur."
+ },
+ "06_invert": {
+ "title": "Invertiert",
+ "desc": "Invertiert Farben."
+ },
+ "07_oled": {
+ "title": "OLED",
+ "desc": "Reines Schwarz."
+ },
+ "08_vision": {
+ "title": "Nachtsicht",
+ "desc": "Militärgrün."
+ },
+ "09_hybrid": {
+ "title": "Hybrid",
+ "desc": "Balance."
+ }
+ }
+ }
+}
diff --git a/noctalia-visual-layer/i18n/en.json b/noctalia-visual-layer/i18n/en.json
new file mode 100644
index 00000000..eb1f60b0
--- /dev/null
+++ b/noctalia-visual-layer/i18n/en.json
@@ -0,0 +1,237 @@
+{
+ "meta": {
+ "lang": "en",
+ "name": "English",
+ "author": "Ximo & AI"
+ },
+ "widget": {
+ "tooltip": "Noctalia Visual Layer",
+ "menu_settings": "Plugin Settings"
+ },
+ "panel": {
+ "header_title": "Noctalia Visual",
+ "header_subtitle": "Aesthetic Control Center",
+ "tabs": {
+ "home": "Home",
+ "animations": "Animations",
+ "borders": "Borders",
+ "effects": "Effects"
+ }
+ },
+ "welcome": {
+ "activation_title": "System Activation",
+ "system_active": "The system is operational. Visual effects are safely managed by NVL.",
+ "system_inactive": "System halted. Requires acceptance of the persistence contract to continue.",
+ "enable_label": "Enable Visual Layer",
+ "warning": {
+ "title": "SECURE PERSISTENCE CONTRACT",
+ "text": "Upon activation, NVL will deploy a guardian shield and inject a secure path into your hyprland.conf. If you uninstall the plugin from the Shell, the system will self-clean on the next reboot without causing Hyprland errors."
+ },
+ "features": {
+ "title": "Features & Benefits",
+ "description": "Noctalia Visual Layer is the aesthetic evolution of your desktop.",
+ "list": {
+ "fluid_anim": "✨ Fluid Animations",
+ "smart_borders": "🎨 Smart Borders",
+ "realtime_shaders": "🕶️ Real-Time Shaders",
+ "non_destructive": "🛡️ Non-Destructive"
+ }
+ },
+ "docs": {
+ "title": "Architecture & Documentation",
+ "description": "Discover how NVL works under the hood.",
+ "summary": "Noctalia Visual Layer uses a real-time Fragments and Assembly system. It never touches your main configuration. Everything is safely generated in an isolated overlay.conf master file.",
+ "btn_readme": "Read Full Manual",
+ "btn_folder": "Browse Files"
+ },
+ "credits": {
+ "title": "Credits",
+ "description": "Special thanks to the HyDE Project.",
+ "btn_hyde": "Inspired by HyDE Project",
+ "ai_title": "AI Co-Programmed",
+ "ai_desc": "QML Architecture assistance by Gemini (Google)."
+ }
+ },
+ "animations": {
+ "header_title": "Motion Library",
+ "header_subtitle": "Select the animation style for your desktop",
+ "presets": {
+ "01_relampago": {
+ "title": "Lightning",
+ "desc": "Maximum visual response."
+ },
+ "02_inercia_elastica": {
+ "title": "Elastic Inertia",
+ "desc": "Organic movement. Windows gain momentum on exit and bounce on entry."
+ },
+ "03_seda_minimalista": {
+ "title": "Minimalist Silk",
+ "desc": "Absolute smoothness. No bounces, just perfect macOS-style landings."
+ },
+ "04_minimalismo_snappy": {
+ "title": "Snappy Minimalism",
+ "desc": "Optimized for maximum speed. Window and workspace management only."
+ },
+ "05_material_moderno": {
+ "title": "Modern Material",
+ "desc": "Google Pixel aesthetic. Organic animations, subtle scaling, and tactile response."
+ },
+ "06_impacto_clasico": {
+ "title": "Classic Impact",
+ "desc": "\"Jelly\" effect. Elastic bounce on entry and anticipation on exit."
+ },
+ "07_lineal": {
+ "title": "Linear",
+ "desc": "Mathematical precision. Constant motion, \"Sci-Fi HUD\" style."
+ },
+ "08_cristal": {
+ "title": "Glass",
+ "desc": "Ethereal glide. Feeling of glass floating without friction."
+ },
+ "09_seda_silk": {
+ "title": "Silk",
+ "desc": "Refined JaKooLit style. Energetic entries, fleeting exits, and stable workspaces."
+ },
+ "10_retro_arcade": {
+ "title": "Retro Arcade",
+ "desc": "\"Toon/Arcade\" effect. Windows jump and bounce exaggeratedly."
+ },
+ "11_futurista": {
+ "title": "Futuristic",
+ "desc": "Holographic interface. Digital precision, zero bounces, and vertical data flow."
+ },
+ "12_rebote": {
+ "title": "Bounce",
+ "desc": "Vertical spring physics. Windows fall and bounce upon opening."
+ },
+ "13_organico": {
+ "title": "Organic",
+ "desc": "\"Sprout\" movement. Smooth vertical growth and slow fades."
+ },
+ "14_elastico": {
+ "title": "Elastic",
+ "desc": "Rubber band physics. Windows arrive, stretch, and bounce vertically."
+ },
+ "15_desvanecido": {
+ "title": "Fade",
+ "desc": "Spectral materialization. Windows appear smoothly with barely any movement."
+ },
+ "16_dinamico": {
+ "title": "Dynamic",
+ "desc": "Organic rhythm. Combination of speed and smooth settling."
+ },
+ "17_sutil": {
+ "title": "Subtle",
+ "desc": "Zero distractions. Absolute smoothness without bounces or abrupt movements."
+ },
+ "18_energico": {
+ "title": "Energetic",
+ "desc": "Maximum visual impact. Exaggerated bounces (56%) and kickback exits."
+ }
+ }
+ },
+ "borders": {
+ "geometry": {
+ "title": "Border Thickness",
+ "desc": "Define line thickness (0-3px)"
+ },
+ "header_title": "Visual Styles",
+ "header_subtitle": "Define your windows' personality",
+ "presets": {
+ "01_cascade": {
+ "title": "Cascade",
+ "desc": "Soft vertical gradient at 50%."
+ },
+ "02_diagonal": {
+ "title": "Diagonal",
+ "desc": "Dynamic angle fade."
+ },
+ "03_duo": {
+ "title": "Duo Contrast",
+ "desc": "Strong Primary/Secondary contrast."
+ },
+ "04_tri": {
+ "title": "Trident",
+ "desc": "Tricolor elegance with gold."
+ },
+ "05_spectrum": {
+ "title": "Spectrum",
+ "desc": "Four colors for maximum visibility."
+ },
+ "06_pulse": {
+ "title": "Pulse",
+ "desc": "Rotates once when selecting window."
+ },
+ "07_infinity": {
+ "title": "Infinity",
+ "desc": "Constant color rotation."
+ },
+ "08_neon": {
+ "title": "Neon Breath",
+ "desc": "Slow and relaxing oscillation."
+ },
+ "09_glitch": {
+ "title": "Cyber Glitch",
+ "desc": "Aggressive, fast, and error colors."
+ },
+ "10_golden": {
+ "title": "Golden Luxury",
+ "desc": "Gold metallic reflections."
+ },
+ "11_toxic": {
+ "title": "Toxic Green",
+ "desc": "Fluor green metallic reflections."
+ },
+ "12_neon_cyberpunk": {
+ "title": "Neon Cyber-Glow (Dual)",
+ "desc": "Simulation of bicolor brightness using a white/violet light base."
+ },
+ "13_the_joker": {
+ "title": "The Joker",
+ "desc": "Joker aesthetic: Acid green and deep purple with an electric glow."
+ }
+ }
+ },
+ "shaders": {
+ "header_title": "Screen Filters",
+ "header_subtitle": "Real-time image post-processing",
+ "presets": {
+ "01_night": {
+ "title": "Night Light",
+ "desc": "Warm filter to protect eyesight."
+ },
+ "02_mono": {
+ "title": "Monochrome",
+ "desc": "Grayscale for concentration."
+ },
+ "03_vibrant": {
+ "title": "Vibrant",
+ "desc": "Intelligently enhances colors."
+ },
+ "04_sharp": {
+ "title": "HD Sharpness",
+ "desc": "Improves border and text definition."
+ },
+ "05_ink": {
+ "title": "E-Ink Paper",
+ "desc": "Sepia electronic paper texture."
+ },
+ "06_invert": {
+ "title": "Inverted",
+ "desc": "Inverts all colors."
+ },
+ "07_oled": {
+ "title": "OLED Mode",
+ "desc": "Pure blacks and dramatic contrast."
+ },
+ "08_vision": {
+ "title": "Night Vision",
+ "desc": "Military green phosphor effect."
+ },
+ "09_hybrid": {
+ "title": "Hybrid",
+ "desc": "Balance between correction and style."
+ }
+ }
+ }
+}
diff --git a/noctalia-visual-layer/i18n/es.json b/noctalia-visual-layer/i18n/es.json
new file mode 100644
index 00000000..32ea13f9
--- /dev/null
+++ b/noctalia-visual-layer/i18n/es.json
@@ -0,0 +1,237 @@
+{
+ "meta": {
+ "lang": "es",
+ "name": "Español",
+ "author": "Ximo & AI"
+ },
+ "widget": {
+ "tooltip": "Noctalia Visual Layer",
+ "menu_settings": "Ajustes del Plugin"
+ },
+ "panel": {
+ "header_title": "Noctalia Visual",
+ "header_subtitle": "Centro de Control Estético",
+ "tabs": {
+ "home": "Inicio",
+ "animations": "Animaciones",
+ "borders": "Bordes",
+ "effects": "Efectos"
+ }
+ },
+ "welcome": {
+ "activation_title": "Activación del Sistema",
+ "system_active": "El sistema está operativo. Los efectos visuales están gestionados por NVL de forma segura.",
+ "system_inactive": "Sistema detenido. Requiere aceptación del contrato de persistencia para continuar.",
+ "enable_label": "Habilitar Visual Layer",
+ "warning": {
+ "title": "CONTRATO DE PERSISTENCIA SEGURA",
+ "text": "Al activar, NVL desplegará un escudo guardián e inyectará una ruta segura en tu hyprland.conf. Si desinstalas el plugin desde la Shell, el sistema se autolimpiará en el próximo reinicio sin causar errores en Hyprland."
+ },
+ "features": {
+ "title": "Características & Bondades",
+ "description": "Noctalia Visual Layer es la evolución estética de tu escritorio.",
+ "list": {
+ "fluid_anim": "✨ Animaciones Fluidas",
+ "smart_borders": "🎨 Bordes Inteligentes",
+ "realtime_shaders": "🕶️ Shaders Real-Time",
+ "non_destructive": "🛡️ No Destructivo"
+ }
+ },
+ "docs": {
+ "title": "Arquitectura y Documentación",
+ "description": "Descubre cómo funciona NVL por debajo.",
+ "summary": "Noctalia Visual Layer utiliza un sistema de Fragmentos y Ensamblaje en tiempo real. Nunca toca tu configuración principal. Todo se genera de forma segura en un archivo maestro overlay.conf aislado.",
+ "btn_readme": "Leer Manual Completo",
+ "btn_folder": "Explorar Archivos"
+ },
+ "credits": {
+ "title": "Créditos",
+ "description": "Agradecimientos especiales al HyDE Project.",
+ "btn_hyde": "Inspirado en HyDE Project",
+ "ai_title": "Co-Programado con IA",
+ "ai_desc": "Agradecimientos a Gemini (Google) por la asistencia en arquitectura QML."
+ }
+ },
+ "animations": {
+ "header_title": "Biblioteca de Movimiento",
+ "header_subtitle": "Selecciona el estilo de animación para tu escritorio",
+ "presets": {
+ "01_relampago": {
+ "title": "Relámpago",
+ "desc": "Máxima respuesta visual."
+ },
+ "02_inercia_elastica": {
+ "title": "Inercia Elástica",
+ "desc": "Movimiento orgánico. Las ventanas toman impulso al salir y rebotan al entrar."
+ },
+ "03_seda_minimalista": {
+ "title": "Seda Minimalista",
+ "desc": "Suavidad absoluta. Sin rebotes, solo aterrizajes perfectos estilo macOS."
+ },
+ "04_minimalismo_snappy": {
+ "title": "Minimalismo Snappy",
+ "desc": "Optimizado para la máxima velocidad. Solo gestión de ventanas y workspaces."
+ },
+ "05_material_moderno": {
+ "title": "Material Moderno",
+ "desc": "Estética Google Pixel. Animaciones orgánicas, escalas sutiles y respuesta táctil."
+ },
+ "06_impacto_clasico": {
+ "title": "Impacto Clásico",
+ "desc": "Efecto \"Jelly\". Rebote elástico al entrar y anticipación al salir."
+ },
+ "07_lineal": {
+ "title": "Lineal",
+ "desc": "Precisión matemática. Movimiento constante estilo \"Sci-Fi HUD\"."
+ },
+ "08_cristal": {
+ "title": "Cristal",
+ "desc": "Deslizamiento etéreo. Sensación de vidrio flotando sin fricción."
+ },
+ "09_seda_silk": {
+ "title": "Seda (Silk)",
+ "desc": "El estilo JaKooLit refinado. Entradas con energía, salidas fugaces y workspaces estables."
+ },
+ "10_retro_arcade": {
+ "title": "Retro Arcade",
+ "desc": "Efecto \"Toon/Arcade\". Las ventanas saltan y rebotan exageradamente."
+ },
+ "11_futurista": {
+ "title": "Futurista",
+ "desc": "Interfaz holográfica. Precisión digital, cero rebotes y flujo de datos vertical."
+ },
+ "12_rebote": {
+ "title": "Rebote",
+ "desc": "Física de muelle vertical. Las ventanas caen y rebotan al abrirse."
+ },
+ "13_organico": {
+ "title": "Orgánico",
+ "desc": "Movimiento de \"brote\". Crecimiento vertical suave y desvanecimientos lentos."
+ },
+ "14_elastico": {
+ "title": "Elástico",
+ "desc": "Física de banda elástica. Las ventanas llegan, se estiran y rebotan verticalmente."
+ },
+ "15_desvanecido": {
+ "title": "Desvanecido",
+ "desc": "Materialización espectral. Las ventanas aparecen suavemente sin moverse apenas."
+ },
+ "16_dinamico": {
+ "title": "Dinámico",
+ "desc": "Ritmo orgánico. Combinación de velocidad y asentamiento suave."
+ },
+ "17_sutil": {
+ "title": "Sutil",
+ "desc": "Cero distracciones. Suavidad absoluta sin rebotes ni movimientos bruscos."
+ },
+ "18_energico": {
+ "title": "Enérgico",
+ "desc": "Impacto visual máximo. Rebotes exagerados (56%) y salidas con retroceso."
+ }
+ }
+ },
+ "borders": {
+ "geometry": {
+ "title": "Grosor del Borde",
+ "desc": "Define el grosor de la línea (0-3px)"
+ },
+ "header_title": "Estilos Visuales",
+ "header_subtitle": "Define la personalidad de tus ventanas",
+ "presets": {
+ "01_cascade": {
+ "title": "Cascada",
+ "desc": "Degradado vertical suave al 50%."
+ },
+ "02_diagonal": {
+ "title": "Diagonal",
+ "desc": "Desvanecimiento dinámico en ángulo."
+ },
+ "03_duo": {
+ "title": "Dúo Contraste",
+ "desc": "Fuerte contraste Primario/Secundario."
+ },
+ "04_tri": {
+ "title": "Tridente",
+ "desc": "Elegancia tricolor con dorado."
+ },
+ "05_spectrum": {
+ "title": "Espectro",
+ "desc": "Cuatro colores para máxima visibilidad."
+ },
+ "06_pulse": {
+ "title": "Latido",
+ "desc": "Gira una vez al seleccionar la ventana."
+ },
+ "07_infinity": {
+ "title": "Infinito",
+ "desc": "Rotación constante de colores."
+ },
+ "08_neon": {
+ "title": "Respiración Neón",
+ "desc": "Oscilación lenta y relajante."
+ },
+ "09_glitch": {
+ "title": "Cyber Glitch",
+ "desc": "Agresivo, rápido y colores de error."
+ },
+ "10_golden": {
+ "title": "Golden Luxury",
+ "desc": "Reflejos metálicos dorados."
+ },
+ "11_toxic": {
+ "title": "Toxic Green",
+ "desc": "Reflejos metálicos verdes flúor."
+ },
+ "12_neon_cyberpunk": {
+ "title": "Neón Cyber-Glow (Dual)",
+ "desc": "Simulación de brillo bicolor usando una base de luz blanca y violeta."
+ },
+ "13_the_joker": {
+ "title": "El Joker",
+ "desc": "Estética Joker: Verde ácido y morado profundo con un brillo eléctrico."
+ }
+ }
+ },
+ "shaders": {
+ "header_title": "Filtros de Pantalla",
+ "header_subtitle": "Post-procesado de imagen en tiempo real",
+ "presets": {
+ "01_night": {
+ "title": "Luz Nocturna",
+ "desc": "Filtro cálido para proteger la vista."
+ },
+ "02_mono": {
+ "title": "Monocromo",
+ "desc": "Escala de grises para concentración."
+ },
+ "03_vibrant": {
+ "title": "Vibrante",
+ "desc": "Realza colores de forma inteligente."
+ },
+ "04_sharp": {
+ "title": "Nitidez HD",
+ "desc": "Mejora la definición de bordes y textos."
+ },
+ "05_ink": {
+ "title": "Papel E-Ink",
+ "desc": "Textura de papel electrónico sepia."
+ },
+ "06_invert": {
+ "title": "Invertido",
+ "desc": "Invierte todos los colores."
+ },
+ "07_oled": {
+ "title": "Modo OLED",
+ "desc": "Negros puros y contraste dramático."
+ },
+ "08_vision": {
+ "title": "Visión Nocturna",
+ "desc": "Efecto fósforo verde militar."
+ },
+ "09_hybrid": {
+ "title": "Híbrido",
+ "desc": "Balance entre corrección y estilo."
+ }
+ }
+ }
+}
diff --git a/noctalia-visual-layer/i18n/fr.json b/noctalia-visual-layer/i18n/fr.json
new file mode 100644
index 00000000..3d4eb011
--- /dev/null
+++ b/noctalia-visual-layer/i18n/fr.json
@@ -0,0 +1,248 @@
+{
+ "meta": {
+ "lang": "fr",
+ "name": "Français",
+ "author": "Ximo & AI"
+ },
+ "widget": {
+ "tooltip": "Noctalia Visual Layer",
+ "menu_settings": "Paramètres du Plugin"
+ },
+ "panel": {
+ "header_title": "Noctalia Visual",
+ "header_subtitle": "Centre de Contrôle Esthétique",
+ "tabs": {
+ "home": "Accueil",
+ "animations": "Animations",
+ "borders": "Bordures",
+ "effects": "Effets"
+ }
+ },
+ "welcome": {
+ "activation_title": "Activation du Système",
+ "system_active": "Le système est opérationnel. Les effets visuels sont gérés par NVL en toute sécurité.",
+ "system_inactive": "Système arrêté. Nécessite l'acceptation du contrat de persistance pour continuer.",
+ "enable_label": "Activer Visual Layer",
+ "warning": {
+ "title": "CONTRAT DE PERSISTANCE SÉCURISÉE",
+ "text": "Lors de l'activation, NVL déploiera un bouclier gardien et injectera un chemin sécurisé dans votre hyprland.conf. Si vous désinstallez le plugin depuis le Shell, le système s'auto-nettoiera au prochain redémarrage sans causer d'erreurs dans Hyprland."
+ },
+ "features": {
+ "title": "Caractéristiques",
+ "description": "Noctalia Visual Layer est l'évolution esthétique de votre bureau.",
+ "list": {
+ "fluid_anim": "✨ Animations Fluides",
+ "smart_borders": "🎨 Bordures Intelligentes",
+ "realtime_shaders": "🕶️ Shaders Temps Réel",
+ "non_destructive": "🛡️ Non Destructif"
+ }
+ },
+ "docs": {
+ "title": "Documentation Technique",
+ "description": "Structure interne et guide développeur.",
+ "btn_show": "Voir Structure",
+ "btn_hide": "Masquer Structure",
+ "content": {
+ "arch_title": "ARCHITECTURE MODULAIRE (Système de Fragments)",
+ "arch_desc": "Ce plugin utilise un système de construction dynamique pour éviter les conflits.",
+ "struct_title": "STRUCTURE DES FICHIERS",
+ "flow_title": "FLUX DE DONNÉES",
+ "flow_1": "1. L'activation crée un fichier dans fragments/.",
+ "flow_2": "2. Le script assemble.sh joint tous les fragments.",
+ "flow_3": "3. Un fichier overlay.conf propre est généré.",
+ "flow_4": "4. Hyprland recharge la configuration sans erreurs.",
+ "debug_title": "DÉBOGAGE",
+ "debug_desc": "Si quelque chose échoue, vérifiez overlay.conf."
+ }
+ },
+ "credits": {
+ "title": "Crédits",
+ "description": "Merci au Projet HyDE.",
+ "btn_hyde": "Inspiré par HyDE Project",
+ "ai_title": "Co-Codé avec IA",
+ "ai_desc": "Merci à Gemini pour l'assistance QML."
+ }
+ },
+ "animations": {
+ "header_title": "Bibliothèque de Mouvement",
+ "header_subtitle": "Sélectionnez le style d’animation pour votre bureau",
+ "presets": {
+ "01_relampago": {
+ "title": "Éclair",
+ "desc": "Réponse visuelle maximale."
+ },
+ "02_inercia_elastica": {
+ "title": "Inertie Élastique",
+ "desc": "Mouvement organique. Élan en sortie et rebond à l’entrée."
+ },
+ "03_seda_minimalista": {
+ "title": "Soie Minimaliste",
+ "desc": "Douceur absolue. Atterrissages parfaits style macOS."
+ },
+ "04_minimalismo_snappy": {
+ "title": "Minimalisme Snappy",
+ "desc": "Vitesse maximale. Gestion pure des fenêtres et espaces."
+ },
+ "05_material_moderno": {
+ "title": "Matériel Moderne",
+ "desc": "Esthétique Google Pixel. Animations organiques et tactiles."
+ },
+ "06_impacto_clasico": {
+ "title": "Impact Classique",
+ "desc": "Effet \"Jelly\". Rebond élastique et anticipation."
+ },
+ "07_lineal": {
+ "title": "Linéaire",
+ "desc": "Précision mathématique. Style \"Sci-Fi HUD\"."
+ },
+ "08_cristal": {
+ "title": "Cristal",
+ "desc": "Glissement éthéré. Sensation de verre en apesanteur."
+ },
+ "09_seda_silk": {
+ "title": "Soie (Silk)",
+ "desc": "Le style JaKooLit raffiné. Entrées énergiques."
+ },
+ "10_retro_arcade": {
+ "title": "Rétro Arcade",
+ "desc": "Effet \"Toon\". Sauts et rebonds exagérés."
+ },
+ "11_futurista": {
+ "title": "Futuriste",
+ "desc": "Interface holographique. Flux de données vertical."
+ },
+ "12_rebote": {
+ "title": "Rebond",
+ "desc": "Physique de ressort. Les fenêtres tombent et rebondissent."
+ },
+ "13_organico": {
+ "title": "Organique",
+ "desc": "Croissance verticale douce et fondus lents."
+ },
+ "14_elastico": {
+ "title": "Élastique",
+ "desc": "Physique de bande élastique. Étirement dynamique."
+ },
+ "15_desvanecido": {
+ "title": "Fondu",
+ "desc": "Matérialisation spectrale sans mouvement."
+ },
+ "16_dinamico": {
+ "title": "Dynamique",
+ "desc": "Rythme organique. Vitesse et stabilité."
+ },
+ "17_sutil": {
+ "title": "Subtil",
+ "desc": "Zéro distraction. Douceur absolue."
+ },
+ "18_energico": {
+ "title": "Énergique",
+ "desc": "Impact visuel maximal. Sorties avec recul."
+ }
+ }
+ },
+ "borders": {
+ "geometry": {
+ "title": "Épaisseur",
+ "desc": "Largeur (0-3px)"
+ },
+ "header_title": "Styles Visuels",
+ "header_subtitle": "Personnalité des fenêtres",
+ "presets": {
+ "01_cascade": {
+ "title": "Cascade",
+ "desc": "Dégradé vertical doux."
+ },
+ "02_diagonal": {
+ "title": "Diagonale",
+ "desc": "Fondu dynamique en angle."
+ },
+ "03_duo": {
+ "title": "Duo Contraste",
+ "desc": "Fort contraste Primaire/Secondaire."
+ },
+ "04_tri": {
+ "title": "Trident",
+ "desc": "Élégance tricolor dorée."
+ },
+ "05_spectrum": {
+ "title": "Spectre",
+ "desc": "Quatre couleurs pour visibilité max."
+ },
+ "06_pulse": {
+ "title": "Pulsation",
+ "desc": "Tourne une fois à la sélection."
+ },
+ "07_infinity": {
+ "title": "Infini",
+ "desc": "Rotation constante des couleurs."
+ },
+ "08_neon": {
+ "title": "Souffle Néon",
+ "desc": "Oscillation lente et relaxante."
+ },
+ "09_glitch": {
+ "title": "Cyber Glitch",
+ "desc": "Agressif, rapide, couleurs d'erreur."
+ },
+ "10_golden": {
+ "title": "Luxe Doré",
+ "desc": "Reflets métalliques dorés."
+ },
+ "11_toxic": {
+ "title": "Vert Toxique",
+ "desc": "Reflets métalliques vert fluo."
+ },
+ "12_neon_cyberpunk": {
+ "title": "Néon Cyber-Glow (Dual)",
+ "desc": "Simulation de luminosité bicolore utilisant une base de lumière blanche et violette."
+ },
+ "13_the_joker": {
+ "title": "Le Joker",
+ "desc": "Esthétique Joker : Vert acide et violet profond avec un éclat électrique."
+ }
+ }
+ },
+ "shaders": {
+ "header_title": "Filtres d'Écran",
+ "header_subtitle": "Post-traitement temps réel",
+ "presets": {
+ "01_night": {
+ "title": "Lumière Nocturne",
+ "desc": "Filtre chaud protecteur."
+ },
+ "02_mono": {
+ "title": "Monochrome",
+ "desc": "Niveaux de gris pour focus."
+ },
+ "03_vibrant": {
+ "title": "Vibrant",
+ "desc": "Rehausse les couleurs."
+ },
+ "04_sharp": {
+ "title": "Netteté HD",
+ "desc": "Améliore bords et textes."
+ },
+ "05_ink": {
+ "title": "Papier E-Ink",
+ "desc": "Texture papier sépia."
+ },
+ "06_invert": {
+ "title": "Inversé",
+ "desc": "Inverse toutes les couleurs."
+ },
+ "07_oled": {
+ "title": "Mode OLED",
+ "desc": "Noirs purs et contraste."
+ },
+ "08_vision": {
+ "title": "Vision Nocturne",
+ "desc": "Effet phosphore vert."
+ },
+ "09_hybrid": {
+ "title": "Hybride",
+ "desc": "Équilibre correction et style."
+ }
+ }
+ }
+}
diff --git a/noctalia-visual-layer/i18n/hu.json b/noctalia-visual-layer/i18n/hu.json
new file mode 100644
index 00000000..ce3377f0
--- /dev/null
+++ b/noctalia-visual-layer/i18n/hu.json
@@ -0,0 +1,248 @@
+{
+ "meta": {
+ "lang": "en",
+ "name": "English",
+ "author": "Ximo & AI"
+ },
+ "widget": {
+ "tooltip": "Noctalia Visual Layer",
+ "menu_settings": "Plugin Settings"
+ },
+ "panel": {
+ "header_title": "Noctalia Visual",
+ "header_subtitle": "Aesthetic Control Center",
+ "tabs": {
+ "home": "Home",
+ "animations": "Animations",
+ "borders": "Borders",
+ "effects": "Effects"
+ }
+ },
+ "welcome": {
+ "activation_title": "System Activation",
+ "system_active": "The system is operational. Visual effects are safely managed by NVL.",
+ "system_inactive": "System halted. Requires acceptance of the persistence contract to continue.",
+ "enable_label": "Enable Visual Layer",
+ "warning": {
+ "title": "SECURE PERSISTENCE CONTRACT",
+ "text": "Upon activation, NVL will deploy a guardian shield and inject a secure path into your hyprland.conf. If you uninstall the plugin from the Shell, the system will self-clean on the next reboot without causing Hyprland errors."
+ },
+ "features": {
+ "title": "Features & Benefits",
+ "description": "Noctalia Visual Layer is the aesthetic evolution of your desktop.",
+ "list": {
+ "fluid_anim": "✨ Fluid Animations",
+ "smart_borders": "🎨 Smart Borders",
+ "realtime_shaders": "🕶️ Real-Time Shaders",
+ "non_destructive": "🛡️ Non-Destructive"
+ }
+ },
+ "docs": {
+ "title": "Technical Documentation",
+ "description": "Internal plugin structure and developer guide.",
+ "btn_show": "Show File Structure",
+ "btn_hide": "Hide Structure",
+ "content": {
+ "arch_title": "MODULAR ARCHITECTURE (Fragment System)",
+ "arch_desc": "This plugin uses a dynamic construction system to avoid module conflicts.",
+ "struct_title": "FILE STRUCTURE",
+ "flow_title": "DATA FLOW",
+ "flow_1": "1. Activating a module creates its file in fragments/.",
+ "flow_2": "2. The assemble.sh script joins all fragments.",
+ "flow_3": "3. A clean overlay.conf is generated.",
+ "flow_4": "4. Hyprland reloads configuration without errors.",
+ "debug_title": "DEBUGGING",
+ "debug_desc": "If something fails, check the overlay.conf file. It should contain the sum of all active effects."
+ }
+ },
+ "credits": {
+ "title": "Credits",
+ "description": "Special thanks to the HyDE Project.",
+ "btn_hyde": "Inspired by HyDE Project",
+ "ai_title": "AI Co-Programmed",
+ "ai_desc": "QML Architecture assistance by Gemini (Google)."
+ }
+ },
+ "animations": {
+ "header_title": "Motion Library",
+ "header_subtitle": "Select the animation style for your desktop",
+ "presets": {
+ "01_relampago": {
+ "title": "Lightning",
+ "desc": "Maximum visual response."
+ },
+ "02_inercia_elastica": {
+ "title": "Elastic Inertia",
+ "desc": "Organic movement. Windows gain momentum on exit and bounce on entry."
+ },
+ "03_seda_minimalista": {
+ "title": "Minimalist Silk",
+ "desc": "Absolute smoothness. No bounces, just perfect macOS-style landings."
+ },
+ "04_minimalismo_snappy": {
+ "title": "Snappy Minimalism",
+ "desc": "Optimized for maximum speed. Window and workspace management only."
+ },
+ "05_material_moderno": {
+ "title": "Modern Material",
+ "desc": "Google Pixel aesthetic. Organic animations, subtle scaling, and tactile response."
+ },
+ "06_impacto_clasico": {
+ "title": "Classic Impact",
+ "desc": "\"Jelly\" effect. Elastic bounce on entry and anticipation on exit."
+ },
+ "07_lineal": {
+ "title": "Linear",
+ "desc": "Mathematical precision. Constant motion, \"Sci-Fi HUD\" style."
+ },
+ "08_cristal": {
+ "title": "Glass",
+ "desc": "Ethereal glide. Feeling of glass floating without friction."
+ },
+ "09_seda_silk": {
+ "title": "Silk",
+ "desc": "Refined JaKooLit style. Energetic entries, fleeting exits, and stable workspaces."
+ },
+ "10_retro_arcade": {
+ "title": "Retro Arcade",
+ "desc": "\"Toon/Arcade\" effect. Windows jump and bounce exaggeratedly."
+ },
+ "11_futurista": {
+ "title": "Futuristic",
+ "desc": "Holographic interface. Digital precision, zero bounces, and vertical data flow."
+ },
+ "12_rebote": {
+ "title": "Bounce",
+ "desc": "Vertical spring physics. Windows fall and bounce upon opening."
+ },
+ "13_organico": {
+ "title": "Organic",
+ "desc": "\"Sprout\" movement. Smooth vertical growth and slow fades."
+ },
+ "14_elastico": {
+ "title": "Elastic",
+ "desc": "Rubber band physics. Windows arrive, stretch, and bounce vertically."
+ },
+ "15_desvanecido": {
+ "title": "Fade",
+ "desc": "Spectral materialization. Windows appear smoothly with barely any movement."
+ },
+ "16_dinamico": {
+ "title": "Dynamic",
+ "desc": "Organic rhythm. Combination of speed and smooth settling."
+ },
+ "17_sutil": {
+ "title": "Subtle",
+ "desc": "Zero distractions. Absolute smoothness without bounces or abrupt movements."
+ },
+ "18_energico": {
+ "title": "Energetic",
+ "desc": "Maximum visual impact. Exaggerated bounces (56%) and kickback exits."
+ }
+ }
+ },
+ "borders": {
+ "geometry": {
+ "title": "Border Thickness",
+ "desc": "Define line thickness (0-3px)"
+ },
+ "header_title": "Visual Styles",
+ "header_subtitle": "Define your windows' personality",
+ "presets": {
+ "01_cascade": {
+ "title": "Cascade",
+ "desc": "Soft vertical gradient at 50%."
+ },
+ "02_diagonal": {
+ "title": "Diagonal",
+ "desc": "Dynamic angle fade."
+ },
+ "03_duo": {
+ "title": "Duo Contrast",
+ "desc": "Strong Primary/Secondary contrast."
+ },
+ "04_tri": {
+ "title": "Trident",
+ "desc": "Tricolor elegance with gold."
+ },
+ "05_spectrum": {
+ "title": "Spectrum",
+ "desc": "Four colors for maximum visibility."
+ },
+ "06_pulse": {
+ "title": "Pulse",
+ "desc": "Rotates once when selecting window."
+ },
+ "07_infinity": {
+ "title": "Infinity",
+ "desc": "Constant color rotation."
+ },
+ "08_neon": {
+ "title": "Neon Breath",
+ "desc": "Slow and relaxing oscillation."
+ },
+ "09_glitch": {
+ "title": "Cyber Glitch",
+ "desc": "Aggressive, fast, and error colors."
+ },
+ "10_golden": {
+ "title": "Golden Luxury",
+ "desc": "Gold metallic reflections."
+ },
+ "11_toxic": {
+ "title": "Toxic Green",
+ "desc": "Fluor green metallic reflections."
+ },
+ "12_neon_cyberpunk": {
+ "title": "Neon Cyber-Glow (Dual)",
+ "desc": "Simulation of bicolor brightness using a white/violet light base."
+ },
+ "13_the_joker": {
+ "title": "The Joker",
+ "desc": "Joker aesthetic: Acid green and deep purple with an electric glow."
+ }
+ }
+ },
+ "shaders": {
+ "header_title": "Screen Filters",
+ "header_subtitle": "Real-time image post-processing",
+ "presets": {
+ "01_night": {
+ "title": "Night Light",
+ "desc": "Warm filter to protect eyesight."
+ },
+ "02_mono": {
+ "title": "Monochrome",
+ "desc": "Grayscale for concentration."
+ },
+ "03_vibrant": {
+ "title": "Vibrant",
+ "desc": "Intelligently enhances colors."
+ },
+ "04_sharp": {
+ "title": "HD Sharpness",
+ "desc": "Improves border and text definition."
+ },
+ "05_ink": {
+ "title": "E-Ink Paper",
+ "desc": "Sepia electronic paper texture."
+ },
+ "06_invert": {
+ "title": "Inverted",
+ "desc": "Inverts all colors."
+ },
+ "07_oled": {
+ "title": "OLED Mode",
+ "desc": "Pure blacks and dramatic contrast."
+ },
+ "08_vision": {
+ "title": "Night Vision",
+ "desc": "Military green phosphor effect."
+ },
+ "09_hybrid": {
+ "title": "Hybrid",
+ "desc": "Balance between correction and style."
+ }
+ }
+ }
+}
diff --git a/noctalia-visual-layer/i18n/it.json b/noctalia-visual-layer/i18n/it.json
new file mode 100644
index 00000000..ec299b52
--- /dev/null
+++ b/noctalia-visual-layer/i18n/it.json
@@ -0,0 +1,248 @@
+{
+ "meta": {
+ "lang": "it",
+ "name": "Italiano",
+ "author": "Ximo & AI"
+ },
+ "widget": {
+ "tooltip": "Noctalia Visual Layer",
+ "menu_settings": "Impostazioni Plugin"
+ },
+ "panel": {
+ "header_title": "Noctalia Visual",
+ "header_subtitle": "Centro di Controllo",
+ "tabs": {
+ "home": "Home",
+ "animations": "Animazioni",
+ "borders": "Bordi",
+ "effects": "Effetti"
+ }
+ },
+ "welcome": {
+ "activation_title": "Attivazione del Sistema",
+ "system_active": "Il sistema è operativo. Gli effetti visivi sono gestiti da NVL in modo sicuro.",
+ "system_inactive": "Sistema fermo. Richiede l'accettazione del contratto di persistenza per continuare.",
+ "enable_label": "Abilita Visual Layer",
+ "warning": {
+ "title": "CONTRATTO DI PERSISTENZA SICURA",
+ "text": "All'attivazione, NVL distribuirà uno scudo guardiano e inietterà un percorso sicuro nel tuo hyprland.conf. Se disinstalli il plugin dalla Shell, il sistema si auto-pulirà al prossimo riavvio senza causare errori in Hyprland."
+ },
+ "features": {
+ "title": "Caratteristiche",
+ "description": "L'evoluzione estetica del desktop.",
+ "list": {
+ "fluid_anim": "✨ Animazioni Fluide",
+ "smart_borders": "🎨 Bordi Intelligenti",
+ "realtime_shaders": "🕶️ Shaders Real-Time",
+ "non_destructive": "🛡️ Non Distruttivo"
+ }
+ },
+ "docs": {
+ "title": "Documentazione",
+ "description": "Guida tecnica.",
+ "btn_show": "Vedi Struttura",
+ "btn_hide": "Nascondi Struttura",
+ "content": {
+ "arch_title": "ARCHITETTURA MODULARE",
+ "arch_desc": "Sistema a frammenti per evitare conflitti.",
+ "struct_title": "STRUTTURA FILE",
+ "flow_title": "FLUSSO DATI",
+ "flow_1": "1. L'attivazione crea file in fragments/.",
+ "flow_2": "2. Script assemble.sh unisce tutto.",
+ "flow_3": "3. Generato overlay.conf pulito.",
+ "flow_4": "4. Hyprland ricarica senza errori.",
+ "debug_title": "DEBUG",
+ "debug_desc": "Se fallisce, controlla overlay.conf."
+ }
+ },
+ "credits": {
+ "title": "Crediti",
+ "description": "Grazie a HyDE Project.",
+ "btn_hyde": "Ispirato da HyDE",
+ "ai_title": "Co-Codificato con IA",
+ "ai_desc": "Grazie a Gemini per aiuto QML."
+ }
+ },
+ "animations": {
+ "header_title": "Libreria di Movimento",
+ "header_subtitle": "Seleziona lo stile di animazione per il desktop",
+ "presets": {
+ "01_relampago": {
+ "title": "Fulmine",
+ "desc": "Massima risposta visiva."
+ },
+ "02_inercia_elastica": {
+ "title": "Inerzia Elastica",
+ "desc": "Movimento organico. Slancio in uscita e rimbalzo in entrata."
+ },
+ "03_seda_minimalista": {
+ "title": "Seta Minimalista",
+ "desc": "Morbidezza assoluta. Atterraggi perfetti stile macOS."
+ },
+ "04_minimalismo_snappy": {
+ "title": "Minimalismo Snappy",
+ "desc": "Ottimizzato per la velocità massima."
+ },
+ "05_material_moderno": {
+ "title": "Materiale Moderno",
+ "desc": "Estetica Google Pixel. Animazioni organiche e tattili."
+ },
+ "06_impacto_clasico": {
+ "title": "Impatto Classico",
+ "desc": "Effetto \"Jelly\". Rimbalzo elastico e anticipazione."
+ },
+ "07_lineal": {
+ "title": "Lineare",
+ "desc": "Precisione matematica. Stile \"Sci-Fi HUD\"."
+ },
+ "08_cristal": {
+ "title": "Cristallo",
+ "desc": "Scorrimento etereo. Sensazione di vetro fluttuante."
+ },
+ "09_seda_silk": {
+ "title": "Seta (Silk)",
+ "desc": "Stile JaKooLit raffinato. Ingressi energici."
+ },
+ "10_retro_arcade": {
+ "title": "Retro Arcade",
+ "desc": "Effetto \"Toon\". Salti e rimbalzi esagerati."
+ },
+ "11_futurista": {
+ "title": "Futurista",
+ "desc": "Interfaccia olografica. Flusso di dati verticale."
+ },
+ "12_rebote": {
+ "title": "Rimbalzo",
+ "desc": "Fisica a molla verticale. Le finestre cadono e rimbalzano."
+ },
+ "13_organico": {
+ "title": "Organico",
+ "desc": "Crescita verticale morbida e dissolvenze lente."
+ },
+ "14_elastico": {
+ "title": "Elastico",
+ "desc": "Fisica dell’elastico. Allungamento dinamico."
+ },
+ "15_desvanecido": {
+ "title": "Dissolvenza",
+ "desc": "Materializzazione spettrale senza movimento."
+ },
+ "16_dinamico": {
+ "title": "Dinamico",
+ "desc": "Ritmo organico. Velocità e morbidezza."
+ },
+ "17_sutil": {
+ "title": "Sottile",
+ "desc": "Zero distrazioni. Morbidezza assoluta."
+ },
+ "18_energico": {
+ "title": "Energico",
+ "desc": "Massimo impatto visivo. Uscite con rinculo."
+ }
+ }
+ },
+ "borders": {
+ "geometry": {
+ "title": "Spessore",
+ "desc": "Larghezza (0-3px)"
+ },
+ "header_title": "Stili Visivi",
+ "header_subtitle": "Personalità finestre",
+ "presets": {
+ "01_cascade": {
+ "title": "Cascata",
+ "desc": "Gradiente verticale."
+ },
+ "02_diagonal": {
+ "title": "Diagonale",
+ "desc": "Dissolvenza angolare."
+ },
+ "03_duo": {
+ "title": "Duo",
+ "desc": "Forte contrasto."
+ },
+ "04_tri": {
+ "title": "Tridente",
+ "desc": "Eleganza tricolore."
+ },
+ "05_spectrum": {
+ "title": "Spettro",
+ "desc": "Quattro colori."
+ },
+ "06_pulse": {
+ "title": "Polso",
+ "desc": "Ruota alla selezione."
+ },
+ "07_infinity": {
+ "title": "Infinito",
+ "desc": "Rotazione costante."
+ },
+ "08_neon": {
+ "title": "Neon",
+ "desc": "Oscillazione lenta."
+ },
+ "09_glitch": {
+ "title": "Glitch",
+ "desc": "Aggressivo, errore."
+ },
+ "10_golden": {
+ "title": "Oro",
+ "desc": "Riflessi metallici."
+ },
+ "11_toxic": {
+ "title": "Tossico",
+ "desc": "Verde fluo."
+ },
+ "12_neon_cyberpunk": {
+ "title": "Neon Cyber-Glow (Dual)",
+ "desc": "Simulazione di luminosità bicolore utilizzando una base di luce bianca e viola."
+ },
+ "13_the_joker": {
+ "title": "Il Joker",
+ "desc": "Estetica Joker: Verde acido e viola profondo con un bagliore elettrico."
+ }
+ }
+ },
+ "shaders": {
+ "header_title": "Filtri Schermo",
+ "header_subtitle": "Post-processing",
+ "presets": {
+ "01_night": {
+ "title": "Luce Notturna",
+ "desc": "Filtro caldo."
+ },
+ "02_mono": {
+ "title": "Monocromatico",
+ "desc": "Scala di grigi."
+ },
+ "03_vibrant": {
+ "title": "Vibrante",
+ "desc": "Migliora colori."
+ },
+ "04_sharp": {
+ "title": "Nitidezza",
+ "desc": "Migliora bordi."
+ },
+ "05_ink": {
+ "title": "E-Ink",
+ "desc": "Effetto carta."
+ },
+ "06_invert": {
+ "title": "Invertito",
+ "desc": "Inverte colori."
+ },
+ "07_oled": {
+ "title": "OLED",
+ "desc": "Neri puri."
+ },
+ "08_vision": {
+ "title": "Visione Notturna",
+ "desc": "Fosforo verde."
+ },
+ "09_hybrid": {
+ "title": "Ibrido",
+ "desc": "Bilanciamento."
+ }
+ }
+ }
+}
diff --git a/noctalia-visual-layer/i18n/ja.json b/noctalia-visual-layer/i18n/ja.json
new file mode 100644
index 00000000..ce3377f0
--- /dev/null
+++ b/noctalia-visual-layer/i18n/ja.json
@@ -0,0 +1,248 @@
+{
+ "meta": {
+ "lang": "en",
+ "name": "English",
+ "author": "Ximo & AI"
+ },
+ "widget": {
+ "tooltip": "Noctalia Visual Layer",
+ "menu_settings": "Plugin Settings"
+ },
+ "panel": {
+ "header_title": "Noctalia Visual",
+ "header_subtitle": "Aesthetic Control Center",
+ "tabs": {
+ "home": "Home",
+ "animations": "Animations",
+ "borders": "Borders",
+ "effects": "Effects"
+ }
+ },
+ "welcome": {
+ "activation_title": "System Activation",
+ "system_active": "The system is operational. Visual effects are safely managed by NVL.",
+ "system_inactive": "System halted. Requires acceptance of the persistence contract to continue.",
+ "enable_label": "Enable Visual Layer",
+ "warning": {
+ "title": "SECURE PERSISTENCE CONTRACT",
+ "text": "Upon activation, NVL will deploy a guardian shield and inject a secure path into your hyprland.conf. If you uninstall the plugin from the Shell, the system will self-clean on the next reboot without causing Hyprland errors."
+ },
+ "features": {
+ "title": "Features & Benefits",
+ "description": "Noctalia Visual Layer is the aesthetic evolution of your desktop.",
+ "list": {
+ "fluid_anim": "✨ Fluid Animations",
+ "smart_borders": "🎨 Smart Borders",
+ "realtime_shaders": "🕶️ Real-Time Shaders",
+ "non_destructive": "🛡️ Non-Destructive"
+ }
+ },
+ "docs": {
+ "title": "Technical Documentation",
+ "description": "Internal plugin structure and developer guide.",
+ "btn_show": "Show File Structure",
+ "btn_hide": "Hide Structure",
+ "content": {
+ "arch_title": "MODULAR ARCHITECTURE (Fragment System)",
+ "arch_desc": "This plugin uses a dynamic construction system to avoid module conflicts.",
+ "struct_title": "FILE STRUCTURE",
+ "flow_title": "DATA FLOW",
+ "flow_1": "1. Activating a module creates its file in fragments/.",
+ "flow_2": "2. The assemble.sh script joins all fragments.",
+ "flow_3": "3. A clean overlay.conf is generated.",
+ "flow_4": "4. Hyprland reloads configuration without errors.",
+ "debug_title": "DEBUGGING",
+ "debug_desc": "If something fails, check the overlay.conf file. It should contain the sum of all active effects."
+ }
+ },
+ "credits": {
+ "title": "Credits",
+ "description": "Special thanks to the HyDE Project.",
+ "btn_hyde": "Inspired by HyDE Project",
+ "ai_title": "AI Co-Programmed",
+ "ai_desc": "QML Architecture assistance by Gemini (Google)."
+ }
+ },
+ "animations": {
+ "header_title": "Motion Library",
+ "header_subtitle": "Select the animation style for your desktop",
+ "presets": {
+ "01_relampago": {
+ "title": "Lightning",
+ "desc": "Maximum visual response."
+ },
+ "02_inercia_elastica": {
+ "title": "Elastic Inertia",
+ "desc": "Organic movement. Windows gain momentum on exit and bounce on entry."
+ },
+ "03_seda_minimalista": {
+ "title": "Minimalist Silk",
+ "desc": "Absolute smoothness. No bounces, just perfect macOS-style landings."
+ },
+ "04_minimalismo_snappy": {
+ "title": "Snappy Minimalism",
+ "desc": "Optimized for maximum speed. Window and workspace management only."
+ },
+ "05_material_moderno": {
+ "title": "Modern Material",
+ "desc": "Google Pixel aesthetic. Organic animations, subtle scaling, and tactile response."
+ },
+ "06_impacto_clasico": {
+ "title": "Classic Impact",
+ "desc": "\"Jelly\" effect. Elastic bounce on entry and anticipation on exit."
+ },
+ "07_lineal": {
+ "title": "Linear",
+ "desc": "Mathematical precision. Constant motion, \"Sci-Fi HUD\" style."
+ },
+ "08_cristal": {
+ "title": "Glass",
+ "desc": "Ethereal glide. Feeling of glass floating without friction."
+ },
+ "09_seda_silk": {
+ "title": "Silk",
+ "desc": "Refined JaKooLit style. Energetic entries, fleeting exits, and stable workspaces."
+ },
+ "10_retro_arcade": {
+ "title": "Retro Arcade",
+ "desc": "\"Toon/Arcade\" effect. Windows jump and bounce exaggeratedly."
+ },
+ "11_futurista": {
+ "title": "Futuristic",
+ "desc": "Holographic interface. Digital precision, zero bounces, and vertical data flow."
+ },
+ "12_rebote": {
+ "title": "Bounce",
+ "desc": "Vertical spring physics. Windows fall and bounce upon opening."
+ },
+ "13_organico": {
+ "title": "Organic",
+ "desc": "\"Sprout\" movement. Smooth vertical growth and slow fades."
+ },
+ "14_elastico": {
+ "title": "Elastic",
+ "desc": "Rubber band physics. Windows arrive, stretch, and bounce vertically."
+ },
+ "15_desvanecido": {
+ "title": "Fade",
+ "desc": "Spectral materialization. Windows appear smoothly with barely any movement."
+ },
+ "16_dinamico": {
+ "title": "Dynamic",
+ "desc": "Organic rhythm. Combination of speed and smooth settling."
+ },
+ "17_sutil": {
+ "title": "Subtle",
+ "desc": "Zero distractions. Absolute smoothness without bounces or abrupt movements."
+ },
+ "18_energico": {
+ "title": "Energetic",
+ "desc": "Maximum visual impact. Exaggerated bounces (56%) and kickback exits."
+ }
+ }
+ },
+ "borders": {
+ "geometry": {
+ "title": "Border Thickness",
+ "desc": "Define line thickness (0-3px)"
+ },
+ "header_title": "Visual Styles",
+ "header_subtitle": "Define your windows' personality",
+ "presets": {
+ "01_cascade": {
+ "title": "Cascade",
+ "desc": "Soft vertical gradient at 50%."
+ },
+ "02_diagonal": {
+ "title": "Diagonal",
+ "desc": "Dynamic angle fade."
+ },
+ "03_duo": {
+ "title": "Duo Contrast",
+ "desc": "Strong Primary/Secondary contrast."
+ },
+ "04_tri": {
+ "title": "Trident",
+ "desc": "Tricolor elegance with gold."
+ },
+ "05_spectrum": {
+ "title": "Spectrum",
+ "desc": "Four colors for maximum visibility."
+ },
+ "06_pulse": {
+ "title": "Pulse",
+ "desc": "Rotates once when selecting window."
+ },
+ "07_infinity": {
+ "title": "Infinity",
+ "desc": "Constant color rotation."
+ },
+ "08_neon": {
+ "title": "Neon Breath",
+ "desc": "Slow and relaxing oscillation."
+ },
+ "09_glitch": {
+ "title": "Cyber Glitch",
+ "desc": "Aggressive, fast, and error colors."
+ },
+ "10_golden": {
+ "title": "Golden Luxury",
+ "desc": "Gold metallic reflections."
+ },
+ "11_toxic": {
+ "title": "Toxic Green",
+ "desc": "Fluor green metallic reflections."
+ },
+ "12_neon_cyberpunk": {
+ "title": "Neon Cyber-Glow (Dual)",
+ "desc": "Simulation of bicolor brightness using a white/violet light base."
+ },
+ "13_the_joker": {
+ "title": "The Joker",
+ "desc": "Joker aesthetic: Acid green and deep purple with an electric glow."
+ }
+ }
+ },
+ "shaders": {
+ "header_title": "Screen Filters",
+ "header_subtitle": "Real-time image post-processing",
+ "presets": {
+ "01_night": {
+ "title": "Night Light",
+ "desc": "Warm filter to protect eyesight."
+ },
+ "02_mono": {
+ "title": "Monochrome",
+ "desc": "Grayscale for concentration."
+ },
+ "03_vibrant": {
+ "title": "Vibrant",
+ "desc": "Intelligently enhances colors."
+ },
+ "04_sharp": {
+ "title": "HD Sharpness",
+ "desc": "Improves border and text definition."
+ },
+ "05_ink": {
+ "title": "E-Ink Paper",
+ "desc": "Sepia electronic paper texture."
+ },
+ "06_invert": {
+ "title": "Inverted",
+ "desc": "Inverts all colors."
+ },
+ "07_oled": {
+ "title": "OLED Mode",
+ "desc": "Pure blacks and dramatic contrast."
+ },
+ "08_vision": {
+ "title": "Night Vision",
+ "desc": "Military green phosphor effect."
+ },
+ "09_hybrid": {
+ "title": "Hybrid",
+ "desc": "Balance between correction and style."
+ }
+ }
+ }
+}
diff --git a/noctalia-visual-layer/i18n/ku.json b/noctalia-visual-layer/i18n/ku.json
new file mode 100644
index 00000000..ce3377f0
--- /dev/null
+++ b/noctalia-visual-layer/i18n/ku.json
@@ -0,0 +1,248 @@
+{
+ "meta": {
+ "lang": "en",
+ "name": "English",
+ "author": "Ximo & AI"
+ },
+ "widget": {
+ "tooltip": "Noctalia Visual Layer",
+ "menu_settings": "Plugin Settings"
+ },
+ "panel": {
+ "header_title": "Noctalia Visual",
+ "header_subtitle": "Aesthetic Control Center",
+ "tabs": {
+ "home": "Home",
+ "animations": "Animations",
+ "borders": "Borders",
+ "effects": "Effects"
+ }
+ },
+ "welcome": {
+ "activation_title": "System Activation",
+ "system_active": "The system is operational. Visual effects are safely managed by NVL.",
+ "system_inactive": "System halted. Requires acceptance of the persistence contract to continue.",
+ "enable_label": "Enable Visual Layer",
+ "warning": {
+ "title": "SECURE PERSISTENCE CONTRACT",
+ "text": "Upon activation, NVL will deploy a guardian shield and inject a secure path into your hyprland.conf. If you uninstall the plugin from the Shell, the system will self-clean on the next reboot without causing Hyprland errors."
+ },
+ "features": {
+ "title": "Features & Benefits",
+ "description": "Noctalia Visual Layer is the aesthetic evolution of your desktop.",
+ "list": {
+ "fluid_anim": "✨ Fluid Animations",
+ "smart_borders": "🎨 Smart Borders",
+ "realtime_shaders": "🕶️ Real-Time Shaders",
+ "non_destructive": "🛡️ Non-Destructive"
+ }
+ },
+ "docs": {
+ "title": "Technical Documentation",
+ "description": "Internal plugin structure and developer guide.",
+ "btn_show": "Show File Structure",
+ "btn_hide": "Hide Structure",
+ "content": {
+ "arch_title": "MODULAR ARCHITECTURE (Fragment System)",
+ "arch_desc": "This plugin uses a dynamic construction system to avoid module conflicts.",
+ "struct_title": "FILE STRUCTURE",
+ "flow_title": "DATA FLOW",
+ "flow_1": "1. Activating a module creates its file in fragments/.",
+ "flow_2": "2. The assemble.sh script joins all fragments.",
+ "flow_3": "3. A clean overlay.conf is generated.",
+ "flow_4": "4. Hyprland reloads configuration without errors.",
+ "debug_title": "DEBUGGING",
+ "debug_desc": "If something fails, check the overlay.conf file. It should contain the sum of all active effects."
+ }
+ },
+ "credits": {
+ "title": "Credits",
+ "description": "Special thanks to the HyDE Project.",
+ "btn_hyde": "Inspired by HyDE Project",
+ "ai_title": "AI Co-Programmed",
+ "ai_desc": "QML Architecture assistance by Gemini (Google)."
+ }
+ },
+ "animations": {
+ "header_title": "Motion Library",
+ "header_subtitle": "Select the animation style for your desktop",
+ "presets": {
+ "01_relampago": {
+ "title": "Lightning",
+ "desc": "Maximum visual response."
+ },
+ "02_inercia_elastica": {
+ "title": "Elastic Inertia",
+ "desc": "Organic movement. Windows gain momentum on exit and bounce on entry."
+ },
+ "03_seda_minimalista": {
+ "title": "Minimalist Silk",
+ "desc": "Absolute smoothness. No bounces, just perfect macOS-style landings."
+ },
+ "04_minimalismo_snappy": {
+ "title": "Snappy Minimalism",
+ "desc": "Optimized for maximum speed. Window and workspace management only."
+ },
+ "05_material_moderno": {
+ "title": "Modern Material",
+ "desc": "Google Pixel aesthetic. Organic animations, subtle scaling, and tactile response."
+ },
+ "06_impacto_clasico": {
+ "title": "Classic Impact",
+ "desc": "\"Jelly\" effect. Elastic bounce on entry and anticipation on exit."
+ },
+ "07_lineal": {
+ "title": "Linear",
+ "desc": "Mathematical precision. Constant motion, \"Sci-Fi HUD\" style."
+ },
+ "08_cristal": {
+ "title": "Glass",
+ "desc": "Ethereal glide. Feeling of glass floating without friction."
+ },
+ "09_seda_silk": {
+ "title": "Silk",
+ "desc": "Refined JaKooLit style. Energetic entries, fleeting exits, and stable workspaces."
+ },
+ "10_retro_arcade": {
+ "title": "Retro Arcade",
+ "desc": "\"Toon/Arcade\" effect. Windows jump and bounce exaggeratedly."
+ },
+ "11_futurista": {
+ "title": "Futuristic",
+ "desc": "Holographic interface. Digital precision, zero bounces, and vertical data flow."
+ },
+ "12_rebote": {
+ "title": "Bounce",
+ "desc": "Vertical spring physics. Windows fall and bounce upon opening."
+ },
+ "13_organico": {
+ "title": "Organic",
+ "desc": "\"Sprout\" movement. Smooth vertical growth and slow fades."
+ },
+ "14_elastico": {
+ "title": "Elastic",
+ "desc": "Rubber band physics. Windows arrive, stretch, and bounce vertically."
+ },
+ "15_desvanecido": {
+ "title": "Fade",
+ "desc": "Spectral materialization. Windows appear smoothly with barely any movement."
+ },
+ "16_dinamico": {
+ "title": "Dynamic",
+ "desc": "Organic rhythm. Combination of speed and smooth settling."
+ },
+ "17_sutil": {
+ "title": "Subtle",
+ "desc": "Zero distractions. Absolute smoothness without bounces or abrupt movements."
+ },
+ "18_energico": {
+ "title": "Energetic",
+ "desc": "Maximum visual impact. Exaggerated bounces (56%) and kickback exits."
+ }
+ }
+ },
+ "borders": {
+ "geometry": {
+ "title": "Border Thickness",
+ "desc": "Define line thickness (0-3px)"
+ },
+ "header_title": "Visual Styles",
+ "header_subtitle": "Define your windows' personality",
+ "presets": {
+ "01_cascade": {
+ "title": "Cascade",
+ "desc": "Soft vertical gradient at 50%."
+ },
+ "02_diagonal": {
+ "title": "Diagonal",
+ "desc": "Dynamic angle fade."
+ },
+ "03_duo": {
+ "title": "Duo Contrast",
+ "desc": "Strong Primary/Secondary contrast."
+ },
+ "04_tri": {
+ "title": "Trident",
+ "desc": "Tricolor elegance with gold."
+ },
+ "05_spectrum": {
+ "title": "Spectrum",
+ "desc": "Four colors for maximum visibility."
+ },
+ "06_pulse": {
+ "title": "Pulse",
+ "desc": "Rotates once when selecting window."
+ },
+ "07_infinity": {
+ "title": "Infinity",
+ "desc": "Constant color rotation."
+ },
+ "08_neon": {
+ "title": "Neon Breath",
+ "desc": "Slow and relaxing oscillation."
+ },
+ "09_glitch": {
+ "title": "Cyber Glitch",
+ "desc": "Aggressive, fast, and error colors."
+ },
+ "10_golden": {
+ "title": "Golden Luxury",
+ "desc": "Gold metallic reflections."
+ },
+ "11_toxic": {
+ "title": "Toxic Green",
+ "desc": "Fluor green metallic reflections."
+ },
+ "12_neon_cyberpunk": {
+ "title": "Neon Cyber-Glow (Dual)",
+ "desc": "Simulation of bicolor brightness using a white/violet light base."
+ },
+ "13_the_joker": {
+ "title": "The Joker",
+ "desc": "Joker aesthetic: Acid green and deep purple with an electric glow."
+ }
+ }
+ },
+ "shaders": {
+ "header_title": "Screen Filters",
+ "header_subtitle": "Real-time image post-processing",
+ "presets": {
+ "01_night": {
+ "title": "Night Light",
+ "desc": "Warm filter to protect eyesight."
+ },
+ "02_mono": {
+ "title": "Monochrome",
+ "desc": "Grayscale for concentration."
+ },
+ "03_vibrant": {
+ "title": "Vibrant",
+ "desc": "Intelligently enhances colors."
+ },
+ "04_sharp": {
+ "title": "HD Sharpness",
+ "desc": "Improves border and text definition."
+ },
+ "05_ink": {
+ "title": "E-Ink Paper",
+ "desc": "Sepia electronic paper texture."
+ },
+ "06_invert": {
+ "title": "Inverted",
+ "desc": "Inverts all colors."
+ },
+ "07_oled": {
+ "title": "OLED Mode",
+ "desc": "Pure blacks and dramatic contrast."
+ },
+ "08_vision": {
+ "title": "Night Vision",
+ "desc": "Military green phosphor effect."
+ },
+ "09_hybrid": {
+ "title": "Hybrid",
+ "desc": "Balance between correction and style."
+ }
+ }
+ }
+}
diff --git a/noctalia-visual-layer/i18n/nl.json b/noctalia-visual-layer/i18n/nl.json
new file mode 100644
index 00000000..ce3377f0
--- /dev/null
+++ b/noctalia-visual-layer/i18n/nl.json
@@ -0,0 +1,248 @@
+{
+ "meta": {
+ "lang": "en",
+ "name": "English",
+ "author": "Ximo & AI"
+ },
+ "widget": {
+ "tooltip": "Noctalia Visual Layer",
+ "menu_settings": "Plugin Settings"
+ },
+ "panel": {
+ "header_title": "Noctalia Visual",
+ "header_subtitle": "Aesthetic Control Center",
+ "tabs": {
+ "home": "Home",
+ "animations": "Animations",
+ "borders": "Borders",
+ "effects": "Effects"
+ }
+ },
+ "welcome": {
+ "activation_title": "System Activation",
+ "system_active": "The system is operational. Visual effects are safely managed by NVL.",
+ "system_inactive": "System halted. Requires acceptance of the persistence contract to continue.",
+ "enable_label": "Enable Visual Layer",
+ "warning": {
+ "title": "SECURE PERSISTENCE CONTRACT",
+ "text": "Upon activation, NVL will deploy a guardian shield and inject a secure path into your hyprland.conf. If you uninstall the plugin from the Shell, the system will self-clean on the next reboot without causing Hyprland errors."
+ },
+ "features": {
+ "title": "Features & Benefits",
+ "description": "Noctalia Visual Layer is the aesthetic evolution of your desktop.",
+ "list": {
+ "fluid_anim": "✨ Fluid Animations",
+ "smart_borders": "🎨 Smart Borders",
+ "realtime_shaders": "🕶️ Real-Time Shaders",
+ "non_destructive": "🛡️ Non-Destructive"
+ }
+ },
+ "docs": {
+ "title": "Technical Documentation",
+ "description": "Internal plugin structure and developer guide.",
+ "btn_show": "Show File Structure",
+ "btn_hide": "Hide Structure",
+ "content": {
+ "arch_title": "MODULAR ARCHITECTURE (Fragment System)",
+ "arch_desc": "This plugin uses a dynamic construction system to avoid module conflicts.",
+ "struct_title": "FILE STRUCTURE",
+ "flow_title": "DATA FLOW",
+ "flow_1": "1. Activating a module creates its file in fragments/.",
+ "flow_2": "2. The assemble.sh script joins all fragments.",
+ "flow_3": "3. A clean overlay.conf is generated.",
+ "flow_4": "4. Hyprland reloads configuration without errors.",
+ "debug_title": "DEBUGGING",
+ "debug_desc": "If something fails, check the overlay.conf file. It should contain the sum of all active effects."
+ }
+ },
+ "credits": {
+ "title": "Credits",
+ "description": "Special thanks to the HyDE Project.",
+ "btn_hyde": "Inspired by HyDE Project",
+ "ai_title": "AI Co-Programmed",
+ "ai_desc": "QML Architecture assistance by Gemini (Google)."
+ }
+ },
+ "animations": {
+ "header_title": "Motion Library",
+ "header_subtitle": "Select the animation style for your desktop",
+ "presets": {
+ "01_relampago": {
+ "title": "Lightning",
+ "desc": "Maximum visual response."
+ },
+ "02_inercia_elastica": {
+ "title": "Elastic Inertia",
+ "desc": "Organic movement. Windows gain momentum on exit and bounce on entry."
+ },
+ "03_seda_minimalista": {
+ "title": "Minimalist Silk",
+ "desc": "Absolute smoothness. No bounces, just perfect macOS-style landings."
+ },
+ "04_minimalismo_snappy": {
+ "title": "Snappy Minimalism",
+ "desc": "Optimized for maximum speed. Window and workspace management only."
+ },
+ "05_material_moderno": {
+ "title": "Modern Material",
+ "desc": "Google Pixel aesthetic. Organic animations, subtle scaling, and tactile response."
+ },
+ "06_impacto_clasico": {
+ "title": "Classic Impact",
+ "desc": "\"Jelly\" effect. Elastic bounce on entry and anticipation on exit."
+ },
+ "07_lineal": {
+ "title": "Linear",
+ "desc": "Mathematical precision. Constant motion, \"Sci-Fi HUD\" style."
+ },
+ "08_cristal": {
+ "title": "Glass",
+ "desc": "Ethereal glide. Feeling of glass floating without friction."
+ },
+ "09_seda_silk": {
+ "title": "Silk",
+ "desc": "Refined JaKooLit style. Energetic entries, fleeting exits, and stable workspaces."
+ },
+ "10_retro_arcade": {
+ "title": "Retro Arcade",
+ "desc": "\"Toon/Arcade\" effect. Windows jump and bounce exaggeratedly."
+ },
+ "11_futurista": {
+ "title": "Futuristic",
+ "desc": "Holographic interface. Digital precision, zero bounces, and vertical data flow."
+ },
+ "12_rebote": {
+ "title": "Bounce",
+ "desc": "Vertical spring physics. Windows fall and bounce upon opening."
+ },
+ "13_organico": {
+ "title": "Organic",
+ "desc": "\"Sprout\" movement. Smooth vertical growth and slow fades."
+ },
+ "14_elastico": {
+ "title": "Elastic",
+ "desc": "Rubber band physics. Windows arrive, stretch, and bounce vertically."
+ },
+ "15_desvanecido": {
+ "title": "Fade",
+ "desc": "Spectral materialization. Windows appear smoothly with barely any movement."
+ },
+ "16_dinamico": {
+ "title": "Dynamic",
+ "desc": "Organic rhythm. Combination of speed and smooth settling."
+ },
+ "17_sutil": {
+ "title": "Subtle",
+ "desc": "Zero distractions. Absolute smoothness without bounces or abrupt movements."
+ },
+ "18_energico": {
+ "title": "Energetic",
+ "desc": "Maximum visual impact. Exaggerated bounces (56%) and kickback exits."
+ }
+ }
+ },
+ "borders": {
+ "geometry": {
+ "title": "Border Thickness",
+ "desc": "Define line thickness (0-3px)"
+ },
+ "header_title": "Visual Styles",
+ "header_subtitle": "Define your windows' personality",
+ "presets": {
+ "01_cascade": {
+ "title": "Cascade",
+ "desc": "Soft vertical gradient at 50%."
+ },
+ "02_diagonal": {
+ "title": "Diagonal",
+ "desc": "Dynamic angle fade."
+ },
+ "03_duo": {
+ "title": "Duo Contrast",
+ "desc": "Strong Primary/Secondary contrast."
+ },
+ "04_tri": {
+ "title": "Trident",
+ "desc": "Tricolor elegance with gold."
+ },
+ "05_spectrum": {
+ "title": "Spectrum",
+ "desc": "Four colors for maximum visibility."
+ },
+ "06_pulse": {
+ "title": "Pulse",
+ "desc": "Rotates once when selecting window."
+ },
+ "07_infinity": {
+ "title": "Infinity",
+ "desc": "Constant color rotation."
+ },
+ "08_neon": {
+ "title": "Neon Breath",
+ "desc": "Slow and relaxing oscillation."
+ },
+ "09_glitch": {
+ "title": "Cyber Glitch",
+ "desc": "Aggressive, fast, and error colors."
+ },
+ "10_golden": {
+ "title": "Golden Luxury",
+ "desc": "Gold metallic reflections."
+ },
+ "11_toxic": {
+ "title": "Toxic Green",
+ "desc": "Fluor green metallic reflections."
+ },
+ "12_neon_cyberpunk": {
+ "title": "Neon Cyber-Glow (Dual)",
+ "desc": "Simulation of bicolor brightness using a white/violet light base."
+ },
+ "13_the_joker": {
+ "title": "The Joker",
+ "desc": "Joker aesthetic: Acid green and deep purple with an electric glow."
+ }
+ }
+ },
+ "shaders": {
+ "header_title": "Screen Filters",
+ "header_subtitle": "Real-time image post-processing",
+ "presets": {
+ "01_night": {
+ "title": "Night Light",
+ "desc": "Warm filter to protect eyesight."
+ },
+ "02_mono": {
+ "title": "Monochrome",
+ "desc": "Grayscale for concentration."
+ },
+ "03_vibrant": {
+ "title": "Vibrant",
+ "desc": "Intelligently enhances colors."
+ },
+ "04_sharp": {
+ "title": "HD Sharpness",
+ "desc": "Improves border and text definition."
+ },
+ "05_ink": {
+ "title": "E-Ink Paper",
+ "desc": "Sepia electronic paper texture."
+ },
+ "06_invert": {
+ "title": "Inverted",
+ "desc": "Inverts all colors."
+ },
+ "07_oled": {
+ "title": "OLED Mode",
+ "desc": "Pure blacks and dramatic contrast."
+ },
+ "08_vision": {
+ "title": "Night Vision",
+ "desc": "Military green phosphor effect."
+ },
+ "09_hybrid": {
+ "title": "Hybrid",
+ "desc": "Balance between correction and style."
+ }
+ }
+ }
+}
diff --git a/noctalia-visual-layer/i18n/pl.json b/noctalia-visual-layer/i18n/pl.json
new file mode 100644
index 00000000..ce3377f0
--- /dev/null
+++ b/noctalia-visual-layer/i18n/pl.json
@@ -0,0 +1,248 @@
+{
+ "meta": {
+ "lang": "en",
+ "name": "English",
+ "author": "Ximo & AI"
+ },
+ "widget": {
+ "tooltip": "Noctalia Visual Layer",
+ "menu_settings": "Plugin Settings"
+ },
+ "panel": {
+ "header_title": "Noctalia Visual",
+ "header_subtitle": "Aesthetic Control Center",
+ "tabs": {
+ "home": "Home",
+ "animations": "Animations",
+ "borders": "Borders",
+ "effects": "Effects"
+ }
+ },
+ "welcome": {
+ "activation_title": "System Activation",
+ "system_active": "The system is operational. Visual effects are safely managed by NVL.",
+ "system_inactive": "System halted. Requires acceptance of the persistence contract to continue.",
+ "enable_label": "Enable Visual Layer",
+ "warning": {
+ "title": "SECURE PERSISTENCE CONTRACT",
+ "text": "Upon activation, NVL will deploy a guardian shield and inject a secure path into your hyprland.conf. If you uninstall the plugin from the Shell, the system will self-clean on the next reboot without causing Hyprland errors."
+ },
+ "features": {
+ "title": "Features & Benefits",
+ "description": "Noctalia Visual Layer is the aesthetic evolution of your desktop.",
+ "list": {
+ "fluid_anim": "✨ Fluid Animations",
+ "smart_borders": "🎨 Smart Borders",
+ "realtime_shaders": "🕶️ Real-Time Shaders",
+ "non_destructive": "🛡️ Non-Destructive"
+ }
+ },
+ "docs": {
+ "title": "Technical Documentation",
+ "description": "Internal plugin structure and developer guide.",
+ "btn_show": "Show File Structure",
+ "btn_hide": "Hide Structure",
+ "content": {
+ "arch_title": "MODULAR ARCHITECTURE (Fragment System)",
+ "arch_desc": "This plugin uses a dynamic construction system to avoid module conflicts.",
+ "struct_title": "FILE STRUCTURE",
+ "flow_title": "DATA FLOW",
+ "flow_1": "1. Activating a module creates its file in fragments/.",
+ "flow_2": "2. The assemble.sh script joins all fragments.",
+ "flow_3": "3. A clean overlay.conf is generated.",
+ "flow_4": "4. Hyprland reloads configuration without errors.",
+ "debug_title": "DEBUGGING",
+ "debug_desc": "If something fails, check the overlay.conf file. It should contain the sum of all active effects."
+ }
+ },
+ "credits": {
+ "title": "Credits",
+ "description": "Special thanks to the HyDE Project.",
+ "btn_hyde": "Inspired by HyDE Project",
+ "ai_title": "AI Co-Programmed",
+ "ai_desc": "QML Architecture assistance by Gemini (Google)."
+ }
+ },
+ "animations": {
+ "header_title": "Motion Library",
+ "header_subtitle": "Select the animation style for your desktop",
+ "presets": {
+ "01_relampago": {
+ "title": "Lightning",
+ "desc": "Maximum visual response."
+ },
+ "02_inercia_elastica": {
+ "title": "Elastic Inertia",
+ "desc": "Organic movement. Windows gain momentum on exit and bounce on entry."
+ },
+ "03_seda_minimalista": {
+ "title": "Minimalist Silk",
+ "desc": "Absolute smoothness. No bounces, just perfect macOS-style landings."
+ },
+ "04_minimalismo_snappy": {
+ "title": "Snappy Minimalism",
+ "desc": "Optimized for maximum speed. Window and workspace management only."
+ },
+ "05_material_moderno": {
+ "title": "Modern Material",
+ "desc": "Google Pixel aesthetic. Organic animations, subtle scaling, and tactile response."
+ },
+ "06_impacto_clasico": {
+ "title": "Classic Impact",
+ "desc": "\"Jelly\" effect. Elastic bounce on entry and anticipation on exit."
+ },
+ "07_lineal": {
+ "title": "Linear",
+ "desc": "Mathematical precision. Constant motion, \"Sci-Fi HUD\" style."
+ },
+ "08_cristal": {
+ "title": "Glass",
+ "desc": "Ethereal glide. Feeling of glass floating without friction."
+ },
+ "09_seda_silk": {
+ "title": "Silk",
+ "desc": "Refined JaKooLit style. Energetic entries, fleeting exits, and stable workspaces."
+ },
+ "10_retro_arcade": {
+ "title": "Retro Arcade",
+ "desc": "\"Toon/Arcade\" effect. Windows jump and bounce exaggeratedly."
+ },
+ "11_futurista": {
+ "title": "Futuristic",
+ "desc": "Holographic interface. Digital precision, zero bounces, and vertical data flow."
+ },
+ "12_rebote": {
+ "title": "Bounce",
+ "desc": "Vertical spring physics. Windows fall and bounce upon opening."
+ },
+ "13_organico": {
+ "title": "Organic",
+ "desc": "\"Sprout\" movement. Smooth vertical growth and slow fades."
+ },
+ "14_elastico": {
+ "title": "Elastic",
+ "desc": "Rubber band physics. Windows arrive, stretch, and bounce vertically."
+ },
+ "15_desvanecido": {
+ "title": "Fade",
+ "desc": "Spectral materialization. Windows appear smoothly with barely any movement."
+ },
+ "16_dinamico": {
+ "title": "Dynamic",
+ "desc": "Organic rhythm. Combination of speed and smooth settling."
+ },
+ "17_sutil": {
+ "title": "Subtle",
+ "desc": "Zero distractions. Absolute smoothness without bounces or abrupt movements."
+ },
+ "18_energico": {
+ "title": "Energetic",
+ "desc": "Maximum visual impact. Exaggerated bounces (56%) and kickback exits."
+ }
+ }
+ },
+ "borders": {
+ "geometry": {
+ "title": "Border Thickness",
+ "desc": "Define line thickness (0-3px)"
+ },
+ "header_title": "Visual Styles",
+ "header_subtitle": "Define your windows' personality",
+ "presets": {
+ "01_cascade": {
+ "title": "Cascade",
+ "desc": "Soft vertical gradient at 50%."
+ },
+ "02_diagonal": {
+ "title": "Diagonal",
+ "desc": "Dynamic angle fade."
+ },
+ "03_duo": {
+ "title": "Duo Contrast",
+ "desc": "Strong Primary/Secondary contrast."
+ },
+ "04_tri": {
+ "title": "Trident",
+ "desc": "Tricolor elegance with gold."
+ },
+ "05_spectrum": {
+ "title": "Spectrum",
+ "desc": "Four colors for maximum visibility."
+ },
+ "06_pulse": {
+ "title": "Pulse",
+ "desc": "Rotates once when selecting window."
+ },
+ "07_infinity": {
+ "title": "Infinity",
+ "desc": "Constant color rotation."
+ },
+ "08_neon": {
+ "title": "Neon Breath",
+ "desc": "Slow and relaxing oscillation."
+ },
+ "09_glitch": {
+ "title": "Cyber Glitch",
+ "desc": "Aggressive, fast, and error colors."
+ },
+ "10_golden": {
+ "title": "Golden Luxury",
+ "desc": "Gold metallic reflections."
+ },
+ "11_toxic": {
+ "title": "Toxic Green",
+ "desc": "Fluor green metallic reflections."
+ },
+ "12_neon_cyberpunk": {
+ "title": "Neon Cyber-Glow (Dual)",
+ "desc": "Simulation of bicolor brightness using a white/violet light base."
+ },
+ "13_the_joker": {
+ "title": "The Joker",
+ "desc": "Joker aesthetic: Acid green and deep purple with an electric glow."
+ }
+ }
+ },
+ "shaders": {
+ "header_title": "Screen Filters",
+ "header_subtitle": "Real-time image post-processing",
+ "presets": {
+ "01_night": {
+ "title": "Night Light",
+ "desc": "Warm filter to protect eyesight."
+ },
+ "02_mono": {
+ "title": "Monochrome",
+ "desc": "Grayscale for concentration."
+ },
+ "03_vibrant": {
+ "title": "Vibrant",
+ "desc": "Intelligently enhances colors."
+ },
+ "04_sharp": {
+ "title": "HD Sharpness",
+ "desc": "Improves border and text definition."
+ },
+ "05_ink": {
+ "title": "E-Ink Paper",
+ "desc": "Sepia electronic paper texture."
+ },
+ "06_invert": {
+ "title": "Inverted",
+ "desc": "Inverts all colors."
+ },
+ "07_oled": {
+ "title": "OLED Mode",
+ "desc": "Pure blacks and dramatic contrast."
+ },
+ "08_vision": {
+ "title": "Night Vision",
+ "desc": "Military green phosphor effect."
+ },
+ "09_hybrid": {
+ "title": "Hybrid",
+ "desc": "Balance between correction and style."
+ }
+ }
+ }
+}
diff --git a/noctalia-visual-layer/i18n/pt.json b/noctalia-visual-layer/i18n/pt.json
new file mode 100644
index 00000000..a9792db5
--- /dev/null
+++ b/noctalia-visual-layer/i18n/pt.json
@@ -0,0 +1,248 @@
+{
+ "meta": {
+ "lang": "pt",
+ "name": "Português",
+ "author": "Ximo & AI"
+ },
+ "widget": {
+ "tooltip": "Noctalia Visual Layer",
+ "menu_settings": "Configurações"
+ },
+ "panel": {
+ "header_title": "Noctalia Visual",
+ "header_subtitle": "Centro de Controle",
+ "tabs": {
+ "home": "Início",
+ "animations": "Animações",
+ "borders": "Bordas",
+ "effects": "Efeitos"
+ }
+ },
+ "welcome": {
+ "activation_title": "Ativação do Sistema",
+ "system_active": "O sistema está operacional. Os efeitos visuais são geridos pela NVL de forma segura.",
+ "system_inactive": "Sistema parado. Requer aceitação do contrato de persistência para continuar.",
+ "enable_label": "Ativar Visual Layer",
+ "warning": {
+ "title": "CONTRATO DE PERSISTÊNCIA SEGURA",
+ "text": "Ao ativar, a NVL implantará um escudo guardião e injetará um caminho seguro no seu hyprland.conf. Se desinstalar o plugin a partir da Shell, o sistema limpar-se-á automaticamente no próximo reinício sem causar erros no Hyprland."
+ },
+ "features": {
+ "title": "Recursos",
+ "description": "A evolução estética do desktop.",
+ "list": {
+ "fluid_anim": "✨ Animações Fluidas",
+ "smart_borders": "🎨 Bordas Inteligentes",
+ "realtime_shaders": "🕶️ Shaders Tempo Real",
+ "non_destructive": "🛡️ Não Destrutivo"
+ }
+ },
+ "docs": {
+ "title": "Documentação",
+ "description": "Guia técnico.",
+ "btn_show": "Ver Estrutura",
+ "btn_hide": "Ocultar Estrutura",
+ "content": {
+ "arch_title": "ARQUITETURA MODULAR",
+ "arch_desc": "Sistema de fragmentos para evitar conflitos.",
+ "struct_title": "ESTRUTURA DE ARQUIVOS",
+ "flow_title": "FLUXO DE DADOS",
+ "flow_1": "1. Ativação cria arquivo em fragments/.",
+ "flow_2": "2. Script assemble.sh une tudo.",
+ "flow_3": "3. overlay.conf limpo é gerado.",
+ "flow_4": "4. Hyprland recarrega sem erros.",
+ "debug_title": "DEBUG",
+ "debug_desc": "Se falhar, verifique overlay.conf."
+ }
+ },
+ "credits": {
+ "title": "Créditos",
+ "description": "Obrigado ao HyDE Project.",
+ "btn_hyde": "Inspirado no HyDE",
+ "ai_title": "Co-Codificado com IA",
+ "ai_desc": "Obrigado ao Gemini pela ajuda QML."
+ }
+ },
+ "animations": {
+ "header_title": "Biblioteca de Movimento",
+ "header_subtitle": "Selecione o estilo de animação para o seu desktop",
+ "presets": {
+ "01_relampago": {
+ "title": "Relâmpago",
+ "desc": "Resposta visual máxima."
+ },
+ "02_inercia_elastica": {
+ "title": "Inércia Elástica",
+ "desc": "Movimento orgânico. Impulso na saída e ressalto na entrada."
+ },
+ "03_seda_minimalista": {
+ "title": "Seda Minimalista",
+ "desc": "Suavidade absoluta. Aterragens perfeitas estilo macOS."
+ },
+ "04_minimalismo_snappy": {
+ "title": "Minimalismo Snappy",
+ "desc": "Otimizado para a velocidade máxima."
+ },
+ "05_material_moderno": {
+ "title": "Material Moderno",
+ "desc": "Estética Google Pixel. Animações orgânicas e táteis."
+ },
+ "06_impacto_clasico": {
+ "title": "Impacto Clássico",
+ "desc": "Efeito \"Jelly\". Ressalto elástico e antecipação."
+ },
+ "07_lineal": {
+ "title": "Linear",
+ "desc": "Precisão matemática. Estilo \"Sci-Fi HUD\"."
+ },
+ "08_cristal": {
+ "title": "Cristal",
+ "desc": "Deslizamento etéreo. Sensação de vidro flutuante."
+ },
+ "09_seda_silk": {
+ "title": "Seda (Silk)",
+ "desc": "Estilo JaKooLit refinado. Entradas enérgicas."
+ },
+ "10_retro_arcade": {
+ "title": "Retro Arcade",
+ "desc": "Efeito \"Toon\". Saltos e ressaltos exagerados."
+ },
+ "11_futurista": {
+ "title": "Futurista",
+ "desc": "Interface holográfica. Fluxo de dados vertical."
+ },
+ "12_rebote": {
+ "title": "Ressalto",
+ "desc": "Física de mola vertical. As janelas caem e ressaltam."
+ },
+ "13_organico": {
+ "title": "Orgânico",
+ "desc": "Crescimento vertical suave e desvanecimentos lentos."
+ },
+ "14_elastico": {
+ "title": "Elástico",
+ "desc": "Física de banda elástica. Estiramento dinâmico."
+ },
+ "15_desvanecido": {
+ "title": "Desvanecido",
+ "desc": "Materialização espetral sem movimento."
+ },
+ "16_dinamico": {
+ "title": "Dinâmico",
+ "desc": "Ritmo orgânico. Velocidade e suavidade."
+ },
+ "17_sutil": {
+ "title": "Sutil",
+ "desc": "Zero distrações. Suavidade absoluta."
+ },
+ "18_energico": {
+ "title": "Enérgico",
+ "desc": "Impacto visual máximo. Saídas com recuo."
+ }
+ }
+ },
+ "borders": {
+ "geometry": {
+ "title": "Espessura",
+ "desc": "Largura (0-3px)"
+ },
+ "header_title": "Estilos Visuais",
+ "header_subtitle": "Personalidade das janelas",
+ "presets": {
+ "01_cascade": {
+ "title": "Cascata",
+ "desc": "Degradê vertical."
+ },
+ "02_diagonal": {
+ "title": "Diagonal",
+ "desc": "Em ângulo."
+ },
+ "03_duo": {
+ "title": "Duo",
+ "desc": "Forte contraste."
+ },
+ "04_tri": {
+ "title": "Tridente",
+ "desc": "Tricolor dourado."
+ },
+ "05_spectrum": {
+ "title": "Espectro",
+ "desc": "Quatro cores."
+ },
+ "06_pulse": {
+ "title": "Pulso",
+ "desc": "Gira ao selecionar."
+ },
+ "07_infinity": {
+ "title": "Infinito",
+ "desc": "Rotação constante."
+ },
+ "08_neon": {
+ "title": "Neon",
+ "desc": "Oscilação lenta."
+ },
+ "09_glitch": {
+ "title": "Glitch",
+ "desc": "Agressivo, erro."
+ },
+ "10_golden": {
+ "title": "Luxo Dourado",
+ "desc": "Reflexos metálicos."
+ },
+ "11_toxic": {
+ "title": "Tóxico",
+ "desc": "Verde flúor."
+ },
+ "12_neon_cyberpunk": {
+ "title": "Neon Cyber-Glow (Dual)",
+ "desc": "Simulação de brilho bicolor usando uma base de luz branca e violeta."
+ },
+ "13_the_joker": {
+ "title": "O Joker",
+ "desc": "Estética Joker: Verde ácido e roxo profundo com um brilho elétrico."
+ }
+ }
+ },
+ "shaders": {
+ "header_title": "Filtros de Tela",
+ "header_subtitle": "Pós-processamento",
+ "presets": {
+ "01_night": {
+ "title": "Luz Noturna",
+ "desc": "Filtro quente."
+ },
+ "02_mono": {
+ "title": "Monocromático",
+ "desc": "Escala de cinza."
+ },
+ "03_vibrant": {
+ "title": "Vibrante",
+ "desc": "Realça cores."
+ },
+ "04_sharp": {
+ "title": "Nitidez",
+ "desc": "Melhora textos."
+ },
+ "05_ink": {
+ "title": "Papel E-Ink",
+ "desc": "Textura sépia."
+ },
+ "06_invert": {
+ "title": "Invertido",
+ "desc": "Inverte cores."
+ },
+ "07_oled": {
+ "title": "OLED",
+ "desc": "Pretos puros."
+ },
+ "08_vision": {
+ "title": "Visão Noturna",
+ "desc": "Fósforo verde."
+ },
+ "09_hybrid": {
+ "title": "Híbrido",
+ "desc": "Balanço."
+ }
+ }
+ }
+}
diff --git a/noctalia-visual-layer/i18n/ru.json b/noctalia-visual-layer/i18n/ru.json
new file mode 100644
index 00000000..c1a8fd82
--- /dev/null
+++ b/noctalia-visual-layer/i18n/ru.json
@@ -0,0 +1,248 @@
+{
+ "meta": {
+ "lang": "ru",
+ "name": "Русский",
+ "author": "Ximo & AI"
+ },
+ "widget": {
+ "tooltip": "Noctalia Visual Layer",
+ "menu_settings": "Настройки плагина"
+ },
+ "panel": {
+ "header_title": "Noctalia Visual",
+ "header_subtitle": "Центр Эстетики",
+ "tabs": {
+ "home": "Главная",
+ "animations": "Анимации",
+ "borders": "Границы",
+ "effects": "Эффекты"
+ }
+ },
+ "welcome": {
+ "activation_title": "Активация Системы",
+ "system_active": "Система работает. Визуальные эффекты безопасно управляются NVL.",
+ "system_inactive": "Система остановлена. Для продолжения требуется принятие контракта о постоянстве.",
+ "enable_label": "Включить Visual Layer",
+ "warning": {
+ "title": "БЕЗОПАСНЫЙ КОНТРАКТ О ПОСТОЯНСТВЕ",
+ "text": "При активации NVL развернет защитный щит и внедрит безопасный путь в ваш hyprland.conf. Если вы удалите плагин из Shell, система самоочистится при следующей перезагрузке, не вызывая ошибок Hyprland."
+ },
+ "features": {
+ "title": "Особенности",
+ "description": "Эволюция вашего десктопа.",
+ "list": {
+ "fluid_anim": "✨ Плавные Анимации",
+ "smart_borders": "🎨 Умные Границы",
+ "realtime_shaders": "🕶️ Real-Time Шейдеры",
+ "non_destructive": "🛡️ Безопасно"
+ }
+ },
+ "docs": {
+ "title": "Документация",
+ "description": "Внутренняя структура.",
+ "btn_show": "Показать Структуру",
+ "btn_hide": "Скрыть Структуру",
+ "content": {
+ "arch_title": "МОДУЛЬНАЯ АРХИТЕКТУРА",
+ "arch_desc": "Система фрагментов для избежания конфликтов.",
+ "struct_title": "СТРУКТУРА ФАЙЛОВ",
+ "flow_title": "ПОТОК ДАННЫХ",
+ "flow_1": "1. Активация создает файл в fragments/.",
+ "flow_2": "2. Скрипт assemble.sh собирает фрагменты.",
+ "flow_3": "3. Генерируется чистый overlay.conf.",
+ "flow_4": "4. Hyprland перезагружается без ошибок.",
+ "debug_title": "ОТЛАДКА",
+ "debug_desc": "При ошибках проверьте overlay.conf."
+ }
+ },
+ "credits": {
+ "title": "Кредиты",
+ "description": "Спасибо HyDE Project.",
+ "btn_hyde": "Вдохновлено HyDE",
+ "ai_title": "Написано с ИИ",
+ "ai_desc": "Спасибо Gemini за помощь с QML."
+ }
+ },
+ "animations": {
+ "header_title": "Библиотека движений",
+ "header_subtitle": "Выберите стиль анимации для вашего рабочего стола",
+ "presets": {
+ "01_relampago": {
+ "title": "Молния",
+ "desc": "Максимальный визуальный отклик."
+ },
+ "02_inercia_elastica": {
+ "title": "Эластичная инерция",
+ "desc": "Органичное движение. Импульс при выходе и отскок при входе."
+ },
+ "03_seda_minimalista": {
+ "title": "Минималистичный шелк",
+ "desc": "Абсолютная плавность в стиле macOS."
+ },
+ "04_minimalismo_snappy": {
+ "title": "Быстрый минимализм",
+ "desc": "Оптимизировано для максимальной скорости."
+ },
+ "05_material_moderno": {
+ "title": "Современный материал",
+ "desc": "Эстетика Google Pixel. Тактильный отклик."
+ },
+ "06_impacto_clasico": {
+ "title": "Классический удар",
+ "desc": "Эффект \"Jelly\". Эластичный отскок и предвосхищение."
+ },
+ "07_lineal": {
+ "title": "Линейный",
+ "desc": "Математическая точность в стиле Sci-Fi HUD."
+ },
+ "08_cristal": {
+ "title": "Кристалл",
+ "desc": "Эфирное скольжение. Ощущение парящего стекла."
+ },
+ "09_seda_silk": {
+ "title": "Шелк (Silk)",
+ "desc": "Утонченный стиль JaKooLit. Энергичные входы."
+ },
+ "10_retro_arcade": {
+ "title": "Ретро Аркада",
+ "desc": "Эффект мультфильма. Преувеличенные прыжки."
+ },
+ "11_futurista": {
+ "title": "Футуристичный",
+ "desc": "Голографический интерфейс. Вертикальный поток."
+ },
+ "12_rebote": {
+ "title": "Отскок",
+ "desc": "Физика вертикальной пружины."
+ },
+ "13_organico": {
+ "title": "Органический",
+ "desc": "Мягкий вертикальный рост и медленное затухание."
+ },
+ "14_elastico": {
+ "title": "Эластичный",
+ "desc": "Физика резиновой ленты. Растяжение."
+ },
+ "15_desvanecido": {
+ "title": "Затухание",
+ "desc": "Призрачное появление без движения."
+ },
+ "16_dinamico": {
+ "title": "Динамичный",
+ "desc": "Органичный ритм. Скорость и плавность."
+ },
+ "17_sutil": {
+ "title": "Тонкий",
+ "desc": "Никаких отвлекающих факторов."
+ },
+ "18_energico": {
+ "title": "Энергичный",
+ "desc": "Максимальный визуальный эффект."
+ }
+ }
+ },
+ "borders": {
+ "geometry": {
+ "title": "Толщина",
+ "desc": "Линия (0-3px)"
+ },
+ "header_title": "Стили",
+ "header_subtitle": "Личность окон",
+ "presets": {
+ "01_cascade": {
+ "title": "Каскад",
+ "desc": "Мягкий градиент."
+ },
+ "02_diagonal": {
+ "title": "Диагональ",
+ "desc": "Угловое затухание."
+ },
+ "03_duo": {
+ "title": "Дуо",
+ "desc": "Контраст."
+ },
+ "04_tri": {
+ "title": "Трезубец",
+ "desc": "Золотая элегантность."
+ },
+ "05_spectrum": {
+ "title": "Спектр",
+ "desc": "4 цвета."
+ },
+ "06_pulse": {
+ "title": "Пульс",
+ "desc": "Вращение при выборе."
+ },
+ "07_infinity": {
+ "title": "Инфинити",
+ "desc": "Постоянное вращение."
+ },
+ "08_neon": {
+ "title": "Неон",
+ "desc": "Медленная осцилляция."
+ },
+ "09_glitch": {
+ "title": "Глитч",
+ "desc": "Агрессивно, быстро."
+ },
+ "10_golden": {
+ "title": "Золото",
+ "desc": "Металлические рефлексы."
+ },
+ "11_toxic": {
+ "title": "Токсик",
+ "desc": "Зеленый неон."
+ },
+ "12_neon_cyberpunk": {
+ "title": "Неоновое Кибер-Свечение (Dual)",
+ "desc": "Имитация двухцветного свечения с использованием бело-фиолетовой световой базы."
+ },
+ "13_the_joker": {
+ "title": "Джокер",
+ "desc": "Эстетика Джокера: Кислотно-зеленый и глубокий фиолетовый с электрическим свечением."
+ }
+ }
+ },
+ "shaders": {
+ "header_title": "Фильтры",
+ "header_subtitle": "Постобработка",
+ "presets": {
+ "01_night": {
+ "title": "Ночной свет",
+ "desc": "Защита глаз."
+ },
+ "02_mono": {
+ "title": "Монохром",
+ "desc": "Ч/Б."
+ },
+ "03_vibrant": {
+ "title": "Вибрация",
+ "desc": "Улучшение цветов."
+ },
+ "04_sharp": {
+ "title": "Резкость",
+ "desc": "Улучшение текста."
+ },
+ "05_ink": {
+ "title": "E-Ink",
+ "desc": "Текстура бумаги."
+ },
+ "06_invert": {
+ "title": "Инверсия",
+ "desc": "Инверсия цветов."
+ },
+ "07_oled": {
+ "title": "OLED",
+ "desc": "Чистый черный."
+ },
+ "08_vision": {
+ "title": "Ночное видение",
+ "desc": "Зеленый фильтр."
+ },
+ "09_hybrid": {
+ "title": "Гибрид",
+ "desc": "Баланс."
+ }
+ }
+ }
+}
diff --git a/noctalia-visual-layer/i18n/tr.json b/noctalia-visual-layer/i18n/tr.json
new file mode 100644
index 00000000..ce3377f0
--- /dev/null
+++ b/noctalia-visual-layer/i18n/tr.json
@@ -0,0 +1,248 @@
+{
+ "meta": {
+ "lang": "en",
+ "name": "English",
+ "author": "Ximo & AI"
+ },
+ "widget": {
+ "tooltip": "Noctalia Visual Layer",
+ "menu_settings": "Plugin Settings"
+ },
+ "panel": {
+ "header_title": "Noctalia Visual",
+ "header_subtitle": "Aesthetic Control Center",
+ "tabs": {
+ "home": "Home",
+ "animations": "Animations",
+ "borders": "Borders",
+ "effects": "Effects"
+ }
+ },
+ "welcome": {
+ "activation_title": "System Activation",
+ "system_active": "The system is operational. Visual effects are safely managed by NVL.",
+ "system_inactive": "System halted. Requires acceptance of the persistence contract to continue.",
+ "enable_label": "Enable Visual Layer",
+ "warning": {
+ "title": "SECURE PERSISTENCE CONTRACT",
+ "text": "Upon activation, NVL will deploy a guardian shield and inject a secure path into your hyprland.conf. If you uninstall the plugin from the Shell, the system will self-clean on the next reboot without causing Hyprland errors."
+ },
+ "features": {
+ "title": "Features & Benefits",
+ "description": "Noctalia Visual Layer is the aesthetic evolution of your desktop.",
+ "list": {
+ "fluid_anim": "✨ Fluid Animations",
+ "smart_borders": "🎨 Smart Borders",
+ "realtime_shaders": "🕶️ Real-Time Shaders",
+ "non_destructive": "🛡️ Non-Destructive"
+ }
+ },
+ "docs": {
+ "title": "Technical Documentation",
+ "description": "Internal plugin structure and developer guide.",
+ "btn_show": "Show File Structure",
+ "btn_hide": "Hide Structure",
+ "content": {
+ "arch_title": "MODULAR ARCHITECTURE (Fragment System)",
+ "arch_desc": "This plugin uses a dynamic construction system to avoid module conflicts.",
+ "struct_title": "FILE STRUCTURE",
+ "flow_title": "DATA FLOW",
+ "flow_1": "1. Activating a module creates its file in fragments/.",
+ "flow_2": "2. The assemble.sh script joins all fragments.",
+ "flow_3": "3. A clean overlay.conf is generated.",
+ "flow_4": "4. Hyprland reloads configuration without errors.",
+ "debug_title": "DEBUGGING",
+ "debug_desc": "If something fails, check the overlay.conf file. It should contain the sum of all active effects."
+ }
+ },
+ "credits": {
+ "title": "Credits",
+ "description": "Special thanks to the HyDE Project.",
+ "btn_hyde": "Inspired by HyDE Project",
+ "ai_title": "AI Co-Programmed",
+ "ai_desc": "QML Architecture assistance by Gemini (Google)."
+ }
+ },
+ "animations": {
+ "header_title": "Motion Library",
+ "header_subtitle": "Select the animation style for your desktop",
+ "presets": {
+ "01_relampago": {
+ "title": "Lightning",
+ "desc": "Maximum visual response."
+ },
+ "02_inercia_elastica": {
+ "title": "Elastic Inertia",
+ "desc": "Organic movement. Windows gain momentum on exit and bounce on entry."
+ },
+ "03_seda_minimalista": {
+ "title": "Minimalist Silk",
+ "desc": "Absolute smoothness. No bounces, just perfect macOS-style landings."
+ },
+ "04_minimalismo_snappy": {
+ "title": "Snappy Minimalism",
+ "desc": "Optimized for maximum speed. Window and workspace management only."
+ },
+ "05_material_moderno": {
+ "title": "Modern Material",
+ "desc": "Google Pixel aesthetic. Organic animations, subtle scaling, and tactile response."
+ },
+ "06_impacto_clasico": {
+ "title": "Classic Impact",
+ "desc": "\"Jelly\" effect. Elastic bounce on entry and anticipation on exit."
+ },
+ "07_lineal": {
+ "title": "Linear",
+ "desc": "Mathematical precision. Constant motion, \"Sci-Fi HUD\" style."
+ },
+ "08_cristal": {
+ "title": "Glass",
+ "desc": "Ethereal glide. Feeling of glass floating without friction."
+ },
+ "09_seda_silk": {
+ "title": "Silk",
+ "desc": "Refined JaKooLit style. Energetic entries, fleeting exits, and stable workspaces."
+ },
+ "10_retro_arcade": {
+ "title": "Retro Arcade",
+ "desc": "\"Toon/Arcade\" effect. Windows jump and bounce exaggeratedly."
+ },
+ "11_futurista": {
+ "title": "Futuristic",
+ "desc": "Holographic interface. Digital precision, zero bounces, and vertical data flow."
+ },
+ "12_rebote": {
+ "title": "Bounce",
+ "desc": "Vertical spring physics. Windows fall and bounce upon opening."
+ },
+ "13_organico": {
+ "title": "Organic",
+ "desc": "\"Sprout\" movement. Smooth vertical growth and slow fades."
+ },
+ "14_elastico": {
+ "title": "Elastic",
+ "desc": "Rubber band physics. Windows arrive, stretch, and bounce vertically."
+ },
+ "15_desvanecido": {
+ "title": "Fade",
+ "desc": "Spectral materialization. Windows appear smoothly with barely any movement."
+ },
+ "16_dinamico": {
+ "title": "Dynamic",
+ "desc": "Organic rhythm. Combination of speed and smooth settling."
+ },
+ "17_sutil": {
+ "title": "Subtle",
+ "desc": "Zero distractions. Absolute smoothness without bounces or abrupt movements."
+ },
+ "18_energico": {
+ "title": "Energetic",
+ "desc": "Maximum visual impact. Exaggerated bounces (56%) and kickback exits."
+ }
+ }
+ },
+ "borders": {
+ "geometry": {
+ "title": "Border Thickness",
+ "desc": "Define line thickness (0-3px)"
+ },
+ "header_title": "Visual Styles",
+ "header_subtitle": "Define your windows' personality",
+ "presets": {
+ "01_cascade": {
+ "title": "Cascade",
+ "desc": "Soft vertical gradient at 50%."
+ },
+ "02_diagonal": {
+ "title": "Diagonal",
+ "desc": "Dynamic angle fade."
+ },
+ "03_duo": {
+ "title": "Duo Contrast",
+ "desc": "Strong Primary/Secondary contrast."
+ },
+ "04_tri": {
+ "title": "Trident",
+ "desc": "Tricolor elegance with gold."
+ },
+ "05_spectrum": {
+ "title": "Spectrum",
+ "desc": "Four colors for maximum visibility."
+ },
+ "06_pulse": {
+ "title": "Pulse",
+ "desc": "Rotates once when selecting window."
+ },
+ "07_infinity": {
+ "title": "Infinity",
+ "desc": "Constant color rotation."
+ },
+ "08_neon": {
+ "title": "Neon Breath",
+ "desc": "Slow and relaxing oscillation."
+ },
+ "09_glitch": {
+ "title": "Cyber Glitch",
+ "desc": "Aggressive, fast, and error colors."
+ },
+ "10_golden": {
+ "title": "Golden Luxury",
+ "desc": "Gold metallic reflections."
+ },
+ "11_toxic": {
+ "title": "Toxic Green",
+ "desc": "Fluor green metallic reflections."
+ },
+ "12_neon_cyberpunk": {
+ "title": "Neon Cyber-Glow (Dual)",
+ "desc": "Simulation of bicolor brightness using a white/violet light base."
+ },
+ "13_the_joker": {
+ "title": "The Joker",
+ "desc": "Joker aesthetic: Acid green and deep purple with an electric glow."
+ }
+ }
+ },
+ "shaders": {
+ "header_title": "Screen Filters",
+ "header_subtitle": "Real-time image post-processing",
+ "presets": {
+ "01_night": {
+ "title": "Night Light",
+ "desc": "Warm filter to protect eyesight."
+ },
+ "02_mono": {
+ "title": "Monochrome",
+ "desc": "Grayscale for concentration."
+ },
+ "03_vibrant": {
+ "title": "Vibrant",
+ "desc": "Intelligently enhances colors."
+ },
+ "04_sharp": {
+ "title": "HD Sharpness",
+ "desc": "Improves border and text definition."
+ },
+ "05_ink": {
+ "title": "E-Ink Paper",
+ "desc": "Sepia electronic paper texture."
+ },
+ "06_invert": {
+ "title": "Inverted",
+ "desc": "Inverts all colors."
+ },
+ "07_oled": {
+ "title": "OLED Mode",
+ "desc": "Pure blacks and dramatic contrast."
+ },
+ "08_vision": {
+ "title": "Night Vision",
+ "desc": "Military green phosphor effect."
+ },
+ "09_hybrid": {
+ "title": "Hybrid",
+ "desc": "Balance between correction and style."
+ }
+ }
+ }
+}
diff --git a/noctalia-visual-layer/i18n/uk-UA.json b/noctalia-visual-layer/i18n/uk-UA.json
new file mode 100644
index 00000000..ce3377f0
--- /dev/null
+++ b/noctalia-visual-layer/i18n/uk-UA.json
@@ -0,0 +1,248 @@
+{
+ "meta": {
+ "lang": "en",
+ "name": "English",
+ "author": "Ximo & AI"
+ },
+ "widget": {
+ "tooltip": "Noctalia Visual Layer",
+ "menu_settings": "Plugin Settings"
+ },
+ "panel": {
+ "header_title": "Noctalia Visual",
+ "header_subtitle": "Aesthetic Control Center",
+ "tabs": {
+ "home": "Home",
+ "animations": "Animations",
+ "borders": "Borders",
+ "effects": "Effects"
+ }
+ },
+ "welcome": {
+ "activation_title": "System Activation",
+ "system_active": "The system is operational. Visual effects are safely managed by NVL.",
+ "system_inactive": "System halted. Requires acceptance of the persistence contract to continue.",
+ "enable_label": "Enable Visual Layer",
+ "warning": {
+ "title": "SECURE PERSISTENCE CONTRACT",
+ "text": "Upon activation, NVL will deploy a guardian shield and inject a secure path into your hyprland.conf. If you uninstall the plugin from the Shell, the system will self-clean on the next reboot without causing Hyprland errors."
+ },
+ "features": {
+ "title": "Features & Benefits",
+ "description": "Noctalia Visual Layer is the aesthetic evolution of your desktop.",
+ "list": {
+ "fluid_anim": "✨ Fluid Animations",
+ "smart_borders": "🎨 Smart Borders",
+ "realtime_shaders": "🕶️ Real-Time Shaders",
+ "non_destructive": "🛡️ Non-Destructive"
+ }
+ },
+ "docs": {
+ "title": "Technical Documentation",
+ "description": "Internal plugin structure and developer guide.",
+ "btn_show": "Show File Structure",
+ "btn_hide": "Hide Structure",
+ "content": {
+ "arch_title": "MODULAR ARCHITECTURE (Fragment System)",
+ "arch_desc": "This plugin uses a dynamic construction system to avoid module conflicts.",
+ "struct_title": "FILE STRUCTURE",
+ "flow_title": "DATA FLOW",
+ "flow_1": "1. Activating a module creates its file in fragments/.",
+ "flow_2": "2. The assemble.sh script joins all fragments.",
+ "flow_3": "3. A clean overlay.conf is generated.",
+ "flow_4": "4. Hyprland reloads configuration without errors.",
+ "debug_title": "DEBUGGING",
+ "debug_desc": "If something fails, check the overlay.conf file. It should contain the sum of all active effects."
+ }
+ },
+ "credits": {
+ "title": "Credits",
+ "description": "Special thanks to the HyDE Project.",
+ "btn_hyde": "Inspired by HyDE Project",
+ "ai_title": "AI Co-Programmed",
+ "ai_desc": "QML Architecture assistance by Gemini (Google)."
+ }
+ },
+ "animations": {
+ "header_title": "Motion Library",
+ "header_subtitle": "Select the animation style for your desktop",
+ "presets": {
+ "01_relampago": {
+ "title": "Lightning",
+ "desc": "Maximum visual response."
+ },
+ "02_inercia_elastica": {
+ "title": "Elastic Inertia",
+ "desc": "Organic movement. Windows gain momentum on exit and bounce on entry."
+ },
+ "03_seda_minimalista": {
+ "title": "Minimalist Silk",
+ "desc": "Absolute smoothness. No bounces, just perfect macOS-style landings."
+ },
+ "04_minimalismo_snappy": {
+ "title": "Snappy Minimalism",
+ "desc": "Optimized for maximum speed. Window and workspace management only."
+ },
+ "05_material_moderno": {
+ "title": "Modern Material",
+ "desc": "Google Pixel aesthetic. Organic animations, subtle scaling, and tactile response."
+ },
+ "06_impacto_clasico": {
+ "title": "Classic Impact",
+ "desc": "\"Jelly\" effect. Elastic bounce on entry and anticipation on exit."
+ },
+ "07_lineal": {
+ "title": "Linear",
+ "desc": "Mathematical precision. Constant motion, \"Sci-Fi HUD\" style."
+ },
+ "08_cristal": {
+ "title": "Glass",
+ "desc": "Ethereal glide. Feeling of glass floating without friction."
+ },
+ "09_seda_silk": {
+ "title": "Silk",
+ "desc": "Refined JaKooLit style. Energetic entries, fleeting exits, and stable workspaces."
+ },
+ "10_retro_arcade": {
+ "title": "Retro Arcade",
+ "desc": "\"Toon/Arcade\" effect. Windows jump and bounce exaggeratedly."
+ },
+ "11_futurista": {
+ "title": "Futuristic",
+ "desc": "Holographic interface. Digital precision, zero bounces, and vertical data flow."
+ },
+ "12_rebote": {
+ "title": "Bounce",
+ "desc": "Vertical spring physics. Windows fall and bounce upon opening."
+ },
+ "13_organico": {
+ "title": "Organic",
+ "desc": "\"Sprout\" movement. Smooth vertical growth and slow fades."
+ },
+ "14_elastico": {
+ "title": "Elastic",
+ "desc": "Rubber band physics. Windows arrive, stretch, and bounce vertically."
+ },
+ "15_desvanecido": {
+ "title": "Fade",
+ "desc": "Spectral materialization. Windows appear smoothly with barely any movement."
+ },
+ "16_dinamico": {
+ "title": "Dynamic",
+ "desc": "Organic rhythm. Combination of speed and smooth settling."
+ },
+ "17_sutil": {
+ "title": "Subtle",
+ "desc": "Zero distractions. Absolute smoothness without bounces or abrupt movements."
+ },
+ "18_energico": {
+ "title": "Energetic",
+ "desc": "Maximum visual impact. Exaggerated bounces (56%) and kickback exits."
+ }
+ }
+ },
+ "borders": {
+ "geometry": {
+ "title": "Border Thickness",
+ "desc": "Define line thickness (0-3px)"
+ },
+ "header_title": "Visual Styles",
+ "header_subtitle": "Define your windows' personality",
+ "presets": {
+ "01_cascade": {
+ "title": "Cascade",
+ "desc": "Soft vertical gradient at 50%."
+ },
+ "02_diagonal": {
+ "title": "Diagonal",
+ "desc": "Dynamic angle fade."
+ },
+ "03_duo": {
+ "title": "Duo Contrast",
+ "desc": "Strong Primary/Secondary contrast."
+ },
+ "04_tri": {
+ "title": "Trident",
+ "desc": "Tricolor elegance with gold."
+ },
+ "05_spectrum": {
+ "title": "Spectrum",
+ "desc": "Four colors for maximum visibility."
+ },
+ "06_pulse": {
+ "title": "Pulse",
+ "desc": "Rotates once when selecting window."
+ },
+ "07_infinity": {
+ "title": "Infinity",
+ "desc": "Constant color rotation."
+ },
+ "08_neon": {
+ "title": "Neon Breath",
+ "desc": "Slow and relaxing oscillation."
+ },
+ "09_glitch": {
+ "title": "Cyber Glitch",
+ "desc": "Aggressive, fast, and error colors."
+ },
+ "10_golden": {
+ "title": "Golden Luxury",
+ "desc": "Gold metallic reflections."
+ },
+ "11_toxic": {
+ "title": "Toxic Green",
+ "desc": "Fluor green metallic reflections."
+ },
+ "12_neon_cyberpunk": {
+ "title": "Neon Cyber-Glow (Dual)",
+ "desc": "Simulation of bicolor brightness using a white/violet light base."
+ },
+ "13_the_joker": {
+ "title": "The Joker",
+ "desc": "Joker aesthetic: Acid green and deep purple with an electric glow."
+ }
+ }
+ },
+ "shaders": {
+ "header_title": "Screen Filters",
+ "header_subtitle": "Real-time image post-processing",
+ "presets": {
+ "01_night": {
+ "title": "Night Light",
+ "desc": "Warm filter to protect eyesight."
+ },
+ "02_mono": {
+ "title": "Monochrome",
+ "desc": "Grayscale for concentration."
+ },
+ "03_vibrant": {
+ "title": "Vibrant",
+ "desc": "Intelligently enhances colors."
+ },
+ "04_sharp": {
+ "title": "HD Sharpness",
+ "desc": "Improves border and text definition."
+ },
+ "05_ink": {
+ "title": "E-Ink Paper",
+ "desc": "Sepia electronic paper texture."
+ },
+ "06_invert": {
+ "title": "Inverted",
+ "desc": "Inverts all colors."
+ },
+ "07_oled": {
+ "title": "OLED Mode",
+ "desc": "Pure blacks and dramatic contrast."
+ },
+ "08_vision": {
+ "title": "Night Vision",
+ "desc": "Military green phosphor effect."
+ },
+ "09_hybrid": {
+ "title": "Hybrid",
+ "desc": "Balance between correction and style."
+ }
+ }
+ }
+}
diff --git a/noctalia-visual-layer/i18n/zh-CN.json b/noctalia-visual-layer/i18n/zh-CN.json
new file mode 100644
index 00000000..ce3377f0
--- /dev/null
+++ b/noctalia-visual-layer/i18n/zh-CN.json
@@ -0,0 +1,248 @@
+{
+ "meta": {
+ "lang": "en",
+ "name": "English",
+ "author": "Ximo & AI"
+ },
+ "widget": {
+ "tooltip": "Noctalia Visual Layer",
+ "menu_settings": "Plugin Settings"
+ },
+ "panel": {
+ "header_title": "Noctalia Visual",
+ "header_subtitle": "Aesthetic Control Center",
+ "tabs": {
+ "home": "Home",
+ "animations": "Animations",
+ "borders": "Borders",
+ "effects": "Effects"
+ }
+ },
+ "welcome": {
+ "activation_title": "System Activation",
+ "system_active": "The system is operational. Visual effects are safely managed by NVL.",
+ "system_inactive": "System halted. Requires acceptance of the persistence contract to continue.",
+ "enable_label": "Enable Visual Layer",
+ "warning": {
+ "title": "SECURE PERSISTENCE CONTRACT",
+ "text": "Upon activation, NVL will deploy a guardian shield and inject a secure path into your hyprland.conf. If you uninstall the plugin from the Shell, the system will self-clean on the next reboot without causing Hyprland errors."
+ },
+ "features": {
+ "title": "Features & Benefits",
+ "description": "Noctalia Visual Layer is the aesthetic evolution of your desktop.",
+ "list": {
+ "fluid_anim": "✨ Fluid Animations",
+ "smart_borders": "🎨 Smart Borders",
+ "realtime_shaders": "🕶️ Real-Time Shaders",
+ "non_destructive": "🛡️ Non-Destructive"
+ }
+ },
+ "docs": {
+ "title": "Technical Documentation",
+ "description": "Internal plugin structure and developer guide.",
+ "btn_show": "Show File Structure",
+ "btn_hide": "Hide Structure",
+ "content": {
+ "arch_title": "MODULAR ARCHITECTURE (Fragment System)",
+ "arch_desc": "This plugin uses a dynamic construction system to avoid module conflicts.",
+ "struct_title": "FILE STRUCTURE",
+ "flow_title": "DATA FLOW",
+ "flow_1": "1. Activating a module creates its file in fragments/.",
+ "flow_2": "2. The assemble.sh script joins all fragments.",
+ "flow_3": "3. A clean overlay.conf is generated.",
+ "flow_4": "4. Hyprland reloads configuration without errors.",
+ "debug_title": "DEBUGGING",
+ "debug_desc": "If something fails, check the overlay.conf file. It should contain the sum of all active effects."
+ }
+ },
+ "credits": {
+ "title": "Credits",
+ "description": "Special thanks to the HyDE Project.",
+ "btn_hyde": "Inspired by HyDE Project",
+ "ai_title": "AI Co-Programmed",
+ "ai_desc": "QML Architecture assistance by Gemini (Google)."
+ }
+ },
+ "animations": {
+ "header_title": "Motion Library",
+ "header_subtitle": "Select the animation style for your desktop",
+ "presets": {
+ "01_relampago": {
+ "title": "Lightning",
+ "desc": "Maximum visual response."
+ },
+ "02_inercia_elastica": {
+ "title": "Elastic Inertia",
+ "desc": "Organic movement. Windows gain momentum on exit and bounce on entry."
+ },
+ "03_seda_minimalista": {
+ "title": "Minimalist Silk",
+ "desc": "Absolute smoothness. No bounces, just perfect macOS-style landings."
+ },
+ "04_minimalismo_snappy": {
+ "title": "Snappy Minimalism",
+ "desc": "Optimized for maximum speed. Window and workspace management only."
+ },
+ "05_material_moderno": {
+ "title": "Modern Material",
+ "desc": "Google Pixel aesthetic. Organic animations, subtle scaling, and tactile response."
+ },
+ "06_impacto_clasico": {
+ "title": "Classic Impact",
+ "desc": "\"Jelly\" effect. Elastic bounce on entry and anticipation on exit."
+ },
+ "07_lineal": {
+ "title": "Linear",
+ "desc": "Mathematical precision. Constant motion, \"Sci-Fi HUD\" style."
+ },
+ "08_cristal": {
+ "title": "Glass",
+ "desc": "Ethereal glide. Feeling of glass floating without friction."
+ },
+ "09_seda_silk": {
+ "title": "Silk",
+ "desc": "Refined JaKooLit style. Energetic entries, fleeting exits, and stable workspaces."
+ },
+ "10_retro_arcade": {
+ "title": "Retro Arcade",
+ "desc": "\"Toon/Arcade\" effect. Windows jump and bounce exaggeratedly."
+ },
+ "11_futurista": {
+ "title": "Futuristic",
+ "desc": "Holographic interface. Digital precision, zero bounces, and vertical data flow."
+ },
+ "12_rebote": {
+ "title": "Bounce",
+ "desc": "Vertical spring physics. Windows fall and bounce upon opening."
+ },
+ "13_organico": {
+ "title": "Organic",
+ "desc": "\"Sprout\" movement. Smooth vertical growth and slow fades."
+ },
+ "14_elastico": {
+ "title": "Elastic",
+ "desc": "Rubber band physics. Windows arrive, stretch, and bounce vertically."
+ },
+ "15_desvanecido": {
+ "title": "Fade",
+ "desc": "Spectral materialization. Windows appear smoothly with barely any movement."
+ },
+ "16_dinamico": {
+ "title": "Dynamic",
+ "desc": "Organic rhythm. Combination of speed and smooth settling."
+ },
+ "17_sutil": {
+ "title": "Subtle",
+ "desc": "Zero distractions. Absolute smoothness without bounces or abrupt movements."
+ },
+ "18_energico": {
+ "title": "Energetic",
+ "desc": "Maximum visual impact. Exaggerated bounces (56%) and kickback exits."
+ }
+ }
+ },
+ "borders": {
+ "geometry": {
+ "title": "Border Thickness",
+ "desc": "Define line thickness (0-3px)"
+ },
+ "header_title": "Visual Styles",
+ "header_subtitle": "Define your windows' personality",
+ "presets": {
+ "01_cascade": {
+ "title": "Cascade",
+ "desc": "Soft vertical gradient at 50%."
+ },
+ "02_diagonal": {
+ "title": "Diagonal",
+ "desc": "Dynamic angle fade."
+ },
+ "03_duo": {
+ "title": "Duo Contrast",
+ "desc": "Strong Primary/Secondary contrast."
+ },
+ "04_tri": {
+ "title": "Trident",
+ "desc": "Tricolor elegance with gold."
+ },
+ "05_spectrum": {
+ "title": "Spectrum",
+ "desc": "Four colors for maximum visibility."
+ },
+ "06_pulse": {
+ "title": "Pulse",
+ "desc": "Rotates once when selecting window."
+ },
+ "07_infinity": {
+ "title": "Infinity",
+ "desc": "Constant color rotation."
+ },
+ "08_neon": {
+ "title": "Neon Breath",
+ "desc": "Slow and relaxing oscillation."
+ },
+ "09_glitch": {
+ "title": "Cyber Glitch",
+ "desc": "Aggressive, fast, and error colors."
+ },
+ "10_golden": {
+ "title": "Golden Luxury",
+ "desc": "Gold metallic reflections."
+ },
+ "11_toxic": {
+ "title": "Toxic Green",
+ "desc": "Fluor green metallic reflections."
+ },
+ "12_neon_cyberpunk": {
+ "title": "Neon Cyber-Glow (Dual)",
+ "desc": "Simulation of bicolor brightness using a white/violet light base."
+ },
+ "13_the_joker": {
+ "title": "The Joker",
+ "desc": "Joker aesthetic: Acid green and deep purple with an electric glow."
+ }
+ }
+ },
+ "shaders": {
+ "header_title": "Screen Filters",
+ "header_subtitle": "Real-time image post-processing",
+ "presets": {
+ "01_night": {
+ "title": "Night Light",
+ "desc": "Warm filter to protect eyesight."
+ },
+ "02_mono": {
+ "title": "Monochrome",
+ "desc": "Grayscale for concentration."
+ },
+ "03_vibrant": {
+ "title": "Vibrant",
+ "desc": "Intelligently enhances colors."
+ },
+ "04_sharp": {
+ "title": "HD Sharpness",
+ "desc": "Improves border and text definition."
+ },
+ "05_ink": {
+ "title": "E-Ink Paper",
+ "desc": "Sepia electronic paper texture."
+ },
+ "06_invert": {
+ "title": "Inverted",
+ "desc": "Inverts all colors."
+ },
+ "07_oled": {
+ "title": "OLED Mode",
+ "desc": "Pure blacks and dramatic contrast."
+ },
+ "08_vision": {
+ "title": "Night Vision",
+ "desc": "Military green phosphor effect."
+ },
+ "09_hybrid": {
+ "title": "Hybrid",
+ "desc": "Balance between correction and style."
+ }
+ }
+ }
+}
diff --git a/noctalia-visual-layer/i18n/zh-TW.json b/noctalia-visual-layer/i18n/zh-TW.json
new file mode 100644
index 00000000..ce3377f0
--- /dev/null
+++ b/noctalia-visual-layer/i18n/zh-TW.json
@@ -0,0 +1,248 @@
+{
+ "meta": {
+ "lang": "en",
+ "name": "English",
+ "author": "Ximo & AI"
+ },
+ "widget": {
+ "tooltip": "Noctalia Visual Layer",
+ "menu_settings": "Plugin Settings"
+ },
+ "panel": {
+ "header_title": "Noctalia Visual",
+ "header_subtitle": "Aesthetic Control Center",
+ "tabs": {
+ "home": "Home",
+ "animations": "Animations",
+ "borders": "Borders",
+ "effects": "Effects"
+ }
+ },
+ "welcome": {
+ "activation_title": "System Activation",
+ "system_active": "The system is operational. Visual effects are safely managed by NVL.",
+ "system_inactive": "System halted. Requires acceptance of the persistence contract to continue.",
+ "enable_label": "Enable Visual Layer",
+ "warning": {
+ "title": "SECURE PERSISTENCE CONTRACT",
+ "text": "Upon activation, NVL will deploy a guardian shield and inject a secure path into your hyprland.conf. If you uninstall the plugin from the Shell, the system will self-clean on the next reboot without causing Hyprland errors."
+ },
+ "features": {
+ "title": "Features & Benefits",
+ "description": "Noctalia Visual Layer is the aesthetic evolution of your desktop.",
+ "list": {
+ "fluid_anim": "✨ Fluid Animations",
+ "smart_borders": "🎨 Smart Borders",
+ "realtime_shaders": "🕶️ Real-Time Shaders",
+ "non_destructive": "🛡️ Non-Destructive"
+ }
+ },
+ "docs": {
+ "title": "Technical Documentation",
+ "description": "Internal plugin structure and developer guide.",
+ "btn_show": "Show File Structure",
+ "btn_hide": "Hide Structure",
+ "content": {
+ "arch_title": "MODULAR ARCHITECTURE (Fragment System)",
+ "arch_desc": "This plugin uses a dynamic construction system to avoid module conflicts.",
+ "struct_title": "FILE STRUCTURE",
+ "flow_title": "DATA FLOW",
+ "flow_1": "1. Activating a module creates its file in fragments/.",
+ "flow_2": "2. The assemble.sh script joins all fragments.",
+ "flow_3": "3. A clean overlay.conf is generated.",
+ "flow_4": "4. Hyprland reloads configuration without errors.",
+ "debug_title": "DEBUGGING",
+ "debug_desc": "If something fails, check the overlay.conf file. It should contain the sum of all active effects."
+ }
+ },
+ "credits": {
+ "title": "Credits",
+ "description": "Special thanks to the HyDE Project.",
+ "btn_hyde": "Inspired by HyDE Project",
+ "ai_title": "AI Co-Programmed",
+ "ai_desc": "QML Architecture assistance by Gemini (Google)."
+ }
+ },
+ "animations": {
+ "header_title": "Motion Library",
+ "header_subtitle": "Select the animation style for your desktop",
+ "presets": {
+ "01_relampago": {
+ "title": "Lightning",
+ "desc": "Maximum visual response."
+ },
+ "02_inercia_elastica": {
+ "title": "Elastic Inertia",
+ "desc": "Organic movement. Windows gain momentum on exit and bounce on entry."
+ },
+ "03_seda_minimalista": {
+ "title": "Minimalist Silk",
+ "desc": "Absolute smoothness. No bounces, just perfect macOS-style landings."
+ },
+ "04_minimalismo_snappy": {
+ "title": "Snappy Minimalism",
+ "desc": "Optimized for maximum speed. Window and workspace management only."
+ },
+ "05_material_moderno": {
+ "title": "Modern Material",
+ "desc": "Google Pixel aesthetic. Organic animations, subtle scaling, and tactile response."
+ },
+ "06_impacto_clasico": {
+ "title": "Classic Impact",
+ "desc": "\"Jelly\" effect. Elastic bounce on entry and anticipation on exit."
+ },
+ "07_lineal": {
+ "title": "Linear",
+ "desc": "Mathematical precision. Constant motion, \"Sci-Fi HUD\" style."
+ },
+ "08_cristal": {
+ "title": "Glass",
+ "desc": "Ethereal glide. Feeling of glass floating without friction."
+ },
+ "09_seda_silk": {
+ "title": "Silk",
+ "desc": "Refined JaKooLit style. Energetic entries, fleeting exits, and stable workspaces."
+ },
+ "10_retro_arcade": {
+ "title": "Retro Arcade",
+ "desc": "\"Toon/Arcade\" effect. Windows jump and bounce exaggeratedly."
+ },
+ "11_futurista": {
+ "title": "Futuristic",
+ "desc": "Holographic interface. Digital precision, zero bounces, and vertical data flow."
+ },
+ "12_rebote": {
+ "title": "Bounce",
+ "desc": "Vertical spring physics. Windows fall and bounce upon opening."
+ },
+ "13_organico": {
+ "title": "Organic",
+ "desc": "\"Sprout\" movement. Smooth vertical growth and slow fades."
+ },
+ "14_elastico": {
+ "title": "Elastic",
+ "desc": "Rubber band physics. Windows arrive, stretch, and bounce vertically."
+ },
+ "15_desvanecido": {
+ "title": "Fade",
+ "desc": "Spectral materialization. Windows appear smoothly with barely any movement."
+ },
+ "16_dinamico": {
+ "title": "Dynamic",
+ "desc": "Organic rhythm. Combination of speed and smooth settling."
+ },
+ "17_sutil": {
+ "title": "Subtle",
+ "desc": "Zero distractions. Absolute smoothness without bounces or abrupt movements."
+ },
+ "18_energico": {
+ "title": "Energetic",
+ "desc": "Maximum visual impact. Exaggerated bounces (56%) and kickback exits."
+ }
+ }
+ },
+ "borders": {
+ "geometry": {
+ "title": "Border Thickness",
+ "desc": "Define line thickness (0-3px)"
+ },
+ "header_title": "Visual Styles",
+ "header_subtitle": "Define your windows' personality",
+ "presets": {
+ "01_cascade": {
+ "title": "Cascade",
+ "desc": "Soft vertical gradient at 50%."
+ },
+ "02_diagonal": {
+ "title": "Diagonal",
+ "desc": "Dynamic angle fade."
+ },
+ "03_duo": {
+ "title": "Duo Contrast",
+ "desc": "Strong Primary/Secondary contrast."
+ },
+ "04_tri": {
+ "title": "Trident",
+ "desc": "Tricolor elegance with gold."
+ },
+ "05_spectrum": {
+ "title": "Spectrum",
+ "desc": "Four colors for maximum visibility."
+ },
+ "06_pulse": {
+ "title": "Pulse",
+ "desc": "Rotates once when selecting window."
+ },
+ "07_infinity": {
+ "title": "Infinity",
+ "desc": "Constant color rotation."
+ },
+ "08_neon": {
+ "title": "Neon Breath",
+ "desc": "Slow and relaxing oscillation."
+ },
+ "09_glitch": {
+ "title": "Cyber Glitch",
+ "desc": "Aggressive, fast, and error colors."
+ },
+ "10_golden": {
+ "title": "Golden Luxury",
+ "desc": "Gold metallic reflections."
+ },
+ "11_toxic": {
+ "title": "Toxic Green",
+ "desc": "Fluor green metallic reflections."
+ },
+ "12_neon_cyberpunk": {
+ "title": "Neon Cyber-Glow (Dual)",
+ "desc": "Simulation of bicolor brightness using a white/violet light base."
+ },
+ "13_the_joker": {
+ "title": "The Joker",
+ "desc": "Joker aesthetic: Acid green and deep purple with an electric glow."
+ }
+ }
+ },
+ "shaders": {
+ "header_title": "Screen Filters",
+ "header_subtitle": "Real-time image post-processing",
+ "presets": {
+ "01_night": {
+ "title": "Night Light",
+ "desc": "Warm filter to protect eyesight."
+ },
+ "02_mono": {
+ "title": "Monochrome",
+ "desc": "Grayscale for concentration."
+ },
+ "03_vibrant": {
+ "title": "Vibrant",
+ "desc": "Intelligently enhances colors."
+ },
+ "04_sharp": {
+ "title": "HD Sharpness",
+ "desc": "Improves border and text definition."
+ },
+ "05_ink": {
+ "title": "E-Ink Paper",
+ "desc": "Sepia electronic paper texture."
+ },
+ "06_invert": {
+ "title": "Inverted",
+ "desc": "Inverts all colors."
+ },
+ "07_oled": {
+ "title": "OLED Mode",
+ "desc": "Pure blacks and dramatic contrast."
+ },
+ "08_vision": {
+ "title": "Night Vision",
+ "desc": "Military green phosphor effect."
+ },
+ "09_hybrid": {
+ "title": "Hybrid",
+ "desc": "Balance between correction and style."
+ }
+ }
+ }
+}
diff --git a/noctalia-visual-layer/manifest.json b/noctalia-visual-layer/manifest.json
new file mode 100755
index 00000000..7d5fd06c
--- /dev/null
+++ b/noctalia-visual-layer/manifest.json
@@ -0,0 +1,23 @@
+{
+ "id": "noctalia-visual-layer",
+ "name": "Noctalia Visual Layer",
+ "version": "1.0.0",
+ "minNoctaliaVersion": "3.6.0",
+ "author": "XimoCP",
+ "license": "MIT",
+ "repository": "https://github.com/XimoCP/noctalia-visual-layer",
+ "description": "Elevate your Hyprland experience. A modular Noctalia Shell plugin to safely inject custom animations, borders, and visual effects on the fly.",
+ "tags": ["Panel", "Bar", "System", "Fun"],
+ "entryPoints": {
+ "panel": "Panel.qml",
+ "barWidget": "BarWidget.qml"
+ },
+ "dependencies": {
+ "plugins": []
+ },
+ "metadata": {
+ "defaultSettings": {
+ "layer_enabled": false
+ }
+ }
+}
diff --git a/noctalia-visual-layer/modules/AnimationModule.qml b/noctalia-visual-layer/modules/AnimationModule.qml
new file mode 100755
index 00000000..9f1ec9fe
--- /dev/null
+++ b/noctalia-visual-layer/modules/AnimationModule.qml
@@ -0,0 +1,185 @@
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+import Qt.labs.settings 1.0 as LabSettings
+import Quickshell
+import Quickshell.Io
+import qs.Widgets
+import qs.Commons
+
+NScrollView {
+ id: animRoot
+
+ property var pluginApi: null
+ property var runHypr: null
+ property var runScript: null
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ contentHeight: mainLayout.implicitHeight + 50
+ clip: true
+
+ // --- LÓGICA DE TRADUCCIÓN HÍBRIDA (ANTI-EXCLAMACIONES) ---
+ function tr(key, fallback) {
+ if (pluginApi && pluginApi.tr) {
+ var t = pluginApi.tr(key);
+ if (t !== key && t !== "" && t.indexOf("!!") === -1) {
+ return t;
+ }
+ }
+ return fallback || key;
+ }
+
+ // --- PERSISTENCIA ---
+ LabSettings.Settings {
+ id: animSettings
+ fileName: Quickshell.env("HOME") + "/.config/noctalia/plugins/noctalia-visual-layer/assets/animations/store.conf"
+ property string activeAnimFile: ""
+ }
+
+ // --- ESCÁNER ---
+ Process {
+ id: scanner
+ command: ["bash", Quickshell.env("HOME") + "/.config/noctalia/plugins/noctalia-visual-layer/assets/scripts/scan.sh", "animations"]
+ property string outputData: ""
+ stdout: SplitParser { onRead: function(data) { scanner.outputData += data; } }
+ onExited: (code) => {
+ if (code === 0) {
+ try {
+ var data = JSON.parse(scanner.outputData);
+ animModel.clear();
+ for (var i = 0; i < data.length; i++) { animModel.append(data[i]); }
+ } catch (e) { console.error("JSON Error: " + e); }
+ }
+ }
+ }
+ Component.onCompleted: scanner.running = true
+
+ // --- DELEGADO ---
+ Component {
+ id: animDelegate
+ NBox {
+ id: cardRoot
+ Layout.fillWidth: true
+ Layout.preferredHeight: 85 * Style.uiScaleRatio
+ radius: Style.radiusM
+
+ // 1. MAPEO DE PROPIEDADES
+ property string cTitleKey: model.title || ""
+ property string cDescKey: model.desc || ""
+ property string cRawTitle: model.rawTitle || ""
+ property string cRawDesc: model.rawDesc || ""
+
+ property string cFile: model.file || ""
+ property string cTag: model.tag || "USER"
+ property color cColor: model.color || "#888888"
+ property string cIcon: model.icon || "help"
+
+ property bool isActive: animSettings.activeAnimFile === cFile
+
+ color: isActive ? Qt.alpha(cColor, 0.12) : (hoverArea.containsMouse ? Qt.alpha(cColor, 0.05) : "transparent")
+ border.width: isActive ? 2 : 1
+ border.color: isActive ? cColor : (hoverArea.containsMouse ? Qt.alpha(cColor, 0.4) : Color.mOutline)
+
+ Behavior on color { ColorAnimation { duration: 150 } }
+ Behavior on border.color { ColorAnimation { duration: 150 } }
+
+ MouseArea {
+ id: hoverArea; anchors.fill: parent; hoverEnabled: true; cursorShape: Qt.PointingHandCursor
+ onClicked: {
+ // 1. CAPTURAR EL ESTADO ACTUAL
+ var wasActive = isActive
+
+ // 2. CALCULAR LA INTENCIÓN
+ var scriptArg = wasActive ? "none" : cardRoot.cFile
+ var settingArg = wasActive ? "" : cardRoot.cFile
+
+ // 3. EJECUTAR EL SCRIPT PRIMERO
+ if (animRoot.runScript) animRoot.runScript("apply_animation.sh", scriptArg)
+
+ // 4. ACTUALIZAR LA UI AL FINAL
+ animSettings.activeAnimFile = settingArg
+ }
+ }
+ RowLayout {
+ anchors.fill: parent; anchors.margins: Style.marginM; spacing: Style.marginM
+ NIcon {
+ icon: cardRoot.cIcon
+ color: (cardRoot.isActive || hoverArea.containsMouse) ? cardRoot.cColor : Color.mOnSurfaceVariant
+ pointSize: Style.fontSizeL
+ }
+ ColumnLayout {
+ Layout.fillWidth: true; spacing: 2
+ RowLayout {
+ spacing: 8
+ // 2. USO DE TRADUCCIÓN SEGURA
+ NText {
+ text: animRoot.tr(cardRoot.cTitleKey, cardRoot.cRawTitle)
+ font.weight: Font.Bold
+ color: cardRoot.isActive ? Color.mOnSurface : Color.mOnSurfaceVariant
+ }
+ Rectangle {
+ width: tagT.implicitWidth + 10; height: 16; radius: 4; color: Qt.alpha(cardRoot.cColor, 0.15)
+ NText { id: tagT; text: cardRoot.cTag; pointSize: 7; color: cardRoot.cColor; anchors.centerIn: parent; font.weight: Font.Bold }
+ }
+ }
+ NText {
+ text: animRoot.tr(cardRoot.cDescKey, cardRoot.cRawDesc)
+ pointSize: Style.fontSizeS; color: Color.mOnSurfaceVariant; elide: Text.ElideRight; Layout.fillWidth: true
+ }
+ }
+ // Switch visual para consistencia
+ VisualSwitch {
+ checked: cardRoot.isActive
+ onToggled: hoverArea.clicked(null)
+ }
+ }
+ }
+ }
+
+ ListModel { id: animModel }
+
+ ColumnLayout {
+ id: mainLayout
+ width: animRoot.availableWidth
+ spacing: Style.marginS
+ Layout.margins: Style.marginM
+
+ ColumnLayout {
+ Layout.fillWidth: true; spacing: 4; Layout.margins: Style.marginL
+ // CABECERAS TRADUCIBLES
+ NText {
+ text: animRoot.tr("animations.header_title", "Biblioteca de Movimiento")
+ font.weight: Font.Bold; pointSize: Style.fontSizeL; color: Color.mPrimary
+ }
+ NText {
+ text: animRoot.tr("animations.header_subtitle", "Selecciona el estilo de animación")
+ pointSize: Style.fontSizeS; color: Color.mOnSurfaceVariant
+ }
+ }
+
+ NDivider { Layout.fillWidth: true; opacity: 0.5 }
+
+ Repeater {
+ model: animModel
+ delegate: animDelegate
+ }
+ }
+
+ component VisualSwitch : Item {
+ id: sw; property bool checked: false; signal toggled()
+ width: 40 * Style.uiScaleRatio; height: 20 * Style.uiScaleRatio
+ Rectangle {
+ anchors.fill: parent; radius: height / 2
+ color: sw.checked ? Color.mPrimary : "transparent"
+ border.color: sw.checked ? Color.mPrimary : Color.mOutline; border.width: 1
+ Rectangle {
+ width: parent.height - 6; height: width; radius: width / 2
+ color: sw.checked ? Color.mOnPrimary : Color.mOnSurfaceVariant
+ anchors.verticalCenter: parent.verticalCenter
+ x: sw.checked ? (parent.width - width - 3) : 3
+ Behavior on x { NumberAnimation { duration: 200 } }
+ }
+ }
+ }
+}
diff --git a/noctalia-visual-layer/modules/BorderModule.qml b/noctalia-visual-layer/modules/BorderModule.qml
new file mode 100755
index 00000000..1145ccb7
--- /dev/null
+++ b/noctalia-visual-layer/modules/BorderModule.qml
@@ -0,0 +1,231 @@
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+import Qt.labs.settings 1.0 as LabSettings
+import Quickshell
+import Quickshell.Io
+import qs.Widgets
+import qs.Commons
+
+NScrollView {
+ id: borderRoot
+
+ property var pluginApi: null
+ property var runHypr: null
+ property var runScript: null
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ contentHeight: mainLayout.implicitHeight + 50
+ clip: true
+
+ // --- LÓGICA DE TRADUCCIÓN HÍBRIDA (ANTI-EXCLAMACIONES) ---
+ function tr(key, fallback) {
+ if (pluginApi && pluginApi.tr) {
+ var translated = pluginApi.tr(key);
+
+ // Verificamos DOS cosas:
+ // 1. Que no sea igual a la clave
+ // 2. Que NO contenga "!!" (que es como Noctalia marca los errores)
+ if (translated !== key && translated.indexOf("!!") === -1) {
+ return translated;
+ }
+ }
+ // Si falla la traducción o devuelve error (!!), usamos el texto original del archivo
+ return fallback || key;
+ }
+ // --- PERSISTENCIA ---
+ LabSettings.Settings {
+ id: borderSettings
+ fileName: Quickshell.env("HOME") + "/.config/noctalia/plugins/noctalia-visual-layer/assets/borders/store.conf"
+ property string activeBorderFile: ""
+ }
+ LabSettings.Settings {
+ id: geomSettings
+ category: "VisualLayer_Geometry"
+ fileName: Quickshell.env("HOME") + "/.config/noctalia/plugins/noctalia-visual-layer/assets/borders/store.conf"
+ property int borderSize: 2
+ }
+
+ // --- ESCÁNER ---
+ Process {
+ id: scanner
+ command: ["bash", Quickshell.env("HOME") + "/.config/noctalia/plugins/noctalia-visual-layer/assets/scripts/scan.sh", "borders"]
+ property string outputData: ""
+ stdout: SplitParser { onRead: function(data) { scanner.outputData += data; } }
+ onExited: (code) => {
+ if (code === 0) {
+ try {
+ var data = JSON.parse(scanner.outputData);
+ borderModel.clear();
+ for (var i = 0; i < data.length; i++) { borderModel.append(data[i]); }
+ } catch (e) { console.error("JSON Error: " + e); }
+ }
+ }
+ }
+ Component.onCompleted: scanner.running = true
+
+ // --- DELEGADO ---
+ Component {
+ id: borderDelegate
+ NBox {
+ id: cardRoot
+ Layout.fillWidth: true
+ Layout.preferredHeight: 85 * Style.uiScaleRatio
+ radius: Style.radiusM
+
+ // 1. MAPEO DE PROPIEDADES (Ahora leemos rawTitle y rawDesc del JSON)
+ property string cTitleKey: model.title || ""
+ property string cDescKey: model.desc || ""
+ property string cRawTitle: model.rawTitle || ""
+ property string cRawDesc: model.rawDesc || ""
+
+ property string cFile: model.file || ""
+ property string cIcon: model.icon || "help" // Evita exclamaciones si falta icono
+ property color cColor: model.color || "#888888" // Evita exclamaciones si falta color
+ property string cTag: model.tag || "USER"
+
+ property bool isActive: borderSettings.activeBorderFile === cFile
+
+ color: isActive ? Qt.alpha(cColor, 0.12) : (hoverArea.containsMouse ? Qt.alpha(cColor, 0.05) : "transparent")
+ border.width: isActive ? 2 : 1
+ border.color: isActive ? cColor : (hoverArea.containsMouse ? Qt.alpha(cColor, 0.4) : Color.mOutline)
+
+ Behavior on color { ColorAnimation { duration: 150 } }
+ Behavior on border.color { ColorAnimation { duration: 150 } }
+
+ MouseArea {
+ id: hoverArea; anchors.fill: parent; hoverEnabled: true; cursorShape: Qt.PointingHandCursor
+ onClicked: {
+ // 1. CAPTURAR EL ESTADO ACTUAL (Antes de que cambie)
+ var wasActive = isActive
+
+ // 2. CALCULAR LA INTENCIÓN
+ var scriptArg = wasActive ? "none" : cardRoot.cFile
+ var settingArg = wasActive ? "" : cardRoot.cFile
+
+ // 3. EJECUTAR EL SCRIPT PRIMERO
+ if (borderRoot.runScript) borderRoot.runScript("border.sh", scriptArg)
+
+ // 4. ACTUALIZAR LA UI AL FINAL
+ borderSettings.activeBorderFile = settingArg
+ }
+ }
+
+ RowLayout {
+ anchors.fill: parent; anchors.margins: Style.marginM; spacing: Style.marginM
+ NIcon {
+ icon: cardRoot.cIcon
+ color: (cardRoot.isActive || hoverArea.containsMouse) ? cardRoot.cColor : Color.mOnSurfaceVariant
+ pointSize: Style.fontSizeL
+ }
+ ColumnLayout {
+ Layout.fillWidth: true; spacing: 2
+ RowLayout {
+ spacing: 8
+ // 2. USO DE LA TRADUCCIÓN HÍBRIDA
+ NText {
+ // "Intenta traducir la Key, si no puedes, dame el RawTitle"
+ text: borderRoot.tr(cardRoot.cTitleKey, cardRoot.cRawTitle)
+ font.weight: Font.Bold
+ color: cardRoot.isActive ? Color.mOnSurface : Color.mOnSurfaceVariant
+ }
+ Rectangle {
+ width: tagT.implicitWidth + 10; height: 16; radius: 4; color: Qt.alpha(cardRoot.cColor, 0.15)
+ NText { id: tagT; text: cardRoot.cTag; pointSize: 7; color: cardRoot.cColor; anchors.centerIn: parent; font.weight: Font.Bold }
+ }
+ }
+ NText {
+ // "Intenta traducir la Key, si no puedes, dame el RawDesc"
+ text: borderRoot.tr(cardRoot.cDescKey, cardRoot.cRawDesc)
+ pointSize: Style.fontSizeS
+ color: Color.mOnSurfaceVariant
+ elide: Text.ElideRight
+ Layout.fillWidth: true
+ }
+ }
+ // Switch visual (opcional, para coherencia)
+ Item {
+ width: 40 * Style.uiScaleRatio; height: 20 * Style.uiScaleRatio
+ Rectangle {
+ anchors.fill: parent; radius: height / 2
+ color: cardRoot.isActive ? Color.mPrimary : "transparent"
+ border.color: cardRoot.isActive ? Color.mPrimary : Color.mOutline; border.width: 1
+ Rectangle {
+ width: parent.height - 6; height: width; radius: width / 2
+ color: cardRoot.isActive ? Color.mOnPrimary : Color.mOnSurfaceVariant
+ anchors.verticalCenter: parent.verticalCenter
+ x: cardRoot.isActive ? (parent.width - width - 3) : 3
+ Behavior on x { NumberAnimation { duration: 200 } }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ ListModel { id: borderModel }
+
+ ColumnLayout {
+ id: mainLayout
+ width: borderRoot.availableWidth
+ spacing: Style.marginS
+ Layout.margins: Style.marginM
+
+ // CABECERA (También usa la función tr segura)
+ ColumnLayout {
+ Layout.fillWidth: true; spacing: 4; Layout.margins: Style.marginL
+ NText {
+ text: borderRoot.tr("borders.header_title", "Estilos de Borde")
+ font.weight: Font.Bold; pointSize: Style.fontSizeL; color: Color.mPrimary
+ }
+ NText {
+ text: borderRoot.tr("borders.header_subtitle", "Personaliza los colores y degradados de las ventanas")
+ pointSize: Style.fontSizeS; color: Color.mOnSurfaceVariant
+ }
+ }
+
+ NDivider { Layout.fillWidth: true; opacity: 0.5 }
+
+ // SLIDER DE GEOMETRÍA
+ NBox {
+ Layout.fillWidth: true
+ implicitHeight: geoCol.implicitHeight + (Style.marginL * 2)
+ color: Qt.alpha(Color.mSurface, 0.4)
+ radius: Style.radiusM
+ border.color: Color.mOutline; border.width: 1
+
+ ColumnLayout {
+ id: geoCol
+ anchors.fill: parent; anchors.margins: Style.marginL; spacing: Style.marginM
+ RowLayout {
+ spacing: Style.marginS
+ NIcon { icon: "maximize"; color: Color.mPrimary; pointSize: Style.fontSizeM }
+ NText {
+ text: borderRoot.tr("borders.geometry.title", "Grosor del Borde")
+ font.weight: Font.Bold; color: Color.mOnSurface
+ }
+ Item { Layout.fillWidth: true }
+ NText { text: thicknessSlider.value + "px"; color: Color.mPrimary; font.family: Style.fontMono; font.weight: Font.Bold }
+ }
+ NSlider {
+ id: thicknessSlider
+ Layout.fillWidth: true
+ from: 1; to: 5; stepSize: 1
+ value: geomSettings.borderSize
+ onMoved: {
+ geomSettings.borderSize = value
+ if (borderRoot.runScript) borderRoot.runScript("geometry.sh", value.toString())
+ }
+ }
+ }
+ }
+
+ NDivider { Layout.fillWidth: true; Layout.topMargin: Style.marginM; Layout.bottomMargin: Style.marginS; opacity: 0.3 }
+
+ Repeater {
+ model: borderModel
+ delegate: borderDelegate
+ }
+ }
+}
diff --git a/noctalia-visual-layer/modules/ShaderModule.qml b/noctalia-visual-layer/modules/ShaderModule.qml
new file mode 100755
index 00000000..14eb9a20
--- /dev/null
+++ b/noctalia-visual-layer/modules/ShaderModule.qml
@@ -0,0 +1,186 @@
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+import Qt.labs.settings 1.0 as LabSettings
+import Quickshell
+import Quickshell.Io
+import qs.Widgets
+import qs.Commons
+
+NScrollView {
+ id: shaderRoot
+
+ property var pluginApi: null
+ property var runHypr: null
+ property var runScript: null
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ contentHeight: mainLayout.implicitHeight + 50
+ clip: true
+
+ // --- LÓGICA DE TRADUCCIÓN HÍBRIDA (ANTI-EXCLAMACIONES) ---
+ function tr(key, fallback) {
+ if (pluginApi && pluginApi.tr) {
+ var t = pluginApi.tr(key);
+ // Si es distinto a la clave Y no contiene exclamaciones de error
+ if (t !== key && t !== "" && t.indexOf("!!") === -1) {
+ return t;
+ }
+ }
+ return fallback || key;
+ }
+
+ // --- PERSISTENCIA ---
+ LabSettings.Settings {
+ id: shaderSettings
+ fileName: Quickshell.env("HOME") + "/.config/noctalia/plugins/noctalia-visual-layer/assets/shaders/store.conf"
+ property string activeShaderFile: ""
+ }
+
+ // --- ESCÁNER ---
+ Process {
+ id: scanner
+ command: ["bash", Quickshell.env("HOME") + "/.config/noctalia/plugins/noctalia-visual-layer/assets/scripts/scan.sh", "shaders"]
+ property string outputData: ""
+ stdout: SplitParser { onRead: function(data) { scanner.outputData += data; } }
+ onExited: (code) => {
+ if (code === 0) {
+ try {
+ var data = JSON.parse(scanner.outputData);
+ shaderModel.clear();
+ for (var i = 0; i < data.length; i++) { shaderModel.append(data[i]); }
+ } catch (e) { console.error("JSON Error: " + e); }
+ }
+ }
+ }
+ Component.onCompleted: scanner.running = true
+
+ // --- DELEGADO ---
+ Component {
+ id: shaderDelegate
+ NBox {
+ id: cardRoot
+ Layout.fillWidth: true
+ Layout.preferredHeight: 85 * Style.uiScaleRatio
+ radius: Style.radiusM
+
+ // 1. MAPEO DE PROPIEDADES (Raw + Key)
+ property string cTitleKey: model.title || ""
+ property string cDescKey: model.desc || ""
+ property string cRawTitle: model.rawTitle || ""
+ property string cRawDesc: model.rawDesc || ""
+
+ property string cFile: model.file || ""
+ property string cTag: model.tag || "USER"
+ property color cColor: model.color || "#888888"
+ property string cIcon: model.icon || "help"
+
+ property bool isActive: shaderSettings.activeShaderFile === cFile
+
+ color: isActive ? Qt.alpha(cColor, 0.12) : (hoverArea.containsMouse ? Qt.alpha(cColor, 0.05) : "transparent")
+ border.width: isActive ? 2 : 1
+ border.color: isActive ? cColor : (hoverArea.containsMouse ? Qt.alpha(cColor, 0.4) : Color.mOutline)
+
+ Behavior on color { ColorAnimation { duration: 150 } }
+ Behavior on border.color { ColorAnimation { duration: 150 } }
+
+ MouseArea {
+ id: hoverArea; anchors.fill: parent; hoverEnabled: true; cursorShape: Qt.PointingHandCursor
+ onClicked: {
+ // 1. CAPTURAR EL ESTADO ACTUAL
+ var wasActive = isActive
+
+ // 2. CALCULAR LA INTENCIÓN
+ var scriptArg = wasActive ? "none" : cardRoot.cFile
+ var settingArg = wasActive ? "" : cardRoot.cFile
+
+ // 3. EJECUTAR EL SCRIPT PRIMERO
+ if (shaderRoot.runScript) shaderRoot.runScript("shader.sh", scriptArg)
+
+ // 4. ACTUALIZAR LA UI AL FINAL
+ shaderSettings.activeShaderFile = settingArg
+ }
+ }
+
+ RowLayout {
+ anchors.fill: parent; anchors.margins: Style.marginM; spacing: Style.marginM
+ NIcon {
+ icon: cardRoot.cIcon
+ color: (cardRoot.isActive || hoverArea.containsMouse) ? cardRoot.cColor : Color.mOnSurfaceVariant
+ pointSize: Style.fontSizeL
+ }
+ ColumnLayout {
+ Layout.fillWidth: true; spacing: 2
+ RowLayout {
+ spacing: 8
+ // 2. USO DE TRADUCCIÓN SEGURA
+ NText {
+ text: shaderRoot.tr(cardRoot.cTitleKey, cardRoot.cRawTitle)
+ font.weight: Font.Bold
+ color: cardRoot.isActive ? Color.mOnSurface : Color.mOnSurfaceVariant
+ }
+ Rectangle {
+ width: tagT.implicitWidth + 10; height: 16; radius: 4; color: Qt.alpha(cardRoot.cColor, 0.15)
+ NText { id: tagT; text: cardRoot.cTag; pointSize: 7; color: cardRoot.cColor; anchors.centerIn: parent; font.weight: Font.Bold }
+ }
+ }
+ NText {
+ text: shaderRoot.tr(cardRoot.cDescKey, cardRoot.cRawDesc)
+ pointSize: Style.fontSizeS; color: Color.mOnSurfaceVariant; elide: Text.ElideRight; Layout.fillWidth: true
+ }
+ }
+ VisualSwitch {
+ checked: cardRoot.isActive
+ onToggled: hoverArea.clicked(null)
+ }
+ }
+ }
+ }
+
+ ListModel { id: shaderModel }
+
+ ColumnLayout {
+ id: mainLayout
+ width: shaderRoot.availableWidth
+ spacing: Style.marginS
+ Layout.margins: Style.marginM
+
+ ColumnLayout {
+ Layout.fillWidth: true; spacing: 4; Layout.margins: Style.marginL
+ // CABECERAS TRADUCIBLES
+ NText {
+ text: shaderRoot.tr("shaders.header_title", "Filtros Visuales")
+ font.weight: Font.Bold; pointSize: Style.fontSizeL; color: Color.mPrimary
+ }
+ NText {
+ text: shaderRoot.tr("shaders.header_subtitle", "Post-procesado de imagen")
+ pointSize: Style.fontSizeS; color: Color.mOnSurfaceVariant
+ }
+ }
+
+ NDivider { Layout.fillWidth: true; opacity: 0.5 }
+
+ Repeater {
+ model: shaderModel
+ delegate: shaderDelegate
+ }
+ }
+
+ component VisualSwitch : Item {
+ id: sw; property bool checked: false; signal toggled()
+ width: 40 * Style.uiScaleRatio; height: 20 * Style.uiScaleRatio
+ Rectangle {
+ anchors.fill: parent; radius: height / 2
+ color: sw.checked ? Color.mPrimary : "transparent"
+ border.color: sw.checked ? Color.mPrimary : Color.mOutline; border.width: 1
+ Rectangle {
+ width: parent.height - 6; height: width; radius: width / 2
+ color: sw.checked ? Color.mOnPrimary : Color.mOnSurfaceVariant
+ anchors.verticalCenter: parent.verticalCenter
+ x: sw.checked ? (parent.width - width - 3) : 3
+ Behavior on x { NumberAnimation { duration: 200 } }
+ }
+ }
+ }
+}
diff --git a/noctalia-visual-layer/modules/WelcomeModule.qml b/noctalia-visual-layer/modules/WelcomeModule.qml
new file mode 100755
index 00000000..f68ae737
--- /dev/null
+++ b/noctalia-visual-layer/modules/WelcomeModule.qml
@@ -0,0 +1,268 @@
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+import Qt.labs.settings 1.0 as LabSettings
+import Quickshell
+import Quickshell.Io
+import qs.Widgets
+import qs.Commons
+
+NScrollView {
+ id: welcomeRoot
+
+ // CAMBIO: Renombrado a pluginApi
+ property var pluginApi: null
+ property var runHypr: null
+ property var runScript: null
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ contentHeight: mainLayout.implicitHeight + 100
+ clip: true
+
+ // Función helper segura para traducir (si pluginApi es null, devuelve key)
+ function tr(key, defaultText) {
+ if (welcomeRoot.pluginApi && welcomeRoot.pluginApi.tr) {
+ return welcomeRoot.pluginApi.tr(key);
+ }
+ return defaultText || key;
+ }
+
+ // --- PERSISTENCIA ---
+ LabSettings.Settings {
+ id: welcomeSettings
+ fileName: Quickshell.env("HOME") + "/.config/noctalia/plugins/noctalia-visual-layer/assets/welcome.conf"
+ property bool isSystemActive: false
+ }
+
+ ColumnLayout {
+ id: mainLayout
+ width: welcomeRoot.availableWidth
+ spacing: Style.marginXL
+ Layout.margins: Style.marginL
+
+ // --- CABECERA ---
+ ColumnLayout {
+ Layout.fillWidth: true
+ Layout.topMargin: Style.marginXL
+ Layout.bottomMargin: Style.marginM
+ Layout.alignment: Qt.AlignHCenter
+
+ Image {
+ source: "../assets/owl_neon.png"
+ fillMode: Image.PreserveAspectFit
+ Layout.preferredHeight: 400 * Style.uiScaleRatio
+ Layout.preferredWidth: 600 * Style.uiScaleRatio
+ Layout.alignment: Qt.AlignHCenter
+ smooth: true
+ }
+ }
+
+ NDivider { Layout.fillWidth: true }
+
+ // --- ACTIVACIÓN ---
+ ProCard {
+ title: tr("welcome.activation_title", "Activación del Sistema")
+ iconName: "power"
+ accentColor: welcomeSettings.isSystemActive ? Color.mPrimary : "#ef4444"
+ description: welcomeSettings.isSystemActive
+ ? tr("welcome.system_active", "Sistema operativo.")
+ : tr("welcome.system_inactive", "Sistema detenido.")
+
+ extraContent: ColumnLayout {
+ spacing: Style.marginM
+ Layout.fillWidth: true
+
+ RowLayout {
+ Layout.fillWidth: true
+ Layout.margins: 15
+ NText {
+ text: tr("welcome.enable_label", "Habilitar Visual Layer")
+ font.weight: Font.Bold
+ pointSize: Style.fontSizeL
+ color: Color.mOnSurface
+ }
+ Item { Layout.fillWidth: true }
+ VisualSwitch {
+ checked: welcomeSettings.isSystemActive
+ onToggled: {
+ welcomeSettings.isSystemActive = checked
+ if (welcomeRoot.runScript) {
+ welcomeRoot.runScript("init.sh", checked ? "enable" : "disable")
+ }
+ }
+ }
+ }
+
+ Rectangle {
+ visible: !welcomeSettings.isSystemActive
+ Layout.fillWidth: true
+ implicitHeight: warnCol.implicitHeight + 24
+ color: Qt.alpha("#ef4444", 0.08)
+ radius: Style.radiusM
+ border.color: Qt.alpha("#ef4444", 0.3)
+ border.width: 1
+ RowLayout {
+ id: warnCol
+ anchors.fill: parent; anchors.margins: 12; spacing: 12
+ NIcon { icon: "alert-circle"; color: "#ef4444"; pointSize: 20; Layout.alignment: Qt.AlignTop }
+ ColumnLayout {
+ Layout.fillWidth: true; spacing: 4
+ NText {
+ text: tr("welcome.warning.title", "CONTRATO DE PERSISTENCIA")
+ font.weight: Font.Bold; color: "#ef4444"; pointSize: Style.fontSizeS
+ }
+ NText {
+ // CAMBIO: Texto actualizado para reflejar la nueva seguridad
+ text: tr("welcome.warning.text", "Se creará un escudo guardián y se añadirá una línea segura a hyprland.conf. Si desinstalas el plugin, el sistema se limpiará automáticamente en el siguiente reinicio sin generar errores.")
+ color: Color.mOnSurfaceVariant; wrapMode: Text.WordWrap; textFormat: Text.RichText; Layout.fillWidth: true; pointSize: Style.fontSizeS
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // --- CARACTERÍSTICAS ---
+ ProCard {
+ title: tr("welcome.features.title", "Características")
+ iconName: "star"; accentColor: "#fbbf24"
+ description: tr("welcome.features.description", "La evolución estética.")
+ extraContent: ColumnLayout {
+ spacing: 6
+ Repeater {
+ // Usamos las claves del JSON para la lista
+ model: [
+ tr("welcome.features.list.fluid_anim", "Animaciones"),
+ tr("welcome.features.list.smart_borders", "Bordes"),
+ tr("welcome.features.list.realtime_shaders", "Shaders"),
+ tr("welcome.features.list.non_destructive", "No Destructivo")
+ ]
+ delegate: RowLayout {
+ spacing: 8
+ NIcon { icon: "check"; color: Color.mPrimary; pointSize: 12 }
+ NText { text: modelData; color: Color.mOnSurfaceVariant; pointSize: 10; textFormat: Text.RichText }
+ }
+ }
+ }
+ }
+ // --- DOCUMENTACIÓN TÉCNICA ---
+ ProCard {
+ title: tr("welcome.docs.title", "Arquitectura y Documentación")
+ iconName: "book"; accentColor: "#38bdf8"
+ description: tr("welcome.docs.description", "Descubre cómo funciona NVL por debajo.")
+
+ extraContent: ColumnLayout {
+ spacing: 15
+
+ // Resumen Técnico Elegante
+ NText {
+ Layout.fillWidth: true
+ wrapMode: Text.Wrap
+ color: "#a9b1d6"
+ font.pointSize: 10
+ textFormat: Text.RichText
+ text: tr("welcome.docs.summary", "Noctalia Visual Layer utiliza un sistema de Fragmentos y Ensamblaje en tiempo real. Nunca toca tu configuración principal. Todo se genera de forma segura en un archivo maestro overlay.conf aislado.")
+ }
+
+ // Fila de Botones de Acción
+ RowLayout {
+ spacing: 10
+ Layout.fillWidth: true
+
+ NButton {
+ text: tr("welcome.docs.btn_readme", "Leer Manual Completo")
+ icon: "external-link"
+ Layout.fillWidth: true
+ onClicked: {
+ // Abre el LEEME.md (o README.md) con la aplicación por defecto del sistema
+ Qt.openUrlExternally("file://" + Quickshell.env("HOME") + "/.config/noctalia/plugins/noctalia-visual-layer/LEEME.md")
+ }
+ }
+
+ NButton {
+ text: tr("welcome.docs.btn_folder", "Explorar Archivos")
+ icon: "folder"
+ Layout.fillWidth: true
+ onClicked: {
+ // Abre el gestor de archivos directamente en la carpeta del plugin
+ Qt.openUrlExternally("file://" + Quickshell.env("HOME") + "/.config/noctalia/plugins/noctalia-visual-layer/")
+ }
+ }
+ }
+ }
+ }
+
+ // --- CRÉDITOS ---
+ ProCard {
+ title: tr("welcome.credits.title", "Créditos")
+ iconName: "heart"; accentColor: "#f472b6"
+ description: tr("welcome.credits.description", "Gracias a HyDE.")
+
+ extraContent: ColumnLayout {
+ spacing: Style.marginM
+ NButton {
+ text: tr("welcome.credits.btn_hyde", "Inspirado en HyDE")
+ icon: "brand-github"; Layout.fillWidth: true
+ onClicked: Qt.openUrlExternally("https://github.com/HyDE-Project/")
+ }
+ NDivider { Layout.fillWidth: true }
+ RowLayout {
+ spacing: Style.marginM
+ NIcon { icon: "code"; color: Color.mOnSurfaceVariant; pointSize: Style.fontSizeL }
+ ColumnLayout {
+ spacing: 2
+ NText { text: tr("welcome.credits.ai_title", "IA"); font.weight: Font.Bold }
+ NText {
+ text: tr("welcome.credits.ai_desc", "Gracias a Gemini.");
+ color: Color.mOnSurfaceVariant; wrapMode: Text.Wrap; Layout.fillWidth: true; pointSize: Style.fontSizeS
+ }
+ }
+ }
+ }
+ }
+ Item { Layout.preferredHeight: 50 }
+ }
+
+ // --- COMPONENTES AUXILIARES ---
+ component ProCard : NBox {
+ id: cardRoot
+ property string title; property string iconName; property string description
+ property color accentColor; property Component extraContent: null
+ Layout.fillWidth: true; Layout.leftMargin: Style.marginL; Layout.rightMargin: Style.marginL
+ implicitHeight: cardCol.implicitHeight + (Style.marginL * 2)
+ radius: Style.radiusM
+ border.color: Qt.alpha(accentColor, 0.3); border.width: 1
+ color: Qt.alpha(accentColor, 0.03)
+
+ ColumnLayout {
+ id: cardCol; anchors.fill: parent; anchors.margins: Style.marginL; spacing: Style.marginM
+ RowLayout {
+ spacing: Style.marginM
+ NIcon { icon: iconName; color: accentColor; pointSize: Style.fontSizeL }
+ NText { text: cardRoot.title; font.weight: Font.Bold; pointSize: Style.fontSizeL }
+ }
+ NDivider { Layout.fillWidth: true; opacity: 0.2 }
+ NText { text: cardRoot.description; color: Color.mOnSurface; wrapMode: Text.WordWrap; Layout.fillWidth: true; textFormat: Text.RichText }
+ Loader { active: extraContent !== null; sourceComponent: extraContent; Layout.fillWidth: true }
+ }
+ }
+
+ component VisualSwitch : Item {
+ id: sw; property bool checked: false; signal toggled()
+ width: 46 * Style.uiScaleRatio; height: 24 * Style.uiScaleRatio
+ Rectangle {
+ anchors.fill: parent; radius: height / 2
+ color: sw.checked ? Color.mPrimary : Color.mSurface
+ border.color: sw.checked ? Color.mPrimary : Color.mOutline; border.width: 1
+ Rectangle {
+ width: parent.height - 8; height: width; radius: width / 2
+ color: sw.checked ? Color.mOnPrimary : Color.mOnSurfaceVariant
+ anchors.verticalCenter: parent.verticalCenter
+ x: sw.checked ? (parent.width - width - 4) : 4
+ Behavior on x { NumberAnimation { duration: 200; easing.type: Easing.OutBack } }
+ }
+ }
+ MouseArea { anchors.fill: parent; cursorShape: Qt.PointingHandCursor; onClicked: { sw.checked = !sw.checked; sw.toggled() } }
+ }
+}
diff --git a/noctalia-visual-layer/preview.png b/noctalia-visual-layer/preview.png
new file mode 100644
index 00000000..80223d7e
Binary files /dev/null and b/noctalia-visual-layer/preview.png differ