Skip to content

feat: add Hyprland Visual Editor (HVE)#310

Open
XimoCP wants to merge 2 commits intonoctalia-dev:mainfrom
XimoCP:main
Open

feat: add Hyprland Visual Editor (HVE)#310
XimoCP wants to merge 2 commits intonoctalia-dev:mainfrom
XimoCP:main

Conversation

@XimoCP
Copy link

@XimoCP XimoCP commented Mar 1, 2026

I am officially submitting Noctalia Visual Layer (NVL) to the registry [cite: 2026-02-26]. This plugin provides a modular and non-destructive visual control panel for Hyprland, allowing users to safely inject animations, borders, and geometry settings on the fly [cite: 2026-02-07, 2026-02-09].

Key Technical Highlights:

Secure Architecture: All master configurations are stored in an external "Safe Refuge" (~/.config/noctalia/NVL/) to avoid conflicts with the user's primary hyprland.conf [cite: 2026-02-07, 2026-02-26].

Guardian Shield: Includes nvl_watchdog.sh for passive auto-cleanup, ensuring a clean system if the plugin is ever uninstalled [cite: 2026-02-26].

Full i18n Support: Native translations included for 16 supported languages [cite: 2026-02-26].

Registry Compliance:

Manifest: The manifest.json is fully configured with correct entry points and metadata [cite: 2026-02-27].

Preview: The preview.png follows the mandatory 16:9 aspect ratio at exactly 960x540 pixels [cite: 2026-02-27].

Structure: Clean directory structure following the official repository guidelines [cite: 2026-02-27].

Ready for review! Thank you for the amazing work on Noctalia Shell.

@ItsLemmy
Copy link
Contributor

ItsLemmy commented Mar 4, 2026

Hey, thanks for the PR! here is a first pass of feedback.

  • All comments and file name should be in english.
  • As this is Hyprland only it should be named "Hyprland Visual Layer" (or editor, IMO Layer is way too generic) and also has the Hyprland tag in the manifest (instead of fun?)
  • All calls to console.xxx should be replaced by Logger.
  • Don't implement your own .tr() , if I remember correctly there is no more !! for missing translation, only for missing keys. If it does not work, let me know, I'll fix it in the pluginApi, always best to avoid mitigation code whenever possible.
  • You can replace Quickshell.env("HOME") + "/.config/noctalia/plugins/noctalia-visual-layer/ by
    Settings.configDir + "/plugins/hyprland-visual-editor" and maybe store that in a readonly properly in Main.qml so you can access it everywhere.

@ItsLemmy ItsLemmy marked this pull request as draft March 6, 2026 12:47
@XimoCP XimoCP marked this pull request as ready for review March 6, 2026 20:48
@XimoCP
Copy link
Author

XimoCP commented Mar 6, 2026

"Hi @ItsLemmy and team! 🚀

While waiting for the review, I've completely refactored the codebase and pushed a massive update to this PR. The plugin has been renamed to Hyprland Visual Editor (HVE) and now strictly follows Noctalia's native architecture.

Key changes in this update:

  •     Native Persistence (Zero Orphans): Dropped the old isolated .conf files. It now natively uses pluginApi.pluginSettings and pluginApi.saveSettings().
    
  •     Full i18n Integration: Implemented pluginApi.tr() across all modules with complete JSON translations for 6 languages.
    
  •     Silent & Safe: Added safe fallbacks for QML property bindings to keep the terminal warnings completely silent during async loads.
    
  •     Non-Destructive Core: The bash backend uses a secure overlay.conf injected via source, never touching the user's main hyprland.conf.
    

The codebase is now fully respectful of your API. Let me know what you think!"

@XimoCP XimoCP changed the title feat: add Noctalia Visual Layer (NVL) feat: add Hyprland Visual Editor (HVE) Mar 6, 2026
@blackbartblues
Copy link
Contributor

Review your code you still have few instances of memory eating code. Short term it will not be a problem but after few days without restarting your plugin will eat 200-500-1000mb of RAM.

@XimoCP
Copy link
Author

XimoCP commented Mar 7, 2026

Hi! Thanks for reviewing the code and pointing out the memory issues.

I've gone through the project and refactored the parts causing those leaks (mainly the script engine and scanners). I hope this fixes the problem and makes the plugin more efficient. If I’ve missed anything or if you notice any other slip-ups, I’d be very grateful if you could let me know. Thanks again for your help!

@XimoCP
Copy link
Author

XimoCP commented Mar 9, 2026

Hi @ItsLemmy and @blackbartblues,

Thank you both for your patience and for pointing out those issues. I realize I was missing some key concepts of the new architecture. I've just pushed a new update trying to properly address your feedback and closely follow the official API documentation:

Memory Management: Hopefully fixed the RAM spikes. Bash Process components are now dynamically created and explicitly destroyed after execution, and the Scanner now clears its string buffer immediately after JSON parsing to allow proper garbage collection.

Persistence: Removed all deprecated Qt settings (store.conf, etc.). The UI state is now natively handled by pluginApi.pluginSettings and saveSettings().

API Standards: Switched to the correct Logger syntax (Logger.i, .d, .e). I also removed the translation fallback strings (now using pure pluginApi.tr()), and ensured all internal comments are strictly in English.

Safer Watchdog: Improved hve_watchdog.sh to use block deletion (START/END markers) to make sure the user's hyprland.conf is safely and cleanly restored upon uninstallation.

I hope this is much closer to the Noctalia standards. Please let me know if you spot any other mistakes or if there's anything else I should correct. Thanks again for your time and guidance!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants