Skip to content

Fix : Compatibility with Hyprland v0.55 and Migration to Lua Config#233

Open
0xl30 wants to merge 10 commits into
KZDKM:mainfrom
0xl30:main
Open

Fix : Compatibility with Hyprland v0.55 and Migration to Lua Config#233
0xl30 wants to merge 10 commits into
KZDKM:mainfrom
0xl30:main

Conversation

@0xl30

@0xl30 0xl30 commented May 28, 2026

Copy link
Copy Markdown
Contributor

Description

This PR migrates the configuration system to a Lua-based approach and addresses compatibility fixes for Hyprland v0.55.0.

Changes:

  • Migrated codebase to support Lua-based configurations (Hyprspace.lua).
  • Resolved layout and rendering merge conflicts with the latest upstream changes.
  • Fixed broken frame issues and improved overall stability.

@alba4k

alba4k commented Jun 10, 2026

Copy link
Copy Markdown
src/main.cpp: In function ‘void onRender(eRenderStage)’:
src/main.cpp:270:24: error: ‘class CCompositor’ has no member named ‘m_unsafeState’
  270 |     if (g_pCompositor->m_unsafeState)
      |                        ^~~~~~~~~~~~~
src/main.cpp: In function ‘void registerMonitors()’:
src/main.cpp:602:41: error: ‘class CCompositor’ has no member named ‘m_monitors’
  602 |     for (auto& monitor : g_pCompositor->m_monitors) {
      |                                         ^~~~~~~~~~
src/Overview.cpp: In member function ‘void CHyprspaceWidget::show()’:
src/Overview.cpp:112:55: error: ‘class CCompositor’ has no member named ‘m_unsafeState’
  112 |     if (!owner || !owner->m_enabled || g_pCompositor->m_unsafeState)
      |                                                       ^~~~~~~~~~~~~
src/Render.cpp: In member function ‘void CHyprspaceWidget::draw()’:
src/Render.cpp:156:24: error: ‘class CCompositor’ has no member named ‘m_unsafeState’
  156 |     if (g_pCompositor->m_unsafeState)
      |                        ^~~~~~~~~~~~~

hyprwm/Hyprland#14547

@alba4k

alba4k commented Jun 10, 2026

Copy link
Copy Markdown

I'm already building that commit (on hyprland-git)

@alba4k

alba4k commented Jun 10, 2026

Copy link
Copy Markdown

still same

@0xl30

0xl30 commented Jun 12, 2026

Copy link
Copy Markdown
Contributor Author

still same

Thank you! Your fix has been officially released

@alba4k

alba4k commented Jun 12, 2026

Copy link
Copy Markdown
uhmmm
g++ -shared -fPIC --no-gnu-unique -Wall -g -DWLR_USE_UNSTABLE -std=c++2b -O2 `pkg-config --cflags pixman-1 libdrm hyprland pangocairo libinput libudev wayland-server xkbcommon` src/Input.cpp src/Layout.cpp src/main.cpp src/Overview.cpp src/Render.cpp -o Hyprspace.so
src/Input.cpp: In member function ‘bool CHyprspaceWidget::buttonEvent(bool, Hyprutils::Math::Vector2D)’:
src/Input.cpp:53:43: error: ‘class CCompositor’ has no member named ‘getWorkspaceByID’
   53 |     auto targetWorkspace = g_pCompositor->getWorkspaceByID(targetWorkspaceID);
      |                                           ^~~~~~~~~~~~~~~~
src/Input.cpp:55:42: error: ‘class CCompositor’ has no member named ‘createNewWorkspace’
   55 |         targetWorkspace = g_pCompositor->createNewWorkspace(targetWorkspaceID, owner->m_id);
      |                                          ^~~~~~~~~~~~~~~~~~
src/Input.cpp:80:28: error: ‘class CCompositor’ has no member named ‘getMonitorFromID’
   80 |             g_pCompositor->getMonitorFromID(targetWorkspace->m_monitor->m_id)->changeWorkspace(targetWorkspace->m_id);
      |                            ^~~~~~~~~~~~~~~~
src/Input.cpp:90:28: error: ‘class CCompositor’ has no member named ‘getMonitorFromID’
   90 |             g_pCompositor->getMonitorFromID(targetWorkspace->m_monitor->m_id)->changeWorkspace(targetWorkspace->m_id);
      |                            ^~~~~~~~~~~~~~~~
src/Input.cpp: In member function ‘bool CHyprspaceWidget::axisEvent(double, wl_pointer_axis, Hyprutils::Math::Vector2D)’:
src/Input.cpp:119:29: error: ‘class CCompositor’ has no member named ‘getWorkspaceByID’
  119 |         if (!g_pCompositor->getWorkspaceByID(wsIDName.id))
      |                             ^~~~~~~~~~~~~~~~
src/Input.cpp:120:34: error: ‘class CCompositor’ has no member named ‘createNewWorkspace’
  120 |             (void)g_pCompositor->createNewWorkspace(wsIDName.id, ownerID);
      |                                  ^~~~~~~~~~~~~~~~~~
src/main.cpp: In function ‘void onRender(eRenderStage)’:
src/main.cpp:270:24: error: ‘class CCompositor’ has no member named ‘m_unsafeState’
  270 |     if (g_pCompositor->m_unsafeState)
      |                        ^~~~~~~~~~~~~
src/main.cpp: In function ‘void onWorkspaceChange(PHLWORKSPACE)’:
src/main.cpp:328:60: error: ‘class CCompositor’ has no member named ‘getMonitorFromID’
  328 |     const auto widget = getWidgetForMonitor(g_pCompositor->getMonitorFromID(workspace->m_monitor->m_id));
      |                                                            ^~~~~~~~~~~~~~~~
src/main.cpp: In function ‘void onMouseButton(const IPointer::SButtonEvent&, SCallbackInfo&)’:
src/main.cpp:338:41: error: ‘class CCompositor’ has no member named ‘getMonitorFromCursor’
  338 |     const auto monitor = g_pCompositor->getMonitorFromCursor();
      |                                         ^~~~~~~~~~~~~~~~~~~~
src/main.cpp: In function ‘void onMouseAxis(const IPointer::SAxisEvent&, SCallbackInfo&)’:
src/main.cpp:348:41: error: ‘class CCompositor’ has no member named ‘getMonitorFromCursor’
  348 |     const auto monitor = g_pCompositor->getMonitorFromCursor();
      |                                         ^~~~~~~~~~~~~~~~~~~~
src/main.cpp: In function ‘void onSwipeBegin(const IPointer::SSwipeBeginEvent&, SCallbackInfo&)’:
src/main.cpp:361:60: error: ‘class CCompositor’ has no member named ‘getMonitorFromCursor’
  361 |     const auto widget = getWidgetForMonitor(g_pCompositor->getMonitorFromCursor());
      |                                                            ^~~~~~~~~~~~~~~~~~~~
src/main.cpp: In function ‘void onSwipeUpdate(const IPointer::SSwipeUpdateEvent&, SCallbackInfo&)’:
src/main.cpp:378:60: error: ‘class CCompositor’ has no member named ‘getMonitorFromCursor’
  378 |     const auto widget = getWidgetForMonitor(g_pCompositor->getMonitorFromCursor());
      |                                                            ^~~~~~~~~~~~~~~~~~~~
src/main.cpp: In function ‘void onSwipeEnd(const IPointer::SSwipeEndEvent&, SCallbackInfo&)’:
src/main.cpp:387:60: error: ‘class CCompositor’ has no member named ‘getMonitorFromCursor’
  387 |     const auto widget = getWidgetForMonitor(g_pCompositor->getMonitorFromCursor());
      |                                                            ^~~~~~~~~~~~~~~~~~~~
src/main.cpp: In function ‘void onTouchDown(const ITouch::SDownEvent&, SCallbackInfo&)’:
src/main.cpp:422:41: error: ‘class CCompositor’ has no member named ‘getMonitorFromName’
  422 |     auto targetMonitor = g_pCompositor->getMonitorFromName(!event.device->m_boundOutput.empty() ? event.device->m_boundOutput : "");
      |                                         ^~~~~~~~~~~~~~~~~~
src/main.cpp:423:73: error: ‘class CCompositor’ has no member named ‘getMonitorFromCursor’
  423 |     targetMonitor      = targetMonitor ? targetMonitor : g_pCompositor->getMonitorFromCursor();
      |                                                                         ^~~~~~~~~~~~~~~~~~~~
src/main.cpp: In function ‘SDispatchResult dispatchToggleOverview(std::string)’:
src/main.cpp:454:48: error: ‘class CCompositor’ has no member named ‘getMonitorFromCursor’
  454 |     const auto currentMonitor = g_pCompositor->getMonitorFromCursor();
      |                                                ^~~~~~~~~~~~~~~~~~~~
src/main.cpp: In function ‘SDispatchResult dispatchOpenOverview(std::string)’:
src/main.cpp:483:64: error: ‘class CCompositor’ has no member named ‘getMonitorFromCursor’
  483 |         const auto widget = getWidgetForMonitor(g_pCompositor->getMonitorFromCursor());
      |                                                                ^~~~~~~~~~~~~~~~~~~~
src/main.cpp: In function ‘SDispatchResult dispatchCloseOverview(std::string)’:
src/main.cpp:498:64: error: ‘class CCompositor’ has no member named ‘getMonitorFromCursor’
  498 |         const auto widget = getWidgetForMonitor(g_pCompositor->getMonitorFromCursor());
      |                                                                ^~~~~~~~~~~~~~~~~~~~
src/main.cpp: In function ‘void registerMonitors()’:
src/main.cpp:602:41: error: ‘class CCompositor’ has no member named ‘m_monitors’
  602 |     for (auto& monitor : g_pCompositor->m_monitors) {
      |                                         ^~~~~~~~~~
src/Overview.cpp: In member function ‘PHLMONITOR CHyprspaceWidget::getOwner()’:
src/Overview.cpp:107:27: error: ‘class CCompositor’ has no member named ‘getMonitorFromID’
  107 |     return g_pCompositor->getMonitorFromID(ownerID);
      |                           ^~~~~~~~~~~~~~~~
src/Overview.cpp: In member function ‘void CHyprspaceWidget::show()’:
src/Overview.cpp:112:55: error: ‘class CCompositor’ has no member named ‘m_unsafeState’
  112 |     if (!owner || !owner->m_enabled || g_pCompositor->m_unsafeState)
      |                                                       ^~~~~~~~~~~~~
src/Overview.cpp:116:40: error: ‘class CCompositor’ has no member named ‘getWorkspaces’
  116 |         for (auto& ws : g_pCompositor->getWorkspaces()) {
      |                                        ^~~~~~~~~~~~~
src/Render.cpp: In member function ‘void CHyprspaceWidget::draw()’:
src/Render.cpp:156:24: error: ‘class CCompositor’ has no member named ‘m_unsafeState’
  156 |     if (g_pCompositor->m_unsafeState)
      |                        ^~~~~~~~~~~~~
src/Render.cpp:206:42: error: ‘class CCompositor’ has no member named ‘getWorkspaces’
  206 |     for (const auto& ws : g_pCompositor->getWorkspaces()) {
      |                                          ^~~~~~~~~~~~~
src/Render.cpp:229:32: error: ‘class CCompositor’ has no member named ‘getWorkspaceByID’
  229 |             if (g_pCompositor->getWorkspaceByID(id) == nullptr)
      |                                ^~~~~~~~~~~~~~~~
src/Render.cpp:235:31: error: ‘class CCompositor’ has no member named ‘getWorkspaceByID’
  235 |         while (g_pCompositor->getWorkspaceByID(highestID) != nullptr)
      |                               ^~~~~~~~~~~~~~~~
src/Render.cpp:274:41: error: ‘class CCompositor’ has no member named ‘getWorkspaceByID’
  274 |         const auto ws  = g_pCompositor->getWorkspaceByID(wsID);
      |                                         ^~~~~~~~~~~~~~~~
src/Render.cpp: At global scope:
src/Render.cpp:136:6: warning: ‘bool {anonymous}::renderWindowPreview(PHLWINDOW, PHLWORKSPACE, PHLMONITOR, double, double, double, const Time::steady_tp&)’ defined but not used [-Wunused-function]
  136 | bool renderWindowPreview(PHLWINDOW window, PHLWORKSPACE workspace, PHLMONITOR owner, double workspaceX, double workspaceY, double monitorScaleFactor, const Time::steady_tp& time) {
      |      ^~~~~~~~~~~~~~~~~~~
make: *** [Makefile:9: all] Error 1

@0xl30

0xl30 commented Jun 12, 2026

Copy link
Copy Markdown
Contributor Author

uhmmm

image I have tested it and there are no build errors. Could you please try it from my fork?

@alba4k

alba4k commented Jun 12, 2026

Copy link
Copy Markdown

Im building your fork, using hyprpm. are you sure you're on hyprland-git?

@0xl30

0xl30 commented Jun 13, 2026

Copy link
Copy Markdown
Contributor Author

Im building your fork, using hyprpm. are you sure you're on hyprland-git?

No, I am using hyprland from the Arch extra repo (I'm not using hyprland-git)

@alba4k

alba4k commented Jun 13, 2026

Copy link
Copy Markdown

bro the breaking commit I linked above is literally only on main, so ofc it builds on release

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.

2 participants