mirror of
https://github.com/hyprwm/hyprland-plugins.git
synced 2024-11-22 10:35:58 +01:00
parent
4a92466e3b
commit
adec334acf
3 changed files with 22 additions and 2 deletions
|
@ -519,3 +519,7 @@ CBox CHyprBar::assignedBoxGlobal() {
|
||||||
|
|
||||||
return box.translate(WORKSPACEOFFSET);
|
return box.translate(WORKSPACEOFFSET);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CWindow* CHyprBar::getOwner() {
|
||||||
|
return m_pWindow;
|
||||||
|
}
|
||||||
|
|
|
@ -31,6 +31,8 @@ class CHyprBar : public IHyprWindowDecoration {
|
||||||
|
|
||||||
virtual std::string getDisplayName();
|
virtual std::string getDisplayName();
|
||||||
|
|
||||||
|
CWindow* getOwner();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SWindowDecorationExtents m_seExtents;
|
SWindowDecorationExtents m_seExtents;
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ APICALL EXPORT std::string PLUGIN_API_VERSION() {
|
||||||
return HYPRLAND_API_VERSION;
|
return HYPRLAND_API_VERSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
void onNewWindow(void* self, std::any data) {
|
static void onNewWindow(void* self, std::any data) {
|
||||||
// data is guaranteed
|
// data is guaranteed
|
||||||
auto* const PWINDOW = std::any_cast<CWindow*>(data);
|
auto* const PWINDOW = std::any_cast<CWindow*>(data);
|
||||||
|
|
||||||
|
@ -26,6 +26,19 @@ void onNewWindow(void* self, std::any data) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void onCloseWindow(void* self, std::any data) {
|
||||||
|
// data is guaranteed
|
||||||
|
auto* const PWINDOW = std::any_cast<CWindow*>(data);
|
||||||
|
|
||||||
|
const auto BARIT = std::find_if(g_pGlobalState->bars.begin(), g_pGlobalState->bars.end(), [PWINDOW](const auto& bar) { return bar->getOwner() == PWINDOW; });
|
||||||
|
|
||||||
|
if (BARIT == g_pGlobalState->bars.end())
|
||||||
|
return;
|
||||||
|
|
||||||
|
// we could use the API but this is faster + it doesn't matter here that much.
|
||||||
|
PWINDOW->removeWindowDeco(*BARIT);
|
||||||
|
}
|
||||||
|
|
||||||
void onPreConfigReload() {
|
void onPreConfigReload() {
|
||||||
g_pGlobalState->buttons.clear();
|
g_pGlobalState->buttons.clear();
|
||||||
}
|
}
|
||||||
|
@ -74,6 +87,7 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) {
|
||||||
g_pGlobalState = std::make_unique<SGlobalState>();
|
g_pGlobalState = std::make_unique<SGlobalState>();
|
||||||
|
|
||||||
HyprlandAPI::registerCallbackDynamic(PHANDLE, "openWindow", [&](void* self, SCallbackInfo& info, std::any data) { onNewWindow(self, data); });
|
HyprlandAPI::registerCallbackDynamic(PHANDLE, "openWindow", [&](void* self, SCallbackInfo& info, std::any data) { onNewWindow(self, data); });
|
||||||
|
HyprlandAPI::registerCallbackDynamic(PHANDLE, "closeWindow", [&](void* self, SCallbackInfo& info, std::any data) { onCloseWindow(self, data); });
|
||||||
|
|
||||||
HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_color", Hyprlang::INT{configStringToInt("rgba(33333388)")});
|
HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_color", Hyprlang::INT{configStringToInt("rgba(33333388)")});
|
||||||
HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_height", Hyprlang::INT{15});
|
HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_height", Hyprlang::INT{15});
|
||||||
|
|
Loading…
Reference in a new issue