e6cabcfa3d303c47406e458f662564d50883b4f2
- Author
- outfoxxed <outfoxxed@outfoxxed.me>
- 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 df88212444453b448a03f0529f9c76f905f57f83..7b5053a9032a0c4df47d62a67b6930d0fad69f17 100644
3--- a/flake.lock
4+++ b/flake.lock
5@@ -16,11 +16,11 @@
6 ]
7 },
8 "locked": {
9- "lastModified": 1712434681,
10- "narHash": "sha256-qwmR2p1oc48Bj7gUDvb1oGL19Rjs2PmEmk4ChV01A5o=",
11+ "lastModified": 1713612213,
12+ "narHash": "sha256-zJboXgWNpNhKyNF8H/3UYzWkx7w00TOCGKi3cwi+tsw=",
13 "owner": "hyprwm",
14 "repo": "hyprcursor",
15- "rev": "818d8c4b69e0997483d60b75f701fe14b561a7a3",
16+ "rev": "cab4746180f210a3c1dd3d53e45c510e309e90e1",
17 "type": "github"
18 },
19 "original": {
20@@ -34,22 +34,23 @@
21 "hyprcursor": "hyprcursor",
22 "hyprland-protocols": "hyprland-protocols",
23 "hyprlang": "hyprlang",
24+ "hyprwayland-scanner": "hyprwayland-scanner",
25 "nixpkgs": "nixpkgs",
26 "systems": "systems",
27 "wlroots": "wlroots",
28 "xdph": "xdph"
29 },
30 "locked": {
31- "lastModified": 1713283263,
32- "narHash": "sha256-Urb/njWiHYUudXpmK8EKl9Z58esTIG0PxXw5LuM2r5g=",
33+ "lastModified": 1713819507,
34+ "narHash": "sha256-mG0kD8HmkCsHRkTBmqGb/QvM1vAvkAmB5p2H5XQ0zLo=",
35 "owner": "hyprwm",
36 "repo": "Hyprland",
37- "rev": "fe7b748eb668136dd0558b7c8279bfcd7ab4d759",
38+ "rev": "da839f20f1b1a57ec78d6b041f8d1369150d253e",
39 "type": "github"
40 },
41 "original": {
42 "owner": "hyprwm",
43- "ref": "fe7b748eb668136dd0558b7c8279bfcd7ab4d759",
44+ "ref": "da839f20f1b1a57ec78d6b041f8d1369150d253e",
45 "repo": "Hyprland",
46 "type": "github"
47 }
48@@ -91,11 +92,11 @@
49 ]
50 },
51 "locked": {
52- "lastModified": 1711671891,
53- "narHash": "sha256-C/Wwsy/RLxHP1axFFl+AnwJRWfd8gxDKKoa8nt8Qk3c=",
54+ "lastModified": 1713121246,
55+ "narHash": "sha256-502X0Q0fhN6tJK7iEUA8CghONKSatW/Mqj4Wappd++0=",
56 "owner": "hyprwm",
57 "repo": "hyprlang",
58- "rev": "c1402612146ba06606ebf64963a02bc1efe11e74",
59+ "rev": "78fcaa27ae9e1d782faa3ff06c8ea55ddce63706",
60 "type": "github"
61 },
62 "original": {
63@@ -104,13 +105,38 @@
64 "type": "github"
65 }
66 },
67+ "hyprwayland-scanner": {
68+ "inputs": {
69+ "nixpkgs": [
70+ "hyprland",
71+ "nixpkgs"
72+ ],
73+ "systems": [
74+ "hyprland",
75+ "systems"
76+ ]
77+ },
78+ "locked": {
79+ "lastModified": 1713730424,
80+ "narHash": "sha256-MqYjTvQCxwuDIuAaqIEuyqserm5PYr0auiHHPuYFN/k=",
81+ "owner": "hyprwm",
82+ "repo": "hyprwayland-scanner",
83+ "rev": "7c9c8adfe7e424faa0c5ce6e8be90157fda53c06",
84+ "type": "github"
85+ },
86+ "original": {
87+ "owner": "hyprwm",
88+ "repo": "hyprwayland-scanner",
89+ "type": "github"
90+ }
91+ },
92 "nixpkgs": {
93 "locked": {
94- "lastModified": 1712439257,
95- "narHash": "sha256-aSpiNepFOMk9932HOax0XwNxbA38GOUVOiXfUVPOrck=",
96+ "lastModified": 1713537308,
97+ "narHash": "sha256-XtTSSIB2DA6tOv+l0FhvfDMiyCmhoRbNB+0SeInZkbk=",
98 "owner": "NixOS",
99 "repo": "nixpkgs",
100- "rev": "ff0dbd94265ac470dda06a657d5fe49de93b4599",
101+ "rev": "5c24cf2f0a12ad855f444c30b2421d044120c66f",
102 "type": "github"
103 },
104 "original": {
105diff --git a/flake.nix b/flake.nix
106index b6c1b265facd99b5c0a84b4a0c38f5b067de7d60..998ea51b4e10419c90ba98e1f5ef4f6fdca07d4a 100644
107--- a/flake.nix
108+++ b/flake.nix
109@@ -1,6 +1,6 @@
110 {
111 inputs = {
112- hyprland.url = "github:hyprwm/Hyprland?ref=fe7b748eb668136dd0558b7c8279bfcd7ab4d759";
113+ hyprland.url = "github:hyprwm/Hyprland?ref=da839f20f1b1a57ec78d6b041f8d1369150d253e";
114 };
115
116 outputs = { self, hyprland, ... }: let
117diff --git a/src/Hy3Layout.cpp b/src/Hy3Layout.cpp
118index d54b90dac9eb578c494c4c8569d8b6ffabe764d3..ca60aa0bbd209df896614742cead2affe3afc46e 100644
119--- a/src/Hy3Layout.cpp
120+++ b/src/Hy3Layout.cpp
121@@ -10,14 +10,10 @@
122 #include "SelectionHook.hpp"
123 #include "globals.hpp"
124
125-std::unique_ptr<HOOK_CALLBACK_FN> renderHookPtr =
126- std::make_unique<HOOK_CALLBACK_FN>(Hy3Layout::renderHook);
127-std::unique_ptr<HOOK_CALLBACK_FN> windowTitleHookPtr =
128- std::make_unique<HOOK_CALLBACK_FN>(Hy3Layout::windowGroupUpdateRecursiveHook);
129-std::unique_ptr<HOOK_CALLBACK_FN> urgentHookPtr =
130- std::make_unique<HOOK_CALLBACK_FN>(Hy3Layout::windowGroupUrgentHook);
131-std::unique_ptr<HOOK_CALLBACK_FN> tickHookPtr =
132- std::make_unique<HOOK_CALLBACK_FN>(Hy3Layout::tickHook);
133+std::shared_ptr<HOOK_CALLBACK_FN> renderHookPtr;
134+std::shared_ptr<HOOK_CALLBACK_FN> windowTitleHookPtr;
135+std::shared_ptr<HOOK_CALLBACK_FN> urgentHookPtr;
136+std::shared_ptr<HOOK_CALLBACK_FN> tickHookPtr;
137
138 bool performContainment(Hy3Node& node, bool contained, CWindow* window) {
139 if (node.data.type == Hy3NodeType::Group) {
140@@ -604,7 +600,8 @@ void Hy3Layout::switchWindows(CWindow* pWindowA, CWindow* pWindowB) {
141 // todo
142 }
143
144-void Hy3Layout::moveWindowTo(CWindow* window, const std::string& direction) {
145+void Hy3Layout::moveWindowTo(CWindow* window, const std::string& direction, bool silent) {
146+ // todo: support silent
147 auto* node = this->getNodeFromWindow(window);
148 if (node == nullptr) return;
149
150@@ -677,18 +674,18 @@ void Hy3Layout::onEnable() {
151 this->onWindowCreatedTiling(window.get());
152 }
153
154- HyprlandAPI::registerCallbackStatic(PHANDLE, "render", renderHookPtr.get());
155- HyprlandAPI::registerCallbackStatic(PHANDLE, "windowTitle", windowTitleHookPtr.get());
156- HyprlandAPI::registerCallbackStatic(PHANDLE, "urgent", urgentHookPtr.get());
157- HyprlandAPI::registerCallbackStatic(PHANDLE, "tick", tickHookPtr.get());
158+ renderHookPtr = HyprlandAPI::registerCallbackDynamic(PHANDLE, "render", &Hy3Layout::renderHook);
159+ windowTitleHookPtr = HyprlandAPI::registerCallbackDynamic(PHANDLE, "windowTitle", &Hy3Layout::windowGroupUpdateRecursiveHook);
160+ urgentHookPtr = HyprlandAPI::registerCallbackDynamic(PHANDLE, "urgent", &Hy3Layout::windowGroupUrgentHook);
161+ tickHookPtr = HyprlandAPI::registerCallbackDynamic(PHANDLE, "tick", &Hy3Layout::tickHook);
162 selection_hook::enable();
163 }
164
165 void Hy3Layout::onDisable() {
166- HyprlandAPI::unregisterCallback(PHANDLE, renderHookPtr.get());
167- HyprlandAPI::unregisterCallback(PHANDLE, windowTitleHookPtr.get());
168- HyprlandAPI::unregisterCallback(PHANDLE, urgentHookPtr.get());
169- HyprlandAPI::unregisterCallback(PHANDLE, tickHookPtr.get());
170+ renderHookPtr.reset();
171+ windowTitleHookPtr.reset();
172+ urgentHookPtr.reset();
173+ tickHookPtr.reset();
174 selection_hook::disable();
175
176 for (auto& node: this->nodes) {
177diff --git a/src/Hy3Layout.hpp b/src/Hy3Layout.hpp
178index 930d91d387cb6324dea4c1696e481b930d60aaf4..3bb27de013ecf7950064be894017e61eb6586411 100644
179--- a/src/Hy3Layout.hpp
180+++ b/src/Hy3Layout.hpp
181@@ -83,7 +83,7 @@ public:
182 virtual std::any layoutMessage(SLayoutMessageHeader header, std::string content);
183 virtual SWindowRenderLayoutHints requestRenderHints(CWindow*);
184 virtual void switchWindows(CWindow*, CWindow*);
185- virtual void moveWindowTo(CWindow*, const std::string& direction);
186+ virtual void moveWindowTo(CWindow*, const std::string& direction, bool silent);
187 virtual void alterSplitRatio(CWindow*, float, bool);
188 virtual std::string getLayoutName();
189 virtual CWindow* getNextWindowCandidate(CWindow*);