Skip to content

feat: migrate Hyprland configuration to Lua - #14

Merged
SamuelIVX merged 2 commits into
mainfrom
feat/hyprland-lua
Oct 16, 2026
Merged

SamuelIVX merged 2 commits into
mainfrom
feat/hyprland-lua

Conversation

@SamuelIVX

@SamuelIVX SamuelIVX commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

Hyprland's legacy configuration format is being retired. This migrates the desktop to Lua for Hyprland 0.56.2 while preserving the ten-module structure, all 63 shortcuts, display/input settings, appearance, animations, startup commands, and window rules.

  • Translate hypridle DPMS and power-menu logout commands to Lua dispatch expressions.
  • Keep hyprland/workspaces and existing Waybar styling. Add a pinned user-local Waybar builder containing Lua dispatch and config-provider detection; route startup/reload through the same executable.
  • Add preservation/integration tests and CI coverage, retain legacy compositor files, and document staged activation and complete rollback in docs/hyprland-lua.md.

Validation

Passed locally:

  • bash tests/run.sh: three shell suites, 17 Python cases, and Lua assertions covering all 63 bindings and configuration values.
  • Hyprland 0.56.2 native configuration verification; an additional native probe checked binding count, mouse-key registration, and repeat/lock flags.
  • git diff --cached --check and redacted Gitleaks scan of the staged change.

CodeRabbit completed a host-side review of all 22 migration files with one trivial finding: the nohup mock did not execute fake Waybar. The finding was reproduced with a failing assertion, fixed, and the full suite rerun successfully. Sam explicitly waived a second CLI review.

Rollout status

This PR does not activate the desktop configuration. The live symlinks remain on the existing checkout.

The pinned Waybar build and upstream tests have not run because build tools/development packages are missing in the agent environment. Push and pull-request CI both passed on a3e520e132907cefae3eb7a43492f26ac404eb89, including ShellCheck. A detached-service test cleanup race was reproduced and fixed; 100 restart/reload iterations passed locally. A successful build and fresh-login desktop acceptance—including workspace clicks, lock/DPMS/suspend, and duplicate-service checks—remain required before activation.

Co-authored-by: Codex noreply@openai.com

Preserve the modular desktop configuration and all 63 shortcuts on
Hyprland 0.56.2. Translate idle/logout dispatchers and select a pinned
user-local Waybar build with Lua workspace protocol support.

Add preservation and integration regressions, CI coverage, and a staged
rollout/rollback guide. Retain the legacy compositor files and leave the
live desktop unchanged until the Waybar build and host checks pass.

Co-authored-by: Codex <noreply@openai.com>
@coderabbitai

coderabbitai Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: a40af652-7f33-4024-9c24-a36f2c307c9e
📥 Commits

Reviewing files that changed from the base of the PR and between 65283b2 and a3e520e.

📒 Files selected for processing: 22
  • .config/hypr/conf/animations.lua
  • .config/hypr/conf/autostart.lua
  • .config/hypr/conf/env.lua
  • .config/hypr/conf/input.lua
  • .config/hypr/conf/keybinds.lua
  • .config/hypr/conf/layouts.lua
  • .config/hypr/conf/look_and_feel.lua
  • .config/hypr/conf/monitors.lua
  • .config/hypr/conf/programs.lua
  • .config/hypr/conf/windowrules.lua
  • .config/hypr/hypridle.conf
  • .config/hypr/hyprland.lua
  • .config/hypr/scripts/reload.sh
  • .config/rofi/scripts/powermenu.sh
  • .config/waybar/scripts/launch.sh
  • .github/workflows/checks.yml
  • README.md
  • docs/hyprland-lua.md
  • scripts/build-waybar.sh
  • tests/hyprland.lua
  • tests/hyprland_integration.py
  • tests/run.sh
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Full desktop reload starts both Waybar and SwayNC asynchronously. Wait
for both fake executables to finish writing before deleting their test
home, preventing the intermittent directory-not-empty failure in CI.

Reproduced the failure locally, then passed 100 restart/reload iterations
and the complete regression suite after adding the completion barrier.

Co-authored-by: Codex <noreply@openai.com>
@SamuelIVX
SamuelIVX marked this pull request as ready for review October 16, 2026 00:44
@SamuelIVX
SamuelIVX merged commit 8a97359 into main Oct 16, 2026
3 of 4 checks passed
@SamuelIVX
SamuelIVX deleted the feat/hyprland-lua branch October 16, 2026 00:44
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.

1 participant