mirror of
https://github.com/Trensa-Organization/hy3.git
synced 2025-03-15 18:53:40 +01:00
parent
3331340702
commit
e6cabcfa3d
4 changed files with 62 additions and 39 deletions
66
flake.lock
generated
66
flake.lock
generated
|
@ -16,11 +16,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1712434681,
|
"lastModified": 1713612213,
|
||||||
"narHash": "sha256-qwmR2p1oc48Bj7gUDvb1oGL19Rjs2PmEmk4ChV01A5o=",
|
"narHash": "sha256-zJboXgWNpNhKyNF8H/3UYzWkx7w00TOCGKi3cwi+tsw=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprcursor",
|
"repo": "hyprcursor",
|
||||||
"rev": "818d8c4b69e0997483d60b75f701fe14b561a7a3",
|
"rev": "cab4746180f210a3c1dd3d53e45c510e309e90e1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -34,22 +34,23 @@
|
||||||
"hyprcursor": "hyprcursor",
|
"hyprcursor": "hyprcursor",
|
||||||
"hyprland-protocols": "hyprland-protocols",
|
"hyprland-protocols": "hyprland-protocols",
|
||||||
"hyprlang": "hyprlang",
|
"hyprlang": "hyprlang",
|
||||||
|
"hyprwayland-scanner": "hyprwayland-scanner",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"systems": "systems",
|
"systems": "systems",
|
||||||
"wlroots": "wlroots",
|
"wlroots": "wlroots",
|
||||||
"xdph": "xdph"
|
"xdph": "xdph"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1713283263,
|
"lastModified": 1713819507,
|
||||||
"narHash": "sha256-Urb/njWiHYUudXpmK8EKl9Z58esTIG0PxXw5LuM2r5g=",
|
"narHash": "sha256-mG0kD8HmkCsHRkTBmqGb/QvM1vAvkAmB5p2H5XQ0zLo=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "Hyprland",
|
"repo": "Hyprland",
|
||||||
"rev": "fe7b748eb668136dd0558b7c8279bfcd7ab4d759",
|
"rev": "da839f20f1b1a57ec78d6b041f8d1369150d253e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"ref": "fe7b748eb668136dd0558b7c8279bfcd7ab4d759",
|
"ref": "da839f20f1b1a57ec78d6b041f8d1369150d253e",
|
||||||
"repo": "Hyprland",
|
"repo": "Hyprland",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
@ -91,11 +92,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1711671891,
|
"lastModified": 1713121246,
|
||||||
"narHash": "sha256-C/Wwsy/RLxHP1axFFl+AnwJRWfd8gxDKKoa8nt8Qk3c=",
|
"narHash": "sha256-502X0Q0fhN6tJK7iEUA8CghONKSatW/Mqj4Wappd++0=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprlang",
|
"repo": "hyprlang",
|
||||||
"rev": "c1402612146ba06606ebf64963a02bc1efe11e74",
|
"rev": "78fcaa27ae9e1d782faa3ff06c8ea55ddce63706",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -104,13 +105,38 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hyprwayland-scanner": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1713730424,
|
||||||
|
"narHash": "sha256-MqYjTvQCxwuDIuAaqIEuyqserm5PYr0auiHHPuYFN/k=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwayland-scanner",
|
||||||
|
"rev": "7c9c8adfe7e424faa0c5ce6e8be90157fda53c06",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwayland-scanner",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1712439257,
|
"lastModified": 1713537308,
|
||||||
"narHash": "sha256-aSpiNepFOMk9932HOax0XwNxbA38GOUVOiXfUVPOrck=",
|
"narHash": "sha256-XtTSSIB2DA6tOv+l0FhvfDMiyCmhoRbNB+0SeInZkbk=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "ff0dbd94265ac470dda06a657d5fe49de93b4599",
|
"rev": "5c24cf2f0a12ad855f444c30b2421d044120c66f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -143,17 +169,17 @@
|
||||||
"wlroots": {
|
"wlroots": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1713124002,
|
"lastModified": 1713731601,
|
||||||
"narHash": "sha256-vPeZCY+sdiGsz4fl3AVVujfyZyQBz6+vZdkUE4hQ+HI=",
|
"narHash": "sha256-bdcKdtLkusvv85DNuJsajZLFeq7bXp+x5AGP1Sd4wD8=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "wlroots-hyprland",
|
"repo": "wlroots-hyprland",
|
||||||
"rev": "611a4f24cd2384378f6e500253983107c6656c64",
|
"rev": "5c1d51c5a2793480f5b6c4341ad0797052aec2ea",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "wlroots-hyprland",
|
"repo": "wlroots-hyprland",
|
||||||
"rev": "611a4f24cd2384378f6e500253983107c6656c64",
|
"rev": "5c1d51c5a2793480f5b6c4341ad0797052aec2ea",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -177,11 +203,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1709299639,
|
"lastModified": 1713724432,
|
||||||
"narHash": "sha256-jYqJM5khksLIbqSxCLUUcqEgI+O2LdlSlcMEBs39CAU=",
|
"narHash": "sha256-dtU1y4oj/0Y42oauzm93ucFg1AoqETnQ21bmXTIUng0=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "xdg-desktop-portal-hyprland",
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
"rev": "2d2fb547178ec025da643db57d40a971507b82fe",
|
"rev": "9ace6f969ce495185df34cc6254fb9d297765478",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
hyprland.url = "github:hyprwm/Hyprland?ref=fe7b748eb668136dd0558b7c8279bfcd7ab4d759";
|
hyprland.url = "github:hyprwm/Hyprland?ref=da839f20f1b1a57ec78d6b041f8d1369150d253e";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, hyprland, ... }: let
|
outputs = { self, hyprland, ... }: let
|
||||||
|
|
|
@ -10,14 +10,10 @@
|
||||||
#include "SelectionHook.hpp"
|
#include "SelectionHook.hpp"
|
||||||
#include "globals.hpp"
|
#include "globals.hpp"
|
||||||
|
|
||||||
std::unique_ptr<HOOK_CALLBACK_FN> renderHookPtr =
|
std::shared_ptr<HOOK_CALLBACK_FN> renderHookPtr;
|
||||||
std::make_unique<HOOK_CALLBACK_FN>(Hy3Layout::renderHook);
|
std::shared_ptr<HOOK_CALLBACK_FN> windowTitleHookPtr;
|
||||||
std::unique_ptr<HOOK_CALLBACK_FN> windowTitleHookPtr =
|
std::shared_ptr<HOOK_CALLBACK_FN> urgentHookPtr;
|
||||||
std::make_unique<HOOK_CALLBACK_FN>(Hy3Layout::windowGroupUpdateRecursiveHook);
|
std::shared_ptr<HOOK_CALLBACK_FN> tickHookPtr;
|
||||||
std::unique_ptr<HOOK_CALLBACK_FN> urgentHookPtr =
|
|
||||||
std::make_unique<HOOK_CALLBACK_FN>(Hy3Layout::windowGroupUrgentHook);
|
|
||||||
std::unique_ptr<HOOK_CALLBACK_FN> tickHookPtr =
|
|
||||||
std::make_unique<HOOK_CALLBACK_FN>(Hy3Layout::tickHook);
|
|
||||||
|
|
||||||
bool performContainment(Hy3Node& node, bool contained, CWindow* window) {
|
bool performContainment(Hy3Node& node, bool contained, CWindow* window) {
|
||||||
if (node.data.type == Hy3NodeType::Group) {
|
if (node.data.type == Hy3NodeType::Group) {
|
||||||
|
@ -604,7 +600,8 @@ void Hy3Layout::switchWindows(CWindow* pWindowA, CWindow* pWindowB) {
|
||||||
// todo
|
// todo
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hy3Layout::moveWindowTo(CWindow* window, const std::string& direction) {
|
void Hy3Layout::moveWindowTo(CWindow* window, const std::string& direction, bool silent) {
|
||||||
|
// todo: support silent
|
||||||
auto* node = this->getNodeFromWindow(window);
|
auto* node = this->getNodeFromWindow(window);
|
||||||
if (node == nullptr) return;
|
if (node == nullptr) return;
|
||||||
|
|
||||||
|
@ -677,18 +674,18 @@ void Hy3Layout::onEnable() {
|
||||||
this->onWindowCreatedTiling(window.get());
|
this->onWindowCreatedTiling(window.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
HyprlandAPI::registerCallbackStatic(PHANDLE, "render", renderHookPtr.get());
|
renderHookPtr = HyprlandAPI::registerCallbackDynamic(PHANDLE, "render", &Hy3Layout::renderHook);
|
||||||
HyprlandAPI::registerCallbackStatic(PHANDLE, "windowTitle", windowTitleHookPtr.get());
|
windowTitleHookPtr = HyprlandAPI::registerCallbackDynamic(PHANDLE, "windowTitle", &Hy3Layout::windowGroupUpdateRecursiveHook);
|
||||||
HyprlandAPI::registerCallbackStatic(PHANDLE, "urgent", urgentHookPtr.get());
|
urgentHookPtr = HyprlandAPI::registerCallbackDynamic(PHANDLE, "urgent", &Hy3Layout::windowGroupUrgentHook);
|
||||||
HyprlandAPI::registerCallbackStatic(PHANDLE, "tick", tickHookPtr.get());
|
tickHookPtr = HyprlandAPI::registerCallbackDynamic(PHANDLE, "tick", &Hy3Layout::tickHook);
|
||||||
selection_hook::enable();
|
selection_hook::enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hy3Layout::onDisable() {
|
void Hy3Layout::onDisable() {
|
||||||
HyprlandAPI::unregisterCallback(PHANDLE, renderHookPtr.get());
|
renderHookPtr.reset();
|
||||||
HyprlandAPI::unregisterCallback(PHANDLE, windowTitleHookPtr.get());
|
windowTitleHookPtr.reset();
|
||||||
HyprlandAPI::unregisterCallback(PHANDLE, urgentHookPtr.get());
|
urgentHookPtr.reset();
|
||||||
HyprlandAPI::unregisterCallback(PHANDLE, tickHookPtr.get());
|
tickHookPtr.reset();
|
||||||
selection_hook::disable();
|
selection_hook::disable();
|
||||||
|
|
||||||
for (auto& node: this->nodes) {
|
for (auto& node: this->nodes) {
|
||||||
|
|
|
@ -83,7 +83,7 @@ public:
|
||||||
virtual std::any layoutMessage(SLayoutMessageHeader header, std::string content);
|
virtual std::any layoutMessage(SLayoutMessageHeader header, std::string content);
|
||||||
virtual SWindowRenderLayoutHints requestRenderHints(CWindow*);
|
virtual SWindowRenderLayoutHints requestRenderHints(CWindow*);
|
||||||
virtual void switchWindows(CWindow*, CWindow*);
|
virtual void switchWindows(CWindow*, CWindow*);
|
||||||
virtual void moveWindowTo(CWindow*, const std::string& direction);
|
virtual void moveWindowTo(CWindow*, const std::string& direction, bool silent);
|
||||||
virtual void alterSplitRatio(CWindow*, float, bool);
|
virtual void alterSplitRatio(CWindow*, float, bool);
|
||||||
virtual std::string getLayoutName();
|
virtual std::string getLayoutName();
|
||||||
virtual CWindow* getNextWindowCandidate(CWindow*);
|
virtual CWindow* getNextWindowCandidate(CWindow*);
|
||||||
|
|
Loading…
Add table
Reference in a new issue