30f1b5ed83af12e82d1a018eadbaa42bee8703a6
- Author
- Immelancholy <lenalowes0@gmail.com>
- Committer
- outfoxxed <outfoxxed@outfoxxed.me>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/flake.lock b/flake.lock
2index 9c334bbacf35110e31e8b827e26f3586756f8119..7a713aee6924781bf0edbe93580d01584de093d5 100644
3--- a/flake.lock
4+++ b/flake.lock
5@@ -20,11 +20,11 @@
6 ]
7 },
8 "locked": {
9- "lastModified": 1763922789,
10- "narHash": "sha256-XnkWjCpeXfip9tqYdL0b0zzBDjq+dgdISvEdSVGdVyA=",
11+ "lastModified": 1764714051,
12+ "narHash": "sha256-AjcMlM3UoavFoLzr0YrcvsIxALShjyvwe+o7ikibpCM=",
13 "owner": "hyprwm",
14 "repo": "aquamarine",
15- "rev": "a20a0e67a33b6848378a91b871b89588d3a12573",
16+ "rev": "a43bedcceced5c21ad36578ed823e6099af78214",
17 "type": "github"
18 },
19 "original": {
20@@ -139,23 +139,24 @@
21 "hyprlang": "hyprlang",
22 "hyprutils": "hyprutils",
23 "hyprwayland-scanner": "hyprwayland-scanner",
24+ "hyprwire": "hyprwire",
25 "nixpkgs": "nixpkgs",
26 "pre-commit-hooks": "pre-commit-hooks",
27 "systems": "systems",
28 "xdph": "xdph"
29 },
30 "locked": {
31- "lastModified": 1764110666,
32- "narHash": "sha256-prU18d3zNddHZsdqh5o8vLVNONDgxVloFhXZgUxO4CI=",
33+ "lastModified": 1765284242,
34+ "narHash": "sha256-r9ltXBKsowTVc/avfoBmd7M4H3NOxJUPm0+9o8sj03Y=",
35 "owner": "hyprwm",
36 "repo": "hyprland",
37- "rev": "40d8fa84919c6d0e9fcb1536f4bc09710d4c031c",
38+ "rev": "6712fb954f2e4f701878b97f19b7185a2cd0e192",
39 "type": "github"
40 },
41 "original": {
42 "owner": "hyprwm",
43 "repo": "hyprland",
44- "rev": "40d8fa84919c6d0e9fcb1536f4bc09710d4c031c",
45+ "rev": "6712fb954f2e4f701878b97f19b7185a2cd0e192",
46 "type": "github"
47 }
48 },
49@@ -192,11 +193,11 @@
50 ]
51 },
52 "locked": {
53- "lastModified": 1763727565,
54- "narHash": "sha256-vRff/2R1U1jzPBy4OODqh2kfUzmizW/nfV2ROzTDIKo=",
55+ "lastModified": 1764812575,
56+ "narHash": "sha256-1bK1yGgaR82vajUrt6z+BSljQvFn91D74WJ/vJsydtE=",
57 "owner": "hyprwm",
58 "repo": "hyprland-guiutils",
59- "rev": "7724d3a12a0453e7aae05f2ef39474219f05a4b4",
60+ "rev": "fd321368a40c782cfa299991e5584ca338e36ebe",
61 "type": "github"
62 },
63 "original": {
64@@ -246,11 +247,11 @@
65 ]
66 },
67 "locked": {
68- "lastModified": 1763819661,
69- "narHash": "sha256-0jLarTR/BLWdGlboM86bPVP2zKJNI2jvo3JietnDkOM=",
70+ "lastModified": 1764612430,
71+ "narHash": "sha256-54ltTSbI6W+qYGMchAgCR6QnC1kOdKXN6X6pJhOWxFg=",
72 "owner": "hyprwm",
73 "repo": "hyprlang",
74- "rev": "a318deec0c12409ec39c68d2be8096b636dc2a5c",
75+ "rev": "0d00dc118981531aa731150b6ea551ef037acddd",
76 "type": "github"
77 },
78 "original": {
79@@ -298,11 +299,11 @@
80 ]
81 },
82 "locked": {
83- "lastModified": 1763503177,
84- "narHash": "sha256-VPoiswJBBmTLVuNncvT/8FpFR+sYcAi/LgP/zTZ+5rA=",
85+ "lastModified": 1764592794,
86+ "narHash": "sha256-7CcO+wbTJ1L1NBQHierHzheQGPWwkIQug/w+fhTAVuU=",
87 "owner": "hyprwm",
88 "repo": "hyprtoolkit",
89- "rev": "f4e1e12755567ecf39090203b8f43eace8279630",
90+ "rev": "5cfe0743f0e608e1462972303778d8a0859ee63e",
91 "type": "github"
92 },
93 "original": {
94@@ -323,11 +324,11 @@
95 ]
96 },
97 "locked": {
98- "lastModified": 1763996058,
99- "narHash": "sha256-DsqzFZvrEV+aDmavjaD4/bk5qxeZwhGxPWBQdpFyM9Y=",
100+ "lastModified": 1764962281,
101+ "narHash": "sha256-rGbEMhTTyTzw4iyz45lch5kXseqnqcEpmrHdy+zHsfo=",
102 "owner": "hyprwm",
103 "repo": "hyprutils",
104- "rev": "0168583075baffa083032ed13a8bea8ea12f281a",
105diff --git a/flake.nix b/flake.nix
106index 0a9eaf00d3f7855b2ebd46f95b6754c6d032536b..50ead460da2d93d69759d31263c923298e1a8137 100644
107--- a/flake.nix
108+++ b/flake.nix
109@@ -1,12 +1,17 @@
110 {
111 inputs = {
112- hyprland.url = "github:hyprwm/hyprland/40d8fa84919c6d0e9fcb1536f4bc09710d4c031c";
113+ hyprland.url = "github:hyprwm/hyprland/6712fb954f2e4f701878b97f19b7185a2cd0e192";
114 };
115
116- outputs = { self, hyprland, ... }: let
117+ outputs = {
118+ self,
119+ hyprland,
120+ ...
121+ }: let
122 inherit (hyprland.inputs) nixpkgs;
123
124- hyprlandSystems = fn: nixpkgs.lib.genAttrs
125+ hyprlandSystems = fn:
126+ nixpkgs.lib.genAttrs
127 (builtins.attrNames hyprland.packages)
128 (system: fn system nixpkgs.legacyPackages.${system});
129
130@@ -30,7 +35,7 @@
131 impure = import ./shell.nix {
132 pkgs = import <nixpkgs> {};
133 hlversion = hyprlandVersion;
134- hyprland = (pkgs.appendOverlays [ hyprland.overlays.hyprland-packages ]).hyprland.overrideAttrs {
135+ hyprland = (pkgs.appendOverlays [hyprland.overlays.hyprland-packages]).hyprland.overrideAttrs {
136 dontStrip = true;
137 };
138 };
139diff --git a/src/Hy3Layout.cpp b/src/Hy3Layout.cpp
140index 5b379f5f91c6d0acd33441bbc5c744513caf6a10..352081cce1fe82433ece3ad646dcaa297557c80a 100644
141--- a/src/Hy3Layout.cpp
142+++ b/src/Hy3Layout.cpp
143@@ -25,12 +25,15 @@
144 #include "TabGroup.hpp"
145 #include "globals.hpp"
146 #include "src/SharedDefs.hpp"
147-#include "src/desktop/WLSurface.hpp"
148-#include "src/desktop/Window.hpp"
149+#include "src/desktop/view/WLSurface.hpp"
150+#include "src/desktop/view/Window.hpp"
151 #include "src/desktop/rule/Rule.hpp"
152 #include "src/desktop/types/OverridableVar.hpp"
153 #include "src/devices/IPointer.hpp"
154
155+
156+using namespace Desktop::View;
157+
158 PHLWORKSPACE workspace_for_action(bool allow_fullscreen) {
159 if (g_pLayoutManager->getCurrentLayout() != g_Hy3Layout.get()) return nullptr;
160
161@@ -155,7 +158,7 @@ void Hy3Layout::insertNode(Hy3Node& node) {
162 } else {
163 auto mouse_window = g_pCompositor->vectorToWindowUnified(
164 g_pInputManager->getMouseCoordsInternal(),
165- RESERVED_EXTENTS | INPUT_EXTENTS
166+ RESERVED_EXTENTS | Desktop::View::INPUT_EXTENTS
167 );
168
169 if (mouse_window != nullptr && mouse_window->m_workspace == node.workspace) {
170@@ -182,14 +185,14 @@ void Hy3Layout::insertNode(Hy3Node& node) {
171 ConfigValue<Hyprlang::INT>("plugin:hy3:tab_first_window");
172
173 auto width =
174- monitor->m_size.x - monitor->m_reservedBottomRight.x - monitor->m_reservedTopLeft.x;
175+ monitor->m_size.x - monitor->m_reservedArea.right() - monitor->m_reservedArea.left();
176 auto height =
177- monitor->m_size.y - monitor->m_reservedBottomRight.y - monitor->m_reservedTopLeft.y;
178+ monitor->m_size.y - monitor->m_reservedArea.bottom() - monitor->m_reservedArea.top();
179
180 this->nodes.push_back({
181 .data = height > width ? Hy3GroupLayout::SplitV : Hy3GroupLayout::SplitH,
182- .position = monitor->m_position + monitor->m_reservedTopLeft,
183- .size = monitor->m_size - monitor->m_reservedTopLeft - monitor->m_reservedBottomRight,
184+ .position = monitor->m_position + Vector2D(monitor->m_reservedArea.left(), monitor->m_reservedArea.top()),
185+ .size = monitor->m_size - Vector2D(monitor->m_reservedArea.left(), monitor->m_reservedArea.top()) - Vector2D(monitor->m_reservedArea.right(), monitor->m_reservedArea.bottom()),
186 .workspace = node.workspace,
187 .layout = this,
188 });
189@@ -371,9 +374,9 @@ void Hy3Layout::recalculateMonitor(const MONITORID& monitor_id) {
190
191 auto* top_node = this->getWorkspaceRootGroup(monitor->m_activeWorkspace.get());
192 if (top_node != nullptr) {
193- top_node->position = monitor->m_position + monitor->m_reservedTopLeft;
194+ top_node->position = monitor->m_position + Vector2D(monitor->m_reservedArea.left(), monitor->m_reservedArea.top());
195 top_node->size =
196- monitor->m_size - monitor->m_reservedTopLeft - monitor->m_reservedBottomRight;
197+ monitor->m_size - Vector2D(monitor->m_reservedArea.left(), monitor->m_reservedArea.top()) - Vector2D(monitor->m_reservedArea.right(), monitor->m_reservedArea.bottom());
198
199 top_node->recalcSizePosRecursive();
200 }
201@@ -381,9 +384,9 @@ void Hy3Layout::recalculateMonitor(const MONITORID& monitor_id) {
202 top_node = this->getWorkspaceRootGroup(monitor->m_activeSpecialWorkspace.get());
203
204 if (top_node != nullptr) {
205- top_node->position = monitor->m_position + monitor->m_reservedTopLeft;
206+ top_node->position = monitor->m_position + Vector2D(monitor->m_reservedArea.left(), monitor->m_reservedArea.top());
207 top_node->size =
208- monitor->m_size - monitor->m_reservedTopLeft - monitor->m_reservedBottomRight;
209+ monitor->m_size - Vector2D(monitor->m_reservedArea.left(), monitor->m_reservedArea.top()) - Vector2D(monitor->m_reservedArea.right(), monitor->m_reservedArea.bottom());
210
211 top_node->recalcSizePosRecursive();
212 }
213@@ -424,16 +427,16 @@ void Hy3Layout::resizeActiveWindow(const Vector2D& delta, eRectCorner corner, PH
214 auto& monitor = window->m_monitor;
215
216 const bool display_left =
217- STICKS(node->position.x, monitor->m_position.x + monitor->m_reservedTopLeft.x);
218+ STICKS(node->position.x, monitor->m_position.x + monitor->m_reservedArea.left());
219 const bool display_right = STICKS(
220 node->position.x + node->size.x,
221- monitor->m_position.x + monitor->m_size.x - monitor->m_reservedBottomRight.x
222+ monitor->m_position.x + monitor->m_size.x - monitor->m_reservedArea.right()
223 );
224 const bool display_top =
225- STICKS(node->position.y, monitor->m_position.y + monitor->m_reservedTopLeft.y);
226+ STICKS(node->position.y, monitor->m_position.y + monitor->m_reservedArea.top());
227 const bool display_bottom = STICKS(
228 node->position.y + node->size.y,
229- monitor->m_position.y + monitor->m_size.y - monitor->m_reservedBottomRight.y
230+ monitor->m_position.y + monitor->m_size.y - monitor->m_reservedArea.bottom()
231 );
232
233 Vector2D resize_delta = delta;
234@@ -556,8 +559,8 @@ void Hy3Layout::fullscreenRequestForWindow(
235
236 Hy3Node fakeNode = {
237 .data = window,
238- .position = monitor->m_position + monitor->m_reservedTopLeft,
239- .size = monitor->m_size - monitor->m_reservedTopLeft - monitor->m_reservedBottomRight,
240+ .position = monitor->m_position + Vector2D(monitor->m_reservedArea.left(), monitor->m_reservedArea.top()),
241+ .size = monitor->m_size - Vector2D(monitor->m_reservedArea.left(), monitor->m_reservedArea.top()) - Vector2D(monitor->m_reservedArea.right(), monitor->m_reservedArea.bottom()),
242 .gap_topleft_offset = gap_pos_offset,
243diff --git a/src/Hy3Layout.hpp b/src/Hy3Layout.hpp
244index f894ec580dedb5b21d677478d223fa3a3c527bcf..049e19b84766402a8ffff2299fcbf195929bfaa0 100644
245--- a/src/Hy3Layout.hpp
246+++ b/src/Hy3Layout.hpp
247@@ -155,9 +155,9 @@ public:
248 static void warpCursorToBox(const Vector2D& pos, const Vector2D& size);
249 static void warpCursorWithFocus(const Vector2D& pos, bool force = false);
250
251- bool shouldRenderSelected(const CWindow*);
252- PHLWINDOW findTiledWindowCandidate(const CWindow* from);
253- PHLWINDOW findFloatingWindowCandidate(const CWindow* from);
254+ bool shouldRenderSelected(const Desktop::View::CWindow*);
255+ PHLWINDOW findTiledWindowCandidate(const Desktop::View::CWindow* from);
256+ PHLWINDOW findFloatingWindowCandidate(const Desktop::View::CWindow* from);
257
258 Hy3Node* getWorkspaceRootGroup(const CWorkspace* workspace);
259 Hy3Node* getWorkspaceFocusedNode(
260@@ -176,7 +176,7 @@ public:
261 std::list<Hy3TabGroup> tab_groups;
262
263 private:
264- Hy3Node* getNodeFromWindow(const CWindow*);
265+ Hy3Node* getNodeFromWindow(const Desktop::View::CWindow*);
266 void applyNodeDataToWindow(Hy3Node*, bool no_animation = false);
267
268 // if shift is true, shift the window in the given direction, returning
269diff --git a/src/Hy3Node.cpp b/src/Hy3Node.cpp
270index 74c751b5a669478f154c2a02c62c513b8b1c6288..7de161a2c1f68488ad4694306f1fb2ce2be48cfb 100644
271--- a/src/Hy3Node.cpp
272+++ b/src/Hy3Node.cpp
273@@ -215,6 +215,7 @@ PHLWINDOW Hy3Node::bringToTop() {
274 return nullptr;
275 }
276 }
277+ return nullptr;
278 }
279
280 void Hy3Node::focusWindow() {
281@@ -278,6 +279,7 @@ Hy3Node* Hy3Node::getFocusedNode(bool ignore_group_focus, bool stop_at_expanded)
282 }
283 }
284 }
285+ return nullptr;
286 }
287
288 bool Hy3Node::isIndirectlyFocused() {
289@@ -344,8 +346,8 @@ void Hy3Node::recalcSizePosRecursive(bool no_animation) {
290
291 Hy3Node fake_node = {
292 .data = window,
293- .position = monitor->m_position + monitor->m_reservedTopLeft,
294- .size = monitor->m_size - monitor->m_reservedTopLeft - monitor->m_reservedBottomRight,
295+ .position = monitor->m_position + Vector2D(monitor->m_reservedArea.left(), monitor->m_reservedArea.top()),
296+ .size = monitor->m_size - Vector2D(monitor->m_reservedArea.left(), monitor->m_reservedArea.top()) - Vector2D(monitor->m_reservedArea.right(), monitor->m_reservedArea.bottom()),
297 .gap_topleft_offset = gap_topleft_offset,
298 .gap_bottomright_offset = gap_bottomright_offset,
299 .workspace = this->workspace,
300@@ -376,7 +378,7 @@ void Hy3Node::recalcSizePosRecursive(bool no_animation) {
301
302 auto& group = this->data.as_group();
303
304- double constraint;
305+ double constraint = 0.0;
306 switch (group.layout) {
307 case Hy3GroupLayout::SplitH:
308 constraint = tsize.x - gap_topleft_offset.x - gap_bottomright_offset.x;
309@@ -634,6 +636,7 @@ bool Hy3Node::isUrgent() {
310
311 return false;
312 }
313+ return false;
314 }
315
316 void Hy3Node::setHidden(bool hidden) {
317diff --git a/src/Hy3Node.hpp b/src/Hy3Node.hpp
318index 34b4ad90c19fa73f85a44dd654adc0900adef91f..876a235ebb95165cf5ba82269aca7b5771df8f5a 100644
319--- a/src/Hy3Node.hpp
320+++ b/src/Hy3Node.hpp
321@@ -7,7 +7,7 @@ enum class Hy3GroupLayout;
322 #include <variant>
323
324 #include <hyprland/src/defines.hpp>
325-#include <hyprland/src/desktop/Window.hpp>
326+#include <hyprland/src/desktop/view/Window.hpp>
327
328 #include "Hy3Layout.hpp"
329 #include "TabGroup.hpp"
330diff --git a/src/dispatchers.cpp b/src/dispatchers.cpp
331index 847417d4c6042aeb63062ce838d72b2f689f2a56..f88793f77e75fa8ba3a1cc2148744232969cd0ed 100644
332--- a/src/dispatchers.cpp
333+++ b/src/dispatchers.cpp
334@@ -9,9 +9,9 @@
335 #include "globals.hpp"
336 #include "src/SharedDefs.hpp"
337
338-void dispatch_makegroup(std::string value) {
339+static SDispatchResult dispatch_makegroup(std::string value) {
340 auto workspace = workspace_for_action();
341- if (!valid(workspace)) return;
342+ if (!valid(workspace)) return SDispatchResult {};
343
344 auto args = CVarList(value);
345
346@@ -34,11 +34,12 @@ void dispatch_makegroup(std::string value) {
347 } else if (args[0] == "opposite") {
348 g_Hy3Layout->makeOppositeGroupOnWorkspace(workspace.get(), ephemeral);
349 }
350+ return SDispatchResult {};
351 }
352
353-void dispatch_changegroup(std::string value) {
354+static SDispatchResult dispatch_changegroup(std::string value) {
355 auto workspace = workspace_for_action();
356- if (!valid(workspace)) return;
357+ if (!valid(workspace)) return SDispatchResult {};
358
359 auto args = CVarList(value);
360
361@@ -55,17 +56,19 @@ void dispatch_changegroup(std::string value) {
362 } else if (args[0] == "opposite") {
363 g_Hy3Layout->changeGroupToOppositeOnWorkspace(workspace.get());
364 }
365+ return SDispatchResult {};
366 }
367
368-void dispatch_setephemeral(std::string value) {
369+static SDispatchResult dispatch_setephemeral(std::string value) {
370 auto workspace = workspace_for_action();
371- if (!valid(workspace)) return;
372+ if (!valid(workspace)) return SDispatchResult {};
373
374 auto args = CVarList(value);
375
376 bool ephemeral = args[0] == "true";
377
378 g_Hy3Layout->changeGroupEphemeralityOnWorkspace(workspace.get(), ephemeral);
379+ return SDispatchResult {};
380 }
381
382 std::optional<ShiftDirection> parseShiftArg(std::string arg) {
383@@ -76,9 +79,9 @@ std::optional<ShiftDirection> parseShiftArg(std::string arg) {
384 else return {};
385 }
386
387-void dispatch_movewindow(std::string value) {
388+static SDispatchResult dispatch_movewindow(std::string value) {
389 auto workspace = workspace_for_action();
390- if (!valid(workspace)) return;
391+ if (!valid(workspace)) return SDispatchResult {};
392
393 auto args = CVarList(value);
394
395@@ -99,11 +102,12 @@ void dispatch_movewindow(std::string value) {
396
397 g_Hy3Layout->shiftWindow(workspace.get(), shift.value(), once, visible);
398 }
399+ return SDispatchResult {};
400 }
401
402-void dispatch_movefocus(std::string value) {
403+static SDispatchResult dispatch_movefocus(std::string value) {
404 auto workspace = workspace_for_action(true);
405- if (!valid(workspace)) return;
406+ if (!valid(workspace)) return SDispatchResult {};
407
408 auto args = CVarList(value);
409
410@@ -112,10 +116,10 @@ void dispatch_movefocus(std::string value) {
411
412 int argi = 0;
413 auto shift = parseShiftArg(args[argi++]);
414- if (!shift) return;
415+ if (!shift) return SDispatchResult {};
416 if (workspace->m_hasFullscreenWindow) {
417 g_Hy3Layout->focusMonitor(shift.value());
418- return;
419+ return SDispatchResult {};
420 }
421
422 auto visible = args[argi] == "visible";
423@@ -125,27 +129,32 @@ void dispatch_movefocus(std::string value) {
424 else if (args[argi] == "warp") warp_cursor = true;
425
426 g_Hy3Layout->shiftFocus(workspace.get(), shift.value(), visible, warp_cursor);
427+ return SDispatchResult {};
428 }
429
430-void dispatch_togglefocuslayer(std::string value) {
431+static SDispatchResult dispatch_togglefocuslayer(std::string value) {
432 auto workspace = workspace_for_action();
433- if (!valid(workspace)) return;