aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.clang-format65
-rw-r--r--src/Compositor.cpp219
-rw-r--r--src/Compositor.hpp311
-rw-r--r--src/Window.cpp107
-rw-r--r--src/Window.hpp207
-rw-r--r--src/config/ConfigDataValues.hpp17
-rw-r--r--src/config/ConfigManager.cpp540
-rw-r--r--src/config/ConfigManager.hpp230
-rw-r--r--src/debug/HyprCtl.cpp277
-rw-r--r--src/debug/HyprCtl.hpp15
-rw-r--r--src/debug/HyprDebugOverlay.cpp30
-rw-r--r--src/debug/HyprDebugOverlay.hpp28
-rw-r--r--src/debug/Log.cpp31
-rw-r--r--src/debug/Log.hpp15
-rw-r--r--src/defines.hpp45
-rw-r--r--src/events/Devices.cpp22
-rw-r--r--src/events/Events.hpp4
-rw-r--r--src/events/Layers.cpp64
-rw-r--r--src/events/Misc.cpp25
-rw-r--r--src/events/Monitors.cpp67
-rw-r--r--src/events/Popups.cpp41
-rw-r--r--src/events/Windows.cpp224
-rw-r--r--src/helpers/AnimatedVariable.cpp25
-rw-r--r--src/helpers/AnimatedVariable.hpp120
-rw-r--r--src/helpers/BezierCurve.cpp17
-rw-r--r--src/helpers/BezierCurve.hpp18
-rw-r--r--src/helpers/Color.cpp2
-rw-r--r--src/helpers/Color.hpp12
-rw-r--r--src/helpers/MiscFunctions.cpp142
-rw-r--r--src/helpers/MiscFunctions.hpp24
-rw-r--r--src/helpers/Monitor.cpp47
-rw-r--r--src/helpers/Monitor.hpp79
-rw-r--r--src/helpers/SubsurfaceTree.cpp36
-rw-r--r--src/helpers/SubsurfaceTree.hpp30
-rw-r--r--src/helpers/Timer.hpp12
-rw-r--r--src/helpers/Vector2D.cpp11
-rw-r--r--src/helpers/Vector2D.hpp12
-rw-r--r--src/helpers/WLClasses.hpp160
-rw-r--r--src/helpers/WLListener.cpp6
-rw-r--r--src/helpers/WLListener.hpp20
-rw-r--r--src/helpers/Workspace.cpp12
-rw-r--r--src/helpers/Workspace.hpp35
-rw-r--r--src/helpers/XWaylandStubs.hpp145
-rw-r--r--src/hyprerror/HyprError.cpp17
-rw-r--r--src/hyprerror/HyprError.hpp22
-rw-r--r--src/layout/DwindleLayout.cpp387
-rw-r--r--src/layout/DwindleLayout.hpp103
-rw-r--r--src/layout/IHyprLayout.cpp69
-rw-r--r--src/layout/IHyprLayout.hpp73
-rw-r--r--src/layout/MasterLayout.cpp178
-rw-r--r--src/layout/MasterLayout.hpp75
-rw-r--r--src/main.cpp12
-rw-r--r--src/managers/AnimationManager.cpp126
-rw-r--r--src/managers/AnimationManager.hpp33
-rw-r--r--src/managers/EventManager.cpp29
-rw-r--r--src/managers/EventManager.hpp17
-rw-r--r--src/managers/KeybindManager.cpp290
-rw-r--r--src/managers/KeybindManager.hpp163
-rw-r--r--src/managers/LayoutManager.cpp6
-rw-r--r--src/managers/LayoutManager.hpp14
-rw-r--r--src/managers/ProtocolManager.hpp2
-rw-r--r--src/managers/ThreadManager.cpp4
-rw-r--r--src/managers/ThreadManager.hpp4
-rw-r--r--src/managers/XWaylandManager.cpp91
-rw-r--r--src/managers/XWaylandManager.hpp34
-rw-r--r--src/managers/input/IdleInhibitor.cpp17
-rw-r--r--src/managers/input/InputManager.cpp429
-rw-r--r--src/managers/input/InputManager.hpp194
-rw-r--r--src/managers/input/InputMethodRelay.cpp291
-rw-r--r--src/managers/input/InputMethodRelay.hpp37
-rw-r--r--src/managers/input/Swipe.cpp81
-rw-r--r--src/managers/input/Tablets.cpp307
-rw-r--r--src/managers/input/Touch.cpp19
-rw-r--r--src/protocols/ToplevelExport.cpp46
-rw-r--r--src/protocols/ToplevelExport.hpp60
-rw-r--r--src/render/Framebuffer.cpp18
-rw-r--r--src/render/Framebuffer.hpp25
-rw-r--r--src/render/OpenGL.cpp499
-rw-r--r--src/render/OpenGL.hpp155
-rw-r--r--src/render/Renderer.cpp468
-rw-r--r--src/render/Renderer.hpp32
-rw-r--r--src/render/Shader.hpp52
-rw-r--r--src/render/Texture.cpp2
-rw-r--r--src/render/Texture.hpp25
-rw-r--r--src/render/decorations/CHyprDropShadowDecoration.cpp44
-rw-r--r--src/render/decorations/CHyprDropShadowDecoration.hpp20
-rw-r--r--src/render/decorations/CHyprGroupBarDecoration.cpp19
-rw-r--r--src/render/decorations/CHyprGroupBarDecoration.hpp22
-rw-r--r--src/render/decorations/IHyprWindowDecoration.cpp4
-rw-r--r--src/render/decorations/IHyprWindowDecoration.hpp13
90 files changed, 4151 insertions, 4026 deletions
diff --git a/.clang-format b/.clang-format
new file mode 100644
index 00000000..215809bc
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1,65 @@
+---
+Language: Cpp
+BasedOnStyle: LLVM
+
+AccessModifierOffset: -2
+AlignAfterOpenBracket: Align
+AlignConsecutiveMacros: true
+AlignConsecutiveAssignments: true
+AlignEscapedNewlines: Right
+AlignOperands: false
+AlignTrailingComments: true
+AllowAllArgumentsOnNextLine: true
+AllowAllConstructorInitializersOnNextLine: true
+AllowAllParametersOfDeclarationOnNextLine: true
+AllowShortBlocksOnASingleLine: true
+AllowShortCaseLabelsOnASingleLine: true
+AllowShortFunctionsOnASingleLine: Empty
+AllowShortIfStatementsOnASingleLine: Never
+AllowShortLambdasOnASingleLine: All
+AllowShortLoopsOnASingleLine: false
+AlwaysBreakAfterDefinitionReturnType: None
+AlwaysBreakAfterReturnType: None
+AlwaysBreakBeforeMultilineStrings: false
+AlwaysBreakTemplateDeclarations: Yes
+BreakBeforeBraces: Attach
+BreakBeforeTernaryOperators: false
+BreakConstructorInitializers: AfterColon
+ColumnLimit: 180
+CompactNamespaces: false
+ConstructorInitializerAllOnOneLineOrOnePerLine: false
+ExperimentalAutoDetectBinPacking: false
+FixNamespaceComments: false
+IncludeBlocks: Preserve
+IndentCaseLabels: true
+IndentWidth: 4
+PointerAlignment: Left
+ReflowComments: false
+SortIncludes: false
+SortUsingDeclarations: false
+SpaceAfterCStyleCast: false
+SpaceAfterLogicalNot: false
+SpaceAfterTemplateKeyword: true
+SpaceBeforeCtorInitializerColon: true
+SpaceBeforeInheritanceColon: true
+SpaceBeforeParens: ControlStatements
+SpaceBeforeRangeBasedForLoopColon: true
+SpaceInEmptyParentheses: false
+SpacesBeforeTrailingComments: 1
+SpacesInAngles: false
+SpacesInCStyleCastParentheses: false
+SpacesInContainerLiterals: false
+SpacesInParentheses: false
+SpacesInSquareBrackets: false
+Standard: Auto
+TabWidth: 4
+UseTab: Never
+
+AllowShortEnumsOnASingleLine: false
+
+BraceWrapping:
+ AfterEnum: false
+
+AlignConsecutiveDeclarations: AcrossEmptyLinesAndComments
+
+NamespaceIndentation: All
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index ffcf0231..b0714e5b 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -96,9 +96,9 @@ CCompositor::CCompositor() {
throw std::runtime_error("wlr_gles2_renderer_get_egl() failed!");
}
- m_sWLRCompositor = wlr_compositor_create(m_sWLDisplay, m_sWLRRenderer);
+ m_sWLRCompositor = wlr_compositor_create(m_sWLDisplay, m_sWLRRenderer);
m_sWLRSubCompositor = wlr_subcompositor_create(m_sWLDisplay);
- m_sWLRDataDevMgr = wlr_data_device_manager_create(m_sWLDisplay);
+ m_sWLRDataDevMgr = wlr_data_device_manager_create(m_sWLDisplay);
wlr_export_dmabuf_manager_v1_create(m_sWLDisplay);
wlr_screencopy_manager_v1_create(m_sWLDisplay);
@@ -134,13 +134,13 @@ CCompositor::CCompositor() {
m_sWLRLayerShell = wlr_layer_shell_v1_create(m_sWLDisplay, 4);
m_sWLRServerDecoMgr = wlr_server_decoration_manager_create(m_sWLDisplay);
- m_sWLRXDGDecoMgr = wlr_xdg_decoration_manager_v1_create(m_sWLDisplay);
+ m_sWLRXDGDecoMgr = wlr_xdg_decoration_manager_v1_create(m_sWLDisplay);
wlr_server_decoration_manager_set_default_mode(m_sWLRServerDecoMgr, WLR_SERVER_DECORATION_MANAGER_MODE_SERVER);
wlr_xdg_output_manager_v1_create(m_sWLDisplay, m_sWLROutputLayout);
m_sWLROutputMgr = wlr_output_manager_v1_create(m_sWLDisplay);
- m_sWLRInhibitMgr = wlr_input_inhibit_manager_create(m_sWLDisplay);
+ m_sWLRInhibitMgr = wlr_input_inhibit_manager_create(m_sWLDisplay);
m_sWLRKbShInhibitMgr = wlr_keyboard_shortcuts_inhibit_v1_create(m_sWLDisplay);
m_sWLREXTWorkspaceMgr = wlr_ext_workspace_manager_v1_create(m_sWLDisplay);
@@ -193,8 +193,8 @@ CCompositor::~CCompositor() {
}
void CCompositor::setRandomSplash() {
- std::random_device dev;
- std::mt19937 engine(dev());
+ std::random_device dev;
+ std::mt19937 engine(dev());
std::uniform_int_distribution<> distribution(0, SPLASHES.size() - 1);
m_szCurrentSplash = SPLASHES[distribution(engine)];
@@ -244,7 +244,7 @@ void CCompositor::initAllSignals() {
addWLSignal(&m_sWLRTextInputMgr->events.text_input, &Events::listen_newTextInput, m_sWLRTextInputMgr, "TextInputMgr");
addWLSignal(&m_sWLRActivation->events.request_activate, &Events::listen_activateXDG, m_sWLRActivation, "ActivationV1");
- if(m_sWRLDRMLeaseMgr)
+ if (m_sWRLDRMLeaseMgr)
addWLSignal(&m_sWRLDRMLeaseMgr->events.request, &Events::listen_leaseRequest, &m_sWRLDRMLeaseMgr, "DRM");
if (m_sWLRSession)
@@ -257,7 +257,7 @@ void CCompositor::cleanup() {
m_bIsShuttingDown = true;
- m_pLastFocus = nullptr;
+ m_pLastFocus = nullptr;
m_pLastWindow = nullptr;
// accumulate all PIDs for killing, also request closing.
@@ -288,8 +288,8 @@ void CCompositor::cleanup() {
wl_display_terminate(m_sWLDisplay);
- g_pKeybindManager->spawn("sleep 5 && kill -9 " + std::to_string(m_iHyprlandPID)); // this is to prevent that random "freezing"
- // the PID should not be reused.
+ g_pKeybindManager->spawn("sleep 5 && kill -9 " + std::to_string(m_iHyprlandPID)); // this is to prevent that random "freezing"
+ // the PID should not be reused.
}
void CCompositor::startCompositor() {
@@ -412,15 +412,15 @@ CMonitor* CCompositor::getMonitorFromVector(const Vector2D& point) {
const auto OUTPUT = wlr_output_layout_output_at(m_sWLROutputLayout, point.x, point.y);
if (!OUTPUT) {
- float bestDistance = 0.f;
- CMonitor* pBestMon = nullptr;
+ float bestDistance = 0.f;
+ CMonitor* pBestMon = nullptr;
for (auto& m : m_vMonitors) {
float dist = vecToRectDistanceSquared(point, m->vecPosition, m->vecPosition + m->vecSize);
if (dist < bestDistance || !pBestMon) {
bestDistance = dist;
- pBestMon = m.get();
+ pBestMon = m.get();
}
}
@@ -436,7 +436,7 @@ CMonitor* CCompositor::getMonitorFromVector(const Vector2D& point) {
}
void CCompositor::removeWindowFromVectorSafe(CWindow* pWindow) {
- if (windowExists(pWindow) && !pWindow->m_bFadingOut){
+ if (windowExists(pWindow) && !pWindow->m_bFadingOut) {
if (pWindow->m_bIsX11 && pWindow->m_iX11Type == 2) {
std::erase_if(m_dUnmanagedX11Windows, [&](std::unique_ptr<CWindow>& el) { return el.get() == pWindow; });
}
@@ -498,7 +498,8 @@ CWindow* CCompositor::vectorToWindow(const Vector2D& pos) {
// first loop over floating cuz they're above, m_vWindows should be sorted bottom->top, for tiled it doesn't matter.
for (auto w = m_vWindows.rbegin(); w != m_vWindows.rend(); w++) {
wlr_box box = {(*w)->m_vRealPosition.vec().x, (*w)->m_vRealPosition.vec().y, (*w)->m_vRealSize.vec().x, (*w)->m_vRealSize.vec().y};
- if (wlr_box_contains_point(&box, pos.x, pos.y) && (*w)->m_bIsMapped && (*w)->m_bIsFloating && isWorkspaceVisible((*w)->m_iWorkspaceID) && !(*w)->isHidden() && !(*w)->m_bPinned)
+ if (wlr_box_contains_point(&box, pos.x, pos.y) && (*w)->m_bIsMapped && (*w)->m_bIsFloating && isWorkspaceVisible((*w)->m_iWorkspaceID) && !(*w)->isHidden() &&
+ !(*w)->m_bPinned)
return w->get();
}
@@ -534,7 +535,7 @@ CWindow* CCompositor::vectorToWindowTiled(const Vector2D& pos) {
void findExtensionForVector2D(wlr_surface* surface, int x, int y, void* data) {
const auto DATA = (SExtensionFindingData*)data;
- wlr_box box = {DATA->origin.x + x, DATA->origin.y + y, surface->current.width, surface->current.height};
+ wlr_box box = {DATA->origin.x + x, DATA->origin.y + y, surface->current.width, surface->current.height};
if (wlr_box_contains_point(&box, DATA->vec.x, DATA->vec.y))
*DATA->found = surface;
@@ -547,13 +548,15 @@ CWindow* CCompositor::vectorToWindowIdeal(const Vector2D& pos) {
if (PMONITOR->specialWorkspaceID) {
for (auto w = m_vWindows.rbegin(); w != m_vWindows.rend(); w++) {
wlr_box box = {(*w)->m_vRealPosition.vec().x, (*w)->m_vRealPosition.vec().y, (*w)->m_vRealSize.vec().x, (*w)->m_vRealSize.vec().y};
- if ((*w)->m_bIsFloating && (*w)->m_iWorkspaceID == PMONITOR->specialWorkspaceID && (*w)->m_bIsMapped && wlr_box_contains_point(&box, pos.x, pos.y) && !(*w)->isHidden() && !(*w)->m_bX11ShouldntFocus)
+ if ((*w)->m_bIsFloating && (*w)->m_iWorkspaceID == PMONITOR->specialWorkspaceID && (*w)->m_bIsMapped && wlr_box_contains_point(&box, pos.x, pos.y) &&
+ !(*w)->isHidden() && !(*w)->m_bX11ShouldntFocus)
return (*w).get();
}
for (auto& w : m_vWindows) {
wlr_box box = {w->m_vPosition.x, w->m_vPosition.y, w->m_vSize.x, w->m_vSize.y};
- if (!w->m_bIsFloating && w->m_iWorkspaceID == PMONITOR->specialWorkspaceID && w->m_bIsMapped && wlr_box_contains_point(&box, pos.x, pos.y) && !w->isHidden() && !w->m_bX11ShouldntFocus)
+ if (!w->m_bIsFloating && w->m_iWorkspaceID == PMONITOR->specialWorkspaceID && w->m_bIsMapped && wlr_box_contains_point(&box, pos.x, pos.y) && !w->isHidden() &&
+ !w->m_bX11ShouldntFocus)
return w.get();
}
}
@@ -566,9 +569,9 @@ CWindow* CCompositor::vectorToWindowIdeal(const Vector2D& pos) {
return w->get();
if (!(*w)->m_bIsX11) {
- wlr_surface* resultSurf = nullptr;
- Vector2D origin = (*w)->m_vRealPosition.vec();
- SExtensionFindingData data = {origin, pos, &resultSurf};
+ wlr_surface* resultSurf = nullptr;
+ Vector2D origin = (*w)->m_vRealPosition.vec();
+ SExtensionFindingData data = {origin, pos, &resultSurf};
wlr_xdg_surface_for_each_popup_surface((*w)->m_uSurface.xdg, findExtensionForVector2D, &data);
if (resultSurf)
@@ -589,7 +592,7 @@ CWindow* CCompositor::vectorToWindowIdeal(const Vector2D& pos) {
if ((*w)->m_iX11Type == 2) {
// Override Redirect
- return g_pCompositor->m_pLastWindow; // we kinda trick everything here.
+ return g_pCompositor->m_pLastWindow; // we kinda trick everything here.
// TODO: this is wrong, we should focus the parent, but idk how to get it considering it's nullptr in most cases.
}
@@ -597,9 +600,9 @@ CWindow* CCompositor::vectorToWindowIdeal(const Vector2D& pos) {
}
if (!(*w)->m_bIsX11) {
- wlr_surface* resultSurf = nullptr;
- Vector2D origin =(*w)->m_vRealPosition.vec();
- SExtensionFindingData data = {origin, pos, &resultSurf};
+ wlr_surface* resultSurf = nullptr;
+ Vector2D origin = (*w)->m_vRealPosition.vec();
+ SExtensionFindingData data = {origin, pos, &resultSurf};
wlr_xdg_surface_for_each_popup_surface((*w)->m_uSurface.xdg, findExtensionForVector2D, &data);
if (resultSurf)
@@ -611,9 +614,9 @@ CWindow* CCompositor::vectorToWindowIdeal(const Vector2D& pos) {
// for windows, we need to check their extensions too, first.
for (auto& w : m_vWindows) {
if (!w->m_bIsX11 && !w->m_bIsFloating && w->m_bIsMapped && w->m_iWorkspaceID == PMONITOR->activeWorkspace && !w->isHidden() && !w->m_bX11ShouldntFocus) {
- wlr_surface* resultSurf = nullptr;
- Vector2D origin = w->m_vRealPosition.vec();
- SExtensionFindingData data = {origin, pos, &resultSurf};
+ wlr_surface* resultSurf = nullptr;
+ Vector2D origin = w->m_vRealPosition.vec();
+ SExtensionFindingData data = {origin, pos, &resultSurf};
wlr_xdg_surface_for_each_popup_surface(w->m_uSurface.xdg, findExtensionForVector2D, &data);
if (resultSurf)
@@ -622,7 +625,8 @@ CWindow* CCompositor::vectorToWindowIdeal(const Vector2D& pos) {
}
for (auto& w : m_vWindows) {
wlr_box box = {w->m_vPosition.x, w->m_vPosition.y, w->m_vSize.x, w->m_vSize.y};
- if (!w->m_bIsFloating && w->m_bIsMapped && wlr_box_contains_point(&box, pos.x, pos.y) && w->m_iWorkspaceID == PMONITOR->activeWorkspace && !w->isHidden() && !w->m_bX11ShouldntFocus)
+ if (!w->m_bIsFloating && w->m_bIsMapped && wlr_box_contains_point(&box, pos.x, pos.y) && w->m_iWorkspaceID == PMONITOR->activeWorkspace && !w->isHidden() &&
+ !w->m_bX11ShouldntFocus)
return w.get();
}
@@ -635,7 +639,8 @@ CWindow* CCompositor::windowFromCursor() {
if (PMONITOR->specialWorkspaceID) {
for (auto w = m_vWindows.rbegin(); w != m_vWindows.rend(); w++) {
wlr_box box = {(*w)->m_vRealPosition.vec().x, (*w)->m_vRealPosition.vec().y, (*w)->m_vRealSize.vec().x, (*w)->m_vRealSize.vec().y};
- if ((*w)->m_bIsFloating && (*w)->m_iWorkspaceID == PMONITOR->specialWorkspaceID && (*w)->m_bIsMapped && wlr_box_contains_point(&box, m_sWLRCursor->x, m_sWLRCursor->y) && !(*w)->isHidden())
+ if ((*w)->m_bIsFloating && (*w)->m_iWorkspaceID == PMONITOR->specialWorkspaceID && (*w)->m_bIsMapped &&
+ wlr_box_contains_point(&box, m_sWLRCursor->x, m_sWLRCursor->y) && !(*w)->isHidden())
return (*w).get();
}
@@ -656,7 +661,8 @@ CWindow* CCompositor::windowFromCursor() {
// first loop over floating cuz they're above, m_lWindows should be sorted bottom->top, for tiled it doesn't matter.
for (auto w = m_vWindows.rbegin(); w != m_vWindows.rend(); w++) {
wlr_box box = {(*w)->m_vRealPosition.vec().x, (*w)->m_vRealPosition.vec().y, (*w)->m_vRealSize.vec().x, (*w)->m_vRealSize.vec().y};
- if (wlr_box_contains_point(&box, m_sWLRCursor->x, m_sWLRCursor->y) && (*w)->m_bIsMapped && (*w)->m_bIsFloating && isWorkspaceVisible((*w)->m_iWorkspaceID) && !(*w)->m_bPinned)
+ if (wlr_box_contains_point(&box, m_sWLRCursor->x, m_sWLRCursor->y) && (*w)->m_bIsMapped && (*w)->m_bIsFloating && isWorkspaceVisible((*w)->m_iWorkspaceID) &&
+ !(*w)->m_bPinned)
return w->get();
}
@@ -678,7 +684,8 @@ CWindow* CCompositor::windowFloatingFromCursor() {
for (auto w = m_vWindows.rbegin(); w != m_vWindows.rend(); w++) {
wlr_box box = {(*w)->m_vRealPosition.vec().x, (*w)->m_vRealPosition.vec().y, (*w)->m_vRealSize.vec().x, (*w)->m_vRealSize.vec().y};
- if (wlr_box_contains_point(&box, m_sWLRCursor->x, m_sWLRCursor->y) && (*w)->m_bIsMapped && (*w)->m_bIsFloating && isWorkspaceVisible((*w)->m_iWorkspaceID) && !(*w)->isHidden() && !(*w)->m_bPinned)
+ if (wlr_box_contains_point(&box, m_sWLRCursor->x, m_sWLRCursor->y) && (*w)->m_bIsMapped && (*w)->m_bIsFloating && isWorkspaceVisible((*w)->m_iWorkspaceID) &&
+ !(*w)->isHidden() && !(*w)->m_bPinned)
return w->get();
}
@@ -694,7 +701,7 @@ wlr_surface* CCompositor::vectorWindowToSurface(const Vector2D& pos, CWindow* pW
const auto PSURFACE = pWindow->m_uSurface.xdg;
- double subx, suby;
+ double subx, suby;
// calc for oversized windows... fucking bullshit, again.
wlr_box geom;
@@ -736,7 +743,7 @@ void CCompositor::focusWindow(CWindow* pWindow, wlr_surface* pSurface) {
if (!pWindow || !windowValidMapped(pWindow)) {
const auto PLASTWINDOW = m_pLastWindow;
- m_pLastWindow = nullptr;
+ m_pLastWindow = nullptr;
if (windowValidMapped(PLASTWINDOW)) {
updateWindowAnimatedDecorationValues(PLASTWINDOW);
@@ -774,7 +781,7 @@ void CCompositor::focusWindow(CWindow* pWindow, wlr_surface* pSurface) {
g_pKeybindManager->changeworkspace("[internal]" + std::to_string(pWindow->m_iWorkspaceID));
const auto PLASTWINDOW = m_pLastWindow;
- m_pLastWindow = pWindow;
+ m_pLastWindow = pWindow;
// we need to make the PLASTWINDOW not equal to m_pLastWindow so that RENDERDATA is correct for an unfocused window
if (windowValidMapped(PLASTWINDOW)) {
@@ -821,8 +828,9 @@ void CCompositor::focusWindow(CWindow* pWindow, wlr_surface* pSurface) {
void CCompositor::focusSurface(wlr_surface* pSurface, CWindow* pWindowOwner) {
- if (m_sSeat.seat->keyboard_state.focused_surface == pSurface || (pWindowOwner && m_sSeat.seat->keyboard_state.focused_surface == g_pXWaylandManager->getWindowSurface(pWindowOwner)))
- return; // Don't focus when already focused on this.
+ if (m_sSeat.seat->keyboard_state.focused_surface == pSurface ||
+ (pWindowOwner && m_sSeat.seat->keyboard_state.focused_surface == g_pXWaylandManager->getWindowSurface(pWindowOwner)))
+ return; // Don't focus when already focused on this.
// Unfocus last surface if should
if (m_pLastFocus && !pWindowOwner)
@@ -835,7 +843,6 @@ void CCompositor::focusSurface(wlr_surface* pSurface, CWindow* pWindowOwner) {
return;
}
-
const auto KEYBOARD = wlr_seat_get_keyboard(m_sSeat.seat);
if (!KEYBOARD)
@@ -846,7 +853,7 @@ void CCompositor::focusSurface(wlr_surface* pSurface, CWindow* pWindowOwner) {
g_pInputManager->m_sIMERelay.onKeyboardFocus(pSurface);
wlr_seat_keyboard_focus_change_event event = {
- .seat = m_sSeat.seat,
+ .seat = m_sSeat.seat,
.old_surface = m_pLastFocus,
.new_surface = pSurface,
};
@@ -889,7 +896,8 @@ CWindow* CCompositor::getWindowForPopup(wlr_xdg_popup* popup) {
return nullptr;
}
-wlr_surface* CCompositor::vectorToLayerSurface(const Vector2D& pos, std::vector<std::unique_ptr<SLayerSurface>>* layerSurfaces, Vector2D* sCoords, SLayerSurface** ppLayerSurfaceFound) {
+wlr_surface* CCompositor::vectorToLayerSurface(const Vector2D& pos, std::vector<std::unique_ptr<SLayerSurface>>* layerSurfaces, Vector2D* sCoords,
+ SLayerSurface** ppLayerSurfaceFound) {
for (auto it = layerSurfaces->rbegin(); it != layerSurfaces->rend(); it++) {
if ((*it)->fadingOut || !(*it)->layerSurface || ((*it)->layerSurface && !(*it)->layerSurface->mapped) || (*it)->alpha.fl() == 0.f)
continue;
@@ -1096,7 +1104,7 @@ void CCompositor::cleanupFadingOut(const int& monid) {
Debug::log(LOG, "Cleanup: destroyed a window");
- glFlush(); // to free mem NOW.
+ glFlush(); // to free mem NOW.
return;
}
}
@@ -1123,7 +1131,7 @@ void CCompositor::cleanupFadingOut(const int& monid) {
}
if (!exists) {
- m_vSurfacesFadingOut.erase(std::remove(m_vSurfacesFadingOut.begin(), m_vSurfacesFadingOut.end(), ls));
+ std::erase(m_vSurfacesFadingOut, ls);
Debug::log(LOG, "Fading out a non-existent LS??");
@@ -1144,16 +1152,16 @@ void CCompositor::cleanupFadingOut(const int& monid) {
for (auto& m : m_vMonitors) {
for (auto& lsl : m->m_aLayerSurfaceLists) {
if (!lsl.empty() && std::find_if(lsl.begin(), lsl.end(), [&](std::unique_ptr<SLayerSurface>& other) { return other.get() == ls; }) != lsl.end()) {
- lsl.erase(std::remove_if(lsl.begin(), lsl.end(), [&](std::unique_ptr<SLayerSurface>& other) { return other.get() == ls; }));
+ std::erase_if(lsl, [&](std::unique_ptr<SLayerSurface>& other) { return other.get() == ls; });
}
}
}
- m_vSurfacesFadingOut.erase(std::remove(m_vSurfacesFadingOut.begin(), m_vSurfacesFadingOut.end(), ls));
+ std::erase(m_vSurfacesFadingOut, ls);
Debug::log(LOG, "Cleanup: destroyed a layersurface");
- glFlush(); // to free mem NOW.
+ glFlush(); // to free mem NOW.
return;
}
}
@@ -1163,7 +1171,7 @@ void CCompositor::addToFadingOutSafe(SLayerSurface* pLS) {
const auto FOUND = std::find_if(m_vSurfacesFadingOut.begin(), m_vSurfacesFadingOut.end(), [&](SLayerSurface* other) { return other == pLS; });
if (FOUND != m_vSurfacesFadingOut.end())
- return; // if it's already added, don't add it.
+ return; // if it's already added, don't add it.
m_vSurfacesFadingOut.emplace_back(pLS);
}
@@ -1172,7 +1180,7 @@ void CCompositor::addToFadingOutSafe(CWindow* pWindow) {
const auto FOUND = std::find_if(m_vWindowsFadingOut.begin(), m_vWindowsFadingOut.end(), [&](CWindow* other) { return other == pWindow; });
if (FOUND != m_vWindowsFadingOut.end())
- return; // if it's already added, don't add it.
+ return; // if it's already added, don't add it.
m_vWindowsFadingOut.emplace_back(pWindow);
}
@@ -1181,11 +1189,11 @@ CWindow* CCompositor::getWindowInDirection(CWindow* pWindow, char dir) {
const auto WINDOWIDEALBB = pWindow->getWindowIdealBoundingBoxIgnoreReserved();
- const auto POSA = Vector2D(WINDOWIDEALBB.x, WINDOWIDEALBB.y);
+ const auto POSA = Vector2D(WINDOWIDEALBB.x, WINDOWIDEALBB.y);
const auto SIZEA = Vector2D(WINDOWIDEALBB.width, WINDOWIDEALBB.height);
- auto longestIntersect = -1;
- CWindow* longestIntersectWindow = nullptr;
+ auto longestIntersect = -1;
+ CWindow* longestIntersectWindow = nullptr;
for (auto& w : m_vWindows) {
if (w.get() == pWindow || !w->m_bIsMapped || w->isHidden() || w->m_bIsFloating || !isWorkspaceVisible(w->m_iWorkspaceID))
@@ -1197,7 +1205,7 @@ CWindow* CCompositor::getWindowInDirection(CWindow* pWindow, char dir) {
const auto BWINDOWIDEALBB = w->getWindowIdealBoundingBoxIgnoreReserved();
- const auto POSB = Vector2D(BWINDOWIDEALBB.x, BWINDOWIDEALBB.y);
+ const auto POSB = Vector2D(BWINDOWIDEALBB.x, BWINDOWIDEALBB.y);
const auto SIZEB = Vector2D(BWINDOWIDEALBB.width, BWINDOWIDEALBB.height);
switch (dir) {
@@ -1205,7 +1213,7 @@ CWindow* CCompositor::getWindowInDirection(CWindow* pWindow, char dir) {
if (STICKS(POSA.x, POSB.x + SIZEB.x)) {
const auto INTERSECTLEN = std::max(0.0, std::min(POSA.y + SIZEA.y, POSB.y + SIZEB.y) - std::max(POSA.y, POSB.y));
if (INTERSECTLEN > longestIntersect) {
- longestIntersect = INTERSECTLEN;
+ longestIntersect = INTERSECTLEN;
longestIntersectWindow = w.get();
}
}
@@ -1214,7 +1222,7 @@ CWindow* CCompositor::getWindowInDirection(CWindow* pWindow, char dir) {
if (STICKS(POSA.x + SIZEA.x, POSB.x)) {
const auto INTERSECTLEN = std::max(0.0, std::min(POSA.y + SIZEA.y, POSB.y + SIZEB.y) - std::max(POSA.y, POSB.y));
if (INTERSECTLEN > longestIntersect) {
- longestIntersect = INTERSECTLEN;
+ longestIntersect = INTERSECTLEN;
longestIntersectWindow = w.get();
}
}
@@ -1224,7 +1232,7 @@ CWindow* CCompositor::getWindowInDirection(CWindow* pWindow, char dir) {
if (STICKS(POSA.y, POSB.y + SIZEB.y)) {
const auto INTERSECTLEN = std::max(0.0, std::min(POSA.x + SIZEA.x, POSB.x + SIZEB.x) - std::max(POSA.x, POSB.x));
if (INTERSECTLEN > longestIntersect) {
- longestIntersect = INTERSECTLEN;
+ longestIntersect = INTERSECTLEN;
longestIntersectWindow = w.get();
}
}
@@ -1234,7 +1242,7 @@ CWindow* CCompositor::getWindowInDirection(CWindow* pWindow, char dir) {
if (STICKS(POSA.y + SIZEA.y, POSB.y)) {
const auto INTERSECTLEN = std::max(0.0, std::min(POSA.x + SIZEA.x, POSB.x + SIZEB.x) - std::max(POSA.x, POSB.x));
if (INTERSECTLEN > longestIntersect) {
- longestIntersect = INTERSECTLEN;
+ longestIntersect = INTERSECTLEN;
longestIntersectWindow = w.get();
}
}
@@ -1328,9 +1336,7 @@ CWorkspace* CCompositor::getWorkspaceByString(const std::string& str) {
try {
std::string name = "";
return getWorkspaceByID(getWorkspaceIDFromString(str, name));
- } catch (std::exception& e) {
- Debug::log(ERR, "Error in getWorkspaceByString, invalid id");
- }
+ } catch (std::exception& e) { Debug::log(ERR, "Error in getWorkspaceByString, invalid id"); }
return nullptr;
}
@@ -1345,7 +1351,7 @@ bool CCompositor::isPointOnAnyMonitor(const Vector2D& point) {
}
void checkFocusSurfaceIter(wlr_surface* pSurface, int x, int y, void* data) {
- auto pair = (std::pair<wlr_surface*, bool>*)data;
+ auto pair = (std::pair<wlr_surface*, bool>*)data;
pair->second = pair->second || pSurface == pair->first;
}
@@ -1375,24 +1381,24 @@ CWindow* CCompositor::getConstraintWindow(SMouse* pMouse) {
}
CMonitor* CCompositor::getMonitorInDirection(const char& dir) {
- const auto POSA = m_pLastMonitor->vecPosition;
+ const auto POSA = m_pLastMonitor->vecPosition;
const auto SIZEA = m_pLastMonitor->vecSize;
- auto longestIntersect = -1;
- CMonitor* longestIntersectMonitor = nullptr;
+ auto longestIntersect = -1;
+ CMonitor* longestIntersectMonitor = nullptr;
for (auto& m : m_vMonitors) {
if (m.get() == m_pLastMonitor)
continue;
- const auto POSB = m->vecPosition;
+ const auto POSB = m->vecPosition;
const auto SIZEB = m->vecSize;
switch (dir) {
case 'l':
if (STICKS(POSA.x, POSB.x + SIZEB.x)) {
const auto INTERSECTLEN = std::max(0.0, std::min(POSA.y + SIZEA.y, POSB.y + SIZEB.y) - std::max(POSA.y, POSB.y));
if (INTERSECTLEN > longestIntersect) {
- longestIntersect = INTERSECTLEN;
+ longestIntersect = INTERSECTLEN;
longestIntersectMonitor = m.get();
}
}
@@ -1401,7 +1407,7 @@ CMonitor* CCompositor::getMonitorInDirection(const char& dir) {
if (STICKS(POSA.x + SIZEA.x, POSB.x)) {
const auto INTERSECTLEN = std::max(0.0, std::min(POSA.y + SIZEA.y, POSB.y + SIZEB.y) - std::max(POSA.y, POSB.y));
if (INTERSECTLEN > longestIntersect) {
- longestIntersect = INTERSECTLEN;
+ longestIntersect = INTERSECTLEN;
longestIntersectMonitor = m.get();
}
}
@@ -1411,7 +1417,7 @@ CMonitor* CCompositor::getMonitorInDirection(const char& dir) {
if (STICKS(POSA.y, POSB.y + SIZEB.y)) {
const auto INTERSECTLEN = std::max(0.0, std::min(POSA.x + SIZEA.x, POSB.x + SIZEB.x) - std::max(POSA.x, POSB.x));
if (INTERSECTLEN > longestIntersect) {
- longestIntersect = INTERSECTLEN;
+ longestIntersect = INTERSECTLEN;
longestIntersectMonitor = m.get();
}
}
@@ -1421,7 +1427,7 @@ CMonitor* CCompositor::getMonitorInDirection(const char& dir) {
if (STICKS(POSA.y + SIZEA.y, POSB.y)) {
const auto INTERSECTLEN = std::max(0.0, std::min(POSA.x + SIZEA.x, POSB.x + SIZEB.x) - std::max(POSA.x, POSB.x));
if (INTERSECTLEN > longestIntersect) {
- longestIntersect = INTERSECTLEN;
+ longestIntersect = INTERSECTLEN;
longestIntersectMonitor = m.get();
}
}
@@ -1446,22 +1452,21 @@ void CCompositor::updateAllWindowsAnimatedDecorationValues() {
void CCompositor::updateWindowAnimatedDecorationValues(CWindow* pWindow) {
// optimization
- static auto *const ACTIVECOL = (CGradientValueData*)g_pConfigManager->getConfigValuePtr("general:col.active_border")->data.get();
- static auto *const INACTIVECOL = (CGradientValueData*)g_pConfigManager->getConfigValuePtr("general:col.inactive_border")->data.get();
- static auto *const PINACTIVEALPHA = &g_pConfigManager->getConfigValuePtr("decoration:inactive_opacity")->floatValue;
- static auto *const PACTIVEALPHA = &g_pConfigManager->getConfigValuePtr("decoration:active_opacity")->floatValue;
- static auto *const PFULLSCREENALPHA = &g_pConfigManager->getConfigValuePtr("decoration:fullscreen_opacity")->floatValue;
- static auto *const PSHADOWCOL = &g_pConfigManager->getConfigValuePtr("decoration:col.shadow")->intValue;
- static auto *const PSHADOWCOLINACTIVE = &g_pConfigManager->getConfigValuePtr("decoration:col.shadow_inactive")->intValue;
- static auto *const PDIMSTRENGTH = &g_pConfigManager->getConfigValuePtr("decoration:dim_strength")->floatValue;
-
- auto setBorderColor = [&] (CGradientValueData grad) -> void {
-
+ static auto* const ACTIVECOL = (CGradientValueData*)g_pConfigManager->getConfigValuePtr("general:col.active_border")->data.get();
+ static auto* const INACTIVECOL = (CGradientValueData*)g_pConfigManager->getConfigValuePtr("general:col.inactive_border")->data.get();
+ static auto* const PINACTIVEALPHA = &g_pConfigManager->getConfigValuePtr("decoration:inactive_opacity")->floatValue;
+ static auto* const PACTIVEALPHA = &g_pConfigManager->getConfigValuePtr("decoration:active_opacity")->floatValue;
+ static auto* const PFULLSCREENALPHA = &g_pConfigManager->getConfigValuePtr("decoration:fullscreen_opacity")->floatValue;
+ static auto* const PSHADOWCOL = &g_pConfigManager->getConfigValuePtr("decoration:col.shadow")->intValue;
+ static auto* const PSHADOWCOLINACTIVE = &g_pConfigManager->getConfigValuePtr("decoration:col.shadow_inactive")->intValue;
+ static auto* const PDIMSTRENGTH = &g_pConfigManager->getConfigValuePtr("decoration:dim_strength")->floatValue;
+
+ auto setBorderColor = [&](CGradientValueData grad) -> void {
if (grad == pWindow->m_cRealBorderColor)
return;
pWindow->m_cRealBorderColorPrevious = pWindow->m_cRealBorderColor;
- pWindow->m_cRealBorderColor = grad;
+ pWindow->m_cRealBorderColor = grad;
pWindow->m_fBorderAnimationProgress.setValueAndWarp(0.f);
pWindow->m_fBorderAnimationProgress = 1.f;
};
@@ -1471,10 +1476,11 @@ void CCompositor::updateWindowAnimatedDecorationValues(CWindow* pWindow) {
if (RENDERDATA.isBorderColor)
setBorderColor(RENDERDATA.borderColor * (1.f / 255.f));
else
- setBorderColor(pWindow == m_pLastWindow ?
- (pWindow->m_sSpecialRenderData.activeBorderColor >= 0 ? CGradientValueData(CColor(pWindow->m_sSpecialRenderData.activeBorderColor) * (1.f / 255.f)) : *ACTIVECOL) :
- (pWindow->m_sSpecialRenderData.inactiveBorderColor >= 0 ? CGradientValueData(CColor(pWindow->m_sSpecialRenderData.inactiveBorderColor) * (1.f / 255.f)) : *INACTIVECOL));
-
+ setBorderColor(
+ pWindow == m_pLastWindow ?
+ (pWindow->m_sSpecialRenderData.activeBorderColor >= 0 ? CGradientValueData(CColor(pWindow->m_sSpecialRenderData.activeBorderColor) * (1.f / 255.f)) : *ACTIVECOL) :
+ (pWindow->m_sSpecialRenderData.inactiveBorderColor >= 0 ? CGradientValueData(CColor(pWindow->m_sSpecialRenderData.inactiveBorderColor) * (1.f / 255.f)) :
+ *INACTIVECOL));
// opacity
const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(pWindow->m_iWorkspaceID);
@@ -1482,9 +1488,13 @@ void CCompositor::updateWindowAnimatedDecorationValues(CWindow* pWindow) {
pWindow->m_fActiveInactiveAlpha = *PFULLSCREENALPHA;
} else {
if (pWindow == m_pLastWindow)
- pWindow->m_fActiveInactiveAlpha = pWindow->m_sSpecialRenderData.alphaOverride ? pWindow->m_sSpecialRenderData.alpha : pWindow->m_sSpecialRenderData.alpha * *PACTIVEALPHA;
+ pWindow->m_fActiveInactiveAlpha =
+ pWindow->m_sSpecialRenderData.alphaOverride ? pWindow->m_sSpecialRenderData.alpha : pWindow->m_sSpecialRenderData.alpha * *PACTIVEALPHA;
else
- pWindow->m_fActiveInactiveAlpha = pWindow->m_sSpecialRenderData.alphaInactive != -1 ? (pWindow->m_sSpecialRenderData.alphaInactiveOverride ? pWindow->m_sSpecialRenderData.alphaInactive : pWindow->m_sSpecialRenderData.alphaInactive * *PINACTIVEALPHA) : *PINACTIVEALPHA;
+ pWindow->m_fActiveInactiveAlpha = pWindow->m_sSpecialRenderData.alphaInactive != -1 ?
+ (pWindow->m_sSpecialRenderData.alphaInactiveOverride ? pWindow->m_sSpecialRenderData.alphaInactive :
+ pWindow->m_sSpecialRenderData.alphaInactive * *PINACTIVEALPHA) :
+ *PINACTIVEALPHA;
}
// dim
@@ -1534,7 +1544,7 @@ void CCompositor::swapActiveWorkspaces(CMonitor* pMonitorA, CMonitor* pMonitorB)
if (w->m_bIsFullscreen) {
w->m_vRealPosition = pMonitorB->vecPosition;
- w->m_vRealSize = pMonitorB->vecSize;
+ w->m_vRealSize = pMonitorB->vecSize;
}
w->updateToplevel();
@@ -1554,7 +1564,7 @@ void CCompositor::swapActiveWorkspaces(CMonitor* pMonitorA, CMonitor* pMonitorB)
if (w->m_bIsFullscreen) {
w->m_vRealPosition = pMonitorA->vecPosition;
- w->m_vRealSize = pMonitorA->vecSize;
+ w->m_vRealSize = pMonitorA->vecSize;
}
w->updateToplevel();
@@ -1596,7 +1606,7 @@ CMonitor* CCompositor::getMonitorFromString(const std::string& name) {
}
int offsetLeft = std::stoi(OFFSET);
- offsetLeft = offsetLeft < 0 ? -((-offsetLeft) % m_vMonitors.size()) : offsetLeft % m_vMonitors.size();
+ offsetLeft = offsetLeft < 0 ? -((-offsetLeft) % m_vMonitors.size()) : offsetLeft % m_vMonitors.size();
int currentPlace = 0;
for (int i = 0; i < (int)m_vMonitors.size(); i++) {
@@ -1683,7 +1693,10 @@ void CCompositor::moveWorkspaceToMonitor(CWorkspace* pWorkspace, CMonitor* pMoni
if (nextWorkspaceOnMonitorID == -1) {
nextWorkspaceOnMonitorID = 1;
- while (getWorkspaceByID(nextWorkspaceOnMonitorID) || [&]() -> bool { const auto B = g_pConfigManager->getBoundMonitorForWS(std::to_string(nextWorkspaceOnMonitorID)); return B && B != POLDMON; }())
+ while (getWorkspaceByID(nextWorkspaceOnMonitorID) || [&]() -> bool {
+ const auto B = g_pConfigManager->getBoundMonitorForWS(std::to_string(nextWorkspaceOnMonitorID));
+ return B && B != POLDMON;
+ }())
nextWorkspaceOnMonitorID++;
Debug::log(LOG, "moveWorkspaceToMonitor: Plugging gap with new %d", nextWorkspaceOnMonitorID);
@@ -1710,7 +1723,7 @@ void CCompositor::moveWorkspaceToMonitor(CWorkspace* pWorkspace, CMonitor* pMoni
if (w->m_bIsFullscreen) {
w->m_vRealPosition = pMonitor->vecPosition;
- w->m_vRealSize = pMonitor->vecSize;
+ w->m_vRealSize = pMonitor->vecSize;
}
}
@@ -1729,7 +1742,8 @@ void CCompositor::moveWorkspaceToMonitor(CWorkspace* pWorkspace, CMonitor* pMoni
pWorkspace->startAnim(true, true, true);
- wlr_cursor_warp(m_sWLRCursor, m_sSeat.mouse->mouse, pMonitor->vecPosition.x + pMonitor->vecTransformedSize.x / 2, pMonitor->vecPosition.y + pMonitor->vecTransformedSize.y / 2);
+ wlr_cursor_warp(m_sWLRCursor, m_sSeat.mouse->mouse, pMonitor->vecPosition.x + pMonitor->vecTransformedSize.x / 2,
+ pMonitor->vecPosition.y + pMonitor->vecTransformedSize.y / 2);
}
// finalize
@@ -1742,7 +1756,7 @@ void CCompositor::moveWorkspaceToMonitor(CWorkspace* pWorkspace, CMonitor* pMoni
}
bool CCompositor::workspaceIDOutOfBounds(const int& id) {
- int lowestID = 99999;
+ int lowestID = 99999;
int highestID = -99999;
for (auto& w : m_vWorkspaces) {
@@ -1855,16 +1869,16 @@ void CCompositor::scheduleFrameForMonitor(CMonitor* pMonitor) {
CWindow* CCompositor::getWindowByRegex(const std::string& regexp) {
eFocusWindowMode mode = MODE_CLASS_REGEX;
- std::regex regexCheck(regexp);
- std::string matchCheck;
+ std::regex regexCheck(regexp);
+ std::string matchCheck;
if (regexp.find("title:") == 0) {
- mode = MODE_TITLE_REGEX;
+ mode = MODE_TITLE_REGEX;
regexCheck = std::regex(regexp.substr(6));
} else if (regexp.find("address:") == 0) {
- mode = MODE_ADDRESS;
+ mode = MODE_ADDRESS;
matchCheck = regexp.substr(8);
} else if (regexp.find("pid:") == 0) {
- mode = MODE_PID;
+ mode = MODE_PID;
matchCheck = regexp.substr(4);
}
@@ -1897,8 +1911,7 @@ CWindow* CCompositor::getWindowByRegex(const std::string& regexp) {
continue;
break;
}
- default:
- break;
+ default: break;
}
return w.get();
@@ -1912,7 +1925,7 @@ void CCompositor::warpCursorTo(const Vector2D& pos) {
// warpCursorTo should only be used for warps that
// should be disabled with no_cursor_warps
- static auto *const PNOWARPS = &g_pConfigManager->getConfigValuePtr("general:no_cursor_warps")->intValue;
+ static auto* const PNOWARPS = &g_pConfigManager->getConfigValuePtr("general:no_cursor_warps")->intValue;
if (*PNOWARPS)
return;
@@ -2015,8 +2028,8 @@ bool CCompositor::cursorOnReservedArea() {
}
CWorkspace* CCompositor::createNewWorkspace(const int& id, const int& monid, const std::string& name) {
- const auto NAME = name == "" ? std::to_string(id) : name;
- auto monID = monid;
+ const auto NAME = name == "" ? std::to_string(id) : name;
+ auto monID = monid;
// check if bound
if (const auto PMONITOR = g_pConfigManager->getBoundMonitorForWS(NAME); PMONITOR) {
@@ -2031,7 +2044,7 @@ CWorkspace* CCompositor::createNewWorkspace(const int& id, const int& monid, con
if (!SPECIAL)
wlr_ext_workspace_handle_v1_set_name(PWORKSPACE->m_pWlrHandle, NAME.c_str());
- PWORKSPACE->m_iID = id;
+ PWORKSPACE->m_iID = id;
PWORKSPACE->m_iMonitorID = monID;
return PWORKSPACE;
diff --git a/src/Compositor.hpp b/src/Compositor.hpp
index c4c96fae..e12caec5 100644
--- a/src/Compositor.hpp
+++ b/src/Compositor.hpp
@@ -25,180 +25,177 @@
#include "hyprerror/HyprError.hpp"
class CCompositor {
-public:
+ public:
CCompositor();
~CCompositor();
// ------------------ WLR BASICS ------------------ //
- wl_display* m_sWLDisplay;
- wl_event_loop* m_sWLEventLoop;
- wlr_backend* m_sWLRBackend;
- wlr_session* m_sWLRSession;
- wlr_renderer* m_sWLRRenderer;
- wlr_allocator* m_sWLRAllocator;
- wlr_compositor* m_sWLRCompositor;
- wlr_subcompositor* m_sWLRSubCompositor;
- wlr_data_device_manager* m_sWLRDataDevMgr;
- wlr_drm* m_sWRLDRM;
- wlr_drm_lease_v1_manager* m_sWRLDRMLeaseMgr;
- wlr_xdg_activation_v1* m_sWLRXDGActivation;
- wlr_output_layout* m_sWLROutputLayout;
- wlr_idle* m_sWLRIdle;
- wlr_layer_shell_v1* m_sWLRLayerShell;
- wlr_xdg_shell* m_sWLRXDGShell;
- wlr_cursor* m_sWLRCursor;
- wlr_xcursor_manager* m_sWLRXCursorMgr;
- wlr_virtual_keyboard_manager_v1* m_sWLRVKeyboardMgr;
- wlr_output_manager_v1* m_sWLROutputMgr;
- wlr_presentation* m_sWLRPresentation;
- wlr_scene* m_sWLRScene;
- wlr_input_inhibit_manager* m_sWLRInhibitMgr;
+ wl_display* m_sWLDisplay;
+ wl_event_loop* m_sWLEventLoop;
+ wlr_backend* m_sWLRBackend;
+ wlr_session* m_sWLRSession;
+ wlr_renderer* m_sWLRRenderer;
+ wlr_allocator* m_sWLRAllocator;
+ wlr_compositor* m_sWLRCompositor;
+ wlr_subcompositor* m_sWLRSubCompositor;
+ wlr_data_device_manager* m_sWLRDataDevMgr;
+ wlr_drm* m_sWRLDRM;
+ wlr_drm_lease_v1_manager* m_sWRLDRMLeaseMgr;
+ wlr_xdg_activation_v1* m_sWLRXDGActivation;
+ wlr_output_layout* m_sWLROutputLayout;
+ wlr_idle* m_sWLRIdle;
+ wlr_layer_shell_v1* m_sWLRLayerShell;
+ wlr_xdg_shell* m_sWLRXDGShell;
+ wlr_cursor* m_sWLRCursor;
+ wlr_xcursor_manager* m_sWLRXCursorMgr;
+ wlr_virtual_keyboard_manager_v1* m_sWLRVKeyboardMgr;
+ wlr_output_manager_v1* m_sWLROutputMgr;
+ wlr_presentation* m_sWLRPresentation;
+ wlr_scene* m_sWLRScene;
+ wlr_input_inhibit_manager* m_sWLRInhibitMgr;
wlr_keyboard_shortcuts_inhibit_manager_v1* m_sWLRKbShInhibitMgr;
- wlr_egl* m_sWLREGL;
- int m_iDRMFD;
- wlr_ext_workspace_manager_v1* m_sWLREXTWorkspaceMgr;
- wlr_pointer_constraints_v1* m_sWLRPointerConstraints;
- wlr_relative_pointer_manager_v1* m_sWLRRelPointerMgr;
- wlr_server_decoration_manager* m_sWLRServerDecoMgr;
- wlr_xdg_decoration_manager_v1* m_sWLRXDGDecoMgr;
- wlr_virtual_pointer_manager_v1* m_sWLRVirtPtrMgr;
- wlr_foreign_toplevel_manager_v1* m_sWLRToplevelMgr;
- wlr_tablet_manager_v2* m_sWLRTabletManager;
- wlr_xdg_foreign_registry* m_sWLRForeignRegistry;
- wlr_idle_inhibit_manager_v1* m_sWLRIdleInhibitMgr;
- wlr_pointer_gestures_v1* m_sWLRPointerGestures;
- wlr_output_power_manager_v1* m_sWLROutputPowerMgr;
- wlr_input_method_manager_v2* m_sWLRIMEMgr;
- wlr_text_input_manager_v3* m_sWLRTextInputMgr;
- wlr_xdg_activation_v1* m_sWLRActivation;
- wlr_linux_dmabuf_v1* m_sWLRLinuxDMABuf;
- wlr_backend* m_sWLRHeadlessBackend;
+ wlr_egl* m_sWLREGL;
+ int m_iDRMFD;
+ wlr_ext_workspace_manager_v1* m_sWLREXTWorkspaceMgr;
+ wlr_pointer_constraints_v1* m_sWLRPointerConstraints;
+ wlr_relative_pointer_manager_v1* m_sWLRRelPointerMgr;
+ wlr_server_decoration_manager* m_sWLRServerDecoMgr;
+ wlr_xdg_decoration_manager_v1* m_sWLRXDGDecoMgr;
+ wlr_virtual_pointer_manager_v1* m_sWLRVirtPtrMgr;
+ wlr_foreign_toplevel_manager_v1* m_sWLRToplevelMgr;
+ wlr_tablet_manager_v2* m_sWLRTabletManager;
+ wlr_xdg_foreign_registry* m_sWLRForeignRegistry;
+ wlr_idle_inhibit_manager_v1* m_sWLRIdleInhibitMgr;
+ wlr_pointer_gestures_v1* m_sWLRPointerGestures;
+ wlr_output_power_manager_v1* m_sWLROutputPowerMgr;
+ wlr_input_method_manager_v2* m_sWLRIMEMgr;
+ wlr_text_input_manager_v3* m_sWLRTextInputMgr;
+ wlr_xdg_activation_v1* m_sWLRActivation;
+ wlr_linux_dmabuf_v1* m_sWLRLinuxDMABuf;
+ wlr_backend* m_sWLRHeadlessBackend;
// ------------------------------------------------- //
+ std::string m_szWLDisplaySocket = "";
+ std::string m_szInstanceSignature = "";
+ std::string m_szCurrentSplash = "error";
- std::string m_szWLDisplaySocket = "";
- std::string m_szInstanceSignature = "";
- std::string m_szCurrentSplash = "error";
+ std::vector<std::shared_ptr<CMonitor>> m_vMonitors;
+ std::vector<std::shared_ptr<CMonitor>> m_vRealMonitors; // for all monitors, even those turned off
+ std::vector<std::unique_ptr<CWindow>> m_vWindows;
+ std::deque<std::unique_ptr<CWindow>> m_dUnmanagedX11Windows;
+ std::vector<std::unique_ptr<SXDGPopup>> m_vXDGPopups;
+ std::vector<std::unique_ptr<CWorkspace>> m_vWorkspaces;
+ std::vector<std::unique_ptr<SSubsurface>> m_vSubsurfaces;
+ std::vector<CWindow*> m_vWindowsFadingOut;
+ std::vector<SLayerSurface*> m_vSurfacesFadingOut;
- std::vector<std::shared_ptr<CMonitor>> m_vMonitors;
- std::vector<std::shared_ptr<CMonitor>> m_vRealMonitors; // for all monitors, even those turned off
- std::vector<std::unique_ptr<CWindow>> m_vWindows;
- std::deque<std::unique_ptr<CWindow>> m_dUnmanagedX11Windows;
- std::vector<std::unique_ptr<SXDGPopup>> m_vXDGPopups;
- std::vector<std::unique_ptr<CWorkspace>> m_vWorkspaces;
- std::vector<std::unique_ptr<SSubsurface>> m_vSubsurfaces;
- std::vector<CWindow*> m_vWindowsFadingOut;
- std::vector<SLayerSurface*> m_vSurfacesFadingOut;
+ void startCompositor();
+ void cleanup();
- void startCompositor();
- void cleanup();
+ wlr_surface* m_pLastFocus = nullptr;
+ CWindow* m_pLastWindow = nullptr;
+ CMonitor* m_pLastMonitor = nullptr;
- wlr_surface* m_pLastFocus = nullptr;
- CWindow* m_pLastWindow = nullptr;
- CMonitor* m_pLastMonitor = nullptr;
+ SSeat m_sSeat;
- SSeat m_sSeat;
-
- bool m_bReadyToProcess = false;
- bool m_bSessionActive = true;
- bool m_bDPMSStateON = true;
- bool m_bUnsafeState = false; // unsafe state is when there is no monitors.
- bool m_bIsShuttingDown = false;
- std::deque<uint64_t> m_dProcessPIDsOnShutdown; // stores PIDs of apps to kill later when shutting down
+ bool m_bReadyToProcess = false;
+ bool m_bSessionActive = true;
+ bool m_bDPMSStateON = true;
+ bool m_bUnsafeState = false; // unsafe state is when there is no monitors.
+ bool m_bIsShuttingDown = false;
+ std::deque<uint64_t> m_dProcessPIDsOnShutdown; // stores PIDs of apps to kill later when shutting down
// ------------------------------------------------- //
- CMonitor* getMonitorFromID(const int&);
- CMonitor* getMonitorFromName(const std::string&);
- CMonitor* getMonitorFromCursor();
- CMonitor* getMonitorFromVector(const Vector2D&);
- void removeWindowFromVectorSafe(CWindow*);
- void focusWindow(CWindow*, wlr_surface* pSurface = nullptr);
- void focusSurface(wlr_surface*, CWindow* pWindowOwner = nullptr);
- bool windowExists(CWindow*);
- bool windowValidMapped(CWindow*);
- CWindow* vectorToWindow(const Vector2D&);
- CWindow* vectorToWindowIdeal(const Vector2D&); // used only for finding a window to focus on, basically a "findFocusableWindow"
- CWindow* vectorToWindowTiled(const Vector2D&);
- wlr_surface* vectorToLayerSurface(const Vector2D&, std::vector<std::unique_ptr<SLayerSurface>>*, Vector2D*, SLayerSurface**);
- wlr_surface* vectorWindowToSurface(const Vector2D&, CWindow*, Vector2D& sl);
- CWindow* windowFromCursor();
- CWindow* windowFloatingFromCursor();
- CMonitor* getMonitorFromOutput(wlr_output*);
- CWindow* getWindowForPopup(wlr_xdg_popup*);
- CWindow* getWindowFromSurface(wlr_surface*);
- CWindow* getWindowFromHandle(uint32_t);
- CWindow* getWindowFromZWLRHandle(wl_resource*);
- bool isWorkspaceVisible(const int&);
- CWorkspace* getWorkspaceByID(const int&);
- CWorkspace* getWorkspaceByName(const std::string&);
- CWorkspace* getWorkspaceByString(const std::string&);
- void sanityCheckWorkspaces();
- void updateWorkspaceWindowDecos(const int&);
- int getWindowsOnWorkspace(const int&);
- CWindow* getFirstWindowOnWorkspace(const int&);
- CWindow* getFullscreenWindowOnWorkspace(const int&);
- bool doesSeatAcceptInput(wlr_surface*);
- bool isWindowActive(CWindow*);
- void moveWindowToTop(CWindow*);
- void cleanupFadingOut(const int& monid);
- CWindow* getWindowInDirection(CWindow*, char);
- void deactivateAllWLRWorkspaces(wlr_ext_workspace_handle_v1* exclude = nullptr);
- CWindow* getNextWindowOnWorkspace(CWindow*, bool focusableOnly = false);
- CWindow* getPrevWindowOnWorkspace(CWindow*, bool focusableOnly = false);
- int getNextAvailableNamedWorkspace();
- bool isPointOnAnyMonitor(const Vector2D&);
- CWindow* getConstraintWindow(SMouse*);
- CMonitor* getMonitorInDirection(const char&);
- void updateAllWindowsAnimatedDecorationValues();
- void updateWindowAnimatedDecorationValues(CWindow*);
- int getNextAvailableMonitorID();
- void moveWorkspaceToMonitor(CWorkspace*, CMonitor*);
- void swapActiveWorkspaces(CMonitor*, CMonitor*);
- CMonitor* getMonitorFromString(const std::string&);
- bool workspaceIDOutOfBounds(const int&);
- void setWindowFullscreen(CWindow*, bool, eFullscreenMode);
- void moveUnmanagedX11ToWindows(CWindow*);
- CWindow* getX11Parent(CWindow*);
- void scheduleFrameForMonitor(CMonitor*);
- void addToFadingOutSafe(SLayerSurface*);
- void addToFadingOutSafe(CWindow*);
- CWindow* getWindowByRegex(const std::string&);
- void warpCursorTo(const Vector2D&);
- SLayerSurface* getLayerSurfaceFromWlr(wlr_layer_surface_v1*);
- SLayerSurface* getLayerSurfaceFromSurface(wlr_surface*);
- void closeWindow(CWindow*);
- Vector2D parseWindowVectorArgsRelative(const std::string&, const Vector2D&);
- void forceReportSizesToWindowsOnWorkspace(const int&);
- bool cursorOnReservedArea();
- CWorkspace* createNewWorkspace(const int&, const int&, const std::string& name = ""); // will be deleted next frame if left empty and unfocused!
- void setActiveMonitor(CMonitor*);
- bool isWorkspaceSpecial(const int&);
- int getNewSpecialID();
-
- std::string explicitConfigPath;
-
-private:
- void initAllSignals();
- void setRandomSplash();
-
- uint64_t m_iHyprlandPID = 0;
+ CMonitor* getMonitorFromID(const int&);
+ CMonitor* getMonitorFromName(const std::string&);
+ CMonitor* getMonitorFromCursor();
+ CMonitor* getMonitorFromVector(const Vector2D&);
+ void removeWindowFromVectorSafe(CWindow*);
+ void focusWindow(CWindow*, wlr_surface* pSurface = nullptr);
+ void focusSurface(wlr_surface*, CWindow* pWindowOwner = nullptr);
+ bool windowExists(CWindow*);
+ bool windowValidMapped(CWindow*);
+ CWindow* vectorToWindow(const Vector2D&);
+ CWindow* vectorToWindowIdeal(const Vector2D&); // used only for finding a window to focus on, basically a "findFocusableWindow"
+ CWindow* vectorToWindowTiled(const Vector2D&);
+ wlr_surface* vectorToLayerSurface(const Vector2D&, std::vector<std::unique_ptr<SLayerSurface>>*, Vector2D*, SLayerSurface**);
+ wlr_surface* vectorWindowToSurface(const Vector2D&, CWindow*, Vector2D& sl);
+ CWindow* windowFromCursor();
+ CWindow* windowFloatingFromCursor();
+ CMonitor* getMonitorFromOutput(wlr_output*);
+ CWindow* getWindowForPopup(wlr_xdg_popup*);
+ CWindow* getWindowFromSurface(wlr_surface*);
+ CWindow* getWindowFromHandle(uint32_t);
+ CWindow* getWindowFromZWLRHandle(wl_resource*);
+ bool isWorkspaceVisible(const int&);
+ CWorkspace* getWorkspaceByID(const int&);
+ CWorkspace* getWorkspaceByName(const std::string&);
+ CWorkspace* getWorkspaceByString(const std::string&);
+ void sanityCheckWorkspaces();
+ void updateWorkspaceWindowDecos(const int&);
+ int getWindowsOnWorkspace(const int&);
+ CWindow* getFirstWindowOnWorkspace(const int&);
+ CWindow* getFullscreenWindowOnWorkspace(const int&);
+ bool doesSeatAcceptInput(wlr_surface*);
+ bool isWindowActive(CWindow*);
+ void moveWindowToTop(CWindow*);
+ void cleanupFadingOut(const int& monid);
+ CWindow* getWindowInDirection(CWindow*, char);
+ void deactivateAllWLRWorkspaces(wlr_ext_workspace_handle_v1* exclude = nullptr);
+ CWindow* getNextWindowOnWorkspace(CWindow*, bool focusableOnly = false);
+ CWindow* getPrevWindowOnWorkspace(CWindow*, bool focusableOnly = false);
+ int getNextAvailableNamedWorkspace();
+ bool isPointOnAnyMonitor(const Vector2D&);
+ CWindow* getConstraintWindow(SMouse*);
+ CMonitor* getMonitorInDirection(const char&);
+ void updateAllWindowsAnimatedDecorationValues();
+ void updateWindowAnimatedDecorationValues(CWindow*);
+ int getNextAvailableMonitorID();
+ void moveWorkspaceToMonitor(CWorkspace*, CMonitor*);
+ void swapActiveWorkspaces(CMonitor*, CMonitor*);
+ CMonitor* getMonitorFromString(const std::string&);
+ bool workspaceIDOutOfBounds(const int&);
+ void setWindowFullscreen(CWindow*, bool, eFullscreenMode);
+ void moveUnmanagedX11ToWindows(CWindow*);
+ CWindow* getX11Parent(CWindow*);
+ void scheduleFrameForMonitor(CMonitor*);
+ void addToFadingOutSafe(SLayerSurface*);
+ void addToFadingOutSafe(CWindow*);
+ CWindow* getWindowByRegex(const std::string&);
+ void warpCursorTo(const Vector2D&);
+ SLayerSurface* getLayerSurfaceFromWlr(wlr_layer_surface_v1*);
+ SLayerSurface* getLayerSurfaceFromSurface(wlr_surface*);
+ void closeWindow(CWindow*);
+ Vector2D parseWindowVectorArgsRelative(const std::string&, const Vector2D&);
+ void forceReportSizesToWindowsOnWorkspace(const int&);
+ bool cursorOnReservedArea();
+ CWorkspace* createNewWorkspace(const int&, const int&, const std::string& name = ""); // will be deleted next frame if left empty and unfocused!
+ void setActiveMonitor(CMonitor*);
+ bool isWorkspaceSpecial(const int&);
+ int getNewSpecialID();
+
+ std::string explicitConfigPath;
+
+ private:
+ void initAllSignals();
+ void setRandomSplash();
+
+ uint64_t m_iHyprlandPID = 0;
};
-
inline std::unique_ptr<CCompositor> g_pCompositor;
// For XWayland
-inline std::map<std::string, xcb_atom_t> HYPRATOMS = {
- HYPRATOM("_NET_WM_WINDOW_TYPE"),
- HYPRATOM("_NET_WM_WINDOW_TYPE_NORMAL"),
- HYPRATOM("_NET_WM_WINDOW_TYPE_DOCK"),
- HYPRATOM("_NET_WM_WINDOW_TYPE_DIALOG"),
- HYPRATOM("_NET_WM_WINDOW_TYPE_UTILITY"),
- HYPRATOM("_NET_WM_WINDOW_TYPE_TOOLBAR"),
- HYPRATOM("_NET_WM_WINDOW_TYPE_SPLASH"),
- HYPRATOM("_NET_WM_WINDOW_TYPE_MENU"),
- HYPRATOM("_NET_WM_WINDOW_TYPE_DROPDOWN_MENU"),
- HYPRATOM("_NET_WM_WINDOW_TYPE_POPUP_MENU"),
- HYPRATOM("_NET_WM_WINDOW_TYPE_TOOLTIP"),
- HYPRATOM("_NET_WM_WINDOW_TYPE_NOTIFICATION")};
+inline std::map<std::string, xcb_atom_t> HYPRATOMS = {HYPRATOM("_NET_WM_WINDOW_TYPE"),
+ HYPRATOM("_NET_WM_WINDOW_TYPE_NORMAL"),
+ HYPRATOM("_NET_WM_WINDOW_TYPE_DOCK"),
+ HYPRATOM("_NET_WM_WINDOW_TYPE_DIALOG"),
+ HYPRATOM("_NET_WM_WINDOW_TYPE_UTILITY"),
+ HYPRATOM("_NET_WM_WINDOW_TYPE_TOOLBAR"),
+ HYPRATOM("_NET_WM_WINDOW_TYPE_SPLASH"),
+ HYPRATOM("_NET_WM_WINDOW_TYPE_MENU"),
+ HYPRATOM("_NET_WM_WINDOW_TYPE_DROPDOWN_MENU"),
+ HYPRATOM("_NET_WM_WINDOW_TYPE_POPUP_MENU"),
+ HYPRATOM("_NET_WM_WINDOW_TYPE_TOOLTIP"),
+ HYPRATOM("_NET_WM_WINDOW_TYPE_NOTIFICATION")};
diff --git a/src/Window.cpp b/src/Window.cpp
index 61711415..0fef484b 100644
--- a/src/Window.cpp
+++ b/src/Window.cpp
@@ -16,13 +16,13 @@ CWindow::CWindow() {
CWindow::~CWindow() {
if (g_pCompositor->isWindowActive(this)) {
- g_pCompositor->m_pLastFocus = nullptr;
+ g_pCompositor->m_pLastFocus = nullptr;
g_pCompositor->m_pLastWindow = nullptr;
}
}
wlr_box CWindow::getFullWindowBoundingBox() {
- static auto *const PBORDERSIZE = &g_pConfigManager->getConfigValuePtr("general:border_size")->intValue;
+ static auto* const PBORDERSIZE = &g_pConfigManager->getConfigValuePtr("general:border_size")->intValue;
SWindowDecorationExtents maxExtents = {{*PBORDERSIZE + 2, *PBORDERSIZE + 2}, {*PBORDERSIZE + 2, *PBORDERSIZE + 2}};
@@ -44,10 +44,8 @@ wlr_box CWindow::getFullWindowBoundingBox() {
}
// Add extents to the real base BB and return
- wlr_box finalBox = {m_vRealPosition.vec().x - maxExtents.topLeft.x,
- m_vRealPosition.vec().y - maxExtents.topLeft.y,
- m_vRealSize.vec().x + maxExtents.topLeft.x + maxExtents.bottomRight.x,
- m_vRealSize.vec().y + maxExtents.topLeft.y + maxExtents.bottomRight.y};
+ wlr_box finalBox = {m_vRealPosition.vec().x - maxExtents.topLeft.x, m_vRealPosition.vec().y - maxExtents.topLeft.y,
+ m_vRealSize.vec().x + maxExtents.topLeft.x + maxExtents.bottomRight.x, m_vRealSize.vec().y + maxExtents.topLeft.y + maxExtents.bottomRight.y};
return finalBox;
}
@@ -56,11 +54,11 @@ wlr_box CWindow::getWindowIdealBoundingBoxIgnoreReserved() {
const auto PMONITOR = g_pCompositor->getMonitorFromID(m_iMonitorID);
- auto POS = m_vPosition;
- auto SIZE = m_vSize;
+ auto POS = m_vPosition;
+ auto SIZE = m_vSize;
if (m_bIsFullscreen) {
- POS = PMONITOR->vecPosition;
+ POS = PMONITOR->vecPosition;
SIZE = PMONITOR->vecSize;
return wlr_box{(int)POS.x, (int)POS.y, (int)SIZE.x, (int)SIZE.y};
@@ -135,25 +133,28 @@ void CWindow::createToplevelHandle() {
wlr_foreign_toplevel_handle_v1_set_fullscreen(m_phForeignToplevel, false);
// handle events
- hyprListener_toplevelActivate.initCallback(&m_phForeignToplevel->events.request_activate, [&](void* owner, void* data) {
-
- g_pCompositor->focusWindow(this);
-
- }, this, "Toplevel");
-
- hyprListener_toplevelFullscreen.initCallback(&m_phForeignToplevel->events.request_fullscreen, [&](void* owner, void* data) {
-
- const auto EV = (wlr_foreign_toplevel_handle_v1_fullscreen_event*)data;
-
- g_pCompositor->setWindowFullscreen(this, EV->fullscreen, FULLSCREEN_FULL);
-
- }, this, "Toplevel");
-
- hyprListener_toplevelClose.initCallback(&m_phForeignToplevel->events.request_close, [&](void* owner, void* data) {
-
- g_pCompositor->closeWindow(this);
-
- }, this, "Toplevel");
+ hyprListener_toplevelActivate.initCallback(
+ &m_phForeignToplevel->events.request_activate,
+ [&](void* owner, void* data) {
+ g_pCompositor->focusWindow(this);
+ },
+ this, "Toplevel");
+
+ hyprListener_toplevelFullscreen.initCallback(
+ &m_phForeignToplevel->events.request_fullscreen,
+ [&](void* owner, void* data) {
+ const auto EV = (wlr_foreign_toplevel_handle_v1_fullscreen_event*)data;
+
+ g_pCompositor->setWindowFullscreen(this, EV->fullscreen, FULLSCREEN_FULL);
+ },
+ this, "Toplevel");
+
+ hyprListener_toplevelClose.initCallback(
+ &m_phForeignToplevel->events.request_close,
+ [&](void* owner, void* data) {
+ g_pCompositor->closeWindow(this);
+ },
+ this, "Toplevel");
m_iLastToplevelMonitorID = m_iMonitorID;
}
@@ -290,12 +291,8 @@ void CWindow::onMap() {
m_cRealShadowColor.registerVar();
m_fDimPercent.registerVar();
- m_vRealSize.setCallbackOnEnd([&] (void* ptr) {
- g_pHyprOpenGL->onWindowResizeEnd(this);
- }, false);
- m_vRealSize.setCallbackOnBegin([&] (void* ptr) {
- g_pHyprOpenGL->onWindowResizeStart(this);
- }, false);
+ m_vRealSize.setCallbackOnEnd([&](void* ptr) { g_pHyprOpenGL->onWindowResizeEnd(this); }, false);
+ m_vRealSize.setCallbackOnBegin([&](void* ptr) { g_pHyprOpenGL->onWindowResizeStart(this); }, false);
}
void CWindow::setHidden(bool hidden) {
@@ -323,9 +320,7 @@ void CWindow::applyDynamicRule(const SWindowRule& r) {
} else if (r.szRule.find("rounding") == 0) {
try {
m_sAdditionalConfigData.rounding = std::stoi(r.szRule.substr(r.szRule.find_first_of(' ') + 1));
- } catch (std::exception& e) {
- Debug::log(ERR, "Rounding rule \"%s\" failed with: %s", r.szRule.c_str(), e.what());
- }
+ } catch (std::exception& e) { Debug::log(ERR, "Rounding rule \"%s\" failed with: %s", r.szRule.c_str(), e.what()); }
} else if (r.szRule.find("opacity") == 0) {
try {
CVarList vars(r.szRule, 0, ' ');
@@ -346,44 +341,40 @@ void CWindow::applyDynamicRule(const SWindowRule& r) {
}
}
}
- } catch(std::exception& e) {
- Debug::log(ERR, "Opacity rule \"%s\" failed with: %s", r.szRule.c_str(), e.what());
- }
- } else if (r.szRule == "noanim") {
- m_sAdditionalConfigData.forceNoAnims = true;
- } else if (r.szRule.find("animation") == 0) {
- auto STYLE = r.szRule.substr(r.szRule.find_first_of(' ') + 1);
- m_sAdditionalConfigData.animationStyle = STYLE;
- } else if (r.szRule.find("bordercolor") == 0) {
+ } catch (std::exception& e) { Debug::log(ERR, "Opacity rule \"%s\" failed with: %s", r.szRule.c_str(), e.what()); }
+ } else if (r.szRule == "noanim") {
+ m_sAdditionalConfigData.forceNoAnims = true;
+ } else if (r.szRule.find("animation") == 0) {
+ auto STYLE = r.szRule.substr(r.szRule.find_first_of(' ') + 1);
+ m_sAdditionalConfigData.animationStyle = STYLE;
+ } else if (r.szRule.find("bordercolor") == 0) {
try {
std::string colorPart = removeBeginEndSpacesTabs(r.szRule.substr(r.szRule.find_first_of(' ') + 1));
if (colorPart.contains(' ')) {
// we have a space, 2 values
- m_sSpecialRenderData.activeBorderColor = configStringToInt(colorPart.substr(0, colorPart.find_first_of(' ')));
+ m_sSpecialRenderData.activeBorderColor = configStringToInt(colorPart.substr(0, colorPart.find_first_of(' ')));
m_sSpecialRenderData.inactiveBorderColor = configStringToInt(colorPart.substr(colorPart.find_first_of(' ') + 1));
} else {
m_sSpecialRenderData.activeBorderColor = configStringToInt(colorPart);
}
- } catch(std::exception& e) {
- Debug::log(ERR, "BorderColor rule \"%s\" failed with: %s", r.szRule.c_str(), e.what());
- }
+ } catch (std::exception& e) { Debug::log(ERR, "BorderColor rule \"%s\" failed with: %s", r.szRule.c_str(), e.what()); }
}
}
void CWindow::updateDynamicRules() {
- m_sSpecialRenderData.activeBorderColor = -1;
+ m_sSpecialRenderData.activeBorderColor = -1;
m_sSpecialRenderData.inactiveBorderColor = -1;
- m_sSpecialRenderData.alpha = 1.f;
- m_sSpecialRenderData.alphaInactive = -1.f;
- m_sAdditionalConfigData.forceNoBlur = false;
- m_sAdditionalConfigData.forceNoBorder = false;
- m_sAdditionalConfigData.forceNoShadow = false;
+ m_sSpecialRenderData.alpha = 1.f;
+ m_sSpecialRenderData.alphaInactive = -1.f;
+ m_sAdditionalConfigData.forceNoBlur = false;
+ m_sAdditionalConfigData.forceNoBorder = false;
+ m_sAdditionalConfigData.forceNoShadow = false;
if (!m_sAdditionalConfigData.forceOpaqueOverriden)
m_sAdditionalConfigData.forceOpaque = false;
- m_sAdditionalConfigData.forceNoAnims = false;
+ m_sAdditionalConfigData.forceNoAnims = false;
m_sAdditionalConfigData.animationStyle = "";
- m_sAdditionalConfigData.rounding = -1;
+ m_sAdditionalConfigData.rounding = -1;
const auto WINDOWRULES = g_pConfigManager->getMatchingRules(this);
for (auto& r : WINDOWRULES) {
diff --git a/src/Window.hpp b/src/Window.hpp
index 2d76d12d..2d0dd0cc 100644
--- a/src/Window.hpp
+++ b/src/Window.hpp
@@ -8,7 +8,8 @@
#include <deque>
#include "config/ConfigDataValues.hpp"
-enum eIdleInhibitMode {
+enum eIdleInhibitMode
+{
IDLEINHIBIT_NONE = 0,
IDLEINHIBIT_ALWAYS,
IDLEINHIBIT_FULLSCREEN,
@@ -16,49 +17,49 @@ enum eIdleInhibitMode {
};
struct SWindowSpecialRenderData {
- bool alphaOverride = false;
- float alpha = 1.f;
- bool alphaInactiveOverride = false;
- float alphaInactive = -1.f; // -1 means unset
+ bool alphaOverride = false;
+ float alpha = 1.f;
+ bool alphaInactiveOverride = false;
+ float alphaInactive = -1.f; // -1 means unset
- int64_t activeBorderColor = -1; // -1 means unset
+ int64_t activeBorderColor = -1; // -1 means unset
int64_t inactiveBorderColor = -1; // -1 means unset
// set by the layout
- bool rounding = true;
- bool border = true;
- bool decorate = true;
+ bool rounding = true;
+ bool border = true;
+ bool decorate = true;
};
struct SWindowAdditionalConfigData {
- std::string animationStyle = "";
- int rounding = -1; // -1 means no
- bool forceNoBlur = false;
- bool forceOpaque = false;
- bool forceOpaqueOverriden = false; // if true, a rule will not change the forceOpaque state. This is for the force opaque dispatcher.
- bool forceAllowsInput = false;
- bool forceNoAnims = false;
- bool forceNoBorder = false;
- bool forceNoShadow = false;
- bool windowDanceCompat = false;
- bool noMaxSize = false;
+ std::string animationStyle = "";
+ int rounding = -1; // -1 means no
+ bool forceNoBlur = false;
+ bool forceOpaque = false;
+ bool forceOpaqueOverriden = false; // if true, a rule will not change the forceOpaque state. This is for the force opaque dispatcher.
+ bool forceAllowsInput = false;
+ bool forceNoAnims = false;
+ bool forceNoBorder = false;
+ bool forceNoShadow = false;
+ bool windowDanceCompat = false;
+ bool noMaxSize = false;
};
struct SWindowRule {
std::string szRule;
std::string szValue;
- bool v2 = false;
+ bool v2 = false;
std::string szTitle;
std::string szClass;
- int bX11 = -1; // -1 means "ANY"
- int bFloating = -1;
- int bFullscreen = -1;
- int bPinned = -1;
+ int bX11 = -1; // -1 means "ANY"
+ int bFloating = -1;
+ int bFullscreen = -1;
+ int bPinned = -1;
};
class CWindow {
-public:
+ public:
CWindow();
~CWindow();
@@ -79,142 +80,142 @@ public:
DYNLISTENER(toplevelClose);
DYNLISTENER(toplevelActivate);
DYNLISTENER(toplevelFullscreen);
- // DYNLISTENER(newSubsurfaceWindow);
+ // DYNLISTENER(newSubsurfaceWindow);
union {
- wlr_xdg_surface* xdg;
+ wlr_xdg_surface* xdg;
wlr_xwayland_surface* xwayland;
} m_uSurface;
// this is the position and size of the "bounding box"
- Vector2D m_vPosition = Vector2D(0,0);
- Vector2D m_vSize = Vector2D(0,0);
+ Vector2D m_vPosition = Vector2D(0, 0);
+ Vector2D m_vSize = Vector2D(0, 0);
// this is the real position and size used to draw the thing
- CAnimatedVariable m_vRealPosition;
- CAnimatedVariable m_vRealSize;
+ CAnimatedVariable m_vRealPosition;
+ CAnimatedVariable m_vRealSize;
// for not spamming the protocols
- Vector2D m_vReportedPosition;
- Vector2D m_vReportedSize;
+ Vector2D m_vReportedPosition;
+ Vector2D m_vReportedSize;
// for restoring floating statuses
- Vector2D m_vLastFloatingSize;
+ Vector2D m_vLastFloatingSize;
// this is used for pseudotiling
- bool m_bIsPseudotiled = false;
- Vector2D m_vPseudoSize = Vector2D(0,0);
+ bool m_bIsPseudotiled = false;
+ Vector2D m_vPseudoSize = Vector2D(0, 0);
- uint64_t m_iTags = 0;
- bool m_bIsFloating = false;
- bool m_bDraggingTiled = false; // for dragging around tiled windows
- bool m_bIsFullscreen = false;
- uint64_t m_iMonitorID = -1;
- std::string m_szTitle = "";
- int m_iWorkspaceID = -1;
+ uint64_t m_iTags = 0;
+ bool m_bIsFloating = false;
+ bool m_bDraggingTiled = false; // for dragging around tiled windows
+ bool m_bIsFullscreen = false;
+ uint64_t m_iMonitorID = -1;
+ std::string m_szTitle = "";
+ int m_iWorkspaceID = -1;
- bool m_bIsMapped = false;
+ bool m_bIsMapped = false;
- bool m_bRequestsFloat = false;
+ bool m_bRequestsFloat = false;
// This is for fullscreen apps
- bool m_bCreatedOverFullscreen = false;
+ bool m_bCreatedOverFullscreen = false;
// XWayland stuff
- bool m_bIsX11 = false;
- bool m_bMappedX11 = false;
- CWindow* m_pX11Parent = nullptr;
- uint64_t m_iX11Type = 0;
- bool m_bIsModal = false;
- bool m_bX11DoesntWantBorders = false;
- bool m_bX11ShouldntFocus = false;
+ bool m_bIsX11 = false;
+ bool m_bMappedX11 = false;
+ CWindow* m_pX11Parent = nullptr;
+ uint64_t m_iX11Type = 0;
+ bool m_bIsModal = false;
+ bool m_bX11DoesntWantBorders = false;
+ bool m_bX11ShouldntFocus = false;
//
// For nofocus
- bool m_bNoFocus = false;
- bool m_bNoInitialFocus = false;
+ bool m_bNoFocus = false;
+ bool m_bNoInitialFocus = false;
// initial fullscreen and fullscreen disabled
- bool m_bWantsInitialFullscreen = false;
- bool m_bNoFullscreenRequest = false;
+ bool m_bWantsInitialFullscreen = false;
+ bool m_bNoFullscreenRequest = false;
- SSurfaceTreeNode* m_pSurfaceTree = nullptr;
+ SSurfaceTreeNode* m_pSurfaceTree = nullptr;
// Animated border
- CGradientValueData m_cRealBorderColor = {0};
- CGradientValueData m_cRealBorderColorPrevious = {0};
- CAnimatedVariable m_fBorderAnimationProgress;
+ CGradientValueData m_cRealBorderColor = {0};
+ CGradientValueData m_cRealBorderColorPrevious = {0};
+ CAnimatedVariable m_fBorderAnimationProgress;
// Fade in-out
- CAnimatedVariable m_fAlpha;
- bool m_bFadingOut = false;
- bool m_bReadyToDelete = false;
- Vector2D m_vOriginalClosedPos; // these will be used for calculations later on in
- Vector2D m_vOriginalClosedSize; // drawing the closing animations
+ CAnimatedVariable m_fAlpha;
+ bool m_bFadingOut = false;
+ bool m_bReadyToDelete = false;
+ Vector2D m_vOriginalClosedPos; // these will be used for calculations later on in
+ Vector2D m_vOriginalClosedSize; // drawing the closing animations
// For pinned (sticky) windows
- bool m_bPinned = false;
+ bool m_bPinned = false;
// for proper cycling. While cycling we can't just move the pointers, so we need to keep track of the last cycled window.
- CWindow* m_pLastCycledWindow = nullptr;
+ CWindow* m_pLastCycledWindow = nullptr;
// Foreign Toplevel proto
- wlr_foreign_toplevel_handle_v1* m_phForeignToplevel = nullptr;
+ wlr_foreign_toplevel_handle_v1* m_phForeignToplevel = nullptr;
// Window decorations
std::deque<std::unique_ptr<IHyprWindowDecoration>> m_dWindowDecorations;
- std::vector<IHyprWindowDecoration*> m_vDecosToRemove;
+ std::vector<IHyprWindowDecoration*> m_vDecosToRemove;
// Special render data, rules, etc
- SWindowSpecialRenderData m_sSpecialRenderData;
- SWindowAdditionalConfigData m_sAdditionalConfigData;
+ SWindowSpecialRenderData m_sSpecialRenderData;
+ SWindowAdditionalConfigData m_sAdditionalConfigData;
// for alpha
- CAnimatedVariable m_fActiveInactiveAlpha;
+ CAnimatedVariable m_fActiveInactiveAlpha;
// animated shadow color
- CAnimatedVariable m_cRealShadowColor;
+ CAnimatedVariable m_cRealShadowColor;
// animated tint
- CAnimatedVariable m_fDimPercent;
+ CAnimatedVariable m_fDimPercent;
// swallowing
- CWindow* m_pSwallowed = nullptr;
+ CWindow* m_pSwallowed = nullptr;
// for toplevel monitor events
- uint64_t m_iLastToplevelMonitorID = -1;
- uint64_t m_iLastSurfaceMonitorID = -1;
+ uint64_t m_iLastToplevelMonitorID = -1;
+ uint64_t m_iLastSurfaceMonitorID = -1;
// for idle inhibiting windows
- eIdleInhibitMode m_eIdleInhibitMode = IDLEINHIBIT_NONE;
+ eIdleInhibitMode m_eIdleInhibitMode = IDLEINHIBIT_NONE;
// For the list lookup
- bool operator==(const CWindow& rhs) {
- return m_uSurface.xdg == rhs.m_uSurface.xdg && m_uSurface.xwayland == rhs.m_uSurface.xwayland && m_vPosition == rhs.m_vPosition && m_vSize == rhs.m_vSize && m_bFadingOut == rhs.m_bFadingOut;
+ bool operator==(const CWindow& rhs) {
+ return m_uSurface.xdg == rhs.m_uSurface.xdg && m_uSurface.xwayland == rhs.m_uSurface.xwayland && m_vPosition == rhs.m_vPosition && m_vSize == rhs.m_vSize &&
+ m_bFadingOut == rhs.m_bFadingOut;
}
// methods
- wlr_box getFullWindowBoundingBox();
- wlr_box getWindowIdealBoundingBoxIgnoreReserved();
- void updateWindowDecos();
- pid_t getPID();
+ wlr_box getFullWindowBoundingBox();
+ wlr_box getWindowIdealBoundingBoxIgnoreReserved();
+ void updateWindowDecos();
+ pid_t getPID();
IHyprWindowDecoration* getDecorationByType(eDecorationType);
- void removeDecorationByType(eDecorationType);
- void createToplevelHandle();
- void destroyToplevelHandle();
- void updateToplevel();
- void updateSurfaceOutputs();
- void moveToWorkspace(int);
- CWindow* X11TransientFor();
- void onUnmap();
- void onMap();
- void setHidden(bool hidden);
- bool isHidden();
- void applyDynamicRule(const SWindowRule& r);
- void updateDynamicRules();
-
-private:
+ void removeDecorationByType(eDecorationType);
+ void createToplevelHandle();
+ void destroyToplevelHandle();
+ void updateToplevel();
+ void updateSurfaceOutputs();
+ void moveToWorkspace(int);
+ CWindow* X11TransientFor();
+ void onUnmap();
+ void onMap();
+ void setHidden(bool hidden);
+ bool isHidden();
+ void applyDynamicRule(const SWindowRule& r);
+ void updateDynamicRules();
+
+ private:
// For hidden windows and stuff
- bool m_bHidden = false;
-
+ bool m_bHidden = false;
};
diff --git a/src/config/ConfigDataValues.hpp b/src/config/ConfigDataValues.hpp
index f2ea79a0..e2c7eee3 100644
--- a/src/config/ConfigDataValues.hpp
+++ b/src/config/ConfigDataValues.hpp
@@ -1,24 +1,26 @@
#pragma once
#include "../defines.hpp"
+#include <vector>
-enum eConfigValueDataTypes {
- CVD_TYPE_INVALID = -1,
+enum eConfigValueDataTypes
+{
+ CVD_TYPE_INVALID = -1,
CVD_TYPE_GRADIENT = 0
};
interface ICustomConfigValueData {
-public:
+ public:
virtual ~ICustomConfigValueData() = 0;
virtual eConfigValueDataTypes getDataType() = 0;
};
class CGradientValueData : public ICustomConfigValueData {
-public:
+ public:
CGradientValueData(CColor col) {
m_vColors.push_back(col);
};
- virtual ~CGradientValueData() { };
+ virtual ~CGradientValueData(){};
virtual eConfigValueDataTypes getDataType() {
return CVD_TYPE_GRADIENT;
@@ -34,14 +36,15 @@ public:
std::vector<CColor> m_vColors;
/* Float corresponding to the angle (rad) */
- float m_fAngle = 0;
+ float m_fAngle = 0;
bool operator==(const CGradientValueData& other) {
if (other.m_vColors.size() != m_vColors.size() || m_fAngle != other.m_fAngle)
return false;
for (size_t i = 0; i < m_vColors.size(); ++i)
- if (m_vColors[i] != other.m_vColors[i]) return false;
+ if (m_vColors[i] != other.m_vColors[i])
+ return false;
return true;
}
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index bec8a5c0..2031f79a 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -11,7 +11,7 @@
#include <iostream>
CConfigManager::CConfigManager() {
- configValues["general:col.active_border"].data = std::make_shared<CGradientValueData>(0xffffffff);
+ configValues["general:col.active_border"].data = std::make_shared<CGradientValueData>(0xffffffff);
configValues["general:col.inactive_border"].data = std::make_shared<CGradientValueData>(0xff444444);
setDefaultVars();
@@ -20,7 +20,7 @@ CConfigManager::CConfigManager() {
std::string CONFIGPATH;
if (g_pCompositor->explicitConfigPath == "") {
static const char* const ENVHOME = getenv("HOME");
- CONFIGPATH = ENVHOME + (ISDEBUG ? (std::string) "/.config/hypr/hyprlandd.conf" : (std::string) "/.config/hypr/hyprland.conf");
+ CONFIGPATH = ENVHOME + (ISDEBUG ? (std::string) "/.config/hypr/hyprlandd.conf" : (std::string) "/.config/hypr/hyprland.conf");
} else {
CONFIGPATH = g_pCompositor->explicitConfigPath;
}
@@ -32,146 +32,146 @@ CConfigManager::CConfigManager() {
}
void CConfigManager::setDefaultVars() {
- configValues["general:max_fps"].intValue = 60;
- configValues["general:sensitivity"].floatValue = 1.0f;
+ configValues["general:max_fps"].intValue = 60;
+ configValues["general:sensitivity"].floatValue = 1.0f;
configValues["general:apply_sens_to_raw"].intValue = 0;
- configValues["general:main_mod"].strValue = "SUPER"; // exposed to the user for easier configuring
- configValues["general:main_mod_internal"].intValue = g_pKeybindManager->stringToModMask("SUPER"); // actually used and automatically calculated
+ configValues["general:main_mod"].strValue = "SUPER"; // exposed to the user for easier configuring
+ configValues["general:main_mod_internal"].intValue = g_pKeybindManager->stringToModMask("SUPER"); // actually used and automatically calculated
- configValues["general:border_size"].intValue = 1;
+ configValues["general:border_size"].intValue = 1;
configValues["general:no_border_on_floating"].intValue = 0;
- configValues["general:gaps_in"].intValue = 5;
- configValues["general:gaps_out"].intValue = 20;
+ configValues["general:gaps_in"].intValue = 5;
+ configValues["general:gaps_out"].intValue = 20;
((CGradientValueData*)configValues["general:col.active_border"].data.get())->reset(0xffffffff);
((CGradientValueData*)configValues["general:col.inactive_border"].data.get())->reset(0xff444444);
configValues["general:cursor_inactive_timeout"].intValue = 0;
- configValues["general:no_cursor_warps"].intValue = 0;
+ configValues["general:no_cursor_warps"].intValue = 0;
configValues["general:layout"].strValue = "dwindle";
- configValues["misc:disable_hyprland_logo"].intValue = 0;
- configValues["misc:disable_splash_rendering"].intValue = 0;
- configValues["misc:no_vfr"].intValue = 1;
+ configValues["misc:disable_hyprland_logo"].intValue = 0;
+ configValues["misc:disable_splash_rendering"].intValue = 0;
+ configValues["misc:no_vfr"].intValue = 1;
configValues["misc:damage_entire_on_snapshot"].intValue = 0;
- configValues["misc:mouse_move_enables_dpms"].intValue = 0;
- configValues["misc:always_follow_on_dnd"].intValue = 1;
+ configValues["misc:mouse_move_enables_dpms"].intValue = 0;
+ configValues["misc:always_follow_on_dnd"].intValue = 1;
configValues["misc:layers_hog_keyboard_focus"].intValue = 1;
- configValues["misc:animate_manual_resizes"].intValue = 0;
- configValues["misc:disable_autoreload"].intValue = 0;
- configValues["misc:enable_swallow"].intValue = 0;
- configValues["misc:swallow_regex"].strValue = STRVAL_EMPTY;
- configValues["misc:focus_on_activate"].intValue = 0;
- configValues["misc:no_direct_scanout"].intValue = 0;
-
- configValues["debug:int"].intValue = 0;
- configValues["debug:log_damage"].intValue = 0;
- configValues["debug:overlay"].intValue = 0;
- configValues["debug:damage_blink"].intValue = 0;
- configValues["debug:disable_logs"].intValue = 0;
- configValues["debug:disable_time"].intValue = 1;
+ configValues["misc:animate_manual_resizes"].intValue = 0;
+ configValues["misc:disable_autoreload"].intValue = 0;
+ configValues["misc:enable_swallow"].intValue = 0;
+ configValues["misc:swallow_regex"].strValue = STRVAL_EMPTY;
+ configValues["misc:focus_on_activate"].intValue = 0;
+ configValues["misc:no_direct_scanout"].intValue = 0;
+
+ configValues["debug:int"].intValue = 0;
+ configValues["debug:log_damage"].intValue = 0;
+ configValues["debug:overlay"].intValue = 0;
+ configValues["debug:damage_blink"].intValue = 0;
+ configValues["debug:disable_logs"].intValue = 0;
+ configValues["debug:disable_time"].intValue = 1;
configValues["debug:damage_tracking"].intValue = DAMAGE_TRACKING_FULL;
- configValues["decoration:rounding"].intValue = 0;
- configValues["decoration:blur"].intValue = 1;
- configValues["decoration:blur_size"].intValue = 8;
- configValues["decoration:blur_passes"].intValue = 1;
- configValues["decoration:blur_ignore_opacity"].intValue = 0;
+ configValues["decoration:rounding"].intValue = 0;
+ configValues["decoration:blur"].intValue = 1;
+ configValues["decoration:blur_size"].intValue = 8;
+ configValues["decoration:blur_passes"].intValue = 1;
+ configValues["decoration:blur_ignore_opacity"].intValue = 0;
configValues["decoration:blur_new_optimizations"].intValue = 1;
- configValues["decoration:blur_xray"].intValue = 0;
- configValues["decoration:active_opacity"].floatValue = 1;
- configValues["decoration:inactive_opacity"].floatValue = 1;
- configValues["decoration:fullscreen_opacity"].floatValue = 1;
- configValues["decoration:multisample_edges"].intValue = 1;
- configValues["decoration:no_blur_on_oversized"].intValue = 0;
- configValues["decoration:drop_shadow"].intValue = 1;
- configValues["decoration:shadow_range"].intValue = 4;
- configValues["decoration:shadow_render_power"].intValue = 3;
- configValues["decoration:shadow_ignore_window"].intValue = 1;
- configValues["decoration:shadow_offset"].vecValue = Vector2D();
- configValues["decoration:shadow_scale"].floatValue = 1.f;
- configValues["decoration:col.shadow"].intValue = 0xee1a1a1a;
- configValues["decoration:col.shadow_inactive"].intValue = INT_MAX;
- configValues["decoration:dim_inactive"].intValue = 0;
- configValues["decoration:dim_strength"].floatValue = 0.5f;
- configValues["decoration:screen_shader"].strValue = STRVAL_EMPTY;
-
- configValues["dwindle:pseudotile"].intValue = 0;
- configValues["dwindle:col.group_border"].intValue = 0x66777700;
- configValues["dwindle:col.group_border_active"].intValue = 0x66ffff00;
- configValues["dwindle:force_split"].intValue = 0;
- configValues["dwindle:preserve_split"].intValue = 0;
- configValues["dwindle:special_scale_factor"].floatValue = 0.8f;
+ configValues["decoration:blur_xray"].intValue = 0;
+ configValues["decoration:active_opacity"].floatValue = 1;
+ configValues["decoration:inactive_opacity"].floatValue = 1;
+ configValues["decoration:fullscreen_opacity"].floatValue = 1;
+ configValues["decoration:multisample_edges"].intValue = 1;
+ configValues["decoration:no_blur_on_oversized"].intValue = 0;
+ configValues["decoration:drop_shadow"].intValue = 1;
+ configValues["decoration:shadow_range"].intValue = 4;
+ configValues["decoration:shadow_render_power"].intValue = 3;
+ configValues["decoration:shadow_ignore_window"].intValue = 1;
+ configValues["decoration:shadow_offset"].vecValue = Vector2D();
+ configValues["decoration:shadow_scale"].floatValue = 1.f;
+ configValues["decoration:col.shadow"].intValue = 0xee1a1a1a;
+ configValues["decoration:col.shadow_inactive"].intValue = INT_MAX;
+ configValues["decoration:dim_inactive"].intValue = 0;
+ configValues["decoration:dim_strength"].floatValue = 0.5f;
+ configValues["decoration:screen_shader"].strValue = STRVAL_EMPTY;
+
+ configValues["dwindle:pseudotile"].intValue = 0;
+ configValues["dwindle:col.group_border"].intValue = 0x66777700;
+ configValues["dwindle:col.group_border_active"].intValue = 0x66ffff00;
+ configValues["dwindle:force_split"].intValue = 0;
+ configValues["dwindle:preserve_split"].intValue = 0;
+ configValues["dwindle:special_scale_factor"].floatValue = 0.8f;
configValues["dwindle:split_width_multiplier"].floatValue = 1.0f;
- configValues["dwindle:no_gaps_when_only"].intValue = 0;
- configValues["dwindle:use_active_for_splits"].intValue = 1;
+ configValues["dwindle:no_gaps_when_only"].intValue = 0;
+ configValues["dwindle:use_active_for_splits"].intValue = 1;
configValues["master:special_scale_factor"].floatValue = 0.8f;
- configValues["master:new_is_master"].intValue = 1;
- configValues["master:new_on_top"].intValue = 0;
- configValues["master:no_gaps_when_only"].intValue = 0;
- configValues["master:orientation"].strValue = "left";
- configValues["master:inherit_fullscreen"].intValue = 1;
-
- configValues["animations:enabled"].intValue = 1;
- configValues["animations:speed"].floatValue = 7.f;
- configValues["animations:curve"].strValue = "default";
- configValues["animations:windows_style"].strValue = STRVAL_EMPTY;
- configValues["animations:windows_curve"].strValue = "[[f]]";
- configValues["animations:windows_speed"].floatValue = 0.f;
- configValues["animations:windows"].intValue = 1;
- configValues["animations:borders_style"].strValue = STRVAL_EMPTY;
- configValues["animations:borders_curve"].strValue = "[[f]]";
- configValues["animations:borders_speed"].floatValue = 0.f;
- configValues["animations:borders"].intValue = 1;
- configValues["animations:fadein_style"].strValue = STRVAL_EMPTY;
- configValues["animations:fadein_curve"].strValue = "[[f]]";
- configValues["animations:fadein_speed"].floatValue = 0.f;
- configValues["animations:fadein"].intValue = 1;
- configValues["animations:workspaces_style"].strValue = STRVAL_EMPTY;
- configValues["animations:workspaces_curve"].strValue = "[[f]]";
+ configValues["master:new_is_master"].intValue = 1;
+ configValues["master:new_on_top"].intValue = 0;
+ configValues["master:no_gaps_when_only"].intValue = 0;
+ configValues["master:orientation"].strValue = "left";
+ configValues["master:inherit_fullscreen"].intValue = 1;
+
+ configValues["animations:enabled"].intValue = 1;
+ configValues["animations:speed"].floatValue = 7.f;
+ configValues["animations:curve"].strValue = "default";
+ configValues["animations:windows_style"].strValue = STRVAL_EMPTY;
+ configValues["animations:windows_curve"].strValue = "[[f]]";
+ configValues["animations:windows_speed"].floatValue = 0.f;
+ configValues["animations:windows"].intValue = 1;
+ configValues["animations:borders_style"].strValue = STRVAL_EMPTY;
+ configValues["animations:borders_curve"].strValue = "[[f]]";
+ configValues["animations:borders_speed"].floatValue = 0.f;
+ configValues["animations:borders"].intValue = 1;
+ configValues["animations:fadein_style"].strValue = STRVAL_EMPTY;
+ configValues["animations:fadein_curve"].strValue = "[[f]]";
+ configValues["animations:fadein_speed"].floatValue = 0.f;
+ configValues["animations:fadein"].intValue = 1;
+ configValues["animations:workspaces_style"].strValue = STRVAL_EMPTY;
+ configValues["animations:workspaces_curve"].strValue = "[[f]]";
configValues["animations:workspaces_speed"].floatValue = 0.f;
- configValues["animations:workspaces"].intValue = 1;
-
- configValues["input:sensitivity"].floatValue = 0.f;
- configValues["input:accel_profile"].strValue = STRVAL_EMPTY;
- configValues["input:kb_file"].strValue = STRVAL_EMPTY;
- configValues["input:kb_layout"].strValue = "us";
- configValues["input:kb_variant"].strValue = STRVAL_EMPTY;
- configValues["input:kb_options"].strValue = STRVAL_EMPTY;
- configValues["input:kb_rules"].strValue = STRVAL_EMPTY;
- configValues["input:kb_model"].strValue = STRVAL_EMPTY;
- configValues["input:repeat_rate"].intValue = 25;
- configValues["input:repeat_delay"].intValue = 600;
- configValues["input:natural_scroll"].intValue = 0;
- configValues["input:numlock_by_default"].intValue = 0;
- configValues["input:force_no_accel"].intValue = 0;
- configValues["input:float_switch_override_focus"].intValue = 1;
- configValues["input:left_handed"].intValue = 0;
- configValues["input:scroll_method"].strValue = STRVAL_EMPTY;
- configValues["input:scroll_button"].intValue = 0;
- configValues["input:touchpad:natural_scroll"].intValue = 0;
- configValues["input:touchpad:disable_while_typing"].intValue = 1;
- configValues["input:touchpad:clickfinger_behavior"].intValue = 0;
+ configValues["animations:workspaces"].intValue = 1;
+
+ configValues["input:sensitivity"].floatValue = 0.f;
+ configValues["input:accel_profile"].strValue = STRVAL_EMPTY;
+ configValues["input:kb_file"].strValue = STRVAL_EMPTY;
+ configValues["input:kb_layout"].strValue = "us";
+ configValues["input:kb_variant"].strValue = STRVAL_EMPTY;
+ configValues["input:kb_options"].strValue = STRVAL_EMPTY;
+ configValues["input:kb_rules"].strValue = STRVAL_EMPTY;
+ configValues["input:kb_model"].strValue = STRVAL_EMPTY;
+ configValues["input:repeat_rate"].intValue = 25;
+ configValues["input:repeat_delay"].intValue = 600;
+ configValues["input:natural_scroll"].intValue = 0;
+ configValues["input:numlock_by_default"].intValue = 0;
+ configValues["input:force_no_accel"].intValue = 0;
+ configValues["input:float_switch_override_focus"].intValue = 1;
+ configValues["input:left_handed"].intValue = 0;
+ configValues["input:scroll_method"].strValue = STRVAL_EMPTY;
+ configValues["input:scroll_button"].intValue = 0;
+ configValues["input:touchpad:natural_scroll"].intValue = 0;
+ configValues["input:touchpad:disable_while_typing"].intValue = 1;
+ configValues["input:touchpad:clickfinger_behavior"].intValue = 0;
configValues["input:touchpad:middle_button_emulation"].intValue = 0;
- configValues["input:touchpad:tap-to-click"].intValue = 1;
- configValues["input:touchpad:drag_lock"].intValue = 0;
- configValues["input:touchpad:scroll_factor"].floatValue = 1.f;
- configValues["input:touchdevice:transform"].intValue = 0;
- configValues["input:touchdevice:output"].strValue = STRVAL_EMPTY;
-
- configValues["binds:pass_mouse_when_bound"].intValue = 0;
- configValues["binds:scroll_event_delay"].intValue = 300;
+ configValues["input:touchpad:tap-to-click"].intValue = 1;
+ configValues["input:touchpad:drag_lock"].intValue = 0;
+ configValues["input:touchpad:scroll_factor"].floatValue = 1.f;
+ configValues["input:touchdevice:transform"].intValue = 0;
+ configValues["input:touchdevice:output"].strValue = STRVAL_EMPTY;
+
+ configValues["binds:pass_mouse_when_bound"].intValue = 0;
+ configValues["binds:scroll_event_delay"].intValue = 300;
configValues["binds:workspace_back_and_forth"].intValue = 0;
- configValues["binds:allow_workspace_cycles"].intValue = 0;
+ configValues["binds:allow_workspace_cycles"].intValue = 0;
- configValues["gestures:workspace_swipe"].intValue = 0;
- configValues["gestures:workspace_swipe_fingers"].intValue = 3;
- configValues["gestures:workspace_swipe_distance"].intValue = 300;
- configValues["gestures:workspace_swipe_invert"].intValue = 1;
+ configValues["gestures:workspace_swipe"].intValue = 0;
+ configValues["gestures:workspace_swipe_fingers"].intValue = 3;
+ configValues["gestures:workspace_swipe_distance"].intValue = 300;
+ configValues["gestures:workspace_swipe_invert"].intValue = 1;
configValues["gestures:workspace_swipe_min_speed_to_force"].intValue = 30;
- configValues["gestures:workspace_swipe_cancel_ratio"].floatValue = 0.5f;
- configValues["gestures:workspace_swipe_create_new"].intValue = 1;
- configValues["gestures:workspace_swipe_forever"].intValue = 0;
+ configValues["gestures:workspace_swipe_cancel_ratio"].floatValue = 0.5f;
+ configValues["gestures:workspace_swipe_create_new"].intValue = 1;
+ configValues["gestures:workspace_swipe_forever"].intValue = 0;
configValues["input:follow_mouse"].intValue = 1;
@@ -181,29 +181,29 @@ void CConfigManager::setDefaultVars() {
void CConfigManager::setDeviceDefaultVars(const std::string& dev) {
auto& cfgValues = deviceConfigs[dev];
- cfgValues["sensitivity"].floatValue = 0.f;
- cfgValues["accel_profile"].strValue = STRVAL_EMPTY;
- cfgValues["kb_file"].strValue = STRVAL_EMPTY;
- cfgValues["kb_layout"].strValue = "us";
- cfgValues["kb_variant"].strValue = STRVAL_EMPTY;
- cfgValues["kb_options"].strValue = STRVAL_EMPTY;
- cfgValues["kb_rules"].strValue = STRVAL_EMPTY;
- cfgValues["kb_model"].strValue = STRVAL_EMPTY;
- cfgValues["repeat_rate"].intValue = 25;
- cfgValues["repeat_delay"].intValue = 600;
- cfgValues["natural_scroll"].intValue = 0;
- cfgValues["numlock_by_default"].intValue = 0;
- cfgValues["disable_while_typing"].intValue = 1;
- cfgValues["clickfinger_behavior"].intValue = 0;
+ cfgValues["sensitivity"].floatValue = 0.f;
+ cfgValues["accel_profile"].strValue = STRVAL_EMPTY;
+ cfgValues["kb_file"].strValue = STRVAL_EMPTY;
+ cfgValues["kb_layout"].strValue = "us";
+ cfgValues["kb_variant"].strValue = STRVAL_EMPTY;
+ cfgValues["kb_options"].strValue = STRVAL_EMPTY;
+ cfgValues["kb_rules"].strValue = STRVAL_EMPTY;
+ cfgValues["kb_model"].strValue = STRVAL_EMPTY;
+ cfgValues["repeat_rate"].intValue = 25;
+ cfgValues["repeat_delay"].intValue = 600;
+ cfgValues["natural_scroll"].intValue = 0;
+ cfgValues["numlock_by_default"].intValue = 0;
+ cfgValues["disable_while_typing"].intValue = 1;
+ cfgValues["clickfinger_behavior"].intValue = 0;
cfgValues["middle_button_emulation"].intValue = 0;
- cfgValues["tap-to-click"].intValue = 1;
- cfgValues["drag_lock"].intValue = 0;
- cfgValues["left_handed"].intValue = 0;
- cfgValues["scroll_method"].strValue = STRVAL_EMPTY;
- cfgValues["scroll_button"].intValue = 0;
- cfgValues["touch_transform"].intValue = 0;
- cfgValues["touch_output"].strValue = STRVAL_EMPTY;
- cfgValues["enabled"].intValue = 1; // only for mice / touchpads
+ cfgValues["tap-to-click"].intValue = 1;
+ cfgValues["drag_lock"].intValue = 0;
+ cfgValues["left_handed"].intValue = 0;
+ cfgValues["scroll_method"].strValue = STRVAL_EMPTY;
+ cfgValues["scroll_button"].intValue = 0;
+ cfgValues["touch_transform"].intValue = 0;
+ cfgValues["touch_output"].strValue = STRVAL_EMPTY;
+ cfgValues["enabled"].intValue = 1; // only for mice / touchpads
}
void CConfigManager::setDefaultAnimationVars() {
@@ -233,15 +233,7 @@ void CConfigManager::setDefaultAnimationVars() {
}
// init the values
- animationConfig["global"] = {
- false,
- "default",
- "",
- 8.f,
- 1,
- &animationConfig["general"],
- nullptr
- };
+ animationConfig["global"] = {false, "default", "", 8.f, 1, &animationConfig["general"], nullptr};
CREATEANIMCFG("windows", "global");
CREATEANIMCFG("fade", "global");
@@ -270,7 +262,7 @@ void CConfigManager::init() {
const std::string CONFIGPATH = ENVHOME + (ISDEBUG ? (std::string) "/.config/hypr/hyprlandd.conf" : (std::string) "/.config/hypr/hyprland.conf");
struct stat fileStat;
- int err = stat(CONFIGPATH.c_str(), &fileStat);
+ int err = stat(CONFIGPATH.c_str(), &fileStat);
if (err != 0) {
Debug::log(WARN, "Error at statting config, error %i", errno);
}
@@ -298,7 +290,7 @@ void CConfigManager::configSetValueSafe(const std::string& COMMAND, const std::s
SConfigValue* CONFIGENTRY = nullptr;
if (COMMAND.find("device:") == 0) {
- const auto DEVICE = COMMAND.substr(7).substr(0, COMMAND.find_last_of(':') - 7);
+ const auto DEVICE = COMMAND.substr(7).substr(0, COMMAND.find_last_of(':') - 7);
const auto CONFIGVAR = COMMAND.substr(COMMAND.find_last_of(':') + 1);
if (!deviceConfigExists(DEVICE))
@@ -360,7 +352,7 @@ void CConfigManager::configSetValueSafe(const std::string& COMMAND, const std::s
switch (CONFIGENTRY->data->getDataType()) {
case CVD_TYPE_GRADIENT: {
-
+
CVarList varlist(VALUE, 0, ' ');
CGradientValueData* data = (CGradientValueData*)CONFIGENTRY->data.get();
@@ -414,7 +406,7 @@ void CConfigManager::configSetValueSafe(const std::string& COMMAND, const std::s
configPaths.push_back(PATH);
struct stat fileStat;
- int err = stat(PATH.c_str(), &fileStat);
+ int err = stat(PATH.c_str(), &fileStat);
if (err != 0) {
Debug::log(WARN, "Error at ticking config at %s, error %i: %s", PATH.c_str(), err, strerror(err));
return;
@@ -470,8 +462,7 @@ void CConfigManager::handleMonitor(const std::string& command, const std::string
return;
}
- if (std::find_if(m_dMonitorRules.begin(), m_dMonitorRules.end(), [&](const auto& other) { return other.name == newrule.name; }) != m_dMonitorRules.end())
- m_dMonitorRules.erase(std::remove_if(m_dMonitorRules.begin(), m_dMonitorRules.end(), [&](const auto& other) { return other.name == newrule.name; }));
+ std::erase_if(m_dMonitorRules, [&](const auto& other) { return other.name == newrule.name; });
m_dMonitorRules.push_back(newrule);
@@ -481,9 +472,9 @@ void CConfigManager::handleMonitor(const std::string& command, const std::string
if (ARGS[1].find("pref") == 0) {
newrule.resolution = Vector2D();
} else if (ARGS[1].find("highrr") == 0) {
- newrule.resolution = Vector2D(-1,-1);
+ newrule.resolution = Vector2D(-1, -1);
} else if (ARGS[1].find("highres") == 0) {
- newrule.resolution = Vector2D(-1,-2);
+ newrule.resolution = Vector2D(-1, -2);
} else {
newrule.resolution.x = stoi(ARGS[1].substr(0, ARGS[1].find_first_of('x')));
newrule.resolution.y = stoi(ARGS[1].substr(ARGS[1].find_first_of('x') + 1, ARGS[1].find_first_of('@')));
@@ -499,7 +490,7 @@ void CConfigManager::handleMonitor(const std::string& command, const std::string
newrule.offset.y = stoi(ARGS[2].substr(ARGS[2].find_first_of('x') + 1));
if (newrule.offset.x < 0 || newrule.offset.y < 0) {
- parseError = "invalid offset. Offset cannot be negative.";
+ parseError = "invalid offset. Offset cannot be negative.";
newrule.offset = Vector2D();
}
}
@@ -510,7 +501,7 @@ void CConfigManager::handleMonitor(const std::string& command, const std::string
newrule.scale = stof(ARGS[3]);
if (newrule.scale < 0.25f) {
- parseError = "not a valid scale.";
+ parseError = "not a valid scale.";
newrule.scale = 1;
}
}
@@ -533,8 +524,7 @@ void CConfigManager::handleMonitor(const std::string& command, const std::string
argno++;
}
- if (std::find_if(m_dMonitorRules.begin(), m_dMonitorRules.end(), [&](const auto& other) { return other.name == newrule.name; }) != m_dMonitorRules.end())
- m_dMonitorRules.erase(std::remove_if(m_dMonitorRules.begin(), m_dMonitorRules.end(), [&](const auto& other) { return other.name == newrule.name; }));
+ std::erase_if(m_dMonitorRules, [&](const auto& other) { return other.name == newrule.name; });
m_dMonitorRules.push_back(newrule);
}
@@ -566,7 +556,7 @@ void CConfigManager::handleBezier(const std::string& command, const std::string&
g_pAnimationManager->addBezierWithName(bezierName, Vector2D(p1x, p1y), Vector2D(p2x, p2y));
}
-void CConfigManager::setAnimForChildren(SAnimationPropertyConfig *const ANIM) {
+void CConfigManager::setAnimForChildren(SAnimationPropertyConfig* const ANIM) {
for (auto& [name, anim] : animationConfig) {
if (anim.pParentAnimation == ANIM && !anim.overriden) {
// if a child isnt overriden, set the values of the parent
@@ -593,7 +583,7 @@ void CConfigManager::handleAnimation(const std::string& command, const std::stri
}
PANIM->second.overriden = true;
- PANIM->second.pValues = &PANIM->second;
+ PANIM->second.pValues = &PANIM->second;
// on/off
PANIM->second.internalEnabled = ARGS[1] == "1";
@@ -607,19 +597,19 @@ void CConfigManager::handleAnimation(const std::string& command, const std::stri
PANIM->second.internalSpeed = std::stof(ARGS[2]);
if (PANIM->second.internalSpeed <= 0) {
- parseError = "invalid speed";
+ parseError = "invalid speed";
PANIM->second.internalSpeed = 1.f;
}
} else {
PANIM->second.internalSpeed = 10.f;
- parseError = "invalid speed";
+ parseError = "invalid speed";
}
// curve
PANIM->second.internalBezier = ARGS[3];
if (!g_pAnimationManager->bezierExists(ARGS[3])) {
- parseError = "no such bezier";
+ parseError = "no such bezier";
PANIM->second.internalBezier = "default";
}
@@ -642,10 +632,10 @@ void CConfigManager::handleBind(const std::string& command, const std::string& v
// bind[fl]=SUPER,G,exec,dmenu_run <args>
// flags
- bool locked = false;
- bool release = false;
- bool repeat = false;
- bool mouse = false;
+ bool locked = false;
+ bool release = false;
+ bool repeat = false;
+ bool mouse = false;
const auto BINDARGS = command.substr(4);
for (auto& arg : BINDARGS) {
@@ -683,7 +673,7 @@ void CConfigManager::handleBind(const std::string& command, const std::string& v
return;
}
- const auto MOD = g_pKeybindManager->stringToModMask(ARGS[0]);
+ const auto MOD = g_pKeybindManager->stringToModMask(ARGS[0]);
const auto MODSTR = ARGS[0];
const auto KEY = ARGS[1];
@@ -736,38 +726,16 @@ void CConfigManager::handleUnbind(const std::string& command, const std::string&
}
bool windowRuleValid(const std::string& RULE) {
- return !(RULE != "float"
- && RULE != "tile"
- && RULE.find("opacity") != 0
- && RULE.find("move") != 0
- && RULE.find("size") != 0
- && RULE.find("minsize") != 0
- && RULE.find("maxsize") != 0
- && RULE.find("pseudo") != 0
- && RULE.find("monitor") != 0
- && RULE.find("idleinhibit") != 0
- && RULE != "nofocus"
- && RULE != "noblur"
- && RULE != "noshadow"
- && RULE != "noborder"
- && RULE != "center"
- && RULE != "opaque"
- && RULE != "forceinput"
- && RULE != "fullscreen"
- && RULE != "nofullscreenrequest"
- && RULE != "nomaxsize"
- && RULE != "pin"
- && RULE != "noanim"
- && RULE != "windowdance"
- && RULE.find("animation") != 0
- && RULE.find("rounding") != 0
- && RULE.find("workspace") != 0
- && RULE.find("bordercolor") != 0);
+ return !(RULE != "float" && RULE != "tile" && RULE.find("opacity") != 0 && RULE.find("move") != 0 && RULE.find("size") != 0 && RULE.find("minsize") != 0 &&
+ RULE.find("maxsize") != 0 && RULE.find("pseudo") != 0 && RULE.find("monitor") != 0 && RULE.find("idleinhibit") != 0 && RULE != "nofocus" && RULE != "noblur" &&
+ RULE != "noshadow" && RULE != "noborder" && RULE != "center" && RULE != "opaque" && RULE != "forceinput" && RULE != "fullscreen" && RULE != "nofullscreenrequest" &&
+ RULE != "nomaxsize" && RULE != "pin" && RULE != "noanim" && RULE != "windowdance" && RULE.find("animation") != 0 && RULE.find("rounding") != 0 &&
+ RULE.find("workspace") != 0 && RULE.find("bordercolor") != 0);
}
void CConfigManager::handleWindowRule(const std::string& command, const std::string& value) {
- const auto RULE = removeBeginEndSpacesTabs(value.substr(0, value.find_first_of(",")));
- const auto VALUE = removeBeginEndSpacesTabs(value.substr(value.find_first_of(",") + 1));
+ const auto RULE = removeBeginEndSpacesTabs(value.substr(0, value.find_first_of(',')));
+ const auto VALUE = removeBeginEndSpacesTabs(value.substr(value.find_first_of(',') + 1));
// check rule and value
if (RULE == "" || VALUE == "") {
@@ -775,9 +743,7 @@ void CConfigManager::handleWindowRule(const std::string& command, const std::str
}
if (RULE == "unset") {
- std::erase_if(m_dWindowRules, [&] (const SWindowRule& other) {
- return other.szValue == VALUE;
- });
+ std::erase_if(m_dWindowRules, [&](const SWindowRule& other) { return other.szValue == VALUE; });
return;
}
@@ -792,8 +758,8 @@ void CConfigManager::handleWindowRule(const std::string& command, const std::str
}
void CConfigManager::handleWindowRuleV2(const std::string& command, const std::string& value) {
- const auto RULE = value.substr(0, value.find_first_of(","));
- const auto VALUE = value.substr(value.find_first_of(",") + 1);
+ const auto RULE = value.substr(0, value.find_first_of(','));
+ const auto VALUE = value.substr(value.find_first_of(',') + 1);
if (!windowRuleValid(RULE) && RULE != "unset") {
Debug::log(ERR, "Invalid rulev2 found: %s", RULE.c_str());
@@ -803,20 +769,19 @@ void CConfigManager::handleWindowRuleV2(const std::string& command, const std::s
// now we estract shit from the value
SWindowRule rule;
- rule.v2 = true;
- rule.szRule = RULE;
+ rule.v2 = true;
+ rule.szRule = RULE;
rule.szValue = VALUE;
- const auto TITLEPOS = VALUE.find("title:");
- const auto CLASSPOS = VALUE.find("class:");
- const auto X11POS = VALUE.find("xwayland:");
- const auto FLOATPOS = VALUE.find("floating:");
+ const auto TITLEPOS = VALUE.find("title:");
+ const auto CLASSPOS = VALUE.find("class:");
+ const auto X11POS = VALUE.find("xwayland:");
+ const auto FLOATPOS = VALUE.find("floating:");
const auto FULLSCREENPOS = VALUE.find("fullscreen:");
- const auto PINNEDPOS = VALUE.find("pinned:");
+ const auto PINNEDPOS = VALUE.find("pinned:");
- if (TITLEPOS == std::string::npos && CLASSPOS == std::string::npos &&
- X11POS == std::string::npos && FLOATPOS == std::string::npos &&
- FULLSCREENPOS == std::string::npos && PINNEDPOS == std::string::npos) {
+ if (TITLEPOS == std::string::npos && CLASSPOS == std::string::npos && X11POS == std::string::npos && FLOATPOS == std::string::npos && FULLSCREENPOS == std::string::npos &&
+ PINNEDPOS == std::string::npos) {
Debug::log(ERR, "Invalid rulev2 syntax: %s", VALUE.c_str());
parseError = "Invalid rulev2 syntax: " + VALUE;
return;
@@ -827,12 +792,18 @@ void CConfigManager::handleWindowRuleV2(const std::string& command, const std::s
result = VALUE.substr(pos);
size_t min = 999999;
- if (TITLEPOS > pos && TITLEPOS < min) min = TITLEPOS;
- if (CLASSPOS > pos && CLASSPOS < min) min = CLASSPOS;
- if (X11POS > pos && X11POS < min) min = X11POS;
- if (FLOATPOS > pos && FLOATPOS < min) min = FLOATPOS;
- if (FULLSCREENPOS > pos && FULLSCREENPOS < min) min = FULLSCREENPOS;
- if (PINNEDPOS > pos && PINNEDPOS < min) min = PINNEDPOS;
+ if (TITLEPOS > pos && TITLEPOS < min)
+ min = TITLEPOS;
+ if (CLASSPOS > pos && CLASSPOS < min)
+ min = CLASSPOS;
+ if (X11POS > pos && X11POS < min)
+ min = X11POS;
+ if (FLOATPOS > pos && FLOATPOS < min)
+ min = FLOATPOS;
+ if (FULLSCREENPOS > pos && FULLSCREENPOS < min)
+ min = FULLSCREENPOS;
+ if (PINNEDPOS > pos && PINNEDPOS < min)
+ min = PINNEDPOS;
result = result.substr(0, min - pos);
@@ -909,7 +880,7 @@ void CConfigManager::handleWindowRuleV2(const std::string& command, const std::s
void CConfigManager::handleBlurLS(const std::string& command, const std::string& value) {
if (value.find("remove,") == 0) {
const auto TOREMOVE = removeBeginEndSpacesTabs(value.substr(7));
- std::erase_if(m_dBlurLSNamespaces, [&] (const auto& other) { return other == TOREMOVE; });
+ std::erase_if(m_dBlurLSNamespaces, [&](const auto& other) { return other == TOREMOVE; });
return;
}
@@ -952,7 +923,7 @@ void CConfigManager::handleSource(const std::string& command, const std::string&
configPaths.push_back(value);
struct stat fileStat;
- int err = stat(value.c_str(), &fileStat);
+ int err = stat(value.c_str(), &fileStat);
if (err != 0) {
Debug::log(WARN, "Error at ticking config at %s, error %i: %s", value.c_str(), err, strerror(err));
return;
@@ -962,8 +933,8 @@ void CConfigManager::handleSource(const std::string& command, const std::string&
std::ifstream ifs;
ifs.open(value);
- std::string line = "";
- int linenum = 1;
+ std::string line = "";
+ int linenum = 1;
if (ifs.is_open()) {
while (std::getline(ifs, line)) {
// Read line by line.
@@ -1003,7 +974,7 @@ void CConfigManager::handleBindWS(const std::string& command, const std::string&
std::string CConfigManager::parseKeyword(const std::string& COMMAND, const std::string& VALUE, bool dynamic) {
if (dynamic) {
- parseError = "";
+ parseError = "";
currentCategory = "";
}
@@ -1019,19 +990,30 @@ std::string CConfigManager::parseKeyword(const std::string& COMMAND, const std::
if (isFirstLaunch) {
firstExecRequests.push_back(VALUE);
}
- }
- else if (COMMAND == "monitor") handleMonitor(COMMAND, VALUE);
- else if (COMMAND.find("bind") == 0) handleBind(COMMAND, VALUE);
- else if (COMMAND == "unbind") handleUnbind(COMMAND, VALUE);
- else if (COMMAND == "workspace") handleDefaultWorkspace(COMMAND, VALUE);
- else if (COMMAND == "windowrule") handleWindowRule(COMMAND, VALUE);
- else if (COMMAND == "windowrulev2") handleWindowRuleV2(COMMAND, VALUE);
- else if (COMMAND == "bezier") handleBezier(COMMAND, VALUE);
- else if (COMMAND == "animation") handleAnimation(COMMAND, VALUE);
- else if (COMMAND == "source") handleSource(COMMAND, VALUE);
- else if (COMMAND == "submap") handleSubmap(COMMAND, VALUE);
- else if (COMMAND == "blurls") handleBlurLS(COMMAND, VALUE);
- else if (COMMAND == "wsbind") handleBindWS(COMMAND, VALUE);
+ } else if (COMMAND == "monitor")
+ handleMonitor(COMMAND, VALUE);
+ else if (COMMAND.find("bind") == 0)
+ handleBind(COMMAND, VALUE);
+ else if (COMMAND == "unbind")
+ handleUnbind(COMMAND, VALUE);
+ else if (COMMAND == "workspace")
+ handleDefaultWorkspace(COMMAND, VALUE);
+ else if (COMMAND == "windowrule")
+ handleWindowRule(COMMAND, VALUE);
+ else if (COMMAND == "windowrulev2")
+ handleWindowRuleV2(COMMAND, VALUE);
+ else if (COMMAND == "bezier")
+ handleBezier(COMMAND, VALUE);
+ else if (COMMAND == "animation")
+ handleAnimation(COMMAND, VALUE);
+ else if (COMMAND == "source")
+ handleSource(COMMAND, VALUE);
+ else if (COMMAND == "submap")
+ handleSubmap(COMMAND, VALUE);
+ else if (COMMAND == "blurls")
+ handleBlurLS(COMMAND, VALUE);
+ else if (COMMAND == "wsbind")
+ handleBindWS(COMMAND, VALUE);
else {
configSetValueSafe(currentCategory + (currentCategory == "" ? "" : ":") + COMMAND, VALUE);
needsLayoutRecalc = 2;
@@ -1039,7 +1021,7 @@ std::string CConfigManager::parseKeyword(const std::string& COMMAND, const std::
if (dynamic) {
std::string retval = parseError;
- parseError = "";
+ parseError = "";
// invalidate layouts if they changed
if (needsLayoutRecalc) {
@@ -1064,7 +1046,7 @@ void CConfigManager::applyUserDefinedVars(std::string& line, const size_t equals
while (dollarPlace != std::string::npos) {
const auto STRAFTERDOLLAR = line.substr(dollarPlace + 1);
- for (auto&[var, value] : configDynamicVars) {
+ for (auto& [var, value] : configDynamicVars) {
if (STRAFTERDOLLAR.find(var) == 0) {
line.replace(dollarPlace, var.length() + 1, value);
break;
@@ -1110,8 +1092,7 @@ void CConfigManager::parseLine(std::string& line) {
if (currentCategory.length() != 0) {
currentCategory.push_back(':');
currentCategory.append(cat);
- }
- else {
+ } else {
currentCategory = cat;
}
@@ -1141,7 +1122,7 @@ void CConfigManager::parseLine(std::string& line) {
return;
const auto COMMAND = removeBeginEndSpacesTabs(line.substr(0, EQUALSPLACE));
- const auto VALUE = removeBeginEndSpacesTabs(line.substr(EQUALSPLACE + 1));
+ const auto VALUE = removeBeginEndSpacesTabs(line.substr(EQUALSPLACE + 1));
//
parseKeyword(COMMAND, VALUE);
@@ -1149,8 +1130,8 @@ void CConfigManager::parseLine(std::string& line) {
void CConfigManager::loadConfigLoadVars() {
Debug::log(LOG, "Reloading the config!");
- parseError = ""; // reset the error
- currentCategory = ""; // reset the category
+ parseError = ""; // reset the error
+ currentCategory = ""; // reset the category
// reset all vars before loading
setDefaultVars();
@@ -1170,8 +1151,8 @@ void CConfigManager::loadConfigLoadVars() {
std::string CONFIGPATH;
- static const char* const ENVHOME = getenv("HOME");
- const std::string CONFIGPARENTPATH = ENVHOME + (std::string) "/.config/hypr/";
+ static const char* const ENVHOME = getenv("HOME");
+ const std::string CONFIGPARENTPATH = ENVHOME + (std::string) "/.config/hypr/";
if (g_pCompositor->explicitConfigPath == "") {
CONFIGPATH = CONFIGPARENTPATH + (ISDEBUG ? "hyprlandd.conf" : "hyprland.conf");
@@ -1185,17 +1166,17 @@ void CConfigManager::loadConfigLoadVars() {
ifs.open(CONFIGPATH);
if (!ifs.good()) {
- if(g_pCompositor->explicitConfigPath == "") {
+ if (g_pCompositor->explicitConfigPath == "") {
Debug::log(WARN, "Config reading error. (No file? Attempting to generate, backing up old one if exists)");
try {
std::filesystem::rename(CONFIGPATH, CONFIGPATH + ".backup");
- } catch(...) { /* Probably doesn't exist */}
+ } catch (...) { /* Probably doesn't exist */
+ }
try {
if (!std::filesystem::is_directory(CONFIGPARENTPATH))
std::filesystem::create_directories(CONFIGPARENTPATH);
- }
- catch (...) {
+ } catch (...) {
parseError = "Broken config file! (Could not create directory)";
return;
}
@@ -1216,8 +1197,8 @@ void CConfigManager::loadConfigLoadVars() {
}
}
- std::string line = "";
- int linenum = 1;
+ std::string line = "";
+ int linenum = 1;
if (ifs.is_open()) {
while (std::getline(ifs, line)) {
// Read line by line.
@@ -1261,7 +1242,8 @@ void CConfigManager::loadConfigLoadVars() {
if (parseError != "")
g_pHyprError->queueCreate(parseError + "\nHyprland may not work correctly.", CColor(255, 50, 50, 255));
else if (configValues["autogenerated"].intValue == 1)
- g_pHyprError->queueCreate("Warning: You're using an autogenerated config! (config file: " + CONFIGPATH + " )\nSUPER+Q -> kitty\nSUPER+M -> exit Hyprland", CColor(255, 255, 70, 255));
+ g_pHyprError->queueCreate("Warning: You're using an autogenerated config! (config file: " + CONFIGPATH + " )\nSUPER+Q -> kitty\nSUPER+M -> exit Hyprland",
+ CColor(255, 255, 70, 255));
else
g_pHyprError->destroy();
@@ -1308,7 +1290,7 @@ void CConfigManager::tick() {
for (auto& cf : configPaths) {
struct stat fileStat;
- int err = stat(cf.c_str(), &fileStat);
+ int err = stat(cf.c_str(), &fileStat);
if (err != 0) {
Debug::log(WARN, "Error at ticking config at %s, error %i: %s", cf.c_str(), err, strerror(err));
return;
@@ -1316,7 +1298,7 @@ void CConfigManager::tick() {
// check if we need to reload cfg
if (fileStat.st_mtime != configModifyTimes[cf] || m_bForceReload) {
- parse = true;
+ parse = true;
configModifyTimes[cf] = fileStat.st_mtime;
}
}
@@ -1328,7 +1310,7 @@ void CConfigManager::tick() {
}
}
-std::mutex configmtx;
+std::mutex configmtx;
SConfigValue CConfigManager::getConfigValueSafe(const std::string& val) {
std::lock_guard<std::mutex> lg(configmtx);
@@ -1374,7 +1356,7 @@ float CConfigManager::getFloat(const std::string& v) {
}
std::string CConfigManager::getString(const std::string& v) {
- const auto VAL = getConfigValueSafe(v).strValue;
+ auto VAL = getConfigValueSafe(v).strValue;
if (VAL == STRVAL_EMPTY)
return "";
@@ -1391,7 +1373,7 @@ float CConfigManager::getDeviceFloat(const std::string& dev, const std::string&
}
std::string CConfigManager::getDeviceString(const std::string& dev, const std::string& v) {
- const auto VAL = getConfigValueSafeDevice(dev, v).strValue;
+ auto VAL = getConfigValueSafeDevice(dev, v).strValue;
if (VAL == STRVAL_EMPTY)
return "";
@@ -1399,23 +1381,25 @@ std::string CConfigManager::getDeviceString(const std::string& dev, const std::s
return VAL;
}
-void CConfigManager::setInt(std::string v, int val) {
+void CConfigManager::setInt(const std::string& v, int val) {
configValues[v].intValue = val;
}
-void CConfigManager::setFloat(std::string v, float val) {
+void CConfigManager::setFloat(const std::string& v, float val) {
configValues[v].floatValue = val;
}
-void CConfigManager::setString(std::string v, std::string val) {
+void CConfigManager::setString(const std::string& v, const std::string& val) {
configValues[v].strValue = val;
}
-SMonitorRule CConfigManager::getMonitorRuleFor(std::string name, std::string displayName) {
+SMonitorRule CConfigManager::getMonitorRuleFor(const std::string& name, const std::string& displayName) {
SMonitorRule* found = nullptr;
for (auto& r : m_dMonitorRules) {
- if (r.name == name || (r.name.find("desc:") == 0 && (r.name.substr(5) == displayName || r.name.substr(5) == removeBeginEndSpacesTabs(displayName.substr(0, displayName.find_first_of('(')))))) {
+ if (r.name == name ||
+ (r.name.find("desc:") == 0 &&
+ (r.name.substr(5) == displayName || r.name.substr(5) == removeBeginEndSpacesTabs(displayName.substr(0, displayName.find_first_of('(')))))) {
found = &r;
break;
}
@@ -1447,7 +1431,7 @@ std::vector<SWindowRule> CConfigManager::getMatchingRules(CWindow* pWindow) {
std::vector<SWindowRule> returns;
- std::string title = g_pXWaylandManager->getTitle(pWindow);
+ std::string title = g_pXWaylandManager->getTitle(pWindow);
std::string appidclass = g_pXWaylandManager->getAppIDClass(pWindow);
Debug::log(LOG, "Searching for matching rules for %s (title: %s)", appidclass.c_str(), title.c_str());
@@ -1519,8 +1503,8 @@ std::vector<SWindowRule> CConfigManager::getMatchingRules(CWindow* pWindow) {
returns.push_back(rule);
}
- const uint64_t PID = pWindow->getPID();
- bool anyExecFound = false;
+ const uint64_t PID = pWindow->getPID();
+ bool anyExecFound = false;
for (auto& er : execRequestedRules) {
if (er.iPid == PID) {
@@ -1585,11 +1569,11 @@ void CConfigManager::performMonitorReload() {
m_bWantsMonitorReload = false;
}
-SConfigValue* CConfigManager::getConfigValuePtr(std::string val) {
+SConfigValue* CConfigManager::getConfigValuePtr(const std::string& val) {
return &configValues[val];
}
-SConfigValue* CConfigManager::getConfigValuePtrSafe(std::string val) {
+SConfigValue* CConfigManager::getConfigValuePtrSafe(const std::string& val) {
const auto IT = configValues.find(val);
if (IT == configValues.end())
@@ -1622,14 +1606,14 @@ void CConfigManager::ensureDPMS() {
auto rule = getMonitorRuleFor(rm->szName, rm->output->description ? rm->output->description : "");
if (rule.disabled == rm->m_bEnabled) {
- rm->m_pThisWrap = &rm;
+ rm->m_pThisWrap = &rm;
g_pHyprRenderer->applyMonitorRule(rm.get(), &rule);
}
}
}
void CConfigManager::ensureVRR(CMonitor* pMonitor) {
- static auto *const PNOVRR = &getConfigValuePtr("misc:no_vfr")->intValue;
+ static auto* const PNOVRR = &getConfigValuePtr("misc:no_vfr")->intValue;
auto ensureVRRForDisplay = [&](CMonitor* m) -> void {
if (!*PNOVRR && !m->vrrActive) {
@@ -1682,8 +1666,8 @@ void CConfigManager::addParseError(const std::string& err) {
g_pHyprError->queueCreate(parseError + "\nHyprland may not work correctly.", CColor(255, 50, 50, 255));
}
-CMonitor* CConfigManager::getBoundMonitorForWS(std::string wsname) {
- for (auto&[ws, mon] : boundWorkspaces) {
+CMonitor* CConfigManager::getBoundMonitorForWS(const std::string& wsname) {
+ for (auto& [ws, mon] : boundWorkspaces) {
const auto WSNAME = ws.find("name:") == 0 ? ws.substr(5) : ws;
if (WSNAME == wsname) {
@@ -1694,7 +1678,7 @@ CMonitor* CConfigManager::getBoundMonitorForWS(std::string wsname) {
return nullptr;
}
-std::string CConfigManager::getBoundMonitorStringForWS(std::string wsname) {
+std::string CConfigManager::getBoundMonitorStringForWS(const std::string& wsname) {
for (auto& [ws, mon] : boundWorkspaces) {
const auto WSNAME = ws.find("name:") == 0 ? ws.substr(5) : ws;
@@ -1706,7 +1690,7 @@ std::string CConfigManager::getBoundMonitorStringForWS(std::string wsname) {
return "";
}
-void CConfigManager::addExecRule(SExecRequestedRule rule) {
+void CConfigManager::addExecRule(const SExecRequestedRule& rule) {
execRequestedRules.push_back(rule);
}
diff --git a/src/config/ConfigManager.hpp b/src/config/ConfigManager.hpp
index 432ea084..468851b8 100644
--- a/src/config/ConfigManager.hpp
+++ b/src/config/ConfigManager.hpp
@@ -17,71 +17,71 @@
#define STRVAL_EMPTY "[[EMPTY]]"
-#define INITANIMCFG(name) animationConfig[name] = {}
+#define INITANIMCFG(name) animationConfig[name] = {}
#define CREATEANIMCFG(name, parent) animationConfig[name] = {false, "", "", 0.f, -1, &animationConfig["global"], &animationConfig[parent]}
struct SConfigValue {
- int64_t intValue = -INT64_MAX;
- float floatValue = -__FLT_MAX__;
- std::string strValue = "";
- Vector2D vecValue = Vector2D(-__FLT_MAX__, -__FLT_MAX__);
+ int64_t intValue = -INT64_MAX;
+ float floatValue = -__FLT_MAX__;
+ std::string strValue = "";
+ Vector2D vecValue = Vector2D(-__FLT_MAX__, -__FLT_MAX__);
std::shared_ptr<ICustomConfigValueData> data;
- bool set = false; // used for device configs
+ bool set = false; // used for device configs
};
struct SMonitorRule {
- std::string name = "";
- Vector2D resolution = Vector2D(1280,720);
- Vector2D offset = Vector2D(0,0);
- float scale = 1;
- float refreshRate = 60;
- std::string defaultWorkspace = "";
- bool disabled = false;
- wl_output_transform transform = WL_OUTPUT_TRANSFORM_NORMAL;
- std::string mirrorOf = "";
- bool enable10bit = false;
+ std::string name = "";
+ Vector2D resolution = Vector2D(1280, 720);
+ Vector2D offset = Vector2D(0, 0);
+ float scale = 1;
+ float refreshRate = 60;
+ std::string defaultWorkspace = "";
+ bool disabled = false;
+ wl_output_transform transform = WL_OUTPUT_TRANSFORM_NORMAL;
+ std::string mirrorOf = "";
+ bool enable10bit = false;
};
struct SMonitorAdditionalReservedArea {
- int top = 0;
- int bottom = 0;
- int left = 0;
- int right = 0;
+ int top = 0;
+ int bottom = 0;
+ int left = 0;
+ int right = 0;
};
struct SAnimationPropertyConfig {
- bool overriden = true;
+ bool overriden = true;
- std::string internalBezier = "";
- std::string internalStyle = "";
- float internalSpeed = 0.f;
- int internalEnabled = -1;
+ std::string internalBezier = "";
+ std::string internalStyle = "";
+ float internalSpeed = 0.f;
+ int internalEnabled = -1;
- SAnimationPropertyConfig* pValues = nullptr;
+ SAnimationPropertyConfig* pValues = nullptr;
SAnimationPropertyConfig* pParentAnimation = nullptr;
};
struct SExecRequestedRule {
- std::string szRule = "";
- uint64_t iPid = 0;
+ std::string szRule = "";
+ uint64_t iPid = 0;
};
class CVarList {
-public:
+ public:
CVarList(const std::string& in, long unsigned int lastArgNo = 0, const char separator = ',') {
std::string curitem = "";
- std::string argZ = in;
+ std::string argZ = in;
- auto nextItem = [&]() {
+ auto nextItem = [&]() {
auto idx = lastArgNo != 0 && m_vArgs.size() >= lastArgNo - 1 ? std::string::npos : argZ.find_first_of(separator);
if (idx != std::string::npos) {
curitem = argZ.substr(0, idx);
- argZ = argZ.substr(idx + 1);
+ argZ = argZ.substr(idx + 1);
} else {
curitem = argZ;
- argZ = STRVAL_EMPTY;
+ argZ = STRVAL_EMPTY;
}
};
@@ -106,122 +106,130 @@ public:
}
// for range-based loops
- std::vector<std::string>::iterator begin() { return m_vArgs.begin(); }
- std::vector<std::string>::const_iterator begin() const { return m_vArgs.begin(); }
- std::vector<std::string>::iterator end() { return m_vArgs.end(); }
- std::vector<std::string>::const_iterator end() const { return m_vArgs.end(); }
+ std::vector<std::string>::iterator begin() {
+ return m_vArgs.begin();
+ }
+ std::vector<std::string>::const_iterator begin() const {
+ return m_vArgs.begin();
+ }
+ std::vector<std::string>::iterator end() {
+ return m_vArgs.end();
+ }
+ std::vector<std::string>::const_iterator end() const {
+ return m_vArgs.end();
+ }
private:
std::vector<std::string> m_vArgs;
};
class CConfigManager {
-public:
+ public:
CConfigManager();
- void tick();
- void init();
+ void tick();
+ void init();
- int getInt(const std::string&);
- float getFloat(const std::string&);
- std::string getString(const std::string&);
- void setFloat(std::string, float);
- void setInt(std::string, int);
- void setString(std::string, std::string);
+ int getInt(const std::string&);
+ float getFloat(const std::string&);
+ std::string getString(const std::string&);
+ void setFloat(const std::string&, float);
+ void setInt(const std::string&, int);
+ void setString(const std::string&, const std::string&);
- int getDeviceInt(const std::string&, const std::string&);
- float getDeviceFloat(const std::string&, const std::string&);
- std::string getDeviceString(const std::string&, const std::string&);
- bool deviceConfigExists(const std::string&);
- bool shouldBlurLS(const std::string&);
+ int getDeviceInt(const std::string&, const std::string&);
+ float getDeviceFloat(const std::string&, const std::string&);
+ std::string getDeviceString(const std::string&, const std::string&);
+ bool deviceConfigExists(const std::string&);
+ bool shouldBlurLS(const std::string&);
- SConfigValue* getConfigValuePtr(std::string);
- SConfigValue* getConfigValuePtrSafe(std::string);
+ SConfigValue* getConfigValuePtr(const std::string&);
+ SConfigValue* getConfigValuePtrSafe(const std::string&);
- SMonitorRule getMonitorRuleFor(std::string, std::string displayName = "");
+ SMonitorRule getMonitorRuleFor(const std::string&, const std::string& displayName = "");
- CMonitor* getBoundMonitorForWS(std::string);
- std::string getBoundMonitorStringForWS(std::string);
+ CMonitor* getBoundMonitorForWS(const std::string&);
+ std::string getBoundMonitorStringForWS(const std::string&);
- std::vector<SWindowRule> getMatchingRules(CWindow*);
+ std::vector<SWindowRule> getMatchingRules(CWindow*);
std::unordered_map<std::string, SMonitorAdditionalReservedArea> m_mAdditionalReservedAreas;
// no-op when done.
- void dispatchExecOnce();
+ void dispatchExecOnce();
- void performMonitorReload();
- bool m_bWantsMonitorReload = false;
- bool m_bForceReload = false;
- bool m_bNoMonitorReload = false;
- void ensureDPMS();
- void ensureVRR(CMonitor* pMonitor = nullptr);
+ void performMonitorReload();
+ bool m_bWantsMonitorReload = false;
+ bool m_bForceReload = false;
+ bool m_bNoMonitorReload = false;
+ void ensureDPMS();
+ void ensureVRR(CMonitor* pMonitor = nullptr);
- std::string parseKeyword(const std::string&, const std::string&, bool dynamic = false);
+ std::string parseKeyword(const std::string&, const std::string&, bool dynamic = false);
- void addParseError(const std::string&);
+ void addParseError(const std::string&);
SAnimationPropertyConfig* getAnimationPropertyConfig(const std::string&);
- void addExecRule(SExecRequestedRule);
+ void addExecRule(const SExecRequestedRule&);
- std::string configCurrentPath;
+ std::string configCurrentPath;
-private:
- std::deque<std::string> configPaths; // stores all the config paths
- std::unordered_map<std::string, time_t> configModifyTimes; // stores modify times
- std::unordered_map<std::string, std::string> configDynamicVars; // stores dynamic vars declared by the user
- std::unordered_map<std::string, SConfigValue> configValues;
+ private:
+ std::deque<std::string> configPaths; // stores all the config paths
+ std::unordered_map<std::string, time_t> configModifyTimes; // stores modify times
+ std::unordered_map<std::string, std::string> configDynamicVars; // stores dynamic vars declared by the user
+ std::unordered_map<std::string, SConfigValue> configValues;
std::unordered_map<std::string, std::unordered_map<std::string, SConfigValue>> deviceConfigs; // stores device configs
- std::unordered_map<std::string, SAnimationPropertyConfig> animationConfig; // stores all the animations with their set values
+ std::unordered_map<std::string, SAnimationPropertyConfig> animationConfig; // stores all the animations with their set values
- std::string currentCategory = ""; // For storing the category of the current item
+ std::string currentCategory = ""; // For storing the category of the current item
- std::string parseError = ""; // For storing a parse error to display later
+ std::string parseError = ""; // For storing a parse error to display later
- std::string m_szCurrentSubmap = ""; // For storing the current keybind submap
+ std::string m_szCurrentSubmap = ""; // For storing the current keybind submap
- std::vector<std::pair<std::string, std::string>> boundWorkspaces;
+ std::vector<std::pair<std::string, std::string>> boundWorkspaces;
- std::vector<SExecRequestedRule> execRequestedRules; // rules requested with exec, e.g. [workspace 2] kitty
+ std::vector<SExecRequestedRule> execRequestedRules; // rules requested with exec, e.g. [workspace 2] kitty
- bool isFirstLaunch = true; // For exec-once
+ bool isFirstLaunch = true; // For exec-once
- std::deque<SMonitorRule> m_dMonitorRules;
- std::deque<SWindowRule> m_dWindowRules;
- std::deque<std::string> m_dBlurLSNamespaces;
+ std::deque<SMonitorRule> m_dMonitorRules;
+ std::deque<SWindowRule> m_dWindowRules;
+ std::deque<std::string> m_dBlurLSNamespaces;
- bool firstExecDispatched = false;
- std::deque<std::string> firstExecRequests;
+ bool firstExecDispatched = false;
+ std::deque<std::string> firstExecRequests;
// internal methods
- void setDefaultVars();
- void setDefaultAnimationVars();
- void setDeviceDefaultVars(const std::string&);
-
- void setAnimForChildren(SAnimationPropertyConfig *const);
-
- void applyUserDefinedVars(std::string&, const size_t);
- void loadConfigLoadVars();
- SConfigValue getConfigValueSafe(const std::string&);
- SConfigValue getConfigValueSafeDevice(const std::string&, const std::string&);
- void parseLine(std::string&);
- void configSetValueSafe(const std::string&, const std::string&);
- void handleDeviceConfig(const std::string&, const std::string&);
- void handleRawExec(const std::string&, const std::string&);
- void handleMonitor(const std::string&, const std::string&);
- void handleBind(const std::string&, const std::string&);
- void handleUnbind(const std::string&, const std::string&);
- void handleWindowRule(const std::string&, const std::string&);
- void handleWindowRuleV2(const std::string&, const std::string&);
- void handleDefaultWorkspace(const std::string&, const std::string&);
- void handleBezier(const std::string&, const std::string&);
- void handleAnimation(const std::string&, const std::string&);
- void handleSource(const std::string&, const std::string&);
- void handleSubmap(const std::string&, const std::string&);
- void handleBlurLS(const std::string&, const std::string&);
- void handleBindWS(const std::string&, const std::string&);
+ void setDefaultVars();
+ void setDefaultAnimationVars();
+ void setDeviceDefaultVars(const std::string&);
+
+ void setAnimForChildren(SAnimationPropertyConfig* const);
+
+ void applyUserDefinedVars(std::string&, const size_t);
+ void loadConfigLoadVars();
+ SConfigValue getConfigValueSafe(const std::string&);
+ SConfigValue getConfigValueSafeDevice(const std::string&, const std::string&);
+ void parseLine(std::string&);
+ void configSetValueSafe(const std::string&, const std::string&);
+ void handleDeviceConfig(const std::string&, const std::string&);
+ void handleRawExec(const std::string&, const std::string&);
+ void handleMonitor(const std::string&, const std::string&);
+ void handleBind(const std::string&, const std::string&);
+ void handleUnbind(const std::string&, const std::string&);
+ void handleWindowRule(const std::string&, const std::string&);
+ void handleWindowRuleV2(const std::string&, const std::string&);
+ void handleDefaultWorkspace(const std::string&, const std::string&);
+ void handleBezier(const std::string&, const std::string&);
+ void handleAnimation(const std::string&, const std::string&);
+ void handleSource(const std::string&, const std::string&);
+ void handleSubmap(const std::string&, const std::string&);
+ void handleBlurLS(const std::string&, const std::string&);
+ void handleBindWS(const std::string&, const std::string&);
};
inline std::unique_ptr<CConfigManager> g_pConfigManager;
diff --git a/src/debug/HyprCtl.cpp b/src/debug/HyprCtl.cpp
index 10a7febd..b445b112 100644
--- a/src/debug/HyprCtl.cpp
+++ b/src/debug/HyprCtl.cpp
@@ -20,7 +20,7 @@ std::string monitorsRequest(HyprCtl::eHyprCtlOutputFormat format) {
for (auto& m : g_pCompositor->m_vMonitors) {
result += getFormat(
-R"#({
+ R"#({
"id": %i,
"name": "%s",
"description": "%s",
@@ -39,19 +39,11 @@ R"#({
"focused": %s,
"dpmsStatus": %s
},)#",
- m->ID,
- escapeJSONStrings(m->szName).c_str(),
- escapeJSONStrings(m->output->description ? m->output->description : "").c_str(),
- (int)m->vecPixelSize.x, (int)m->vecPixelSize.y,
- m->refreshRate,
- (int)m->vecPosition.x, (int)m->vecPosition.y,
- m->activeWorkspace, escapeJSONStrings(g_pCompositor->getWorkspaceByID(m->activeWorkspace)->m_szName).c_str(),
- (int)m->vecReservedTopLeft.x, (int)m->vecReservedTopLeft.y, (int)m->vecReservedBottomRight.x, (int)m->vecReservedBottomRight.y,
- m->scale,
- (int)m->transform,
- (m.get() == g_pCompositor->m_pLastMonitor ? "true" : "false"),
- (m->dpmsStatus ? "true" : "false")
- );
+ m->ID, escapeJSONStrings(m->szName).c_str(), escapeJSONStrings(m->output->description ? m->output->description : "").c_str(), (int)m->vecPixelSize.x,
+ (int)m->vecPixelSize.y, m->refreshRate, (int)m->vecPosition.x, (int)m->vecPosition.y, m->activeWorkspace,
+ escapeJSONStrings(g_pCompositor->getWorkspaceByID(m->activeWorkspace)->m_szName).c_str(), (int)m->vecReservedTopLeft.x, (int)m->vecReservedTopLeft.y,
+ (int)m->vecReservedBottomRight.x, (int)m->vecReservedBottomRight.y, m->scale, (int)m->transform, (m.get() == g_pCompositor->m_pLastMonitor ? "true" : "false"),
+ (m->dpmsStatus ? "true" : "false"));
}
// remove trailing comma
@@ -60,8 +52,12 @@ R"#({
result += "]";
} else {
for (auto& m : g_pCompositor->m_vMonitors) {
- result += getFormat("Monitor %s (ID %i):\n\t%ix%i@%f at %ix%i\n\tdescription: %s\n\tactive workspace: %i (%s)\n\treserved: %i %i %i %i\n\tscale: %.2f\n\ttransform: %i\n\tfocused: %s\n\tdpmsStatus: %i\n\n",
- m->szName.c_str(), m->ID, (int)m->vecPixelSize.x, (int)m->vecPixelSize.y, m->refreshRate, (int)m->vecPosition.x, (int)m->vecPosition.y, (m->output->description ? m->output->description : ""), m->activeWorkspace, g_pCompositor->getWorkspaceByID(m->activeWorkspace)->m_szName.c_str(), (int)m->vecReservedTopLeft.x, (int)m->vecReservedTopLeft.y, (int)m->vecReservedBottomRight.x, (int)m->vecReservedBottomRight.y, m->scale, (int)m->transform, (m.get() == g_pCompositor->m_pLastMonitor ? "yes" : "no"), (int)m->dpmsStatus);
+ result += getFormat("Monitor %s (ID %i):\n\t%ix%i@%f at %ix%i\n\tdescription: %s\n\tactive workspace: %i (%s)\n\treserved: %i %i %i %i\n\tscale: %.2f\n\ttransform: "
+ "%i\n\tfocused: %s\n\tdpmsStatus: %i\n\n",
+ m->szName.c_str(), m->ID, (int)m->vecPixelSize.x, (int)m->vecPixelSize.y, m->refreshRate, (int)m->vecPosition.x, (int)m->vecPosition.y,
+ (m->output->description ? m->output->description : ""), m->activeWorkspace, g_pCompositor->getWorkspaceByID(m->activeWorkspace)->m_szName.c_str(),
+ (int)m->vecReservedTopLeft.x, (int)m->vecReservedTopLeft.y, (int)m->vecReservedBottomRight.x, (int)m->vecReservedBottomRight.y, m->scale,
+ (int)m->transform, (m.get() == g_pCompositor->m_pLastMonitor ? "yes" : "no"), (int)m->dpmsStatus);
}
}
@@ -74,16 +70,16 @@ static std::string getGroupedData(CWindow* w, HyprCtl::eHyprCtlOutputFormat form
return isJson ? "" : "0";
SLayoutMessageHeader header;
- header.pWindow = w;
+ header.pWindow = w;
const auto groupMembers = std::any_cast<std::deque<CWindow*>>(g_pLayoutManager->getCurrentLayout()->layoutMessage(header, "groupinfo"));
if (groupMembers.empty())
return isJson ? "" : "0";
- const auto comma = isJson ? ", " : ",";
- const auto fmt = isJson ? "\"0x%x\"" : "%x";
+ const auto comma = isJson ? ", " : ",";
+ const auto fmt = isJson ? "\"0x%x\"" : "%x";
std::ostringstream result;
- bool first = true;
+ bool first = true;
for (auto& gw : groupMembers) {
if (first)
first = false;
@@ -99,7 +95,7 @@ static std::string getGroupedData(CWindow* w, HyprCtl::eHyprCtlOutputFormat form
static std::string getWindowData(CWindow* w, HyprCtl::eHyprCtlOutputFormat format) {
if (format == HyprCtl::FORMAT_JSON) {
return getFormat(
-R"#({
+ R"#({
"address": "0x%x",
"at": [%i, %i],
"size": [%i, %i],
@@ -119,25 +115,29 @@ R"#({
"grouped": [%s],
"swallowing": %s
},)#",
- w,
- (int)w->m_vRealPosition.goalv().x, (int)w->m_vRealPosition.goalv().y,
- (int)w->m_vRealSize.goalv().x, (int)w->m_vRealSize.goalv().y,
- w->m_iWorkspaceID, escapeJSONStrings(w->m_iWorkspaceID == -1 ? "" : g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID) ? g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID)->m_szName : std::string("Invalid workspace " + std::to_string(w->m_iWorkspaceID))).c_str(),
- ((int)w->m_bIsFloating == 1 ? "true" : "false"),
- w->m_iMonitorID,
- escapeJSONStrings(g_pXWaylandManager->getAppIDClass(w)).c_str(),
- escapeJSONStrings(g_pXWaylandManager->getTitle(w)).c_str(),
- w->getPID(),
- ((int)w->m_bIsX11 == 1 ? "true" : "false"),
- (w->m_bPinned ? "true" : "false"),
- (w->m_bIsFullscreen ? "true" : "false"),
- (w->m_bIsFullscreen ? (g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID) ? g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID)->m_efFullscreenMode : 0) : 0),
- getGroupedData(w, format).c_str(),
- (w->m_pSwallowed ? getFormat("\"0x%x\"", w->m_pSwallowed).c_str() : "null")
- );
+ w, (int)w->m_vRealPosition.goalv().x, (int)w->m_vRealPosition.goalv().y, (int)w->m_vRealSize.goalv().x, (int)w->m_vRealSize.goalv().y, w->m_iWorkspaceID,
+ escapeJSONStrings(w->m_iWorkspaceID == -1 ? "" :
+ g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID) ? g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID)->m_szName :
+ std::string("Invalid workspace " + std::to_string(w->m_iWorkspaceID)))
+ .c_str(),
+ ((int)w->m_bIsFloating == 1 ? "true" : "false"), w->m_iMonitorID, escapeJSONStrings(g_pXWaylandManager->getAppIDClass(w)).c_str(),
+ escapeJSONStrings(g_pXWaylandManager->getTitle(w)).c_str(), w->getPID(), ((int)w->m_bIsX11 == 1 ? "true" : "false"), (w->m_bPinned ? "true" : "false"),
+ (w->m_bIsFullscreen ? "true" : "false"),
+ (w->m_bIsFullscreen ? (g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID) ? g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID)->m_efFullscreenMode : 0) : 0),
+ getGroupedData(w, format).c_str(), (w->m_pSwallowed ? getFormat("\"0x%x\"", w->m_pSwallowed).c_str() : "null"));
} else {
- return getFormat("Window %x -> %s:\n\tat: %i,%i\n\tsize: %i,%i\n\tworkspace: %i (%s)\n\tfloating: %i\n\tmonitor: %i\n\tclass: %s\n\ttitle: %s\n\tpid: %i\n\txwayland: %i\n\tpinned: %i\n\tfullscreen: %i\n\tfullscreenmode: %i\n\tgrouped: %s\n\tswallowing: %x\n\n",
- w, w->m_szTitle.c_str(), (int)w->m_vRealPosition.goalv().x, (int)w->m_vRealPosition.goalv().y, (int)w->m_vRealSize.goalv().x, (int)w->m_vRealSize.goalv().y, w->m_iWorkspaceID, (w->m_iWorkspaceID == -1 ? "" : g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID) ? g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID)->m_szName.c_str() : std::string("Invalid workspace " + std::to_string(w->m_iWorkspaceID)).c_str()), (int)w->m_bIsFloating, w->m_iMonitorID, g_pXWaylandManager->getAppIDClass(w).c_str(), g_pXWaylandManager->getTitle(w).c_str(), w->getPID(), (int)w->m_bIsX11, (int)w->m_bPinned, (int)w->m_bIsFullscreen, (w->m_bIsFullscreen ? (g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID) ? g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID)->m_efFullscreenMode : 0) : 0), getGroupedData(w, format).c_str(), w->m_pSwallowed);
+ return getFormat(
+ "Window %x -> %s:\n\tat: %i,%i\n\tsize: %i,%i\n\tworkspace: %i (%s)\n\tfloating: %i\n\tmonitor: %i\n\tclass: %s\n\ttitle: %s\n\tpid: %i\n\txwayland: %i\n\tpinned: "
+ "%i\n\tfullscreen: %i\n\tfullscreenmode: %i\n\tgrouped: %s\n\tswallowing: %x\n\n",
+ w, w->m_szTitle.c_str(), (int)w->m_vRealPosition.goalv().x, (int)w->m_vRealPosition.goalv().y, (int)w->m_vRealSize.goalv().x, (int)w->m_vRealSize.goalv().y,
+ w->m_iWorkspaceID,
+ (w->m_iWorkspaceID == -1 ? "" :
+ g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID) ? g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID)->m_szName.c_str() :
+ std::string("Invalid workspace " + std::to_string(w->m_iWorkspaceID)).c_str()),
+ (int)w->m_bIsFloating, w->m_iMonitorID, g_pXWaylandManager->getAppIDClass(w).c_str(), g_pXWaylandManager->getTitle(w).c_str(), w->getPID(), (int)w->m_bIsX11,
+ (int)w->m_bPinned, (int)w->m_bIsFullscreen,
+ (w->m_bIsFullscreen ? (g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID) ? g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID)->m_efFullscreenMode : 0) : 0),
+ getGroupedData(w, format).c_str(), w->m_pSwallowed);
}
}
@@ -154,7 +154,7 @@ std::string clientsRequest(HyprCtl::eHyprCtlOutputFormat format) {
// remove trailing comma
if (result != "[")
- result.pop_back();
+ result.pop_back();
result += "]";
} else {
@@ -176,7 +176,7 @@ std::string workspacesRequest(HyprCtl::eHyprCtlOutputFormat format) {
const auto PLASTW = w->getLastFocusedWindow();
result += getFormat(
-R"#({
+ R"#({
"id": %i,
"name": "%s",
"monitor": "%s",
@@ -185,14 +185,9 @@ R"#({
"lastwindow": "0x%x",
"lastwindowtitle": "%s"
},)#",
- w->m_iID,
- escapeJSONStrings(w->m_szName).c_str(),
- escapeJSONStrings(g_pCompositor->getMonitorFromID(w->m_iMonitorID)->szName).c_str(),
- g_pCompositor->getWindowsOnWorkspace(w->m_iID),
- ((int)w->m_bHasFullscreenWindow == 1 ? "true" : "false"),
- PLASTW,
- PLASTW ? escapeJSONStrings(PLASTW->m_szTitle).c_str() : ""
- );
+ w->m_iID, escapeJSONStrings(w->m_szName).c_str(), escapeJSONStrings(g_pCompositor->getMonitorFromID(w->m_iMonitorID)->szName).c_str(),
+ g_pCompositor->getWindowsOnWorkspace(w->m_iID), ((int)w->m_bHasFullscreenWindow == 1 ? "true" : "false"), PLASTW,
+ PLASTW ? escapeJSONStrings(PLASTW->m_szTitle).c_str() : "");
}
// remove trailing comma
@@ -202,8 +197,9 @@ R"#({
} else {
for (auto& w : g_pCompositor->m_vWorkspaces) {
const auto PLASTW = w->getLastFocusedWindow();
- result += getFormat("workspace ID %i (%s) on monitor %s:\n\twindows: %i\n\thasfullscreen: %i\n\tlastwindow: 0x%x\n\tlastwindowtitle: %s\n\n",
- w->m_iID, w->m_szName.c_str(), g_pCompositor->getMonitorFromID(w->m_iMonitorID)->szName.c_str(), g_pCompositor->getWindowsOnWorkspace(w->m_iID), (int)w->m_bHasFullscreenWindow, PLASTW, PLASTW ? PLASTW->m_szTitle.c_str() : "");
+ result += getFormat("workspace ID %i (%s) on monitor %s:\n\twindows: %i\n\thasfullscreen: %i\n\tlastwindow: 0x%x\n\tlastwindowtitle: %s\n\n", w->m_iID,
+ w->m_szName.c_str(), g_pCompositor->getMonitorFromID(w->m_iMonitorID)->szName.c_str(), g_pCompositor->getWindowsOnWorkspace(w->m_iID),
+ (int)w->m_bHasFullscreenWindow, PLASTW, PLASTW ? PLASTW->m_szTitle.c_str() : "");
}
}
return result;
@@ -216,7 +212,7 @@ std::string activeWindowRequest(HyprCtl::eHyprCtlOutputFormat format) {
return format == HyprCtl::FORMAT_JSON ? "{}" : "Invalid";
auto result = getWindowData(PWINDOW, format);
-
+
if (format == HyprCtl::FORMAT_JSON)
result.pop_back();
@@ -231,23 +227,21 @@ std::string layersRequest(HyprCtl::eHyprCtlOutputFormat format) {
for (auto& mon : g_pCompositor->m_vMonitors) {
result += getFormat(
-R"#("%s": {
+ R"#("%s": {
"levels": {
)#",
- escapeJSONStrings(mon->szName).c_str()
- );
+ escapeJSONStrings(mon->szName).c_str());
int layerLevel = 0;
for (auto& level : mon->m_aLayerSurfaceLists) {
result += getFormat(
-R"#(
+ R"#(
"%i": [
)#",
- layerLevel
- );
+ layerLevel);
for (auto& layer : level) {
result += getFormat(
-R"#( {
+ R"#( {
"address": "0x%x",
"x": %i,
"y": %i,
@@ -255,13 +249,7 @@ R"#( {
"h": %i,
"namespace": "%s"
},)#",
- layer.get(),
- layer->geometry.x,
- layer->geometry.y,
- layer->geometry.width,
- layer->geometry.height,
- escapeJSONStrings(layer->szNamespace).c_str()
- );
+ layer.get(), layer->geometry.x, layer->geometry.y, layer->geometry.width, layer->geometry.height, escapeJSONStrings(layer->szNamespace).c_str());
}
// remove trailing comma
@@ -294,7 +282,8 @@ R"#( {
result += getFormat("\tLayer level %i:\n", layerLevel);
for (auto& layer : level) {
- result += getFormat("\t\tLayer %x: xywh: %i %i %i %i, namespace: %s\n", layer.get(), layer->geometry.x, layer->geometry.y, layer->geometry.width, layer->geometry.height, layer->szNamespace.c_str());
+ result += getFormat("\t\tLayer %x: xywh: %i %i %i %i, namespace: %s\n", layer.get(), layer->geometry.x, layer->geometry.y, layer->geometry.width,
+ layer->geometry.height, layer->szNamespace.c_str());
}
layerLevel++;
@@ -315,15 +304,13 @@ std::string devicesRequest(HyprCtl::eHyprCtlOutputFormat format) {
for (auto& m : g_pInputManager->m_lMice) {
result += getFormat(
-R"#( {
+ R"#( {
"address": "0x%x",
"name": "%s",
"defaultSpeed": %f
},)#",
- &m,
- escapeJSONStrings(m.name).c_str(),
- wlr_input_device_is_libinput(m.mouse) ? libinput_device_config_accel_get_default_speed((libinput_device*)wlr_libinput_get_device_handle(m.mouse)) : 0.f
- );
+ &m, escapeJSONStrings(m.name).c_str(),
+ wlr_input_device_is_libinput(m.mouse) ? libinput_device_config_accel_get_default_speed((libinput_device*)wlr_libinput_get_device_handle(m.mouse)) : 0.f);
}
// remove trailing comma
@@ -334,7 +321,7 @@ R"#( {
for (auto& k : g_pInputManager->m_lKeyboards) {
const auto KM = g_pInputManager->getActiveLayoutForKeyboard(&k);
result += getFormat(
-R"#( {
+ R"#( {
"address": "0x%x",
"name": "%s",
"rules": "%s",
@@ -345,16 +332,9 @@ R"#( {
"active_keymap": "%s",
"main": %s
},)#",
- &k,
- escapeJSONStrings(k.name).c_str(),
- escapeJSONStrings(k.currentRules.rules).c_str(),
- escapeJSONStrings(k.currentRules.model).c_str(),
- escapeJSONStrings(k.currentRules.layout).c_str(),
- escapeJSONStrings(k.currentRules.variant).c_str(),
- escapeJSONStrings(k.currentRules.options).c_str(),
- escapeJSONStrings(KM).c_str(),
- (k.active ? "true" : "false")
- );
+ &k, escapeJSONStrings(k.name).c_str(), escapeJSONStrings(k.currentRules.rules).c_str(), escapeJSONStrings(k.currentRules.model).c_str(),
+ escapeJSONStrings(k.currentRules.layout).c_str(), escapeJSONStrings(k.currentRules.variant).c_str(), escapeJSONStrings(k.currentRules.options).c_str(),
+ escapeJSONStrings(KM).c_str(), (k.active ? "true" : "false"));
}
// remove trailing comma
@@ -365,7 +345,7 @@ R"#( {
for (auto& d : g_pInputManager->m_lTabletPads) {
result += getFormat(
-R"#( {
+ R"#( {
"address": "0x%x",
"type": "tabletPad",
"belongsTo": {
@@ -373,33 +353,26 @@ R"#( {
"name": "%s"
}
},)#",
- &d,
- d.pTabletParent,
- escapeJSONStrings(d.pTabletParent ? d.pTabletParent->name : "").c_str()
- );
+ &d, d.pTabletParent, escapeJSONStrings(d.pTabletParent ? d.pTabletParent->name : "").c_str());
}
for (auto& d : g_pInputManager->m_lTablets) {
result += getFormat(
-R"#( {
+ R"#( {
"address": "0x%x",
"name": "%s"
},)#",
- &d,
- escapeJSONStrings(d.name).c_str()
- );
+ &d, escapeJSONStrings(d.name).c_str());
}
for (auto& d : g_pInputManager->m_lTabletTools) {
result += getFormat(
-R"#( {
+ R"#( {
"address": "0x%x",
"type": "tabletTool",
"belongsTo": "0x%x"
},)#",
- &d,
- d.wlrTabletTool ? d.wlrTabletTool->data : 0
- );
+ &d, d.wlrTabletTool ? d.wlrTabletTool->data : 0);
}
// remove trailing comma
@@ -410,13 +383,11 @@ R"#( {
for (auto& d : g_pInputManager->m_lTouchDevices) {
result += getFormat(
-R"#( {
+ R"#( {
"address": "0x%x",
"name": "%s"
},)#",
- &d,
- d.name.c_str()
- );
+ &d, d.name.c_str());
}
// remove trailing comma
@@ -428,13 +399,11 @@ R"#( {
for (auto& d : g_pInputManager->m_lSwitches) {
result += getFormat(
-R"#( {
+ R"#( {
"address": "0x%x",
"name": "%s"
},)#",
- &d,
- d.pWlrDevice ? d.pWlrDevice->name : ""
- );
+ &d, d.pWlrDevice ? d.pWlrDevice->name : "");
}
// remove trailing comma
@@ -448,14 +417,18 @@ R"#( {
result += "mice:\n";
for (auto& m : g_pInputManager->m_lMice) {
- result += getFormat("\tMouse at %x:\n\t\t%s\n\t\t\tdefault speed: %f\n", &m, m.name.c_str(), (wlr_input_device_is_libinput(m.mouse) ? libinput_device_config_accel_get_default_speed((libinput_device*)wlr_libinput_get_device_handle(m.mouse)) : 0.f));
+ result += getFormat(
+ "\tMouse at %x:\n\t\t%s\n\t\t\tdefault speed: %f\n", &m, m.name.c_str(),
+ (wlr_input_device_is_libinput(m.mouse) ? libinput_device_config_accel_get_default_speed((libinput_device*)wlr_libinput_get_device_handle(m.mouse)) : 0.f));
}
result += "\n\nKeyboards:\n";
for (auto& k : g_pInputManager->m_lKeyboards) {
const auto KM = g_pInputManager->getActiveLayoutForKeyboard(&k);
- result += getFormat("\tKeyboard at %x:\n\t\t%s\n\t\t\trules: r \"%s\", m \"%s\", l \"%s\", v \"%s\", o \"%s\"\n\t\t\tactive keymap: %s\n\t\t\tmain: %s\n", &k, k.name.c_str(), k.currentRules.rules.c_str(), k.currentRules.model.c_str(), k.currentRules.layout.c_str(), k.currentRules.variant.c_str(), k.currentRules.options.c_str(), KM.c_str(), (k.active ? "yes" : "no"));
+ result += getFormat("\tKeyboard at %x:\n\t\t%s\n\t\t\trules: r \"%s\", m \"%s\", l \"%s\", v \"%s\", o \"%s\"\n\t\t\tactive keymap: %s\n\t\t\tmain: %s\n", &k,
+ k.name.c_str(), k.currentRules.rules.c_str(), k.currentRules.model.c_str(), k.currentRules.layout.c_str(), k.currentRules.variant.c_str(),
+ k.currentRules.options.c_str(), KM.c_str(), (k.active ? "yes" : "no"));
}
result += "\n\nTablets:\n";
@@ -491,7 +464,8 @@ R"#( {
std::string versionRequest(HyprCtl::eHyprCtlOutputFormat format) {
if (format == HyprCtl::eHyprCtlOutputFormat::FORMAT_NORMAL) {
- std::string result = "Hyprland, built from branch " + std::string(GIT_BRANCH) + " at commit " + GIT_COMMIT_HASH + GIT_DIRTY + " (" + removeBeginEndSpacesTabs(GIT_COMMIT_MESSAGE).c_str() + ").\nflags: (if any)\n";
+ std::string result = "Hyprland, built from branch " + std::string(GIT_BRANCH) + " at commit " + GIT_COMMIT_HASH + GIT_DIRTY + " (" +
+ removeBeginEndSpacesTabs(GIT_COMMIT_MESSAGE).c_str() + ").\nflags: (if any)\n";
#ifdef LEGACY_RENDERER
result += "legacyrenderer\n";
@@ -500,7 +474,7 @@ std::string versionRequest(HyprCtl::eHyprCtlOutputFormat format) {
result += "debug\n";
#endif
#ifdef HYPRLAND_DEBUG
- result += "debug\n";
+ result += "debug\n";
#endif
#ifdef NO_XWAYLAND
result += "no xwayland\n";
@@ -509,12 +483,13 @@ std::string versionRequest(HyprCtl::eHyprCtlOutputFormat format) {
return result;
} else {
std::string result = getFormat(
-R"#({
+ R"#({
"branch": "%s",
"commit": "%s",
"dirty": %s,
"commit_message": "%s",
- "flags": [)#", GIT_BRANCH, GIT_COMMIT_HASH, (strcmp(GIT_DIRTY, "dirty") == 0 ? "true" : "false"), removeBeginEndSpacesTabs(GIT_COMMIT_MESSAGE).c_str());
+ "flags": [)#",
+ GIT_BRANCH, GIT_COMMIT_HASH, (strcmp(GIT_DIRTY, "dirty") == 0 ? "true" : "false"), removeBeginEndSpacesTabs(GIT_COMMIT_MESSAGE).c_str());
#ifdef LEGACY_RENDERER
result += "\"legacyrenderer\",";
@@ -523,7 +498,7 @@ R"#({
result += "\"debug\",";
#endif
#ifdef HYPRLAND_DEBUG
- result += "\"debug\",";
+ result += "\"debug\",";
#endif
#ifdef NO_XWAYLAND
result += "\"no xwayland\",";
@@ -563,9 +538,9 @@ std::string dispatchKeyword(std::string in) {
// get rid of the keyword keyword
in = in.substr(in.find_first_of(' ') + 1);
- const auto COMMAND = in.substr(0, in.find_first_of(' '));
+ const auto COMMAND = in.substr(0, in.find_first_of(' '));
- const auto VALUE = in.substr(in.find_first_of(' ') + 1);
+ const auto VALUE = in.substr(in.find_first_of(' ') + 1);
std::string retval = g_pConfigManager->parseKeyword(COMMAND, VALUE, true);
@@ -573,14 +548,14 @@ std::string dispatchKeyword(std::string in) {
g_pConfigManager->m_bWantsMonitorReload = true; // for monitor keywords
if (COMMAND.contains("input") || COMMAND.contains("device:")) {
- g_pInputManager->setKeyboardLayout(); // update kb layout
- g_pInputManager->setPointerConfigs(); // update mouse cfgs
+ g_pInputManager->setKeyboardLayout(); // update kb layout
+ g_pInputManager->setPointerConfigs(); // update mouse cfgs
g_pInputManager->setTouchDeviceConfigs(); // update touch device cfgs
}
if (COMMAND.contains("general:layout"))
- g_pLayoutManager->switchToLayout(g_pConfigManager->getString("general:layout")); // update layout
-
+ g_pLayoutManager->switchToLayout(g_pConfigManager->getString("general:layout")); // update layout
+
if (COMMAND.contains("decoration:screen_shader"))
g_pHyprOpenGL->m_bReloadScreenShader = true;
@@ -592,7 +567,7 @@ std::string dispatchKeyword(std::string in) {
return retval;
}
-std::string reloadRequest(std::string request) {
+std::string reloadRequest(const std::string& request) {
const auto REQMODE = request.substr(request.find_last_of(' ') + 1);
@@ -628,7 +603,8 @@ std::string cursorPosRequest(HyprCtl::eHyprCtlOutputFormat format) {
"x": %i,
"y": %i
}
-)#", (int)CURSORPOS.x, (int)CURSORPOS.y);
+)#",
+ (int)CURSORPOS.x, (int)CURSORPOS.y);
}
return "error";
@@ -639,11 +615,11 @@ std::string getReply(std::string);
std::string dispatchBatch(std::string request) {
// split by ;
- request = request.substr(9);
+ request = request.substr(9);
std::string curitem = "";
- std::string reply = "";
+ std::string reply = "";
- auto nextItem = [&]() {
+ auto nextItem = [&]() {
auto idx = request.find_first_of(';');
if (idx != std::string::npos) {
@@ -671,7 +647,7 @@ std::string dispatchBatch(std::string request) {
std::string dispatchSetCursor(std::string request) {
std::string curitem = "";
- auto nextItem = [&]() {
+ auto nextItem = [&]() {
auto idx = request.find_first_of(' ');
if (idx != std::string::npos) {
@@ -718,20 +694,21 @@ std::string dispatchSetCursor(std::string request) {
return "ok";
}
-std::string switchXKBLayoutRequest(std::string request) {
- CVarList vars(request, 0, ' ');
+std::string switchXKBLayoutRequest(const std::string& request) {
+ CVarList vars(request, 0, ' ');
- const auto KB = vars[1];
+ const auto KB = vars[1];
const auto CMD = vars[2];
// get kb
- const auto PKEYBOARD = std::find_if(g_pInputManager->m_lKeyboards.begin(), g_pInputManager->m_lKeyboards.end(), [&] (const SKeyboard& other) { return other.name == g_pInputManager->deviceNameToInternalString(KB); });
+ const auto PKEYBOARD = std::find_if(g_pInputManager->m_lKeyboards.begin(), g_pInputManager->m_lKeyboards.end(),
+ [&](const SKeyboard& other) { return other.name == g_pInputManager->deviceNameToInternalString(KB); });
if (PKEYBOARD == g_pInputManager->m_lKeyboards.end())
return "device not found";
- const auto PWLRKEYBOARD = wlr_keyboard_from_input_device(PKEYBOARD->keyboard);
- const auto LAYOUTS = xkb_keymap_num_layouts(PWLRKEYBOARD->keymap);
+ const auto PWLRKEYBOARD = wlr_keyboard_from_input_device(PKEYBOARD->keyboard);
+ const auto LAYOUTS = xkb_keymap_num_layouts(PWLRKEYBOARD->keymap);
xkb_layout_index_t activeLayout = 0;
while (activeLayout < LAYOUTS) {
if (xkb_state_layout_index_is_active(PWLRKEYBOARD->xkb_state, activeLayout, XKB_STATE_LAYOUT_EFFECTIVE))
@@ -741,23 +718,23 @@ std::string switchXKBLayoutRequest(std::string request) {
}
if (CMD == "next") {
- wlr_keyboard_notify_modifiers(PWLRKEYBOARD, PWLRKEYBOARD->modifiers.depressed, PWLRKEYBOARD->modifiers.latched, PWLRKEYBOARD->modifiers.locked, activeLayout > LAYOUTS ? 0 : activeLayout + 1);
+ wlr_keyboard_notify_modifiers(PWLRKEYBOARD, PWLRKEYBOARD->modifiers.depressed, PWLRKEYBOARD->modifiers.latched, PWLRKEYBOARD->modifiers.locked,
+ activeLayout > LAYOUTS ? 0 : activeLayout + 1);
} else if (CMD == "prev") {
- wlr_keyboard_notify_modifiers(PWLRKEYBOARD, PWLRKEYBOARD->modifiers.depressed, PWLRKEYBOARD->modifiers.latched, PWLRKEYBOARD->modifiers.locked, activeLayout == 0 ? LAYOUTS - 1 : activeLayout - 1);
+ wlr_keyboard_notify_modifiers(PWLRKEYBOARD, PWLRKEYBOARD->modifiers.depressed, PWLRKEYBOARD->modifiers.latched, PWLRKEYBOARD->modifiers.locked,
+ activeLayout == 0 ? LAYOUTS - 1 : activeLayout - 1);
} else {
-
+
int requestedLayout = 0;
try {
requestedLayout = std::stoi(CMD);
- } catch (std::exception& e) {
- return "invalid arg 2";
- }
+ } catch (std::exception& e) { return "invalid arg 2"; }
if (requestedLayout < 0 || (uint64_t)requestedLayout > LAYOUTS - 1) {
return "layout idx out of range of " + std::to_string(LAYOUTS);
}
- wlr_keyboard_notify_modifiers(PWLRKEYBOARD, PWLRKEYBOARD->modifiers.depressed, PWLRKEYBOARD->modifiers.latched, PWLRKEYBOARD->modifiers.locked, requestedLayout);
+ wlr_keyboard_notify_modifiers(PWLRKEYBOARD, PWLRKEYBOARD->modifiers.depressed, PWLRKEYBOARD->modifiers.latched, PWLRKEYBOARD->modifiers.locked, requestedLayout);
}
return "ok";
@@ -766,7 +743,7 @@ std::string switchXKBLayoutRequest(std::string request) {
std::string dispatchGetOption(std::string request, HyprCtl::eHyprCtlOutputFormat format) {
std::string curitem = "";
- auto nextItem = [&]() {
+ auto nextItem = [&]() {
auto idx = request.find_first_of(' ');
if (idx != std::string::npos) {
@@ -789,10 +766,11 @@ std::string dispatchGetOption(std::string request, HyprCtl::eHyprCtlOutputFormat
return "no such option";
if (format == HyprCtl::eHyprCtlOutputFormat::FORMAT_NORMAL)
- return getFormat("option %s\n\tint: %lld\n\tfloat: %f\n\tstr: \"%s\"\n\tdata: %x", curitem.c_str(), PCFGOPT->intValue, PCFGOPT->floatValue, PCFGOPT->strValue.c_str(), PCFGOPT->data.get());
+ return getFormat("option %s\n\tint: %lld\n\tfloat: %f\n\tstr: \"%s\"\n\tdata: %x", curitem.c_str(), PCFGOPT->intValue, PCFGOPT->floatValue, PCFGOPT->strValue.c_str(),
+ PCFGOPT->data.get());
else {
return getFormat(
-R"#(
+ R"#(
{
"option": "%s",
"int": %lld,
@@ -800,8 +778,8 @@ R"#(
"str": "%s",
"data": "0x%x"
}
-)#", curitem.c_str(), PCFGOPT->intValue, PCFGOPT->floatValue, PCFGOPT->strValue.c_str(), PCFGOPT->data.get()
- );
+)#",
+ curitem.c_str(), PCFGOPT->intValue, PCFGOPT->floatValue, PCFGOPT->strValue.c_str(), PCFGOPT->data.get());
}
}
@@ -839,7 +817,7 @@ void createOutputIter(wlr_backend* backend, void* data) {
std::string dispatchOutput(std::string request) {
std::string curitem = "";
- auto nextItem = [&]() {
+ auto nextItem = [&]() {
auto idx = request.find_first_of(' ');
if (idx != std::string::npos) {
@@ -863,7 +841,7 @@ std::string dispatchOutput(std::string request) {
const auto NAME = curitem;
if (MODE == "create" || MODE == "add") {
- std::pair<std::string, bool> result = { NAME, false };
+ std::pair<std::string, bool> result = {NAME, false};
wlr_multi_for_each_backend(g_pCompositor->m_sWLRBackend, createOutputIter, &result);
@@ -951,13 +929,13 @@ int hyprCtlFDTick(int fd, uint32_t mask, void* data) {
return 0;
sockaddr_in clientAddress;
- socklen_t clientSize = sizeof(clientAddress);
+ socklen_t clientSize = sizeof(clientAddress);
- const auto ACCEPTEDCONNECTION = accept(HyprCtl::iSocketFD, (sockaddr*)&clientAddress, &clientSize);
+ const auto ACCEPTEDCONNECTION = accept(HyprCtl::iSocketFD, (sockaddr*)&clientAddress, &clientSize);
- char readBuffer[1024];
+ char readBuffer[1024];
- auto messageSize = read(ACCEPTEDCONNECTION, readBuffer, 1024);
+ auto messageSize = read(ACCEPTEDCONNECTION, readBuffer, 1024);
readBuffer[messageSize == 1024 ? 1023 : messageSize] = '\0';
std::string request(readBuffer);
@@ -997,7 +975,10 @@ void HyprCtl::startHyprCtlSocket() {
strcpy(SERVERADDRESS.sun_path, socketPath.c_str());
- bind(iSocketFD, (sockaddr*)&SERVERADDRESS, SUN_LEN(&SERVERADDRESS));
+ if (bind(iSocketFD, (sockaddr*)&SERVERADDRESS, SUN_LEN(&SERVERADDRESS)) < 0) {
+ Debug::log(ERR, "Couldn't start the Hyprland Socket. (2) IPC will not work.");
+ return;
+ }
// 10 max queued.
listen(iSocketFD, 10);
diff --git a/src/debug/HyprCtl.hpp b/src/debug/HyprCtl.hpp
index 0dd4f741..26859692 100644
--- a/src/debug/HyprCtl.hpp
+++ b/src/debug/HyprCtl.hpp
@@ -5,20 +5,21 @@
#include "../helpers/MiscFunctions.hpp"
namespace HyprCtl {
- void startHyprCtlSocket();
+ void startHyprCtlSocket();
// very simple thread-safe request method
- inline bool requestMade = false;
- inline bool requestReady = false;
- inline std::string request = "";
+ inline bool requestMade = false;
+ inline bool requestReady = false;
+ inline std::string request = "";
- inline std::ifstream requestStream;
+ inline std::ifstream requestStream;
inline wl_event_source* hyprCtlTickSource = nullptr;
- inline int iSocketFD = -1;
+ inline int iSocketFD = -1;
- enum eHyprCtlOutputFormat {
+ enum eHyprCtlOutputFormat
+ {
FORMAT_NORMAL = 0,
FORMAT_JSON
};
diff --git a/src/debug/HyprDebugOverlay.cpp b/src/debug/HyprDebugOverlay.cpp
index 4fc370b6..e73b8b3f 100644
--- a/src/debug/HyprDebugOverlay.cpp
+++ b/src/debug/HyprDebugOverlay.cpp
@@ -38,10 +38,10 @@ int CHyprMonitorDebugOverlay::draw(int offset) {
if (!m_pMonitor)
return 0;
- int yOffset = offset;
+ int yOffset = offset;
cairo_text_extents_t cairoExtents;
- float maxX = 0;
- std::string text = "";
+ float maxX = 0;
+ std::string text = "";
// get avg fps
float avgFrametime = 0;
@@ -62,7 +62,7 @@ int CHyprMonitorDebugOverlay::draw(int offset) {
}
avgRenderTimeNoOverlay /= m_dLastRenderTimes.size() == 0 ? 1 : m_dLastRenderTimes.size();
- const float FPS = 1.f / (avgFrametime / 1000.f); // frametimes are in ms
+ const float FPS = 1.f / (avgFrametime / 1000.f); // frametimes are in ms
const float idealFPS = m_dLastFrametimes.size();
cairo_select_font_face(g_pDebugOverlay->m_pCairo, "Noto Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
@@ -75,7 +75,8 @@ int CHyprMonitorDebugOverlay::draw(int offset) {
text = m_pMonitor->szName;
cairo_show_text(g_pDebugOverlay->m_pCairo, text.c_str());
cairo_text_extents(g_pDebugOverlay->m_pCairo, text.c_str(), &cairoExtents);
- if (cairoExtents.width > maxX) maxX = cairoExtents.width;
+ if (cairoExtents.width > maxX)
+ maxX = cairoExtents.width;
cairo_set_font_size(g_pDebugOverlay->m_pCairo, 16);
@@ -91,7 +92,8 @@ int CHyprMonitorDebugOverlay::draw(int offset) {
text = std::string(std::to_string((int)FPS) + " FPS");
cairo_show_text(g_pDebugOverlay->m_pCairo, text.c_str());
cairo_text_extents(g_pDebugOverlay->m_pCairo, text.c_str(), &cairoExtents);
- if (cairoExtents.width > maxX) maxX = cairoExtents.width;
+ if (cairoExtents.width > maxX)
+ maxX = cairoExtents.width;
cairo_set_font_size(g_pDebugOverlay->m_pCairo, 10);
cairo_set_source_rgba(g_pDebugOverlay->m_pCairo, 1.f, 1.f, 1.f, 1.f);
@@ -101,26 +103,30 @@ int CHyprMonitorDebugOverlay::draw(int offset) {
text = std::string("Avg Frametime: " + std::to_string((int)avgFrametime) + "." + std::to_string((int)(avgFrametime * 10.f) % 10) + "ms");
cairo_show_text(g_pDebugOverlay->m_pCairo, text.c_str());
cairo_text_extents(g_pDebugOverlay->m_pCairo, text.c_str(), &cairoExtents);
- if (cairoExtents.width > maxX) maxX = cairoExtents.width;
+ if (cairoExtents.width > maxX)
+ maxX = cairoExtents.width;
yOffset += 11;
cairo_move_to(g_pDebugOverlay->m_pCairo, 0, yOffset);
text = std::string("Avg Rendertime: " + std::to_string((int)avgRenderTime) + "." + std::to_string((int)(avgRenderTime * 10.f) % 10) + "ms");
cairo_show_text(g_pDebugOverlay->m_pCairo, text.c_str());
cairo_text_extents(g_pDebugOverlay->m_pCairo, text.c_str(), &cairoExtents);
- if (cairoExtents.width > maxX) maxX = cairoExtents.width;
+ if (cairoExtents.width > maxX)
+ maxX = cairoExtents.width;
yOffset += 11;
cairo_move_to(g_pDebugOverlay->m_pCairo, 0, yOffset);
text = std::string("Avg Rendertime (no overlay): " + std::to_string((int)avgRenderTimeNoOverlay) + "." + std::to_string((int)(avgRenderTimeNoOverlay * 10.f) % 10) + "ms");
cairo_show_text(g_pDebugOverlay->m_pCairo, text.c_str());
cairo_text_extents(g_pDebugOverlay->m_pCairo, text.c_str(), &cairoExtents);
- if (cairoExtents.width > maxX) maxX = cairoExtents.width;
+ if (cairoExtents.width > maxX)
+ maxX = cairoExtents.width;
yOffset += 11;
g_pHyprRenderer->damageBox(&m_wbLastDrawnBox);
- m_wbLastDrawnBox = {(int)g_pCompositor->m_vMonitors.front()->vecPosition.x, (int)g_pCompositor->m_vMonitors.front()->vecPosition.y + offset - 1, (int)maxX + 2, yOffset - offset + 2};
+ m_wbLastDrawnBox = {(int)g_pCompositor->m_vMonitors.front()->vecPosition.x, (int)g_pCompositor->m_vMonitors.front()->vecPosition.y + offset - 1, (int)maxX + 2,
+ yOffset - offset + 2};
g_pHyprRenderer->damageBox(&m_wbLastDrawnBox);
return yOffset - offset;
@@ -144,7 +150,7 @@ void CHyprDebugOverlay::draw() {
if (!m_pCairoSurface || !m_pCairo) {
m_pCairoSurface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, PMONITOR->vecSize.x, PMONITOR->vecSize.y);
- m_pCairo = cairo_create(m_pCairoSurface);
+ m_pCairo = cairo_create(m_pCairoSurface);
}
// clear the pixmap
@@ -176,6 +182,6 @@ void CHyprDebugOverlay::draw() {
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, PMONITOR->vecSize.x, PMONITOR->vecSize.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, DATA);
- wlr_box pMonBox = {0,0,PMONITOR->vecPixelSize.x, PMONITOR->vecPixelSize.y};
+ wlr_box pMonBox = {0, 0, PMONITOR->vecPixelSize.x, PMONITOR->vecPixelSize.y};
g_pHyprOpenGL->renderTexture(m_tTexture, &pMonBox, 255.f);
}
diff --git a/src/debug/HyprDebugOverlay.hpp b/src/debug/HyprDebugOverlay.hpp
index 2573a6e1..e1e399a7 100644
--- a/src/debug/HyprDebugOverlay.hpp
+++ b/src/debug/HyprDebugOverlay.hpp
@@ -8,38 +8,36 @@
#include <unordered_map>
class CHyprMonitorDebugOverlay {
-public:
- int draw(int offset);
+ public:
+ int draw(int offset);
void renderData(CMonitor* pMonitor, float µs);
void renderDataNoOverlay(CMonitor* pMonitor, float µs);
void frameData(CMonitor* pMonitor);
-private:
- std::deque<float> m_dLastFrametimes;
- std::deque<float> m_dLastRenderTimes;
- std::deque<float> m_dLastRenderTimesNoOverlay;
+ private:
+ std::deque<float> m_dLastFrametimes;
+ std::deque<float> m_dLastRenderTimes;
+ std::deque<float> m_dLastRenderTimesNoOverlay;
std::chrono::high_resolution_clock::time_point m_tpLastFrame;
- CMonitor* m_pMonitor = nullptr;
- wlr_box m_wbLastDrawnBox;
+ CMonitor* m_pMonitor = nullptr;
+ wlr_box m_wbLastDrawnBox;
};
class CHyprDebugOverlay {
-public:
-
+ public:
void draw();
void renderData(CMonitor*, float µs);
void renderDataNoOverlay(CMonitor*, float µs);
void frameData(CMonitor*);
-private:
-
+ private:
std::unordered_map<CMonitor*, CHyprMonitorDebugOverlay> m_mMonitorOverlays;
- cairo_surface_t* m_pCairoSurface = nullptr;
- cairo_t* m_pCairo = nullptr;
+ cairo_surface_t* m_pCairoSurface = nullptr;
+ cairo_t* m_pCairo = nullptr;
- CTexture m_tTexture;
+ CTexture m_tTexture;
friend class CHyprMonitorDebugOverlay;
};
diff --git a/src/debug/Log.cpp b/src/debug/Log.cpp
index dab8f0a7..7800b831 100644
--- a/src/debug/Log.cpp
+++ b/src/debug/Log.cpp
@@ -5,12 +5,12 @@
#include <fstream>
#include <iostream>
-void Debug::init(std::string IS) {
+void Debug::init(const std::string& IS) {
logFile = "/tmp/hypr/" + IS + (ISDEBUG ? "/hyprlandd.log" : "/hyprland.log");
}
void Debug::wlrLog(wlr_log_importance level, const char* fmt, va_list args) {
- char* outputStr = nullptr;
+ char* outputStr = nullptr;
std::ofstream ofs;
ofs.open(logFile, std::ios::out | std::ios::app);
@@ -35,28 +35,17 @@ void Debug::log(LogLevel level, const char* fmt, ...) {
ofs.open(logFile, std::ios::out | std::ios::app);
switch (level) {
- case LOG:
- ofs << "[LOG] ";
- break;
- case WARN:
- ofs << "[WARN] ";
- break;
- case ERR:
- ofs << "[ERR] ";
- break;
- case CRIT:
- ofs << "[CRITICAL] ";
- break;
- case INFO:
- ofs << "[INFO] ";
- break;
- default:
- break;
+ case LOG: ofs << "[LOG] "; break;
+ case WARN: ofs << "[WARN] "; break;
+ case ERR: ofs << "[ERR] "; break;
+ case CRIT: ofs << "[CRITICAL] "; break;
+ case INFO: ofs << "[INFO] "; break;
+ default: break;
}
// print date and time to the ofs
if (disableTime && !*disableTime) {
- auto timet = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
+ auto timet = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
const auto MILLIS = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count() % 1000;
ofs << std::put_time(std::localtime(&timet), "[%H:%M:%S:");
@@ -71,7 +60,7 @@ void Debug::log(LogLevel level, const char* fmt, ...) {
ofs << "] ";
}
- char* outputStr = nullptr;
+ char* outputStr = nullptr;
va_list args;
va_start(args, fmt);
diff --git a/src/debug/Log.hpp b/src/debug/Log.hpp
index 8f8f615c..98d176af 100644
--- a/src/debug/Log.hpp
+++ b/src/debug/Log.hpp
@@ -4,9 +4,10 @@
#define LOGMESSAGESIZE 1024
-enum LogLevel {
+enum LogLevel
+{
NONE = -1,
- LOG = 0,
+ LOG = 0,
WARN,
ERR,
CRIT,
@@ -14,11 +15,11 @@ enum LogLevel {
};
namespace Debug {
- void init(std::string IS);
- void log(LogLevel level, const char* fmt, ...);
- void wlrLog(wlr_log_importance level, const char* fmt, va_list args);
+ void init(const std::string& IS);
+ void log(LogLevel level, const char* fmt, ...);
+ void wlrLog(wlr_log_importance level, const char* fmt, va_list args);
inline std::string logFile;
- inline int64_t* disableLogs = nullptr;
- inline int64_t* disableTime = nullptr;
+ inline int64_t* disableLogs = nullptr;
+ inline int64_t* disableTime = nullptr;
}; \ No newline at end of file
diff --git a/src/defines.hpp b/src/defines.hpp
index 6e6278bc..cad434fd 100644
--- a/src/defines.hpp
+++ b/src/defines.hpp
@@ -18,39 +18,44 @@
#define ISDEBUG false
#endif
-#define LISTENER(name) void listener_##name(wl_listener*, void*); inline wl_listener listen_##name = { .notify = listener_##name }
-#define DYNLISTENFUNC(name) void listener_##name(void*, void*)
-#define DYNLISTENER(name) CHyprWLListener hyprListener_##name
+#define LISTENER(name) \
+ void listener_##name(wl_listener*, void*); \
+ inline wl_listener listen_##name = {.notify = listener_##name}
+#define DYNLISTENFUNC(name) void listener_##name(void*, void*)
+#define DYNLISTENER(name) CHyprWLListener hyprListener_##name
#define DYNMULTILISTENER(name) wl_listener listen_##name
-#define VECINRECT(vec, x1, y1, x2, y2) (vec.x >= (x1) && vec.x <= (x2) && vec.y >= (y1) && vec.y <= (y2))
+#define VECINRECT(vec, x1, y1, x2, y2) ((vec).x >= (x1) && (vec).x <= (x2) && (vec).y >= (y1) && (vec).y <= (y2))
-#define DELTALESSTHAN(a, b, delta) (abs((a) - (b)) < delta)
+#define DELTALESSTHAN(a, b, delta) (abs((a) - (b)) < (delta))
-#define PIXMAN_DAMAGE_FOREACH(region) int rectsNum = 0; \
- const auto RECTSARR = pixman_region32_rectangles(region, &rectsNum); \
+#define PIXMAN_DAMAGE_FOREACH(region) \
+ int rectsNum = 0; \
+ const auto RECTSARR = pixman_region32_rectangles(region, &rectsNum); \
for (int i = 0; i < rectsNum; ++i)
#define PIXMAN_REGION_FOREACH(region) PIXMAN_DAMAGE_FOREACH(region)
-
#define interface class
#define STICKS(a, b) abs((a) - (b)) < 2
#define ALPHA(c) ((double)(((c) >> 24) & 0xff) / 255.0)
-#define RED(c) ((double)(((c) >> 16) & 0xff) / 255.0)
+#define RED(c) ((double)(((c) >> 16) & 0xff) / 255.0)
#define GREEN(c) ((double)(((c) >> 8) & 0xff) / 255.0)
-#define BLUE(c) ((double)(((c)) & 0xff) / 255.0)
+#define BLUE(c) ((double)(((c)) & 0xff) / 255.0)
-#define HYPRATOM(name) {name, 0}
+#define HYPRATOM(name) \
+ { name, 0 }
#ifndef __INTELLISENSE__
-#define RASSERT(expr, reason, ...) \
- if (!(expr)) { \
- Debug::log(CRIT, "\n==========================================================================================\nASSERTION FAILED! \n\n%s\n\nat: line %d in %s", getFormat(reason, ##__VA_ARGS__).c_str(), __LINE__, ([]() constexpr->std::string { return std::string(__FILE__).substr(std::string(__FILE__).find_last_of('/') + 1); })().c_str()); \
- printf("Assertion failed! See the log in /tmp/hypr/hyprland.log for more info."); \
- *((int*)nullptr) = 1; /* so that we crash and get a coredump */ \
+#define RASSERT(expr, reason, ...) \
+ if (!(expr)) { \
+ Debug::log(CRIT, "\n==========================================================================================\nASSERTION FAILED! \n\n%s\n\nat: line %d in %s", \
+ getFormat(reason, ##__VA_ARGS__).c_str(), __LINE__, \
+ ([]() constexpr->std::string { return std::string(__FILE__).substr(std::string(__FILE__).find_last_of('/') + 1); })().c_str()); \
+ printf("Assertion failed! See the log in /tmp/hypr/hyprland.log for more info."); \
+ *((int*)nullptr) = 1; /* so that we crash and get a coredump */ \
}
#else
#define RASSERT(expr, reason, ...)
@@ -59,7 +64,11 @@
#define ASSERT(expr) RASSERT(expr, "?")
#if ISDEBUG
-#define UNREACHABLE() { Debug::log(CRIT, "\n\nMEMORY CORRUPTED: Unreachable failed! (Reached an unreachable position, memory corruption!!!)"); *((int*)nullptr) = 1; }
+#define UNREACHABLE() \
+ { \
+ Debug::log(CRIT, "\n\nMEMORY CORRUPTED: Unreachable failed! (Reached an unreachable position, memory corruption!!!)"); \
+ *((int*)nullptr) = 1; \
+ }
#else
#define UNREACHABLE() std::unreachable();
#endif
@@ -78,6 +87,6 @@
#define GIT_DIRTY "?"
#endif
-#define SPECIAL_WORKSPACE_START -99
+#define SPECIAL_WORKSPACE_START (-99)
#define PI 3.14159265358979
diff --git a/src/events/Devices.cpp b/src/events/Devices.cpp
index 146c8c54..a41ba98e 100644
--- a/src/events/Devices.cpp
+++ b/src/events/Devices.cpp
@@ -61,7 +61,7 @@ void Events::listener_requestMouse(wl_listener* listener, void* data) {
void Events::listener_newInput(wl_listener* listener, void* data) {
const auto DEVICE = (wlr_input_device*)data;
- switch(DEVICE->type) {
+ switch (DEVICE->type) {
case WLR_INPUT_DEVICE_KEYBOARD:
Debug::log(LOG, "Attached a keyboard with name %s", DEVICE->name);
g_pInputManager->newKeyboard(DEVICE);
@@ -86,9 +86,7 @@ void Events::listener_newInput(wl_listener* listener, void* data) {
Debug::log(LOG, "Attached a switch device with name %s", DEVICE->name);
g_pInputManager->newSwitch(DEVICE);
break;
- default:
- Debug::log(WARN, "Unrecognized input device plugged in: %s", DEVICE->name);
- break;
+ default: Debug::log(WARN, "Unrecognized input device plugged in: %s", DEVICE->name); break;
}
g_pInputManager->updateCapabilities();
@@ -102,7 +100,7 @@ void Events::listener_newConstraint(wl_listener* listener, void* data) {
g_pInputManager->m_lConstraints.emplace_back();
const auto CONSTRAINT = &g_pInputManager->m_lConstraints.back();
- CONSTRAINT->pMouse = g_pCompositor->m_sSeat.mouse;
+ CONSTRAINT->pMouse = g_pCompositor->m_sSeat.mouse;
CONSTRAINT->constraint = PCONSTRAINT;
CONSTRAINT->hyprListener_destroyConstraint.initCallback(&PCONSTRAINT->events.destroy, &Events::listener_destroyConstraint, CONSTRAINT, "Constraint");
@@ -112,7 +110,7 @@ void Events::listener_newConstraint(wl_listener* listener, void* data) {
g_pInputManager->constrainMouse(CONSTRAINT->pMouse, PCONSTRAINT);
if (!CONSTRAINT->hintSet) {
- const auto PWINDOW = g_pCompositor->getConstraintWindow(g_pCompositor->m_sSeat.mouse);
+ const auto PWINDOW = g_pCompositor->getConstraintWindow(g_pCompositor->m_sSeat.mouse);
CONSTRAINT->positionHint = g_pInputManager->getMouseCoordsInternal() - PWINDOW->m_vRealPosition.goalv();
}
}
@@ -128,13 +126,13 @@ void Events::listener_destroyConstraint(void* owner, void* data) {
if (PWINDOW) {
if (PWINDOW->m_bIsX11) {
- wlr_cursor_warp(g_pCompositor->m_sWLRCursor, nullptr,
- PCONSTRAINT->positionHint.x + PWINDOW->m_uSurface.xwayland->x, PWINDOW->m_uSurface.xwayland->y + PCONSTRAINT->positionHint.y);
+ wlr_cursor_warp(g_pCompositor->m_sWLRCursor, nullptr, PCONSTRAINT->positionHint.x + PWINDOW->m_uSurface.xwayland->x,
+ PWINDOW->m_uSurface.xwayland->y + PCONSTRAINT->positionHint.y);
wlr_seat_pointer_warp(PCONSTRAINT->constraint->seat, PCONSTRAINT->positionHint.x, PCONSTRAINT->positionHint.y);
} else {
- wlr_cursor_warp(g_pCompositor->m_sWLRCursor, nullptr,
- PCONSTRAINT->positionHint.x + PWINDOW->m_vRealPosition.vec().x, PCONSTRAINT->positionHint.y + PWINDOW->m_vRealPosition.vec().y);
+ wlr_cursor_warp(g_pCompositor->m_sWLRCursor, nullptr, PCONSTRAINT->positionHint.x + PWINDOW->m_vRealPosition.vec().x,
+ PCONSTRAINT->positionHint.y + PWINDOW->m_vRealPosition.vec().y);
wlr_seat_pointer_warp(PCONSTRAINT->constraint->seat, PCONSTRAINT->positionHint.x, PCONSTRAINT->positionHint.y);
}
@@ -153,9 +151,9 @@ void Events::listener_setConstraintRegion(void* owner, void* data) {
}
void Events::listener_newVirtPtr(wl_listener* listener, void* data) {
- const auto EV = (wlr_virtual_pointer_v1_new_pointer_event*)data;
+ const auto EV = (wlr_virtual_pointer_v1_new_pointer_event*)data;
const auto POINTER = EV->new_pointer;
- const auto DEVICE = &POINTER->pointer.base;
+ const auto DEVICE = &POINTER->pointer.base;
g_pInputManager->newMouse(DEVICE, true);
}
diff --git a/src/events/Events.hpp b/src/events/Events.hpp
index e3088110..5036bd75 100644
--- a/src/events/Events.hpp
+++ b/src/events/Events.hpp
@@ -31,7 +31,7 @@ namespace Events {
DYNLISTENFUNC(commitSubsurface);
// Popups
- DYNLISTENFUNC(newPopup); // LayerSurface
+ DYNLISTENFUNC(newPopup); // LayerSurface
DYNLISTENFUNC(newPopupXDG);
DYNLISTENFUNC(mapPopupXDG);
@@ -60,7 +60,7 @@ namespace Events {
DYNLISTENFUNC(requestMaximize);
// Window subsurfaces
- // LISTENER(newSubsurfaceWindow);
+ // LISTENER(newSubsurfaceWindow);
// Input events
LISTENER(mouseMove);
diff --git a/src/events/Layers.cpp b/src/events/Layers.cpp
index f26575ec..70481c71 100644
--- a/src/events/Layers.cpp
+++ b/src/events/Layers.cpp
@@ -34,7 +34,7 @@ void Events::listener_newLayerSurface(wl_listener* listener, void* data) {
auto PMONITOR = (CMonitor*)g_pCompositor->getMonitorFromOutput(WLRLAYERSURFACE->output);
if (!WLRLAYERSURFACE->output || !PMONITOR || PMONITOR->pMirrorOf) {
- PMONITOR = g_pCompositor->m_vMonitors.front().get();
+ PMONITOR = g_pCompositor->m_vMonitors.front().get();
WLRLAYERSURFACE->output = PMONITOR->output; // TODO: current mon
}
@@ -49,13 +49,14 @@ void Events::listener_newLayerSurface(wl_listener* listener, void* data) {
layerSurface->hyprListener_newPopup.initCallback(&WLRLAYERSURFACE->events.new_popup, &Events::listener_newPopup, layerSurface, "layerSurface");
layerSurface->layerSurface = WLRLAYERSURFACE;
- layerSurface->layer = WLRLAYERSURFACE->current.layer;
- WLRLAYERSURFACE->data = layerSurface;
- layerSurface->monitorID = PMONITOR->ID;
+ layerSurface->layer = WLRLAYERSURFACE->current.layer;
+ WLRLAYERSURFACE->data = layerSurface;
+ layerSurface->monitorID = PMONITOR->ID;
layerSurface->forceBlur = g_pConfigManager->shouldBlurLS(layerSurface->szNamespace);
- Debug::log(LOG, "LayerSurface %x (namespace %s layer %d) created on monitor %s", layerSurface->layerSurface, layerSurface->layerSurface->_namespace, layerSurface->layer, PMONITOR->szName.c_str());
+ Debug::log(LOG, "LayerSurface %x (namespace %s layer %d) created on monitor %s", layerSurface->layerSurface, layerSurface->layerSurface->_namespace, layerSurface->layer,
+ PMONITOR->szName.c_str());
}
void Events::listener_destroyLayerSurface(void* owner, void* data) {
@@ -94,12 +95,13 @@ void Events::listener_destroyLayerSurface(void* owner, void* data) {
PMONITOR->scheduledRecalc = true;
// and damage
- wlr_box geomFixed = {layersurface->geometry.x + PMONITOR->vecPosition.x, layersurface->geometry.y + PMONITOR->vecPosition.y, layersurface->geometry.width, layersurface->geometry.height};
+ wlr_box geomFixed = {layersurface->geometry.x + PMONITOR->vecPosition.x, layersurface->geometry.y + PMONITOR->vecPosition.y, layersurface->geometry.width,
+ layersurface->geometry.height};
g_pHyprRenderer->damageBox(&geomFixed);
}
layersurface->readyToDelete = true;
- layersurface->layerSurface = nullptr;
+ layersurface->layerSurface = nullptr;
}
void Events::listener_mapLayerSurface(void* owner, void* data) {
@@ -108,7 +110,7 @@ void Events::listener_mapLayerSurface(void* owner, void* data) {
Debug::log(LOG, "LayerSurface %x mapped", layersurface->layerSurface);
layersurface->layerSurface->mapped = true;
- layersurface->mapped = true;
+ layersurface->mapped = true;
// anim
layersurface->alpha.setConfig(g_pConfigManager->getAnimationPropertyConfig("fadeIn"));
@@ -128,7 +130,7 @@ void Events::listener_mapLayerSurface(void* owner, void* data) {
break;
}
}
- layersurface->monitorID = PMONITOR->ID;
+ layersurface->monitorID = PMONITOR->ID;
PMONITOR->scheduledRecalc = true;
g_pHyprRenderer->arrangeLayersForMonitor(POLDMON->ID);
}
@@ -137,23 +139,26 @@ void Events::listener_mapLayerSurface(void* owner, void* data) {
wlr_surface_send_enter(layersurface->layerSurface->surface, layersurface->layerSurface->output);
- if (layersurface->layerSurface->current.keyboard_interactive && (!g_pCompositor->m_sSeat.mouse || !g_pCompositor->m_sSeat.mouse->currentConstraint)) { // don't focus if constrained
+ if (layersurface->layerSurface->current.keyboard_interactive &&
+ (!g_pCompositor->m_sSeat.mouse || !g_pCompositor->m_sSeat.mouse->currentConstraint)) { // don't focus if constrained
g_pCompositor->focusSurface(layersurface->layerSurface->surface);
- const auto LOCAL = g_pInputManager->getMouseCoordsInternal() - Vector2D(layersurface->geometry.x + PMONITOR->vecPosition.x, layersurface->geometry.y + PMONITOR->vecPosition.y);
+ const auto LOCAL =
+ g_pInputManager->getMouseCoordsInternal() - Vector2D(layersurface->geometry.x + PMONITOR->vecPosition.x, layersurface->geometry.y + PMONITOR->vecPosition.y);
wlr_seat_pointer_notify_enter(g_pCompositor->m_sSeat.seat, layersurface->layerSurface->surface, LOCAL.x, LOCAL.y);
wlr_seat_pointer_notify_motion(g_pCompositor->m_sSeat.seat, 0, LOCAL.x, LOCAL.y);
}
layersurface->position = Vector2D(layersurface->geometry.x, layersurface->geometry.y);
- wlr_box geomFixed = {layersurface->geometry.x + PMONITOR->vecPosition.x, layersurface->geometry.y + PMONITOR->vecPosition.y, layersurface->geometry.width, layersurface->geometry.height};
+ wlr_box geomFixed = {layersurface->geometry.x + PMONITOR->vecPosition.x, layersurface->geometry.y + PMONITOR->vecPosition.y, layersurface->geometry.width,
+ layersurface->geometry.height};
g_pHyprRenderer->damageBox(&geomFixed);
layersurface->alpha.setValue(0);
- layersurface->alpha = 255.f;
+ layersurface->alpha = 255.f;
layersurface->readyToDelete = false;
- layersurface->fadingOut = false;
+ layersurface->fadingOut = false;
g_pEventManager->postEvent(SHyprIPCEvent{"openlayer", std::string(layersurface->layerSurface->_namespace ? layersurface->layerSurface->_namespace : "")});
}
@@ -201,19 +206,20 @@ void Events::listener_unmapLayerSurface(void* owner, void* data) {
// refocus if needed
if (layersurface->layerSurface->surface == g_pCompositor->m_pLastFocus) {
-
- Vector2D surfaceCoords;
+
+ Vector2D surfaceCoords;
SLayerSurface* pFoundLayerSurface = nullptr;
- wlr_surface* foundSurface = nullptr;
+ wlr_surface* foundSurface = nullptr;
g_pCompositor->m_pLastFocus = nullptr;
// find LS-es to focus
- foundSurface = g_pCompositor->vectorToLayerSurface(g_pInputManager->getMouseCoordsInternal(), &PMONITOR->m_aLayerSurfaceLists[ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY], &surfaceCoords, &pFoundLayerSurface);
+ foundSurface = g_pCompositor->vectorToLayerSurface(g_pInputManager->getMouseCoordsInternal(), &PMONITOR->m_aLayerSurfaceLists[ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY],
+ &surfaceCoords, &pFoundLayerSurface);
if (!foundSurface)
- foundSurface = g_pCompositor->vectorToLayerSurface(g_pInputManager->getMouseCoordsInternal(), &PMONITOR->m_aLayerSurfaceLists[ZWLR_LAYER_SHELL_V1_LAYER_TOP], &surfaceCoords, &pFoundLayerSurface);
-
+ foundSurface = g_pCompositor->vectorToLayerSurface(g_pInputManager->getMouseCoordsInternal(), &PMONITOR->m_aLayerSurfaceLists[ZWLR_LAYER_SHELL_V1_LAYER_TOP],
+ &surfaceCoords, &pFoundLayerSurface);
if (!foundSurface) {
// if there isn't any, focus the last window
@@ -226,13 +232,16 @@ void Events::listener_unmapLayerSurface(void* owner, void* data) {
}
}
- wlr_box geomFixed = {layersurface->geometry.x + PMONITOR->vecPosition.x, layersurface->geometry.y + PMONITOR->vecPosition.y, layersurface->geometry.width, layersurface->geometry.height};
+ wlr_box geomFixed = {layersurface->geometry.x + PMONITOR->vecPosition.x, layersurface->geometry.y + PMONITOR->vecPosition.y, layersurface->geometry.width,
+ layersurface->geometry.height};
g_pHyprRenderer->damageBox(&geomFixed);
- geomFixed = {layersurface->geometry.x + (int)PMONITOR->vecPosition.x, layersurface->geometry.y + (int)PMONITOR->vecPosition.y, (int)layersurface->layerSurface->surface->current.width, (int)layersurface->layerSurface->surface->current.height};
+ geomFixed = {layersurface->geometry.x + (int)PMONITOR->vecPosition.x, layersurface->geometry.y + (int)PMONITOR->vecPosition.y,
+ (int)layersurface->layerSurface->surface->current.width, (int)layersurface->layerSurface->surface->current.height};
g_pHyprRenderer->damageBox(&geomFixed);
- geomFixed = {layersurface->geometry.x, layersurface->geometry.y, (int)layersurface->layerSurface->surface->current.width, (int)layersurface->layerSurface->surface->current.height};
+ geomFixed = {layersurface->geometry.x, layersurface->geometry.y, (int)layersurface->layerSurface->surface->current.width,
+ (int)layersurface->layerSurface->surface->current.height};
layersurface->geometry = geomFixed; // because the surface can overflow... for some reason?
}
@@ -248,7 +257,7 @@ void Events::listener_commitLayerSurface(void* owner, void* data) {
return;
if (layersurface->layer == ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND || layersurface->layer == ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM)
- g_pHyprOpenGL->markBlurDirtyForMonitor(PMONITOR); // so that blur is recalc'd
+ g_pHyprOpenGL->markBlurDirtyForMonitor(PMONITOR); // so that blur is recalc'd
wlr_box geomFixed = {layersurface->geometry.x, layersurface->geometry.y, layersurface->geometry.width, layersurface->geometry.height};
g_pHyprRenderer->damageBox(&geomFixed);
@@ -265,7 +274,7 @@ void Events::listener_commitLayerSurface(void* owner, void* data) {
}
}
- layersurface->monitorID = PMONITOR->ID;
+ layersurface->monitorID = PMONITOR->ID;
PMONITOR->scheduledRecalc = true;
g_pHyprRenderer->arrangeLayersForMonitor(POLDMON->ID);
}
@@ -284,7 +293,7 @@ void Events::listener_commitLayerSurface(void* owner, void* data) {
layersurface->layer = layersurface->layerSurface->current.layer;
if (layersurface->layer == ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND || layersurface->layer == ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM)
- g_pHyprOpenGL->markBlurDirtyForMonitor(PMONITOR); // so that blur is recalc'd
+ g_pHyprOpenGL->markBlurDirtyForMonitor(PMONITOR); // so that blur is recalc'd
}
g_pHyprRenderer->arrangeLayersForMonitor(PMONITOR->ID);
@@ -295,7 +304,8 @@ void Events::listener_commitLayerSurface(void* owner, void* data) {
layersurface->position = Vector2D(layersurface->geometry.x, layersurface->geometry.y);
// update geom if it changed
- layersurface->geometry = {layersurface->geometry.x, layersurface->geometry.y, layersurface->layerSurface->surface->current.width, layersurface->layerSurface->surface->current.height};
+ layersurface->geometry = {layersurface->geometry.x, layersurface->geometry.y, layersurface->layerSurface->surface->current.width,
+ layersurface->layerSurface->surface->current.height};
g_pHyprRenderer->damageSurface(layersurface->layerSurface->surface, layersurface->position.x, layersurface->position.y);
}
diff --git a/src/events/Misc.cpp b/src/events/Misc.cpp
index 707cfde9..cba0a294 100644
--- a/src/events/Misc.cpp
+++ b/src/events/Misc.cpp
@@ -26,8 +26,8 @@ void Events::listener_outputMgrTest(wl_listener* listener, void* data) {
}
void Events::listener_leaseRequest(wl_listener* listener, void* data) {
- const auto REQUEST = (wlr_drm_lease_request_v1*)data;
- struct wlr_drm_lease_v1* lease = wlr_drm_lease_request_v1_grant(REQUEST);
+ const auto REQUEST = (wlr_drm_lease_request_v1*)data;
+ struct wlr_drm_lease_v1* lease = wlr_drm_lease_request_v1_grant(REQUEST);
if (!lease) {
Debug::log(ERR, "Failed to grant lease request!");
wlr_drm_lease_request_v1_reject(REQUEST);
@@ -47,7 +47,7 @@ void Events::listener_requestSetSel(wl_listener* listener, void* data) {
void Events::listener_readyXWayland(wl_listener* listener, void* data) {
#ifndef NO_XWAYLAND
const auto XCBCONNECTION = xcb_connect(g_pXWaylandManager->m_sWLRXWayland->display_name, NULL);
- const auto ERR = xcb_connection_has_error(XCBCONNECTION);
+ const auto ERR = xcb_connection_has_error(XCBCONNECTION);
if (ERR) {
Debug::log(LogLevel::ERR, "XWayland -> xcb_connection_has_error failed with %i", ERR);
return;
@@ -55,7 +55,7 @@ void Events::listener_readyXWayland(wl_listener* listener, void* data) {
for (auto& ATOM : HYPRATOMS) {
xcb_intern_atom_cookie_t cookie = xcb_intern_atom(XCBCONNECTION, 0, ATOM.first.length(), ATOM.first.c_str());
- xcb_intern_atom_reply_t* reply = xcb_intern_atom_reply(XCBCONNECTION, cookie, NULL);
+ xcb_intern_atom_reply_t* reply = xcb_intern_atom_reply(XCBCONNECTION, cookie, NULL);
if (!reply) {
Debug::log(LogLevel::ERR, "XWayland -> Atom failed: %s", ATOM.first.c_str());
@@ -69,7 +69,8 @@ void Events::listener_readyXWayland(wl_listener* listener, void* data) {
const auto XCURSOR = wlr_xcursor_manager_get_xcursor(g_pCompositor->m_sWLRXCursorMgr, "left_ptr", 1);
if (XCURSOR) {
- wlr_xwayland_set_cursor(g_pXWaylandManager->m_sWLRXWayland, XCURSOR->images[0]->buffer, XCURSOR->images[0]->width * 4, XCURSOR->images[0]->width, XCURSOR->images[0]->height, XCURSOR->images[0]->hotspot_x, XCURSOR->images[0]->hotspot_y);
+ wlr_xwayland_set_cursor(g_pXWaylandManager->m_sWLRXWayland, XCURSOR->images[0]->buffer, XCURSOR->images[0]->width * 4, XCURSOR->images[0]->width,
+ XCURSOR->images[0]->height, XCURSOR->images[0]->hotspot_x, XCURSOR->images[0]->hotspot_y);
}
xcb_disconnect(XCBCONNECTION);
@@ -107,15 +108,16 @@ void Events::listener_startDrag(wl_listener* listener, void* data) {
Debug::log(LOG, "Drag started with an icon %x", wlrDrag->icon);
g_pInputManager->m_sDrag.dragIcon = wlrDrag->icon;
- wlrDrag->icon->data = g_pInputManager->m_sDrag.dragIcon;
+ wlrDrag->icon->data = g_pInputManager->m_sDrag.dragIcon;
g_pInputManager->m_sDrag.hyprListener_mapIcon.initCallback(&wlrDrag->icon->events.map, &Events::listener_mapDragIcon, &g_pInputManager->m_sDrag, "DragIcon");
g_pInputManager->m_sDrag.hyprListener_unmapIcon.initCallback(&wlrDrag->icon->events.unmap, &Events::listener_unmapDragIcon, &g_pInputManager->m_sDrag, "DragIcon");
g_pInputManager->m_sDrag.hyprListener_destroyIcon.initCallback(&wlrDrag->icon->events.destroy, &Events::listener_destroyDragIcon, &g_pInputManager->m_sDrag, "DragIcon");
- g_pInputManager->m_sDrag.hyprListener_commitIcon.initCallback(&wlrDrag->icon->surface->events.commit, &Events::listener_commitDragIcon, &g_pInputManager->m_sDrag, "DragIcon");
+ g_pInputManager->m_sDrag.hyprListener_commitIcon.initCallback(&wlrDrag->icon->surface->events.commit, &Events::listener_commitDragIcon, &g_pInputManager->m_sDrag,
+ "DragIcon");
}
- static auto *const PFOLLOWONDND = &g_pConfigManager->getConfigValuePtr("misc:always_follow_on_dnd")->intValue;
+ static auto* const PFOLLOWONDND = &g_pConfigManager->getConfigValuePtr("misc:always_follow_on_dnd")->intValue;
if (*PFOLLOWONDND)
g_pInputManager->m_pFollowOnDnDBegin = g_pCompositor->m_pLastWindow;
@@ -126,12 +128,13 @@ void Events::listener_startDrag(wl_listener* listener, void* data) {
void Events::listener_destroyDrag(void* owner, void* data) {
Debug::log(LOG, "Drag destroyed.");
- static auto *const PFOLLOWMOUSE = &g_pConfigManager->getConfigValuePtr("input:follow_mouse")->intValue;
+ static auto* const PFOLLOWMOUSE = &g_pConfigManager->getConfigValuePtr("input:follow_mouse")->intValue;
if (g_pInputManager->m_sDrag.drag && g_pInputManager->m_sDrag.dragIcon && g_pInputManager->m_sDrag.dragIcon->surface)
- g_pHyprRenderer->damageBox(g_pInputManager->m_sDrag.pos.x - 2, g_pInputManager->m_sDrag.pos.y - 2, g_pInputManager->m_sDrag.dragIcon->surface->current.width + 4, g_pInputManager->m_sDrag.dragIcon->surface->current.height + 4);
+ g_pHyprRenderer->damageBox(g_pInputManager->m_sDrag.pos.x - 2, g_pInputManager->m_sDrag.pos.y - 2, g_pInputManager->m_sDrag.dragIcon->surface->current.width + 4,
+ g_pInputManager->m_sDrag.dragIcon->surface->current.height + 4);
- g_pInputManager->m_sDrag.drag = nullptr;
+ g_pInputManager->m_sDrag.drag = nullptr;
g_pInputManager->m_sDrag.dragIcon = nullptr;
g_pInputManager->m_sDrag.hyprListener_destroy.removeCallback();
diff --git a/src/events/Monitors.cpp b/src/events/Monitors.cpp
index 282cb4f9..db8a4553 100644
--- a/src/events/Monitors.cpp
+++ b/src/events/Monitors.cpp
@@ -17,7 +17,7 @@
CMonitor* pMostHzMonitor = nullptr;
-void Events::listener_change(wl_listener* listener, void* data) {
+void Events::listener_change(wl_listener* listener, void* data) {
// layout got changed, let's update monitors.
const auto CONFIG = wlr_output_configuration_v1_create();
@@ -29,14 +29,14 @@ void Events::listener_change(wl_listener* listener, void* data) {
wlr_output_layout_get_box(g_pCompositor->m_sWLROutputLayout, m->output, &BOX);
//m->vecSize.x = BOX.width;
- // m->vecSize.y = BOX.height;
+ // m->vecSize.y = BOX.height;
m->vecPosition.x = BOX.x;
m->vecPosition.y = BOX.y;
CONFIGHEAD->state.enabled = m->output->enabled;
- CONFIGHEAD->state.mode = m->output->current_mode;
- CONFIGHEAD->state.x = m->vecPosition.x;
- CONFIGHEAD->state.y = m->vecPosition.y;
+ CONFIGHEAD->state.mode = m->output->current_mode;
+ CONFIGHEAD->state.x = m->vecPosition.x;
+ CONFIGHEAD->state.y = m->vecPosition.y;
}
wlr_output_manager_v1_set_configuration(g_pCompositor->m_sWLROutputMgr, CONFIG);
@@ -75,7 +75,7 @@ void Events::listener_newOutput(wl_listener* listener, void* data) {
const auto PNEWMONITOR = PNEWMONITORWRAP->get();
- PNEWMONITOR->output = OUTPUT;
+ PNEWMONITOR->output = OUTPUT;
PNEWMONITOR->m_pThisWrap = PNEWMONITORWRAP;
PNEWMONITOR->onConnect(false);
@@ -86,7 +86,7 @@ void Events::listener_newOutput(wl_listener* listener, void* data) {
// ready to process cuz we have a monitor
if (PNEWMONITOR->m_bEnabled) {
g_pCompositor->m_bReadyToProcess = true;
- g_pCompositor->m_bUnsafeState = false;
+ g_pCompositor->m_bUnsafeState = false;
}
g_pConfigManager->m_bWantsMonitorReload = true;
@@ -104,17 +104,17 @@ void Events::listener_monitorFrame(void* owner, void* data) {
if (!PMONITOR->m_bEnabled)
return;
- static std::chrono::high_resolution_clock::time_point startRender = std::chrono::high_resolution_clock::now();
+ static std::chrono::high_resolution_clock::time_point startRender = std::chrono::high_resolution_clock::now();
static std::chrono::high_resolution_clock::time_point startRenderOverlay = std::chrono::high_resolution_clock::now();
- static std::chrono::high_resolution_clock::time_point endRenderOverlay = std::chrono::high_resolution_clock::now();
+ static std::chrono::high_resolution_clock::time_point endRenderOverlay = std::chrono::high_resolution_clock::now();
- static auto *const PDEBUGOVERLAY = &g_pConfigManager->getConfigValuePtr("debug:overlay")->intValue;
- static auto *const PDAMAGETRACKINGMODE = &g_pConfigManager->getConfigValuePtr("debug:damage_tracking")->intValue;
- static auto *const PDAMAGEBLINK = &g_pConfigManager->getConfigValuePtr("debug:damage_blink")->intValue;
- static auto *const PNOVFR = &g_pConfigManager->getConfigValuePtr("misc:no_vfr")->intValue;
- static auto *const PNODIRECTSCANOUT = &g_pConfigManager->getConfigValuePtr("misc:no_direct_scanout")->intValue;
+ static auto* const PDEBUGOVERLAY = &g_pConfigManager->getConfigValuePtr("debug:overlay")->intValue;
+ static auto* const PDAMAGETRACKINGMODE = &g_pConfigManager->getConfigValuePtr("debug:damage_tracking")->intValue;
+ static auto* const PDAMAGEBLINK = &g_pConfigManager->getConfigValuePtr("debug:damage_blink")->intValue;
+ static auto* const PNOVFR = &g_pConfigManager->getConfigValuePtr("misc:no_vfr")->intValue;
+ static auto* const PNODIRECTSCANOUT = &g_pConfigManager->getConfigValuePtr("misc:no_direct_scanout")->intValue;
- static int damageBlinkCleanup = 0; // because double-buffered
+ static int damageBlinkCleanup = 0; // because double-buffered
if (!*PDAMAGEBLINK)
damageBlinkCleanup = 0;
@@ -140,16 +140,17 @@ void Events::listener_monitorFrame(void* owner, void* data) {
}
// checks //
- if (PMONITOR->ID == pMostHzMonitor->ID || !*PNOVFR) { // unfortunately with VFR we don't have the guarantee mostHz is going to be updated all the time, so we have to ignore that
+ if (PMONITOR->ID == pMostHzMonitor->ID ||
+ !*PNOVFR) { // unfortunately with VFR we don't have the guarantee mostHz is going to be updated all the time, so we have to ignore that
g_pCompositor->sanityCheckWorkspaces();
g_pAnimationManager->tick();
- g_pConfigManager->dispatchExecOnce(); // We exec-once when at least one monitor starts refreshing, meaning stuff has init'd
+ g_pConfigManager->dispatchExecOnce(); // We exec-once when at least one monitor starts refreshing, meaning stuff has init'd
if (g_pConfigManager->m_bWantsMonitorReload)
g_pConfigManager->performMonitorReload();
- g_pHyprRenderer->ensureCursorRenderingMode(); // so that the cursor gets hidden/shown if the user requested timeouts
+ g_pHyprRenderer->ensureCursorRenderingMode(); // so that the cursor gets hidden/shown if the user requested timeouts
}
// //
@@ -173,7 +174,7 @@ void Events::listener_monitorFrame(void* owner, void* data) {
// check the damage
pixman_region32_t damage;
- bool hasChanged;
+ bool hasChanged;
pixman_region32_init(&damage);
if (*PDAMAGETRACKINGMODE == -1) {
@@ -183,7 +184,7 @@ void Events::listener_monitorFrame(void* owner, void* data) {
g_pHyprOpenGL->preRender(PMONITOR);
- if (!wlr_output_damage_attach_render(PMONITOR->damage, &hasChanged, &damage)){
+ if (!wlr_output_damage_attach_render(PMONITOR->damage, &hasChanged, &damage)) {
Debug::log(ERR, "Couldn't attach render to display %s ???", PMONITOR->szName.c_str());
return;
}
@@ -202,24 +203,25 @@ void Events::listener_monitorFrame(void* owner, void* data) {
}
// if we have no tracking or full tracking, invalidate the entire monitor
- if (*PDAMAGETRACKINGMODE == DAMAGE_TRACKING_NONE || *PDAMAGETRACKINGMODE == DAMAGE_TRACKING_MONITOR || PMONITOR->forceFullFrames > 0 || damageBlinkCleanup > 0 || PMONITOR->isMirror() /* why??? */) {
+ if (*PDAMAGETRACKINGMODE == DAMAGE_TRACKING_NONE || *PDAMAGETRACKINGMODE == DAMAGE_TRACKING_MONITOR || PMONITOR->forceFullFrames > 0 || damageBlinkCleanup > 0 ||
+ PMONITOR->isMirror() /* why??? */) {
pixman_region32_union_rect(&damage, &damage, 0, 0, (int)PMONITOR->vecTransformedSize.x * 10, (int)PMONITOR->vecTransformedSize.y * 10); // wot?
pixman_region32_copy(&g_pHyprOpenGL->m_rOriginalDamageRegion, &damage);
} else {
- static auto *const PBLURENABLED = &g_pConfigManager->getConfigValuePtr("decoration:blur")->intValue;
+ static auto* const PBLURENABLED = &g_pConfigManager->getConfigValuePtr("decoration:blur")->intValue;
// if we use blur we need to expand the damage for proper blurring
if (*PBLURENABLED == 1) {
// TODO: can this be optimized?
- static auto *const PBLURSIZE = &g_pConfigManager->getConfigValuePtr("decoration:blur_size")->intValue;
- static auto *const PBLURPASSES = &g_pConfigManager->getConfigValuePtr("decoration:blur_passes")->intValue;
- const auto BLURRADIUS = *PBLURSIZE * pow(2, *PBLURPASSES); // is this 2^pass? I don't know but it works... I think.
+ static auto* const PBLURSIZE = &g_pConfigManager->getConfigValuePtr("decoration:blur_size")->intValue;
+ static auto* const PBLURPASSES = &g_pConfigManager->getConfigValuePtr("decoration:blur_passes")->intValue;
+ const auto BLURRADIUS = *PBLURSIZE * pow(2, *PBLURPASSES); // is this 2^pass? I don't know but it works... I think.
pixman_region32_copy(&g_pHyprOpenGL->m_rOriginalDamageRegion, &damage);
// now, prep the damage, get the extended damage region
- wlr_region_expand(&damage, &damage, BLURRADIUS); // expand for proper blurring
+ wlr_region_expand(&damage, &damage, BLURRADIUS); // expand for proper blurring
} else {
pixman_region32_copy(&g_pHyprOpenGL->m_rOriginalDamageRegion, &damage);
}
@@ -231,7 +233,6 @@ void Events::listener_monitorFrame(void* owner, void* data) {
PMONITOR->forceFullFrames = 0;
}
-
// TODO: this is getting called with extents being 0,0,0,0 should it be?
// potentially can save on resources.
@@ -241,7 +242,7 @@ void Events::listener_monitorFrame(void* owner, void* data) {
g_pHyprOpenGL->renderMirrored();
} else {
g_pHyprOpenGL->clear(CColor(17, 17, 17, 255));
- g_pHyprOpenGL->clearWithTex(); // will apply the hypr "wallpaper"
+ g_pHyprOpenGL->clearWithTex(); // will apply the hypr "wallpaper"
g_pHyprRenderer->renderAllClientsForMonitor(PMONITOR->ID, &now);
@@ -318,7 +319,7 @@ void Events::listener_monitorFrame(void* owner, void* data) {
void Events::listener_monitorDestroy(void* owner, void* data) {
const auto OUTPUT = (wlr_output*)data;
- CMonitor* pMonitor = nullptr;
+ CMonitor* pMonitor = nullptr;
for (auto& m : g_pCompositor->m_vRealMonitors) {
if (m->output == OUTPUT) {
@@ -338,16 +339,16 @@ void Events::listener_monitorDestroy(void* owner, void* data) {
if (!g_pCompositor->m_bUnsafeState) {
Debug::log(LOG, "Removing monitor %s from realMonitors", pMonitor->output->name);
- g_pCompositor->m_vRealMonitors.erase(std::remove_if(g_pCompositor->m_vRealMonitors.begin(), g_pCompositor->m_vRealMonitors.end(), [&](std::shared_ptr<CMonitor>& el) { return el.get() == pMonitor; }));
+ std::erase_if(g_pCompositor->m_vRealMonitors, [&](std::shared_ptr<CMonitor>& el) { return el.get() == pMonitor; });
if (pMostHzMonitor == pMonitor) {
- int mostHz = 0;
+ int mostHz = 0;
CMonitor* pMonitorMostHz = nullptr;
for (auto& m : g_pCompositor->m_vMonitors) {
if (m->refreshRate > mostHz) {
pMonitorMostHz = m.get();
- mostHz = m->refreshRate;
+ mostHz = m->refreshRate;
}
}
@@ -358,7 +359,7 @@ void Events::listener_monitorDestroy(void* owner, void* data) {
void Events::listener_monitorStateRequest(void* owner, void* data) {
const auto PMONITOR = (CMonitor*)owner;
- const auto E = (wlr_output_event_request_state*)data;
+ const auto E = (wlr_output_event_request_state*)data;
wlr_output_commit_state(PMONITOR->output, E->state);
}
diff --git a/src/events/Popups.cpp b/src/events/Popups.cpp
index afc1e7c8..00a49de0 100644
--- a/src/events/Popups.cpp
+++ b/src/events/Popups.cpp
@@ -16,12 +16,12 @@
// --------------------------------------------- //
void addPopupGlobalCoords(void* pPopup, int* x, int* y) {
- SXDGPopup *const PPOPUP = (SXDGPopup*)pPopup;
+ SXDGPopup* const PPOPUP = (SXDGPopup*)pPopup;
- auto curPopup = PPOPUP;
+ auto curPopup = PPOPUP;
- int px = 0;
- int py = 0;
+ int px = 0;
+ int py = 0;
while (true) {
px += curPopup->popup->current.geometry.x;
@@ -63,13 +63,14 @@ void createNewPopup(wlr_xdg_popup* popup, SXDGPopup* pHyprPopup) {
const auto PMONITOR = g_pCompositor->m_pLastMonitor;
- wlr_box box = {.x = PMONITOR->vecPosition.x - pHyprPopup->lx, .y = PMONITOR->vecPosition.y - pHyprPopup->ly, .width = PMONITOR->vecSize.x, .height = PMONITOR->vecSize.y};
+ wlr_box box = {.x = PMONITOR->vecPosition.x - pHyprPopup->lx, .y = PMONITOR->vecPosition.y - pHyprPopup->ly, .width = PMONITOR->vecSize.x, .height = PMONITOR->vecSize.y};
wlr_xdg_popup_unconstrain_from_box(popup, &box);
pHyprPopup->monitor = PMONITOR;
- Debug::log(LOG, "Popup: Unconstrained from lx ly: %f %f, pHyprPopup lx ly: %f %f", (float)PMONITOR->vecPosition.x, (float)PMONITOR->vecPosition.y, (float)pHyprPopup->lx, (float)pHyprPopup->ly);
+ Debug::log(LOG, "Popup: Unconstrained from lx ly: %f %f, pHyprPopup lx ly: %f %f", (float)PMONITOR->vecPosition.x, (float)PMONITOR->vecPosition.y, (float)pHyprPopup->lx,
+ (float)pHyprPopup->ly);
}
void Events::listener_newPopup(void* owner, void* data) {
@@ -85,9 +86,9 @@ void Events::listener_newPopup(void* owner, void* data) {
const auto PMONITOR = g_pCompositor->getMonitorFromID(layersurface->monitorID);
- PNEWPOPUP->popup = WLRPOPUP;
- PNEWPOPUP->lx = layersurface->position.x;
- PNEWPOPUP->ly = layersurface->position.y;
+ PNEWPOPUP->popup = WLRPOPUP;
+ PNEWPOPUP->lx = layersurface->position.x;
+ PNEWPOPUP->ly = layersurface->position.y;
PNEWPOPUP->monitor = PMONITOR;
createNewPopup(WLRPOPUP, PNEWPOPUP);
}
@@ -108,11 +109,11 @@ void Events::listener_newPopupXDG(void* owner, void* data) {
const auto PMONITOR = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID);
- PNEWPOPUP->popup = WLRPOPUP;
- PNEWPOPUP->lx = PWINDOW->m_vRealPosition.goalv().x;
- PNEWPOPUP->ly = PWINDOW->m_vRealPosition.goalv().y;
+ PNEWPOPUP->popup = WLRPOPUP;
+ PNEWPOPUP->lx = PWINDOW->m_vRealPosition.goalv().x;
+ PNEWPOPUP->ly = PWINDOW->m_vRealPosition.goalv().y;
PNEWPOPUP->parentWindow = PWINDOW;
- PNEWPOPUP->monitor = PMONITOR;
+ PNEWPOPUP->monitor = PMONITOR;
createNewPopup(WLRPOPUP, PNEWPOPUP);
}
@@ -130,12 +131,12 @@ void Events::listener_newPopupFromPopupXDG(void* owner, void* data) {
const auto PNEWPOPUP = g_pCompositor->m_vXDGPopups.emplace_back(std::make_unique<SXDGPopup>()).get();
- PNEWPOPUP->popup = WLRPOPUP;
- PNEWPOPUP->parentPopup = PPOPUP;
- PNEWPOPUP->lx = PPOPUP->lx;
- PNEWPOPUP->ly = PPOPUP->ly;
+ PNEWPOPUP->popup = WLRPOPUP;
+ PNEWPOPUP->parentPopup = PPOPUP;
+ PNEWPOPUP->lx = PPOPUP->lx;
+ PNEWPOPUP->ly = PPOPUP->ly;
PNEWPOPUP->parentWindow = PPOPUP->parentWindow;
- PNEWPOPUP->monitor = PPOPUP->monitor;
+ PNEWPOPUP->monitor = PPOPUP->monitor;
createNewPopup(WLRPOPUP, PNEWPOPUP);
}
@@ -182,7 +183,7 @@ void Events::listener_unmapPopupXDG(void* owner, void* data) {
void Events::listener_commitPopupXDG(void* owner, void* data) {
SXDGPopup* PPOPUP = (SXDGPopup*)owner;
- int lx = 0, ly = 0;
+ int lx = 0, ly = 0;
addPopupGlobalCoords(PPOPUP, &lx, &ly);
g_pHyprRenderer->damageSurface(PPOPUP->popup->base->surface, lx, ly);
@@ -200,5 +201,5 @@ void Events::listener_destroyPopupXDG(void* owner, void* data) {
PPOPUP->pSurfaceTree = nullptr;
}
- g_pCompositor->m_vXDGPopups.erase(std::remove_if(g_pCompositor->m_vXDGPopups.begin(), g_pCompositor->m_vXDGPopups.end(), [&](std::unique_ptr<SXDGPopup>& el) { return el.get() == PPOPUP; }));
+ std::erase_if(g_pCompositor->m_vXDGPopups, [&](std::unique_ptr<SXDGPopup>& el) { return el.get() == PPOPUP; });
}
diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp
index 43145c13..1202d304 100644
--- a/src/events/Windows.cpp
+++ b/src/events/Windows.cpp
@@ -30,7 +30,7 @@ void addViewCoords(void* pWindow, int* x, int* y) {
}
void setAnimToMove(void* data) {
- auto *const PANIMCFG = g_pConfigManager->getAnimationPropertyConfig("windowsMove");
+ auto* const PANIMCFG = g_pConfigManager->getAnimationPropertyConfig("windowsMove");
CAnimatedVariable* animvar = (CAnimatedVariable*)data;
@@ -38,23 +38,24 @@ void setAnimToMove(void* data) {
}
void Events::listener_mapWindow(void* owner, void* data) {
- CWindow* PWINDOW = (CWindow*)owner;
-
- static auto *const PINACTIVEALPHA = &g_pConfigManager->getConfigValuePtr("decoration:inactive_opacity")->floatValue;
- static auto *const PACTIVEALPHA = &g_pConfigManager->getConfigValuePtr("decoration:active_opacity")->floatValue;
- static auto *const PDIMSTRENGTH = &g_pConfigManager->getConfigValuePtr("decoration:dim_strength")->floatValue;
- static auto *const PSWALLOW = &g_pConfigManager->getConfigValuePtr("misc:enable_swallow")->intValue;
- static auto *const PSWALLOWREGEX = &g_pConfigManager->getConfigValuePtr("misc:swallow_regex")->strValue;
-
- auto PMONITOR = g_pCompositor->m_pLastMonitor;
- const auto PWORKSPACE = PMONITOR->specialWorkspaceID ? g_pCompositor->getWorkspaceByID(PMONITOR->specialWorkspaceID) : g_pCompositor->getWorkspaceByID(PMONITOR->activeWorkspace);
- PWINDOW->m_iMonitorID = PMONITOR->ID;
- PWINDOW->m_bMappedX11 = true;
- PWINDOW->m_iWorkspaceID = PMONITOR->specialWorkspaceID ? PMONITOR->specialWorkspaceID : PMONITOR->activeWorkspace;
- PWINDOW->m_bIsMapped = true;
+ CWindow* PWINDOW = (CWindow*)owner;
+
+ static auto* const PINACTIVEALPHA = &g_pConfigManager->getConfigValuePtr("decoration:inactive_opacity")->floatValue;
+ static auto* const PACTIVEALPHA = &g_pConfigManager->getConfigValuePtr("decoration:active_opacity")->floatValue;
+ static auto* const PDIMSTRENGTH = &g_pConfigManager->getConfigValuePtr("decoration:dim_strength")->floatValue;
+ static auto* const PSWALLOW = &g_pConfigManager->getConfigValuePtr("misc:enable_swallow")->intValue;
+ static auto* const PSWALLOWREGEX = &g_pConfigManager->getConfigValuePtr("misc:swallow_regex")->strValue;
+
+ auto PMONITOR = g_pCompositor->m_pLastMonitor;
+ const auto PWORKSPACE =
+ PMONITOR->specialWorkspaceID ? g_pCompositor->getWorkspaceByID(PMONITOR->specialWorkspaceID) : g_pCompositor->getWorkspaceByID(PMONITOR->activeWorkspace);
+ PWINDOW->m_iMonitorID = PMONITOR->ID;
+ PWINDOW->m_bMappedX11 = true;
+ PWINDOW->m_iWorkspaceID = PMONITOR->specialWorkspaceID ? PMONITOR->specialWorkspaceID : PMONITOR->activeWorkspace;
+ PWINDOW->m_bIsMapped = true;
PWINDOW->m_bReadyToDelete = false;
- PWINDOW->m_bFadingOut = false;
- PWINDOW->m_szTitle = g_pXWaylandManager->getTitle(PWINDOW);
+ PWINDOW->m_bFadingOut = false;
+ PWINDOW->m_szTitle = g_pXWaylandManager->getTitle(PWINDOW);
if (PWINDOW->m_iX11Type == 2)
g_pCompositor->moveUnmanagedX11ToWindows(PWINDOW);
@@ -79,7 +80,7 @@ void Events::listener_mapWindow(void* owner, void* data) {
}
if (g_pXWaylandManager->shouldBeFloated(PWINDOW)) {
- PWINDOW->m_bIsFloating = true;
+ PWINDOW->m_bIsFloating = true;
PWINDOW->m_bRequestsFloat = true;
}
@@ -90,7 +91,7 @@ void Events::listener_mapWindow(void* owner, void* data) {
if (PWORKSPACE->m_bDefaultPseudo) {
PWINDOW->m_bIsPseudotiled = true;
- wlr_box desiredGeometry = {0};
+ wlr_box desiredGeometry = {0};
g_pXWaylandManager->getGeometryForWindow(PWINDOW, &desiredGeometry);
PWINDOW->m_vPseudoSize = Vector2D(desiredGeometry.width, desiredGeometry.height);
}
@@ -99,22 +100,24 @@ void Events::listener_mapWindow(void* owner, void* data) {
if (PWORKSPACE->m_bHasFullscreenWindow && !PWINDOW->m_bIsFloating) {
const auto PFULLWINDOW = g_pCompositor->getFullscreenWindowOnWorkspace(PWORKSPACE->m_iID);
- pFullscreenWindow = PFULLWINDOW;
+ pFullscreenWindow = PFULLWINDOW;
g_pCompositor->setWindowFullscreen(PFULLWINDOW, false, PWORKSPACE->m_efFullscreenMode);
}
// window rules
- const auto WINDOWRULES = g_pConfigManager->getMatchingRules(PWINDOW);
+ const auto WINDOWRULES = g_pConfigManager->getMatchingRules(PWINDOW);
std::string requestedWorkspace = "";
- bool workspaceSilent = false;
- bool requestsFullscreen = PWINDOW->m_bWantsInitialFullscreen || (!PWINDOW->m_bIsX11 && PWINDOW->m_uSurface.xdg->role == WLR_XDG_SURFACE_ROLE_TOPLEVEL && PWINDOW->m_uSurface.xdg->toplevel->requested.fullscreen) || (PWINDOW->m_bIsX11 && PWINDOW->m_uSurface.xwayland->fullscreen);
- bool shouldFocus = true;
+ bool workspaceSilent = false;
+ bool requestsFullscreen = PWINDOW->m_bWantsInitialFullscreen ||
+ (!PWINDOW->m_bIsX11 && PWINDOW->m_uSurface.xdg->role == WLR_XDG_SURFACE_ROLE_TOPLEVEL && PWINDOW->m_uSurface.xdg->toplevel->requested.fullscreen) ||
+ (PWINDOW->m_bIsX11 && PWINDOW->m_uSurface.xwayland->fullscreen);
+ bool shouldFocus = true;
bool workspaceSpecial = false;
for (auto& r : WINDOWRULES) {
if (r.szRule.find("monitor") == 0) {
try {
- const auto MONITORSTR = r.szRule.substr(r.szRule.find(" "));
+ const auto MONITORSTR = r.szRule.substr(r.szRule.find(' '));
if (MONITORSTR == "unset") {
PWINDOW->m_iMonitorID = PMONITOR->ID;
@@ -133,9 +136,7 @@ void Events::listener_mapWindow(void* owner, void* data) {
}
Debug::log(ERR, "Rule monitor, applying to window %x -> mon: %i, workspace: %i", PWINDOW, PWINDOW->m_iMonitorID, PWINDOW->m_iWorkspaceID);
- } catch (std::exception& e) {
- Debug::log(ERR, "Rule monitor failed, rule: %s -> %s | err: %s", r.szRule.c_str(), r.szValue.c_str(), e.what());
- }
+ } catch (std::exception& e) { Debug::log(ERR, "Rule monitor failed, rule: %s -> %s | err: %s", r.szRule.c_str(), r.szValue.c_str(), e.what()); }
} else if (r.szRule.find("workspace") == 0) {
// check if it isnt unset
const auto WORKSPACERQ = r.szRule.substr(r.szRule.find_first_of(' ') + 1);
@@ -200,7 +201,7 @@ void Events::listener_mapWindow(void* owner, void* data) {
// check for silent
if (requestedWorkspace.contains("silent")) {
workspaceSilent = true;
- shouldFocus = false;
+ shouldFocus = false;
requestedWorkspace = requestedWorkspace.substr(0, requestedWorkspace.find_first_of(' '));
}
@@ -211,13 +212,13 @@ void Events::listener_mapWindow(void* owner, void* data) {
if (requestedWorkspace.find("special") == 0) {
workspaceSpecial = true;
- workspaceSilent = true;
+ workspaceSilent = true;
}
if (!workspaceSilent) {
g_pKeybindManager->m_mDispatchers["workspace"](requestedWorkspace);
- PWINDOW->m_iMonitorID = g_pCompositor->m_pLastMonitor->ID;
+ PWINDOW->m_iMonitorID = g_pCompositor->m_pLastMonitor->ID;
PWINDOW->m_iWorkspaceID = g_pCompositor->m_pLastMonitor->activeWorkspace;
PMONITOR = g_pCompositor->m_pLastMonitor;
@@ -231,14 +232,14 @@ void Events::listener_mapWindow(void* owner, void* data) {
if (!PWORKSPACE) {
std::string workspaceName = "";
- int workspaceID = 0;
+ int workspaceID = 0;
if (requestedWorkspace.find("name:") == 0) {
workspaceName = requestedWorkspace.substr(5);
- workspaceID = g_pCompositor->getNextAvailableNamedWorkspace();
+ workspaceID = g_pCompositor->getNextAvailableNamedWorkspace();
} else if (workspaceSpecial) {
workspaceName = "";
- workspaceID = getWorkspaceIDFromString(requestedWorkspace, workspaceName);
+ workspaceID = getWorkspaceIDFromString(requestedWorkspace, workspaceName);
} else {
try {
workspaceID = std::stoi(requestedWorkspace);
@@ -258,7 +259,7 @@ void Events::listener_mapWindow(void* owner, void* data) {
if (PWORKSPACE) {
PWINDOW->m_iWorkspaceID = PWORKSPACE->m_iID;
- PWINDOW->m_iMonitorID = PWORKSPACE->m_iMonitorID;
+ PWINDOW->m_iMonitorID = PWORKSPACE->m_iMonitorID;
}
}
@@ -270,14 +271,18 @@ void Events::listener_mapWindow(void* owner, void* data) {
for (auto& r : WINDOWRULES) {
if (r.szRule.find("size") == 0) {
try {
- const auto VALUE = r.szRule.substr(r.szRule.find(" ") + 1);
- const auto SIZEXSTR = VALUE.substr(0, VALUE.find(" "));
- const auto SIZEYSTR = VALUE.substr(VALUE.find(" ") + 1);
+ const auto VALUE = r.szRule.substr(r.szRule.find(' ') + 1);
+ const auto SIZEXSTR = VALUE.substr(0, VALUE.find(' '));
+ const auto SIZEYSTR = VALUE.substr(VALUE.find(' ') + 1);
const auto MAXSIZE = g_pXWaylandManager->getMaxSizeForWindow(PWINDOW);
- const auto SIZEX = SIZEXSTR == "max" ? std::clamp(MAXSIZE.x, 20.0, PMONITOR->vecSize.x) : (!SIZEXSTR.contains('%') ? std::stoi(SIZEXSTR) : std::stoi(SIZEXSTR.substr(0, SIZEXSTR.length() - 1)) * 0.01 * PMONITOR->vecSize.x);
- const auto SIZEY = SIZEYSTR == "max" ? std::clamp(MAXSIZE.y, 20.0, PMONITOR->vecSize.y) : (!SIZEYSTR.contains('%') ? std::stoi(SIZEYSTR) : std::stoi(SIZEYSTR.substr(0, SIZEYSTR.length() - 1)) * 0.01 * PMONITOR->vecSize.y);
+ const auto SIZEX = SIZEXSTR == "max" ?
+ std::clamp(MAXSIZE.x, 20.0, PMONITOR->vecSize.x) :
+ (!SIZEXSTR.contains('%') ? std::stoi(SIZEXSTR) : std::stoi(SIZEXSTR.substr(0, SIZEXSTR.length() - 1)) * 0.01 * PMONITOR->vecSize.x);
+ const auto SIZEY = SIZEYSTR == "max" ?
+ std::clamp(MAXSIZE.y, 20.0, PMONITOR->vecSize.y) :
+ (!SIZEYSTR.contains('%') ? std::stoi(SIZEYSTR) : std::stoi(SIZEYSTR.substr(0, SIZEYSTR.length() - 1)) * 0.01 * PMONITOR->vecSize.y);
Debug::log(LOG, "Rule size, applying to window %x", PWINDOW);
@@ -285,58 +290,55 @@ void Events::listener_mapWindow(void* owner, void* data) {
g_pXWaylandManager->setWindowSize(PWINDOW, PWINDOW->m_vRealSize.goalv());
PWINDOW->setHidden(false);
- } catch (...) {
- Debug::log(LOG, "Rule size failed, rule: %s -> %s", r.szRule.c_str(), r.szValue.c_str());
- }
+ } catch (...) { Debug::log(LOG, "Rule size failed, rule: %s -> %s", r.szRule.c_str(), r.szValue.c_str()); }
} else if (r.szRule.find("minsize") == 0) {
try {
- const auto VALUE = r.szRule.substr(r.szRule.find(" ") + 1);
- const auto SIZEXSTR = VALUE.substr(0, VALUE.find(" "));
- const auto SIZEYSTR = VALUE.substr(VALUE.find(" ") + 1);
+ const auto VALUE = r.szRule.substr(r.szRule.find(' ') + 1);
+ const auto SIZEXSTR = VALUE.substr(0, VALUE.find(' '));
+ const auto SIZEYSTR = VALUE.substr(VALUE.find(' ') + 1);
- const auto SIZE = Vector2D(std::max((double)std::stoll(SIZEXSTR), PWINDOW->m_vRealSize.goalv().x), std::max((double)std::stoll(SIZEYSTR), PWINDOW->m_vRealSize.goalv().y));
+ const auto SIZE =
+ Vector2D(std::max((double)std::stoll(SIZEXSTR), PWINDOW->m_vRealSize.goalv().x), std::max((double)std::stoll(SIZEYSTR), PWINDOW->m_vRealSize.goalv().y));
PWINDOW->m_vRealSize = SIZE;
g_pXWaylandManager->setWindowSize(PWINDOW, PWINDOW->m_vRealSize.goalv());
PWINDOW->setHidden(false);
- } catch (...) {
- Debug::log(LOG, "Rule minsize failed, rule: %s -> %s", r.szRule.c_str(), r.szValue.c_str());
- }
+ } catch (...) { Debug::log(LOG, "Rule minsize failed, rule: %s -> %s", r.szRule.c_str(), r.szValue.c_str()); }
} else if (r.szRule.find("maxsize") == 0) {
try {
- const auto VALUE = r.szRule.substr(r.szRule.find(" ") + 1);
- const auto SIZEXSTR = VALUE.substr(0, VALUE.find(" "));
- const auto SIZEYSTR = VALUE.substr(VALUE.find(" ") + 1);
+ const auto VALUE = r.szRule.substr(r.szRule.find(' ') + 1);
+ const auto SIZEXSTR = VALUE.substr(0, VALUE.find(' '));
+ const auto SIZEYSTR = VALUE.substr(VALUE.find(' ') + 1);
- const auto SIZE = Vector2D(std::min((double)std::stoll(SIZEXSTR), PWINDOW->m_vRealSize.goalv().x), std::min((double)std::stoll(SIZEYSTR), PWINDOW->m_vRealSize.goalv().y));
+ const auto SIZE =
+ Vector2D(std::min((double)std::stoll(SIZEXSTR), PWINDOW->m_vRealSize.goalv().x), std::min((double)std::stoll(SIZEYSTR), PWINDOW->m_vRealSize.goalv().y));
PWINDOW->m_vRealSize = SIZE;
g_pXWaylandManager->setWindowSize(PWINDOW, PWINDOW->m_vRealSize.goalv());
PWINDOW->setHidden(false);
- } catch (...) {
- Debug::log(LOG, "Rule maxsize failed, rule: %s -> %s", r.szRule.c_str(), r.szValue.c_str());
- }
+ } catch (...) { Debug::log(LOG, "Rule maxsize failed, rule: %s -> %s", r.szRule.c_str(), r.szValue.c_str()); }
} else if (r.szRule.find("move") == 0) {
try {
- auto value = r.szRule.substr(r.szRule.find(" ") + 1);
+ auto value = r.szRule.substr(r.szRule.find(' ') + 1);
const bool CURSOR = value.find("cursor") == 0;
if (CURSOR)
value = value.substr(value.find_first_of(' ') + 1);
- const auto POSXSTR = value.substr(0, value.find(" "));
- const auto POSYSTR = value.substr(value.find(" ") + 1);
+ const auto POSXSTR = value.substr(0, value.find(' '));
+ const auto POSYSTR = value.substr(value.find(' ') + 1);
- int posX = 0;
- int posY = 0;
+ int posX = 0;
+ int posY = 0;
if (POSXSTR.find("100%-") == 0) {
const auto PMONITOR = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID);
- const auto POSXRAW = POSXSTR.substr(5);
- posX = PMONITOR->vecSize.x - (!POSXRAW.contains('%') ? std::stoi(POSXRAW) : std::stoi(POSXRAW.substr(0, POSXRAW.length() - 1)) * 0.01 * PMONITOR->vecSize.x);
+ const auto POSXRAW = POSXSTR.substr(5);
+ posX =
+ PMONITOR->vecSize.x - (!POSXRAW.contains('%') ? std::stoi(POSXRAW) : std::stoi(POSXRAW.substr(0, POSXRAW.length() - 1)) * 0.01 * PMONITOR->vecSize.x);
if (CURSOR)
Debug::log(ERR, "Cursor is not compatible with 100%-, ignoring cursor!");
@@ -347,14 +349,16 @@ void Events::listener_mapWindow(void* owner, void* data) {
if (POSXSTR == "cursor") {
posX = g_pInputManager->getMouseCoordsInternal().x - PMONITOR->vecPosition.x;
} else {
- posX = g_pInputManager->getMouseCoordsInternal().x - PMONITOR->vecPosition.x + (!POSXSTR.contains('%') ? std::stoi(POSXSTR) : std::stoi(POSXSTR.substr(0, POSXSTR.length() - 1)) * 0.01 * PWINDOW->m_vRealSize.goalv().x);
+ posX = g_pInputManager->getMouseCoordsInternal().x - PMONITOR->vecPosition.x +
+ (!POSXSTR.contains('%') ? std::stoi(POSXSTR) : std::stoi(POSXSTR.substr(0, POSXSTR.length() - 1)) * 0.01 * PWINDOW->m_vRealSize.goalv().x);
}
}
if (POSYSTR.find("100%-") == 0) {
const auto PMONITOR = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID);
- const auto POSYRAW = POSYSTR.substr(5);
- posY = PMONITOR->vecSize.y - (!POSYRAW.contains('%') ? std::stoi(POSYRAW) : std::stoi(POSYRAW.substr(0, POSYRAW.length() - 1)) * 0.01 * PMONITOR->vecSize.y);
+ const auto POSYRAW = POSYSTR.substr(5);
+ posY =
+ PMONITOR->vecSize.y - (!POSYRAW.contains('%') ? std::stoi(POSYRAW) : std::stoi(POSYRAW.substr(0, POSYRAW.length() - 1)) * 0.01 * PMONITOR->vecSize.y);
if (CURSOR)
Debug::log(ERR, "Cursor is not compatible with 100%-, ignoring cursor!");
@@ -365,7 +369,8 @@ void Events::listener_mapWindow(void* owner, void* data) {
if (POSYSTR == "cursor") {
posY = g_pInputManager->getMouseCoordsInternal().y - PMONITOR->vecPosition.y;
} else {
- posY = g_pInputManager->getMouseCoordsInternal().y - PMONITOR->vecPosition.y + (!POSYSTR.contains('%') ? std::stoi(POSYSTR) : std::stoi(POSYSTR.substr(0, POSYSTR.length() - 1)) * 0.01 * PWINDOW->m_vRealSize.goalv().y);
+ posY = g_pInputManager->getMouseCoordsInternal().y - PMONITOR->vecPosition.y +
+ (!POSYSTR.contains('%') ? std::stoi(POSYSTR) : std::stoi(POSYSTR.substr(0, POSYSTR.length() - 1)) * 0.01 * PWINDOW->m_vRealSize.goalv().y);
}
}
@@ -374,9 +379,7 @@ void Events::listener_mapWindow(void* owner, void* data) {
PWINDOW->m_vRealPosition = Vector2D(posX, posY) + PMONITOR->vecPosition;
PWINDOW->setHidden(false);
- } catch (...) {
- Debug::log(LOG, "Rule move failed, rule: %s -> %s", r.szRule.c_str(), r.szValue.c_str());
- }
+ } catch (...) { Debug::log(LOG, "Rule move failed, rule: %s -> %s", r.szRule.c_str(), r.szValue.c_str()); }
} else if (r.szRule == "center") {
PWINDOW->m_vRealPosition = PMONITOR->vecPosition + PMONITOR->vecSize / 2.f - PWINDOW->m_vRealSize.goalv() / 2.f;
}
@@ -391,14 +394,14 @@ void Events::listener_mapWindow(void* owner, void* data) {
g_pLayoutManager->getCurrentLayout()->onWindowCreated(PWINDOW);
// Set the pseudo size here too so that it doesnt end up being 0x0
- PWINDOW->m_vPseudoSize = PWINDOW->m_vRealSize.goalv() - Vector2D(10,10);
+ PWINDOW->m_vPseudoSize = PWINDOW->m_vRealSize.goalv() - Vector2D(10, 10);
}
const auto PFOCUSEDWINDOWPREV = g_pCompositor->m_pLastWindow;
if (PWINDOW->m_sAdditionalConfigData.forceAllowsInput) {
- PWINDOW->m_bNoFocus = false;
- PWINDOW->m_bNoInitialFocus = false;
+ PWINDOW->m_bNoFocus = false;
+ PWINDOW->m_bNoInitialFocus = false;
PWINDOW->m_bX11ShouldntFocus = false;
}
@@ -422,21 +425,28 @@ void Events::listener_mapWindow(void* owner, void* data) {
PWINDOW->hyprListener_commitWindow.initCallback(&PWINDOW->m_uSurface.xdg->surface->events.commit, &Events::listener_commitWindow, PWINDOW, "XDG Window Late");
PWINDOW->hyprListener_setTitleWindow.initCallback(&PWINDOW->m_uSurface.xdg->toplevel->events.set_title, &Events::listener_setTitleWindow, PWINDOW, "XDG Window Late");
PWINDOW->hyprListener_newPopupXDG.initCallback(&PWINDOW->m_uSurface.xdg->events.new_popup, &Events::listener_newPopupXDG, PWINDOW, "XDG Window Late");
- PWINDOW->hyprListener_requestMaximize.initCallback(&PWINDOW->m_uSurface.xdg->toplevel->events.request_maximize, &Events::listener_requestMaximize, PWINDOW, "XDG Window Late");
- PWINDOW->hyprListener_requestMinimize.initCallback(&PWINDOW->m_uSurface.xdg->toplevel->events.request_minimize, &Events::listener_requestMinimize, PWINDOW, "XDG Window Late");
+ PWINDOW->hyprListener_requestMaximize.initCallback(&PWINDOW->m_uSurface.xdg->toplevel->events.request_maximize, &Events::listener_requestMaximize, PWINDOW,
+ "XDG Window Late");
+ PWINDOW->hyprListener_requestMinimize.initCallback(&PWINDOW->m_uSurface.xdg->toplevel->events.request_minimize, &Events::listener_requestMinimize, PWINDOW,
+ "XDG Window Late");
PWINDOW->hyprListener_requestMove.initCallback(&PWINDOW->m_uSurface.xdg->toplevel->events.request_move, &Events::listener_requestMove, PWINDOW, "XDG Window Late");
PWINDOW->hyprListener_requestResize.initCallback(&PWINDOW->m_uSurface.xdg->toplevel->events.request_resize, &Events::listener_requestResize, PWINDOW, "XDG Window Late");
- PWINDOW->hyprListener_fullscreenWindow.initCallback(&PWINDOW->m_uSurface.xdg->toplevel->events.request_fullscreen, &Events::listener_fullscreenWindow, PWINDOW, "XDG Window Late");
+ PWINDOW->hyprListener_fullscreenWindow.initCallback(&PWINDOW->m_uSurface.xdg->toplevel->events.request_fullscreen, &Events::listener_fullscreenWindow, PWINDOW,
+ "XDG Window Late");
} else {
- PWINDOW->hyprListener_fullscreenWindow.initCallback(&PWINDOW->m_uSurface.xwayland->events.request_fullscreen, &Events::listener_fullscreenWindow, PWINDOW, "XWayland Window Late");
+ PWINDOW->hyprListener_fullscreenWindow.initCallback(&PWINDOW->m_uSurface.xwayland->events.request_fullscreen, &Events::listener_fullscreenWindow, PWINDOW,
+ "XWayland Window Late");
PWINDOW->hyprListener_activateX11.initCallback(&PWINDOW->m_uSurface.xwayland->events.request_activate, &Events::listener_activateX11, PWINDOW, "XWayland Window Late");
PWINDOW->hyprListener_configureX11.initCallback(&PWINDOW->m_uSurface.xwayland->events.request_configure, &Events::listener_configureX11, PWINDOW, "XWayland Window Late");
PWINDOW->hyprListener_setTitleWindow.initCallback(&PWINDOW->m_uSurface.xwayland->events.set_title, &Events::listener_setTitleWindow, PWINDOW, "XWayland Window Late");
- PWINDOW->hyprListener_requestMinimize.initCallback(&PWINDOW->m_uSurface.xwayland->events.request_minimize, &Events::listener_requestMinimize, PWINDOW, "Xwayland Window Late");
- PWINDOW->hyprListener_requestMinimize.initCallback(&PWINDOW->m_uSurface.xwayland->events.request_maximize, &Events::listener_requestMaximize, PWINDOW, "Xwayland Window Late");
+ PWINDOW->hyprListener_requestMinimize.initCallback(&PWINDOW->m_uSurface.xwayland->events.request_minimize, &Events::listener_requestMinimize, PWINDOW,
+ "Xwayland Window Late");
+ PWINDOW->hyprListener_requestMinimize.initCallback(&PWINDOW->m_uSurface.xwayland->events.request_maximize, &Events::listener_requestMaximize, PWINDOW,
+ "Xwayland Window Late");
if (PWINDOW->m_iX11Type == 2)
- PWINDOW->hyprListener_setGeometryX11U.initCallback(&PWINDOW->m_uSurface.xwayland->events.set_geometry, &Events::listener_unmanagedSetGeometry, PWINDOW, "XWayland Window Late");
+ PWINDOW->hyprListener_setGeometryX11U.initCallback(&PWINDOW->m_uSurface.xwayland->events.set_geometry, &Events::listener_unmanagedSetGeometry, PWINDOW,
+ "XWayland Window Late");
}
// do the animation thing
@@ -502,7 +512,7 @@ void Events::listener_mapWindow(void* owner, void* data) {
if (ppid) {
// get window by pid
std::vector<CWindow*> found;
- CWindow* finalFound = nullptr;
+ CWindow* finalFound = nullptr;
for (auto& w : g_pCompositor->m_vWindows) {
if (!w->m_bIsMapped || w->isHidden())
continue;
@@ -539,10 +549,12 @@ void Events::listener_mapWindow(void* owner, void* data) {
}
}
- Debug::log(LOG, "Map request dispatched, monitor %s, xywh: %f %f %f %f", PMONITOR->szName.c_str(), PWINDOW->m_vRealPosition.goalv().x, PWINDOW->m_vRealPosition.goalv().y, PWINDOW->m_vRealSize.goalv().x, PWINDOW->m_vRealSize.goalv().y);
+ Debug::log(LOG, "Map request dispatched, monitor %s, xywh: %f %f %f %f", PMONITOR->szName.c_str(), PWINDOW->m_vRealPosition.goalv().x, PWINDOW->m_vRealPosition.goalv().y,
+ PWINDOW->m_vRealSize.goalv().x, PWINDOW->m_vRealSize.goalv().y);
auto workspaceID = requestedWorkspace != "" ? requestedWorkspace : PWORKSPACE->m_szName;
- g_pEventManager->postEvent(SHyprIPCEvent{"openwindow", getFormat("%x,%s,%s,%s", PWINDOW, workspaceID.c_str(), g_pXWaylandManager->getAppIDClass(PWINDOW).c_str(), PWINDOW->m_szTitle.c_str())});
+ g_pEventManager->postEvent(
+ SHyprIPCEvent{"openwindow", getFormat("%x,%s,%s,%s", PWINDOW, workspaceID.c_str(), g_pXWaylandManager->getAppIDClass(PWINDOW).c_str(), PWINDOW->m_szTitle.c_str())});
// recalc the values for this window
g_pCompositor->updateWindowAnimatedDecorationValues(PWINDOW);
@@ -595,9 +607,9 @@ void Events::listener_unmapWindow(void* owner, void* data) {
bool wasLastWindow = false;
if (PWINDOW == g_pCompositor->m_pLastWindow) {
- wasLastWindow = true;
+ wasLastWindow = true;
g_pCompositor->m_pLastWindow = nullptr;
- g_pCompositor->m_pLastFocus = nullptr;
+ g_pCompositor->m_pLastFocus = nullptr;
}
PWINDOW->m_bMappedX11 = false;
@@ -645,11 +657,11 @@ void Events::listener_unmapWindow(void* owner, void* data) {
const auto PMONITOR = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID);
// do the animation thing
- PWINDOW->m_vOriginalClosedPos = PWINDOW->m_vRealPosition.vec() - PMONITOR->vecPosition;
+ PWINDOW->m_vOriginalClosedPos = PWINDOW->m_vRealPosition.vec() - PMONITOR->vecPosition;
PWINDOW->m_vOriginalClosedSize = PWINDOW->m_vRealSize.vec();
- if (!PWINDOW->m_bX11DoesntWantBorders) // don't animate out if they weren't animated in.
- PWINDOW->m_vRealPosition = PWINDOW->m_vRealPosition.vec() + Vector2D(0.01f, 0.01f); // it has to be animated, otherwise onWindowPostCreateClose will ignore it
+ if (!PWINDOW->m_bX11DoesntWantBorders) // don't animate out if they weren't animated in.
+ PWINDOW->m_vRealPosition = PWINDOW->m_vRealPosition.vec() + Vector2D(0.01f, 0.01f); // it has to be animated, otherwise onWindowPostCreateClose will ignore it
// anims
g_pAnimationManager->onWindowPostCreateClose(PWINDOW, true);
@@ -689,7 +701,7 @@ void Events::listener_destroyWindow(void* owner, void* data) {
if (PWINDOW == g_pCompositor->m_pLastWindow) {
g_pCompositor->m_pLastWindow = nullptr;
- g_pCompositor->m_pLastFocus = nullptr;
+ g_pCompositor->m_pLastFocus = nullptr;
}
PWINDOW->hyprListener_mapWindow.removeCallback();
@@ -705,7 +717,7 @@ void Events::listener_destroyWindow(void* owner, void* data) {
}
PWINDOW->m_bReadyToDelete = true;
-
+
if (!PWINDOW->m_bFadingOut) {
g_pCompositor->removeWindowFromVectorSafe(PWINDOW); // most likely X11 unmanaged or sumn
Debug::log(LOG, "Unmapped window %x removed instantly", PWINDOW);
@@ -716,7 +728,7 @@ void Events::listener_setTitleWindow(void* owner, void* data) {
CWindow* PWINDOW = (CWindow*)owner;
if (!g_pCompositor->windowValidMapped(PWINDOW))
- return;
+ return;
PWINDOW->m_szTitle = g_pXWaylandManager->getTitle(PWINDOW);
@@ -761,9 +773,9 @@ void Events::listener_fullscreenWindow(void* owner, void* data) {
}
void Events::listener_activateXDG(wl_listener* listener, void* data) {
- const auto E = (wlr_xdg_activation_v1_request_activate_event*)data;
+ const auto E = (wlr_xdg_activation_v1_request_activate_event*)data;
- static auto *const PFOCUSONACTIVATE = &g_pConfigManager->getConfigValuePtr("misc:focus_on_activate")->intValue;
+ static auto* const PFOCUSONACTIVATE = &g_pConfigManager->getConfigValuePtr("misc:focus_on_activate")->intValue;
Debug::log(LOG, "Activate request for surface at %x", E->surface);
@@ -781,9 +793,9 @@ void Events::listener_activateXDG(wl_listener* listener, void* data) {
}
void Events::listener_activateX11(void* owner, void* data) {
- const auto PWINDOW = (CWindow*)owner;
+ const auto PWINDOW = (CWindow*)owner;
- static auto *const PFOCUSONACTIVATE = &g_pConfigManager->getConfigValuePtr("misc:focus_on_activate")->intValue;
+ static auto* const PFOCUSONACTIVATE = &g_pConfigManager->getConfigValuePtr("misc:focus_on_activate")->intValue;
Debug::log(LOG, "X11 Activate request for window %x", PWINDOW);
@@ -824,7 +836,7 @@ void Events::listener_configureX11(void* owner, void* data) {
PWINDOW->m_vRealPosition.setValueAndWarp(Vector2D(E->x, E->y));
PWINDOW->m_vRealSize.setValueAndWarp(Vector2D(E->width, E->height));
PWINDOW->m_vPosition = PWINDOW->m_vRealPosition.vec();
- PWINDOW->m_vSize = PWINDOW->m_vRealSize.vec();
+ PWINDOW->m_vSize = PWINDOW->m_vRealSize.vec();
wlr_xwayland_surface_configure(PWINDOW->m_uSurface.xwayland, E->x, E->y, E->width, E->height);
@@ -862,8 +874,10 @@ void Events::listener_unmanagedSetGeometry(void* owner, void* data) {
return;
}
- if (abs(std::floor(POS.x) - PWINDOW->m_uSurface.xwayland->x) > 2 || abs(std::floor(POS.y) - PWINDOW->m_uSurface.xwayland->y) > 2 || abs(std::floor(SIZ.x) - PWINDOW->m_uSurface.xwayland->width) > 2 || abs(std::floor(SIZ.y) - PWINDOW->m_uSurface.xwayland->height) > 2) {
- Debug::log(LOG, "Unmanaged window %x requests geometry update to %i %i %i %i", PWINDOW, (int)PWINDOW->m_uSurface.xwayland->x, (int)PWINDOW->m_uSurface.xwayland->y, (int)PWINDOW->m_uSurface.xwayland->width, (int)PWINDOW->m_uSurface.xwayland->height);
+ if (abs(std::floor(POS.x) - PWINDOW->m_uSurface.xwayland->x) > 2 || abs(std::floor(POS.y) - PWINDOW->m_uSurface.xwayland->y) > 2 ||
+ abs(std::floor(SIZ.x) - PWINDOW->m_uSurface.xwayland->width) > 2 || abs(std::floor(SIZ.y) - PWINDOW->m_uSurface.xwayland->height) > 2) {
+ Debug::log(LOG, "Unmanaged window %x requests geometry update to %i %i %i %i", PWINDOW, (int)PWINDOW->m_uSurface.xwayland->x, (int)PWINDOW->m_uSurface.xwayland->y,
+ (int)PWINDOW->m_uSurface.xwayland->width, (int)PWINDOW->m_uSurface.xwayland->height);
g_pHyprRenderer->damageWindow(PWINDOW);
PWINDOW->m_vRealPosition.setValueAndWarp(Vector2D(PWINDOW->m_uSurface.xwayland->x, PWINDOW->m_uSurface.xwayland->y));
@@ -886,11 +900,12 @@ void Events::listener_surfaceXWayland(wl_listener* listener, void* data) {
if (XWSURFACE->parent)
Debug::log(LOG, "Window parent data: %s at %x", XWSURFACE->parent->_class, XWSURFACE->parent);
- const auto PNEWWINDOW = XWSURFACE->override_redirect ? g_pCompositor->m_dUnmanagedX11Windows.emplace_back(std::make_unique<CWindow>()).get() : g_pCompositor->m_vWindows.emplace_back(std::make_unique<CWindow>()).get();
+ const auto PNEWWINDOW = XWSURFACE->override_redirect ? g_pCompositor->m_dUnmanagedX11Windows.emplace_back(std::make_unique<CWindow>()).get() :
+ g_pCompositor->m_vWindows.emplace_back(std::make_unique<CWindow>()).get();
PNEWWINDOW->m_uSurface.xwayland = XWSURFACE;
- PNEWWINDOW->m_iX11Type = XWSURFACE->override_redirect ? 2 : 1;
- PNEWWINDOW->m_bIsX11 = true;
+ PNEWWINDOW->m_iX11Type = XWSURFACE->override_redirect ? 2 : 1;
+ PNEWWINDOW->m_bIsX11 = true;
PNEWWINDOW->m_pX11Parent = g_pCompositor->getX11Parent(PNEWWINDOW);
@@ -908,7 +923,7 @@ void Events::listener_newXDGSurface(wl_listener* listener, void* data) {
Debug::log(LOG, "New XDG Surface created. (class: %s)", XDGSURFACE->toplevel->app_id);
- const auto PNEWWINDOW = g_pCompositor->m_vWindows.emplace_back(std::make_unique<CWindow>()).get();
+ const auto PNEWWINDOW = g_pCompositor->m_vWindows.emplace_back(std::make_unique<CWindow>()).get();
PNEWWINDOW->m_uSurface.xdg = XDGSURFACE;
PNEWWINDOW->hyprListener_mapWindow.initCallback(&XDGSURFACE->events.map, &Events::listener_mapWindow, PNEWWINDOW, "XDG Window");
@@ -931,7 +946,8 @@ void Events::listener_requestMaximize(void* owner, void* data) {
if (!PWINDOW->m_bIsX11) {
const auto EV = (wlr_foreign_toplevel_handle_v1_maximized_event*)data;
- g_pCompositor->setWindowFullscreen(PWINDOW, EV ? EV->maximized : !PWINDOW->m_bIsFullscreen, FULLSCREEN_MAXIMIZED); // this will be rejected if there already is a fullscreen window
+ g_pCompositor->setWindowFullscreen(PWINDOW, EV ? EV->maximized : !PWINDOW->m_bIsFullscreen,
+ FULLSCREEN_MAXIMIZED); // this will be rejected if there already is a fullscreen window
wlr_xdg_surface_schedule_configure(PWINDOW->m_uSurface.xdg);
} else {
diff --git a/src/helpers/AnimatedVariable.cpp b/src/helpers/AnimatedVariable.cpp
index 18162c99..f3b1d1e4 100644
--- a/src/helpers/AnimatedVariable.cpp
+++ b/src/helpers/AnimatedVariable.cpp
@@ -7,10 +7,10 @@ CAnimatedVariable::CAnimatedVariable() {
}
void CAnimatedVariable::create(ANIMATEDVARTYPE type, SAnimationPropertyConfig* pAnimConfig, void* pWindow, AVARDAMAGEPOLICY policy) {
- m_eVarType = type;
+ m_eVarType = type;
m_eDamagePolicy = policy;
- m_pConfig = pAnimConfig;
- m_pWindow = pWindow;
+ m_pConfig = pAnimConfig;
+ m_pWindow = pWindow;
m_bDummy = false;
}
@@ -22,25 +22,23 @@ void CAnimatedVariable::create(ANIMATEDVARTYPE type, std::any val, SAnimationPro
switch (type) {
case AVARTYPE_FLOAT: {
const auto V = std::any_cast<float>(val);
- m_fValue = V;
- m_fGoal = V;
+ m_fValue = V;
+ m_fGoal = V;
break;
}
case AVARTYPE_VECTOR: {
const auto V = std::any_cast<Vector2D>(val);
- m_vValue = V;
- m_vGoal = V;
+ m_vValue = V;
+ m_vGoal = V;
break;
}
case AVARTYPE_COLOR: {
const auto V = std::any_cast<CColor>(val);
- m_cValue = V;
- m_cGoal = V;
+ m_cValue = V;
+ m_cGoal = V;
break;
}
- default:
- ASSERT(false);
- break;
+ default: ASSERT(false); break;
}
} catch (std::exception& e) {
Debug::log(ERR, "CAnimatedVariable create error: %s", e.what());
@@ -64,7 +62,8 @@ void CAnimatedVariable::registerVar() {
}
int CAnimatedVariable::getDurationLeftMs() {
- return std::max((int)(m_pConfig->pValues->internalSpeed * 100) - (int)std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now() - animationBegin).count(), 0);
+ return std::max(
+ (int)(m_pConfig->pValues->internalSpeed * 100) - (int)std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now() - animationBegin).count(), 0);
}
float CAnimatedVariable::getPercent() {
diff --git a/src/helpers/AnimatedVariable.hpp b/src/helpers/AnimatedVariable.hpp
index ab1dcf42..6aa33255 100644
--- a/src/helpers/AnimatedVariable.hpp
+++ b/src/helpers/AnimatedVariable.hpp
@@ -3,16 +3,18 @@
#include "../defines.hpp"
#include <any>
-enum ANIMATEDVARTYPE {
+enum ANIMATEDVARTYPE
+{
AVARTYPE_INVALID = -1,
AVARTYPE_FLOAT,
AVARTYPE_VECTOR,
AVARTYPE_COLOR
};
-enum AVARDAMAGEPOLICY {
+enum AVARDAMAGEPOLICY
+{
AVARDAMAGE_INVALID = -1,
- AVARDAMAGE_ENTIRE = 0,
+ AVARDAMAGE_ENTIRE = 0,
AVARDAMAGE_BORDER,
AVARDAMAGE_SHADOW
};
@@ -24,7 +26,7 @@ struct SAnimationPropertyConfig;
class CHyprRenderer;
class CAnimatedVariable {
-public:
+ public:
CAnimatedVariable(); // dummy var
void create(ANIMATEDVARTYPE, SAnimationPropertyConfig*, void* pWindow, AVARDAMAGEPOLICY);
@@ -65,53 +67,59 @@ public:
return m_cGoal;
}
- void operator=(const Vector2D& v) {
- m_vGoal = v;
+ CAnimatedVariable& operator=(const Vector2D& v) {
+ m_vGoal = v;
animationBegin = std::chrono::system_clock::now();
- m_vBegun = m_vValue;
+ m_vBegun = m_vValue;
onAnimationBegin();
+
+ return *this;
}
- void operator=(const float& v) {
- m_fGoal = v;
+ CAnimatedVariable& operator=(const float& v) {
+ m_fGoal = v;
animationBegin = std::chrono::system_clock::now();
- m_fBegun = m_fValue;
+ m_fBegun = m_fValue;
onAnimationBegin();
+
+ return *this;
}
- void operator=(const CColor& v) {
- m_cGoal = v;
+ CAnimatedVariable& operator=(const CColor& v) {
+ m_cGoal = v;
animationBegin = std::chrono::system_clock::now();
- m_cBegun = m_cValue;
+ m_cBegun = m_cValue;
onAnimationBegin();
+
+ return *this;
}
// Sets the actual stored value, without affecting the goal, but resets the timer
void setValue(const Vector2D& v) {
- m_vValue = v;
+ m_vValue = v;
animationBegin = std::chrono::system_clock::now();
- m_vBegun = m_vValue;
+ m_vBegun = m_vValue;
onAnimationBegin();
}
// Sets the actual stored value, without affecting the goal, but resets the timer
void setValue(const float& v) {
- m_fValue = v;
+ m_fValue = v;
animationBegin = std::chrono::system_clock::now();
- m_vBegun = m_vValue;
+ m_vBegun = m_vValue;
onAnimationBegin();
}
// Sets the actual stored value, without affecting the goal, but resets the timer
void setValue(const CColor& v) {
- m_cValue = v;
+ m_cValue = v;
animationBegin = std::chrono::system_clock::now();
- m_vBegun = m_vValue;
+ m_vBegun = m_vValue;
onAnimationBegin();
}
@@ -137,14 +145,10 @@ public:
// checks if an animation is in progress
bool isBeingAnimated() {
switch (m_eVarType) {
- case AVARTYPE_FLOAT:
- return m_fValue != m_fGoal;
- case AVARTYPE_VECTOR:
- return m_vValue != m_vGoal;
- case AVARTYPE_COLOR:
- return m_cValue != m_cGoal;
- default:
- UNREACHABLE();
+ case AVARTYPE_FLOAT: return m_fValue != m_fGoal;
+ case AVARTYPE_VECTOR: return m_vValue != m_vGoal;
+ case AVARTYPE_COLOR: return m_cValue != m_cGoal;
+ default: UNREACHABLE();
}
UNREACHABLE();
@@ -166,8 +170,7 @@ public:
m_cValue = m_cGoal;
break;
}
- default:
- UNREACHABLE();
+ default: UNREACHABLE();
}
if (endCallback)
@@ -191,7 +194,7 @@ public:
if an animation is not running, runs instantly.
if "remove" is set to true, will remove the callback when ran. */
void setCallbackOnEnd(std::function<void(void* thisptr)> func, bool remove = true) {
- m_fEndCallback = func;
+ m_fEndCallback = func;
m_bRemoveEndAfterRan = remove;
if (!isBeingAnimated())
@@ -201,58 +204,57 @@ public:
/* sets a function to be ran when an animation is started.
if "remove" is set to true, will remove the callback when ran. */
void setCallbackOnBegin(std::function<void(void* thisptr)> func, bool remove = true) {
- m_fBeginCallback = func;
+ m_fBeginCallback = func;
m_bRemoveBeginAfterRan = remove;
}
/* resets all callbacks. Does not call any. */
void resetAllCallbacks() {
- m_fBeginCallback = nullptr;
- m_fEndCallback = nullptr;
+ m_fBeginCallback = nullptr;
+ m_fEndCallback = nullptr;
m_bRemoveBeginAfterRan = false;
- m_bRemoveEndAfterRan = false;
+ m_bRemoveEndAfterRan = false;
}
-private:
-
- Vector2D m_vValue = Vector2D(0,0);
- float m_fValue = 0;
- CColor m_cValue;
+ private:
+ Vector2D m_vValue = Vector2D(0, 0);
+ float m_fValue = 0;
+ CColor m_cValue;
- Vector2D m_vGoal = Vector2D(0,0);
- float m_fGoal = 0;
- CColor m_cGoal;
+ Vector2D m_vGoal = Vector2D(0, 0);
+ float m_fGoal = 0;
+ CColor m_cGoal;
- Vector2D m_vBegun = Vector2D(0,0);
- float m_fBegun = 0;
- CColor m_cBegun;
+ Vector2D m_vBegun = Vector2D(0, 0);
+ float m_fBegun = 0;
+ CColor m_cBegun;
// owners
- void* m_pWindow = nullptr;
- void* m_pWorkspace = nullptr;
- void* m_pLayer = nullptr;
+ void* m_pWindow = nullptr;
+ void* m_pWorkspace = nullptr;
+ void* m_pLayer = nullptr;
- SAnimationPropertyConfig* m_pConfig = nullptr;
+ SAnimationPropertyConfig* m_pConfig = nullptr;
- bool m_bDummy = true;
- bool m_bIsRegistered = false;
+ bool m_bDummy = true;
+ bool m_bIsRegistered = false;
std::chrono::system_clock::time_point animationBegin;
- ANIMATEDVARTYPE m_eVarType = AVARTYPE_INVALID;
- AVARDAMAGEPOLICY m_eDamagePolicy = AVARDAMAGE_INVALID;
+ ANIMATEDVARTYPE m_eVarType = AVARTYPE_INVALID;
+ AVARDAMAGEPOLICY m_eDamagePolicy = AVARDAMAGE_INVALID;
- bool m_bRemoveEndAfterRan = true;
- bool m_bRemoveBeginAfterRan = true;
- std::function<void(void* thisptr)> m_fEndCallback;
- std::function<void(void* thisptr)> m_fBeginCallback;
+ bool m_bRemoveEndAfterRan = true;
+ bool m_bRemoveBeginAfterRan = true;
+ std::function<void(void* thisptr)> m_fEndCallback;
+ std::function<void(void* thisptr)> m_fBeginCallback;
// methods
void onAnimationEnd() {
if (m_fEndCallback) {
m_fEndCallback(this);
if (m_bRemoveEndAfterRan)
- m_fEndCallback = nullptr; // reset
+ m_fEndCallback = nullptr; // reset
}
}
@@ -260,7 +262,7 @@ private:
if (m_fBeginCallback) {
m_fBeginCallback(this);
if (m_bRemoveBeginAfterRan)
- m_fBeginCallback = nullptr; // reset
+ m_fBeginCallback = nullptr; // reset
}
}
diff --git a/src/helpers/BezierCurve.cpp b/src/helpers/BezierCurve.cpp
index bdf2c4b1..07726b8d 100644
--- a/src/helpers/BezierCurve.cpp
+++ b/src/helpers/BezierCurve.cpp
@@ -5,13 +5,13 @@ void CBezierCurve::setup(std::vector<Vector2D>* pVec) {
const auto BEGIN = std::chrono::high_resolution_clock::now();
- m_dPoints.emplace_back(Vector2D(0,0));
+ m_dPoints.emplace_back(Vector2D(0, 0));
for (auto& p : *pVec) {
m_dPoints.push_back(p);
}
- m_dPoints.emplace_back(Vector2D(1,1));
+ m_dPoints.emplace_back(Vector2D(1, 1));
RASSERT(m_dPoints.size() == 4, "CBezierCurve only supports cubic beziers! (points num: %i)", m_dPoints.size());
@@ -21,7 +21,7 @@ void CBezierCurve::setup(std::vector<Vector2D>* pVec) {
m_aPointsBaked[i] = Vector2D(getXForT((i + 1) / (float)BAKEDPOINTS), getYForT((i + 1) / (float)BAKEDPOINTS));
}
- const auto ELAPSEDUS = std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::high_resolution_clock::now() - BEGIN).count() / 1000.f;
+ const auto ELAPSEDUS = std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::high_resolution_clock::now() - BEGIN).count() / 1000.f;
const auto POINTSSIZE = m_aPointsBaked.size() * sizeof(m_aPointsBaked[0]) / 1000.f;
const auto BEGINCALC = std::chrono::high_resolution_clock::now();
@@ -29,9 +29,8 @@ void CBezierCurve::setup(std::vector<Vector2D>* pVec) {
getYForPoint(i);
const auto ELAPSEDCALCAVG = std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::high_resolution_clock::now() - BEGINCALC).count() / 1000.f / 10.f;
- Debug::log(LOG, "Created a bezier curve, baked %i points, mem usage: %.2fkB, time to bake: %.2fµs. Estimated average calc time: %.2fµs.",
- BAKEDPOINTS, POINTSSIZE, ELAPSEDUS, ELAPSEDCALCAVG);
-
+ Debug::log(LOG, "Created a bezier curve, baked %i points, mem usage: %.2fkB, time to bake: %.2fµs. Estimated average calc time: %.2fµs.", BAKEDPOINTS, POINTSSIZE, ELAPSEDUS,
+ ELAPSEDCALCAVG);
}
float CBezierCurve::getYForT(float t) {
@@ -47,9 +46,9 @@ float CBezierCurve::getYForPoint(float x) {
// binary search for the range UPDOWN X
float upperT = 1;
float lowerT = 0;
- float mid = 0.5;
+ float mid = 0.5;
- while(std::abs(upperT - lowerT) > INVBAKEDPOINTS) {
+ while (std::abs(upperT - lowerT) > INVBAKEDPOINTS) {
if (m_aPointsBaked[((int)(mid * (float)BAKEDPOINTS))].x > x) {
upperT = mid;
} else {
@@ -65,7 +64,7 @@ float CBezierCurve::getYForPoint(float x) {
const auto PERCINDELTA = (x - LOWERPOINT->x) / (UPPERPOINT->x - LOWERPOINT->x);
- if (std::isnan(PERCINDELTA) || std::isinf(PERCINDELTA)) // can sometimes happen for VERY small x
+ if (std::isnan(PERCINDELTA) || std::isinf(PERCINDELTA)) // can sometimes happen for VERY small x
return 0.f;
return LOWERPOINT->y + (UPPERPOINT->y - UPPERPOINT->y) * PERCINDELTA;
diff --git a/src/helpers/BezierCurve.hpp b/src/helpers/BezierCurve.hpp
index da01b688..81cf74b6 100644
--- a/src/helpers/BezierCurve.hpp
+++ b/src/helpers/BezierCurve.hpp
@@ -3,25 +3,25 @@
#include "../defines.hpp"
#include <deque>
-constexpr int BAKEDPOINTS = 200;
+constexpr int BAKEDPOINTS = 200;
constexpr float INVBAKEDPOINTS = 1.f / BAKEDPOINTS;
// an implementation of a cubic bezier curve
// might do better later
// TODO: n-point curves
class CBezierCurve {
-public:
+ public:
// sets up the bezier curve.
// this EXCLUDES the 0,0 and 1,1 points,
- void setup(std::vector<Vector2D>* points);
+ void setup(std::vector<Vector2D>* points);
- float getYForT(float t);
- float getXForT(float t);
- float getYForPoint(float x);
+ float getYForT(float t);
+ float getXForT(float t);
+ float getYForPoint(float x);
-private:
+ private:
// this INCLUDES the 0,0 and 1,1 points.
- std::deque<Vector2D> m_dPoints;
+ std::deque<Vector2D> m_dPoints;
- std::array<Vector2D, BAKEDPOINTS> m_aPointsBaked;
+ std::array<Vector2D, BAKEDPOINTS> m_aPointsBaked;
}; \ No newline at end of file
diff --git a/src/helpers/Color.cpp b/src/helpers/Color.cpp
index 37ea39c8..c92f74ae 100644
--- a/src/helpers/Color.cpp
+++ b/src/helpers/Color.cpp
@@ -1,7 +1,7 @@
#include "Color.hpp"
#include "../defines.hpp"
-CColor::CColor() { }
+CColor::CColor() {}
CColor::CColor(float r, float g, float b, float a) {
this->r = r;
diff --git a/src/helpers/Color.hpp b/src/helpers/Color.hpp
index 5844d322..d3cae689 100644
--- a/src/helpers/Color.hpp
+++ b/src/helpers/Color.hpp
@@ -3,24 +3,24 @@
#include "../includes.hpp"
class CColor {
-public:
+ public:
CColor();
CColor(float, float, float, float);
CColor(uint64_t);
- float r = 0, g = 0, b = 0, a = 255;
+ float r = 0, g = 0, b = 0, a = 255;
- uint64_t getAsHex();
+ uint64_t getAsHex();
- CColor operator- (const CColor& c2) const {
+ CColor operator-(const CColor& c2) const {
return CColor(r - c2.r, g - c2.g, b - c2.b, a - c2.a);
}
- CColor operator+ (const CColor& c2) const {
+ CColor operator+(const CColor& c2) const {
return CColor(r + c2.r, g + c2.g, b + c2.b, a + c2.a);
}
- CColor operator* (const float& v) const {
+ CColor operator*(const float& v) const {
return CColor(r * v, g * v, b * v, a * v);
}
diff --git a/src/helpers/MiscFunctions.cpp b/src/helpers/MiscFunctions.cpp
index e0dcb6dc..67b0efcb 100644
--- a/src/helpers/MiscFunctions.cpp
+++ b/src/helpers/MiscFunctions.cpp
@@ -5,29 +5,28 @@
#include <sys/utsname.h>
#include <iomanip>
-#if defined(__DragonFly__) || defined(__FreeBSD__) || \
- defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__)
-# include <sys/sysctl.h>
-# if defined(__DragonFly__)
-# include <sys/kinfo.h> // struct kinfo_proc
-# elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
-# include <sys/user.h> // struct kinfo_proc
-# endif
-
-# if defined(__NetBSD__)
-# undef KERN_PROC
-# define KERN_PROC KERN_PROC2
-# define KINFO_PROC struct kinfo_proc2
-# else
-# define KINFO_PROC struct kinfo_proc
-# endif
-# if defined(__DragonFly__)
-# define KP_PPID(kp) kp.kp_ppid
-# elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
-# define KP_PPID(kp) kp.ki_ppid
-# else
-# define KP_PPID(kp) kp.p_ppid
-# endif
+#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__)
+#include <sys/sysctl.h>
+#if defined(__DragonFly__)
+#include <sys/kinfo.h> // struct kinfo_proc
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#include <sys/user.h> // struct kinfo_proc
+#endif
+
+#if defined(__NetBSD__)
+#undef KERN_PROC
+#define KERN_PROC KERN_PROC2
+#define KINFO_PROC struct kinfo_proc2
+#else
+#define KINFO_PROC struct kinfo_proc
+#endif
+#if defined(__DragonFly__)
+#define KP_PPID(kp) kp.kp_ppid
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#define KP_PPID(kp) kp.ki_ppid
+#else
+#define KP_PPID(kp) kp.p_ppid
+#endif
#endif
static const float transforms[][9] = {{
@@ -87,7 +86,7 @@ std::string absolutePath(const std::string& rawpath, const std::string& currentP
return value;
}
-void addWLSignal(wl_signal* pSignal, wl_listener* pListener, void* pOwner, std::string ownerString) {
+void addWLSignal(wl_signal* pSignal, wl_listener* pListener, void* pOwner, const std::string& ownerString) {
ASSERT(pSignal);
ASSERT(pListener);
@@ -96,12 +95,12 @@ void addWLSignal(wl_signal* pSignal, wl_listener* pListener, void* pOwner, std::
Debug::log(LOG, "Registered signal for owner %x: %x -> %x (owner: %s)", pOwner, pSignal, pListener, ownerString.c_str());
}
-void handleNoop(struct wl_listener *listener, void *data) {
+void handleNoop(struct wl_listener* listener, void* data) {
// Do nothing
}
-std::string getFormat(const char *fmt, ...) {
- char* outputStr = nullptr;
+std::string getFormat(const char* fmt, ...) {
+ char* outputStr = nullptr;
va_list args;
va_start(args, fmt);
@@ -116,32 +115,31 @@ std::string getFormat(const char *fmt, ...) {
std::string escapeJSONStrings(const std::string& str) {
std::ostringstream oss;
- for (auto &c : str) {
+ for (auto& c : str) {
switch (c) {
- case '"': oss << "\\\""; break;
- case '\\': oss << "\\\\"; break;
- case '\b': oss << "\\b"; break;
- case '\f': oss << "\\f"; break;
- case '\n': oss << "\\n"; break;
- case '\r': oss << "\\r"; break;
- case '\t': oss << "\\t"; break;
- default:
- if ('\x00' <= c && c <= '\x1f') {
- oss << "\\u"
- << std::hex << std::setw(4) << std::setfill('0') << static_cast<int>(c);
- } else {
- oss << c;
- }
+ case '"': oss << "\\\""; break;
+ case '\\': oss << "\\\\"; break;
+ case '\b': oss << "\\b"; break;
+ case '\f': oss << "\\f"; break;
+ case '\n': oss << "\\n"; break;
+ case '\r': oss << "\\r"; break;
+ case '\t': oss << "\\t"; break;
+ default:
+ if ('\x00' <= c && c <= '\x1f') {
+ oss << "\\u" << std::hex << std::setw(4) << std::setfill('0') << static_cast<int>(c);
+ } else {
+ oss << c;
+ }
}
}
return oss.str();
}
void scaleBox(wlr_box* box, float scale) {
- box->width = std::round(box->width * scale);
+ box->width = std::round(box->width * scale);
box->height = std::round(box->height * scale);
- box->x = std::round(box->x * scale);
- box->y = std::round(box->y * scale);
+ box->x = std::round(box->x * scale);
+ box->y = std::round(box->y * scale);
}
std::string removeBeginEndSpacesTabs(std::string str) {
@@ -166,9 +164,9 @@ std::string removeBeginEndSpacesTabs(std::string str) {
float getPlusMinusKeywordResult(std::string source, float relative) {
float result = INT_MAX;
- if (source.find_first_of("+") == 0) {
+ if (source[0] == '+') {
try {
- if (source.contains("."))
+ if (source.contains('.'))
result = relative + std::stof(source.substr(1));
else
result = relative + std::stoi(source.substr(1));
@@ -176,9 +174,9 @@ float getPlusMinusKeywordResult(std::string source, float relative) {
Debug::log(ERR, "Invalid arg \"%s\" in getPlusMinusKeywordResult!", source.c_str());
return INT_MAX;
}
- } else if (source.find_first_of("-") == 0) {
+ } else if (source[0] == '-') {
try {
- if (source.contains("."))
+ if (source.contains('.'))
result = relative - std::stof(source.substr(1));
else
result = relative - std::stoi(source.substr(1));
@@ -188,7 +186,7 @@ float getPlusMinusKeywordResult(std::string source, float relative) {
}
} else {
try {
- if (source.contains("."))
+ if (source.contains('.'))
result = stof(source);
else
result = stoi(source);
@@ -239,7 +237,7 @@ int getWorkspaceIDFromString(const std::string& in, std::string& outName) {
const auto NAME = in.substr(8);
const auto WS = g_pCompositor->getWorkspaceByName("special:" + NAME);
-
+
outName = "special:" + NAME;
return WS ? WS->m_iID : g_pCompositor->getNewSpecialID();
@@ -248,7 +246,7 @@ int getWorkspaceIDFromString(const std::string& in, std::string& outName) {
return SPECIAL_WORKSPACE_START;
} else if (in.find("name:") == 0) {
const auto WORKSPACENAME = in.substr(in.find_first_of(':') + 1);
- const auto WORKSPACE = g_pCompositor->getWorkspaceByName(WORKSPACENAME);
+ const auto WORKSPACE = g_pCompositor->getWorkspaceByName(WORKSPACENAME);
if (!WORKSPACE) {
result = g_pCompositor->getNextAvailableNamedWorkspace();
} else {
@@ -276,8 +274,8 @@ int getWorkspaceIDFromString(const std::string& in, std::string& outName) {
result = (int)getPlusMinusKeywordResult(in.substr(1), 0);
// result now has +/- what we should move on mon
- int remains = (int)result;
-
+ int remains = (int)result;
+
std::vector<int> validWSes;
for (auto& ws : g_pCompositor->m_vWorkspaces) {
if (ws->m_bIsSpecialWorkspace || (ws->m_iMonitorID != g_pCompositor->m_pLastMonitor->ID && !onAllMonitors))
@@ -310,7 +308,7 @@ int getWorkspaceIDFromString(const std::string& in, std::string& outName) {
currentItem = validWSes.size() + currentItem;
}
- result = validWSes[currentItem];
+ result = validWSes[currentItem];
outName = g_pCompositor->getWorkspaceByID(validWSes[currentItem])->m_szName;
} else {
@@ -345,8 +343,8 @@ float vecToRectDistanceSquared(const Vector2D& vec, const Vector2D& p1, const Ve
// Execute a shell command and get the output
std::string execAndGet(const char* cmd) {
- std::array<char, 128> buffer;
- std::string result;
+ std::array<char, 128> buffer;
+ std::string result;
const std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(cmd, "r"), pclose);
if (!pipe) {
Debug::log(ERR, "execAndGet: failed in pipe");
@@ -387,8 +385,8 @@ void matrixProjection(float mat[9], int w, int h, wl_output_transform tr) {
memset(mat, 0, sizeof(*mat) * 9);
const float* t = transforms[tr];
- float x = 2.0f / w;
- float y = 2.0f / h;
+ float x = 2.0f / w;
+ float y = 2.0f / h;
// Rotation + reflection
mat[0] = x * t[0];
@@ -411,35 +409,35 @@ int64_t getPPIDof(int64_t pid) {
KERN_PROC,
KERN_PROC_PID,
(int)pid,
-# if defined(__NetBSD__) || defined(__OpenBSD__)
+#if defined(__NetBSD__) || defined(__OpenBSD__)
sizeof(KINFO_PROC),
1,
-# endif
+#endif
};
- u_int miblen = sizeof(mib) / sizeof(mib[0]);
+ u_int miblen = sizeof(mib) / sizeof(mib[0]);
KINFO_PROC kp;
- size_t sz = sizeof(KINFO_PROC);
+ size_t sz = sizeof(KINFO_PROC);
if (sysctl(mib, miblen, &kp, &sz, NULL, 0) != -1)
return KP_PPID(kp);
return 0;
#else
std::string dir = "/proc/" + std::to_string(pid) + "/status";
- FILE* infile;
+ FILE* infile;
infile = fopen(dir.c_str(), "r");
if (!infile)
return 0;
- char* line = nullptr;
- size_t len = 0;
- ssize_t len2 = 0;
+ char* line = nullptr;
+ size_t len = 0;
+ ssize_t len2 = 0;
std::string pidstr;
while ((len2 = getline(&line, &len, infile)) != -1) {
if (strstr(line, "PPid:")) {
- pidstr = std::string(line, len2);
+ pidstr = std::string(line, len2);
const auto tabpos = pidstr.find_last_of('\t');
if (tabpos != std::string::npos)
pidstr = pidstr.substr(tabpos);
@@ -453,9 +451,7 @@ int64_t getPPIDof(int64_t pid) {
try {
return std::stoll(pidstr);
- } catch (std::exception& e) {
- return 0;
- }
+ } catch (std::exception& e) { return 0; }
#endif
}
@@ -464,7 +460,7 @@ int64_t configStringToInt(const std::string& VALUE) {
// Values with 0x are hex
const auto VALUEWITHOUTHEX = VALUE.substr(2);
return stol(VALUEWITHOUTHEX, nullptr, 16);
- } else if (VALUE.find("rgba(") == 0 && VALUE.find(")") == VALUE.length() - 1) {
+ } else if (VALUE.find("rgba(") == 0 && VALUE.find(')') == VALUE.length() - 1) {
const auto VALUEWITHOUTFUNC = VALUE.substr(5, VALUE.length() - 6);
if (removeBeginEndSpacesTabs(VALUEWITHOUTFUNC).length() != 8) {
@@ -476,7 +472,7 @@ int64_t configStringToInt(const std::string& VALUE) {
// now we need to RGBA -> ARGB. The config holds ARGB only.
return (RGBA >> 8) + 0x1000000 * (RGBA & 0xFF);
- } else if (VALUE.find("rgb(") == 0 && VALUE.find(")") == VALUE.length() - 1) {
+ } else if (VALUE.find("rgb(") == 0 && VALUE.find(')') == VALUE.length() - 1) {
const auto VALUEWITHOUTFUNC = VALUE.substr(4, VALUE.length() - 5);
if (removeBeginEndSpacesTabs(VALUEWITHOUTFUNC).length() != 6) {
diff --git a/src/helpers/MiscFunctions.hpp b/src/helpers/MiscFunctions.hpp
index 9f30960e..36bdc3b7 100644
--- a/src/helpers/MiscFunctions.hpp
+++ b/src/helpers/MiscFunctions.hpp
@@ -3,20 +3,20 @@
#include "../includes.hpp"
std::string absolutePath(const std::string&, const std::string&);
-void addWLSignal(wl_signal*, wl_listener*, void* pOwner, std::string ownerString);
-std::string getFormat(const char *fmt, ...); // Basically Debug::log to a string
+void addWLSignal(wl_signal*, wl_listener*, void* pOwner, const std::string& ownerString);
+std::string getFormat(const char* fmt, ...); // Basically Debug::log to a string
std::string escapeJSONStrings(const std::string& str);
-void scaleBox(wlr_box*, float);
+void scaleBox(wlr_box*, float);
std::string removeBeginEndSpacesTabs(std::string);
-bool isNumber(const std::string&, bool allowfloat = false);
-bool isDirection(const std::string&);
-int getWorkspaceIDFromString(const std::string&, std::string&);
-float vecToRectDistanceSquared(const Vector2D& vec, const Vector2D& p1, const Vector2D& p2);
-void logSystemInfo();
+bool isNumber(const std::string&, bool allowfloat = false);
+bool isDirection(const std::string&);
+int getWorkspaceIDFromString(const std::string&, std::string&);
+float vecToRectDistanceSquared(const Vector2D& vec, const Vector2D& p1, const Vector2D& p2);
+void logSystemInfo();
std::string execAndGet(const char*);
-int64_t getPPIDof(int64_t pid);
-int64_t configStringToInt(const std::string&);
+int64_t getPPIDof(int64_t pid);
+int64_t configStringToInt(const std::string&);
-float getPlusMinusKeywordResult(std::string in, float relative);
+float getPlusMinusKeywordResult(std::string in, float relative);
-void matrixProjection(float mat[9], int w, int h, wl_output_transform tr);
+void matrixProjection(float mat[9], int w, int h, wl_output_transform tr);
diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp
index 823066ac..74630bd5 100644
--- a/src/helpers/Monitor.cpp
+++ b/src/helpers/Monitor.cpp
@@ -67,15 +67,15 @@ void CMonitor::onConnect(bool noRule) {
if (output->non_desktop) {
Debug::log(LOG, "Not configuring non-desktop output");
- if (g_pCompositor->m_sWRLDRMLeaseMgr) {
- wlr_drm_lease_v1_manager_offer_output(g_pCompositor->m_sWRLDRMLeaseMgr, output);
- }
- return;
- }
+ if (g_pCompositor->m_sWRLDRMLeaseMgr) {
+ wlr_drm_lease_v1_manager_offer_output(g_pCompositor->m_sWRLDRMLeaseMgr, output);
+ }
+ return;
+ }
if (!m_bRenderingInitPassed) {
output->allocator = nullptr;
- output->renderer = nullptr;
+ output->renderer = nullptr;
wlr_output_init_render(output, g_pCompositor->m_sWLRAllocator, g_pCompositor->m_sWLRRenderer);
m_bRenderingInitPassed = true;
}
@@ -91,7 +91,7 @@ void CMonitor::onConnect(bool noRule) {
}
}
- if (std::find_if(g_pCompositor->m_vMonitors.begin(), g_pCompositor->m_vMonitors.end(), [&](auto& other) { return other.get() == this; }) == g_pCompositor->m_vMonitors.end()){
+ if (std::find_if(g_pCompositor->m_vMonitors.begin(), g_pCompositor->m_vMonitors.end(), [&](auto& other) { return other.get() == this; }) == g_pCompositor->m_vMonitors.end()) {
g_pCompositor->m_vMonitors.push_back(*m_pThisWrap);
}
@@ -99,7 +99,7 @@ void CMonitor::onConnect(bool noRule) {
// create it in the arr
vecPosition = monitorRule.offset;
- vecSize = monitorRule.resolution;
+ vecSize = monitorRule.resolution;
refreshRate = monitorRule.refreshRate;
wlr_output_enable(output, 1);
@@ -110,7 +110,8 @@ void CMonitor::onConnect(bool noRule) {
wlr_xcursor_manager_load(g_pCompositor->m_sWLRXCursorMgr, scale);
- Debug::log(LOG, "Added new monitor with name %s at %i,%i with size %ix%i, pointer %x", output->name, (int)vecPosition.x, (int)vecPosition.y, (int)vecPixelSize.x, (int)vecPixelSize.y, output);
+ Debug::log(LOG, "Added new monitor with name %s at %i,%i with size %ix%i, pointer %x", output->name, (int)vecPosition.x, (int)vecPosition.y, (int)vecPixelSize.x,
+ (int)vecPixelSize.y, output);
damage = wlr_output_damage_create(output);
@@ -127,12 +128,12 @@ void CMonitor::onConnect(bool noRule) {
m_pThisWrap = nullptr;
- forceFullFrames = 3; // force 3 full frames to make sure there is no blinking due to double-buffering.
+ forceFullFrames = 3; // force 3 full frames to make sure there is no blinking due to double-buffering.
//
g_pEventManager->postEvent(SHyprIPCEvent{"monitoradded", szName});
- if (!g_pCompositor->m_pLastMonitor) // set the last monitor if it isnt set yet
+ if (!g_pCompositor->m_pLastMonitor) // set the last monitor if it isnt set yet
g_pCompositor->setActiveMonitor(this);
wlr_xcursor_manager_load(g_pCompositor->m_sWLRXCursorMgr, scale);
@@ -189,7 +190,7 @@ void CMonitor::onDisconnect() {
g_pConfigManager->m_bWantsMonitorReload = true;
}
- m_bEnabled = false;
+ m_bEnabled = false;
m_bRenderingInitPassed = false;
hyprListener_monitorFrame.removeCallback();
@@ -206,7 +207,8 @@ void CMonitor::onDisconnect() {
}
// snap cursor
- wlr_cursor_warp(g_pCompositor->m_sWLRCursor, nullptr, BACKUPMON->vecPosition.x + BACKUPMON->vecTransformedSize.x / 2.f, BACKUPMON->vecPosition.y + BACKUPMON->vecTransformedSize.y / 2.f);
+ wlr_cursor_warp(g_pCompositor->m_sWLRCursor, nullptr, BACKUPMON->vecPosition.x + BACKUPMON->vecTransformedSize.x / 2.f,
+ BACKUPMON->vecPosition.y + BACKUPMON->vecTransformedSize.y / 2.f);
// move workspaces
std::deque<CWorkspace*> wspToMove;
@@ -259,7 +261,7 @@ int CMonitor::findAvailableDefaultWS() {
if (const auto BOUND = g_pConfigManager->getBoundMonitorStringForWS(std::to_string(i)); !BOUND.empty() && BOUND != szName)
continue;
-
+
return i;
}
@@ -269,10 +271,10 @@ int CMonitor::findAvailableDefaultWS() {
void CMonitor::setupDefaultWS(const SMonitorRule& monitorRule) {
// Workspace
std::string newDefaultWorkspaceName = "";
- int64_t WORKSPACEID = monitorRule.defaultWorkspace == "" ? findAvailableDefaultWS() : getWorkspaceIDFromString(monitorRule.defaultWorkspace, newDefaultWorkspaceName);
+ int64_t WORKSPACEID = monitorRule.defaultWorkspace == "" ? findAvailableDefaultWS() : getWorkspaceIDFromString(monitorRule.defaultWorkspace, newDefaultWorkspaceName);
if (WORKSPACEID == INT_MAX || (WORKSPACEID >= SPECIAL_WORKSPACE_START && WORKSPACEID <= -2)) {
- WORKSPACEID = g_pCompositor->m_vWorkspaces.size() + 1;
+ WORKSPACEID = g_pCompositor->m_vWorkspaces.size() + 1;
newDefaultWorkspaceName = std::to_string(WORKSPACEID);
Debug::log(LOG, "Invalid workspace= directive name in monitor parsing, workspace name \"%s\" is invalid.", monitorRule.defaultWorkspace.c_str());
@@ -347,7 +349,8 @@ void CMonitor::setMirror(const std::string& mirrorOf) {
}
}
- if (std::find_if(g_pCompositor->m_vMonitors.begin(), g_pCompositor->m_vMonitors.end(), [&](auto& other) { return other.get() == this; }) == g_pCompositor->m_vMonitors.end()) {
+ if (std::find_if(g_pCompositor->m_vMonitors.begin(), g_pCompositor->m_vMonitors.end(), [&](auto& other) { return other.get() == this; }) ==
+ g_pCompositor->m_vMonitors.end()) {
g_pCompositor->m_vMonitors.push_back(*m_pThisWrap);
}
@@ -387,9 +390,7 @@ void CMonitor::setMirror(const std::string& mirrorOf) {
pMirrorOf->mirrors.push_back(this);
// remove from mvmonitors
- if (std::find_if(g_pCompositor->m_vMonitors.begin(), g_pCompositor->m_vMonitors.end(), [&](auto& other) { return other.get() == this; }) != g_pCompositor->m_vMonitors.end()) {
- g_pCompositor->m_vMonitors.erase(std::remove_if(g_pCompositor->m_vMonitors.begin(), g_pCompositor->m_vMonitors.end(), [&](const auto& other) { return other.get() == this; }));
- }
+ std::erase_if(g_pCompositor->m_vMonitors, [&](const auto& other) { return other.get() == this; });
g_pCompositor->setActiveMonitor(g_pCompositor->m_vMonitors.front().get());
}
@@ -401,10 +402,10 @@ float CMonitor::getDefaultScale() {
static constexpr double MMPERINCH = 25.4;
- const auto DIAGONALPX = sqrt(pow(vecPixelSize.x, 2) + pow(vecPixelSize.y, 2));
- const auto DIAGONALIN = sqrt(pow(output->phys_width / MMPERINCH, 2) + pow(output->phys_height / MMPERINCH, 2));
+ const auto DIAGONALPX = sqrt(pow(vecPixelSize.x, 2) + pow(vecPixelSize.y, 2));
+ const auto DIAGONALIN = sqrt(pow(output->phys_width / MMPERINCH, 2) + pow(output->phys_height / MMPERINCH, 2));
- const auto PPI = DIAGONALPX / DIAGONALIN;
+ const auto PPI = DIAGONALPX / DIAGONALIN;
if (PPI > 200 /* High PPI, 2x*/)
return 2;
diff --git a/src/helpers/Monitor.hpp b/src/helpers/Monitor.hpp
index 75cdb969..ca2913b7 100644
--- a/src/helpers/Monitor.hpp
+++ b/src/helpers/Monitor.hpp
@@ -10,49 +10,49 @@
struct SMonitorRule;
class CMonitor {
-public:
- Vector2D vecPosition = Vector2D(-1,-1); // means unset
- Vector2D vecSize = Vector2D(0,0);
- Vector2D vecPixelSize = Vector2D(0,0);
- Vector2D vecTransformedSize = Vector2D(0,0);
+ public:
+ Vector2D vecPosition = Vector2D(-1, -1); // means unset
+ Vector2D vecSize = Vector2D(0, 0);
+ Vector2D vecPixelSize = Vector2D(0, 0);
+ Vector2D vecTransformedSize = Vector2D(0, 0);
- bool primary = false;
+ bool primary = false;
uint64_t ID = -1;
int activeWorkspace = -1;
float scale = 1;
- std::string szName = "";
+ std::string szName = "";
- Vector2D vecReservedTopLeft = Vector2D(0,0);
- Vector2D vecReservedBottomRight = Vector2D(0,0);
+ Vector2D vecReservedTopLeft = Vector2D(0, 0);
+ Vector2D vecReservedBottomRight = Vector2D(0, 0);
// WLR stuff
- wlr_output* output = nullptr;
- float refreshRate = 60;
- wlr_output_damage* damage = nullptr;
- int framesToSkip = 0;
- int forceFullFrames = 0;
- bool noFrameSchedule = false;
- bool scheduledRecalc = false;
- wl_output_transform transform = WL_OUTPUT_TRANSFORM_NORMAL;
-
- bool dpmsStatus = true;
- bool vrrActive = false; // this can be TRUE even if VRR is not active in the case that this display does not support it.
- bool enabled10bit = false; // as above, this can be TRUE even if 10 bit failed.
- bool createdByUser = false;
+ wlr_output* output = nullptr;
+ float refreshRate = 60;
+ wlr_output_damage* damage = nullptr;
+ int framesToSkip = 0;
+ int forceFullFrames = 0;
+ bool noFrameSchedule = false;
+ bool scheduledRecalc = false;
+ wl_output_transform transform = WL_OUTPUT_TRANSFORM_NORMAL;
+
+ bool dpmsStatus = true;
+ bool vrrActive = false; // this can be TRUE even if VRR is not active in the case that this display does not support it.
+ bool enabled10bit = false; // as above, this can be TRUE even if 10 bit failed.
+ bool createdByUser = false;
// mirroring
- CMonitor* pMirrorOf = nullptr;
+ CMonitor* pMirrorOf = nullptr;
std::vector<CMonitor*> mirrors;
// for the special workspace. 0 means not open.
- int specialWorkspaceID = 0;
+ int specialWorkspaceID = 0;
// Double-linked list because we need to have constant mem addresses for signals
// We have to store pointers and use raw new/delete because they might be moved between them
// and I am lazy
- std::array<std::vector<std::unique_ptr<SLayerSurface>>, 4> m_aLayerSurfaceLists;
+ std::array<std::vector<std::unique_ptr<SLayerSurface>>, 4> m_aLayerSurfaceLists;
DYNLISTENER(monitorFrame);
DYNLISTENER(monitorDestroy);
@@ -62,19 +62,18 @@ public:
// I don't really care lol :P
wlr_ext_workspace_group_handle_v1* pWLRWorkspaceGroupHandle = nullptr;
-
// methods
- void onConnect(bool noRule);
- void onDisconnect();
- void addDamage(pixman_region32_t* rg);
- void addDamage(wlr_box* box);
- void setMirror(const std::string&);
- bool isMirror();
- float getDefaultScale();
-
- std::shared_ptr<CMonitor>* m_pThisWrap = nullptr;
- bool m_bEnabled = false;
- bool m_bRenderingInitPassed = false;
+ void onConnect(bool noRule);
+ void onDisconnect();
+ void addDamage(pixman_region32_t* rg);
+ void addDamage(wlr_box* box);
+ void setMirror(const std::string&);
+ bool isMirror();
+ float getDefaultScale();
+
+ std::shared_ptr<CMonitor>* m_pThisWrap = nullptr;
+ bool m_bEnabled = false;
+ bool m_bRenderingInitPassed = false;
// For the list lookup
@@ -82,7 +81,7 @@ public:
return vecPosition == rhs.vecPosition && vecSize == rhs.vecSize && szName == rhs.szName;
}
-private:
- void setupDefaultWS(const SMonitorRule&);
- int findAvailableDefaultWS();
+ private:
+ void setupDefaultWS(const SMonitorRule&);
+ int findAvailableDefaultWS();
};
diff --git a/src/helpers/SubsurfaceTree.cpp b/src/helpers/SubsurfaceTree.cpp
index a41030f5..633d80ad 100644
--- a/src/helpers/SubsurfaceTree.cpp
+++ b/src/helpers/SubsurfaceTree.cpp
@@ -23,7 +23,7 @@ void addSurfaceGlobalOffset(SSurfaceTreeNode* node, int* lx, int* ly) {
SSurfaceTreeNode* createTree(wlr_surface* pSurface, CWindow* pWindow) {
const auto PNODE = &SubsurfaceTree::surfaceTreeNodes.emplace_back();
- PNODE->pSurface = pSurface;
+ PNODE->pSurface = pSurface;
PNODE->pWindowOwner = pWindow;
PNODE->hyprListener_newSubsurface.initCallback(&pSurface->events.new_subsurface, &Events::listener_newSubsurfaceNode, PNODE, "SurfaceTreeNode");
@@ -42,8 +42,8 @@ SSurfaceTreeNode* createTree(wlr_surface* pSurface, CWindow* pWindow) {
}
SSurfaceTreeNode* createSubsurfaceNode(SSurfaceTreeNode* pParent, SSubsurface* pSubsurface, wlr_surface* surface, CWindow* pWindow) {
- const auto PNODE = createTree(surface, pWindow);
- PNODE->pParent = pParent;
+ const auto PNODE = createTree(surface, pWindow);
+ PNODE->pParent = pParent;
PNODE->pSubsurface = pSubsurface;
Debug::log(LOG, "Creating a subsurface Node! (pWindow: %x)", pWindow);
@@ -56,7 +56,7 @@ SSurfaceTreeNode* SubsurfaceTree::createTreeRoot(wlr_surface* pSurface, applyGlo
Debug::log(LOG, "Creating a surfaceTree Root! (pWindow: %x)", pWindow);
- PNODE->offsetfn = fn;
+ PNODE->offsetfn = fn;
PNODE->globalOffsetData = data;
return PNODE;
@@ -74,8 +74,8 @@ void SubsurfaceTree::destroySurfaceTree(SSurfaceTreeNode* pNode) {
}
if (!exists) {
- Debug::log(ERR, "Tried to remove a SurfaceTreeNode that doesn't exist?? (Node %x)", pNode);
- return;
+ Debug::log(ERR, "Tried to remove a SurfaceTreeNode that doesn't exist?? (Node %x)", pNode);
+ return;
}
for (auto& c : pNode->childSubsurfaces)
@@ -132,14 +132,14 @@ void destroySubsurface(SSubsurface* pSubsurface) {
void Events::listener_newSubsurfaceNode(void* owner, void* data) {
SSurfaceTreeNode* pNode = (SSurfaceTreeNode*)owner;
- const auto PSUBSURFACE = (wlr_subsurface*)data;
+ const auto PSUBSURFACE = (wlr_subsurface*)data;
- const auto PNEWSUBSURFACE = &pNode->childSubsurfaces.emplace_back();
+ const auto PNEWSUBSURFACE = &pNode->childSubsurfaces.emplace_back();
Debug::log(LOG, "Added a new subsurface %x", PSUBSURFACE);
PNEWSUBSURFACE->pSubsurface = PSUBSURFACE;
- PNEWSUBSURFACE->pParent = pNode;
+ PNEWSUBSURFACE->pParent = pNode;
PNEWSUBSURFACE->hyprListener_map.initCallback(&PSUBSURFACE->events.map, &Events::listener_mapSubsurface, PNEWSUBSURFACE, "Subsurface");
PNEWSUBSURFACE->hyprListener_unmap.initCallback(&PSUBSURFACE->events.unmap, &Events::listener_unmapSubsurface, PNEWSUBSURFACE, "Subsurface");
@@ -178,7 +178,8 @@ void Events::listener_unmapSubsurface(void* owner, void* data) {
if (subsurface->pChild) {
const auto PNODE = subsurface->pChild;
- const auto IT = std::find_if(SubsurfaceTree::surfaceTreeNodes.begin(), SubsurfaceTree::surfaceTreeNodes.end(), [&](const SSurfaceTreeNode& other) { return &other == PNODE; });
+ const auto IT =
+ std::find_if(SubsurfaceTree::surfaceTreeNodes.begin(), SubsurfaceTree::surfaceTreeNodes.end(), [&](const SSurfaceTreeNode& other) { return &other == PNODE; });
if (IT != SubsurfaceTree::surfaceTreeNodes.end()) {
int lx = 0, ly = 0;
@@ -186,7 +187,7 @@ void Events::listener_unmapSubsurface(void* owner, void* data) {
wlr_box extents = {lx, ly, 0, 0};
if (PNODE->pSurface) {
- extents.width = PNODE->pSurface->current.width;
+ extents.width = PNODE->pSurface->current.width;
extents.height = PNODE->pSurface->current.height;
g_pHyprRenderer->damageBox(&extents);
@@ -203,7 +204,7 @@ void Events::listener_commitSubsurface(void* owner, void* data) {
// no damaging if it's not visible
if (!g_pHyprRenderer->shouldRenderWindow(pNode->pWindowOwner)) {
- static auto *const PLOGDAMAGE = &g_pConfigManager->getConfigValuePtr("debug:log_damage")->intValue;
+ static auto* const PLOGDAMAGE = &g_pConfigManager->getConfigValuePtr("debug:log_damage")->intValue;
if (*PLOGDAMAGE)
Debug::log(LOG, "Refusing to commit damage from %x because it's invisible.", pNode->pWindowOwner);
return;
@@ -216,13 +217,14 @@ void Events::listener_commitSubsurface(void* owner, void* data) {
// I do not think this is correct, but it solves a lot of issues with some apps (e.g. firefox)
// What this does is that basically, if the pNode is a child of some other node, on commit,
// it will also damage (check & damage if needed) all its siblings.
- if (pNode->pParent) for (auto& cs : pNode->pParent->childSubsurfaces) {
- const auto NODECOORDS = pNode->pSubsurface ? Vector2D(pNode->pSubsurface->pSubsurface->current.x, pNode->pSubsurface->pSubsurface->current.y) : Vector2D();
+ if (pNode->pParent)
+ for (auto& cs : pNode->pParent->childSubsurfaces) {
+ const auto NODECOORDS = pNode->pSubsurface ? Vector2D(pNode->pSubsurface->pSubsurface->current.x, pNode->pSubsurface->pSubsurface->current.y) : Vector2D();
- if (&cs != pNode->pSubsurface && cs.pSubsurface) {
- g_pHyprRenderer->damageSurface(cs.pSubsurface->surface, lx - NODECOORDS.x + cs.pSubsurface->current.x, ly - NODECOORDS.y + cs.pSubsurface->current.y);
+ if (&cs != pNode->pSubsurface && cs.pSubsurface) {
+ g_pHyprRenderer->damageSurface(cs.pSubsurface->surface, lx - NODECOORDS.x + cs.pSubsurface->current.x, ly - NODECOORDS.y + cs.pSubsurface->current.y);
+ }
}
- }
g_pHyprRenderer->damageSurface(pNode->pSurface, lx, ly);
}
diff --git a/src/helpers/SubsurfaceTree.hpp b/src/helpers/SubsurfaceTree.hpp
index 52f54f16..c5d3934f 100644
--- a/src/helpers/SubsurfaceTree.hpp
+++ b/src/helpers/SubsurfaceTree.hpp
@@ -6,49 +6,49 @@
struct SSubsurface;
class CWindow;
-typedef void (*applyGlobalOffsetFn)(void *, int *, int *);
+typedef void (*applyGlobalOffsetFn)(void*, int*, int*);
struct SSurfaceTreeNode {
- wlr_surface* pSurface = nullptr;
+ wlr_surface* pSurface = nullptr;
DYNLISTENER(newSubsurface);
DYNLISTENER(commit);
DYNLISTENER(destroy);
- SSurfaceTreeNode* pParent = nullptr;
- SSubsurface* pSubsurface = nullptr;
+ SSurfaceTreeNode* pParent = nullptr;
+ SSubsurface* pSubsurface = nullptr;
std::list<SSubsurface> childSubsurfaces;
- applyGlobalOffsetFn offsetfn;
- void *globalOffsetData;
- CWindow* pWindowOwner = nullptr;
+ applyGlobalOffsetFn offsetfn;
+ void* globalOffsetData;
+ CWindow* pWindowOwner = nullptr;
- bool operator==(const SSurfaceTreeNode& rhs) {
+ bool operator==(const SSurfaceTreeNode& rhs) {
return pSurface == rhs.pSurface;
}
};
struct SSubsurface {
- wlr_subsurface* pSubsurface = nullptr;
+ wlr_subsurface* pSubsurface = nullptr;
- SSurfaceTreeNode* pParent = nullptr;
- SSurfaceTreeNode* pChild = nullptr;
+ SSurfaceTreeNode* pParent = nullptr;
+ SSurfaceTreeNode* pChild = nullptr;
DYNLISTENER(map);
DYNLISTENER(unmap);
DYNLISTENER(destroy);
- CWindow* pWindowOwner = nullptr;
+ CWindow* pWindowOwner = nullptr;
- bool operator==(const SSubsurface& rhs) {
+ bool operator==(const SSubsurface& rhs) {
return pSubsurface == rhs.pSubsurface;
}
};
namespace SubsurfaceTree {
- SSurfaceTreeNode* createTreeRoot(wlr_surface*, applyGlobalOffsetFn, void*, CWindow* pWindow = nullptr);
- void destroySurfaceTree(SSurfaceTreeNode*);
+ SSurfaceTreeNode* createTreeRoot(wlr_surface*, applyGlobalOffsetFn, void*, CWindow* pWindow = nullptr);
+ void destroySurfaceTree(SSurfaceTreeNode*);
inline std::list<SSurfaceTreeNode> surfaceTreeNodes;
};
diff --git a/src/helpers/Timer.hpp b/src/helpers/Timer.hpp
index 2e8d6adc..7b5bfc9d 100644
--- a/src/helpers/Timer.hpp
+++ b/src/helpers/Timer.hpp
@@ -3,13 +3,13 @@
#include "../defines.hpp"
class CTimer {
-public:
- void reset();
- float getSeconds();
- int getMillis();
+ public:
+ void reset();
+ float getSeconds();
+ int getMillis();
-private:
+ private:
std::chrono::system_clock::time_point m_tpLastReset;
- std::chrono::system_clock::duration getDuration();
+ std::chrono::system_clock::duration getDuration();
}; \ No newline at end of file
diff --git a/src/helpers/Vector2D.cpp b/src/helpers/Vector2D.cpp
index a96411e6..97a9685c 100644
--- a/src/helpers/Vector2D.cpp
+++ b/src/helpers/Vector2D.cpp
@@ -6,7 +6,11 @@ Vector2D::Vector2D(double xx, double yy) {
y = yy;
}
-Vector2D::Vector2D() { x = 0; y = 0; }
+Vector2D::Vector2D() {
+ x = 0;
+ y = 0;
+}
+
Vector2D::~Vector2D() {}
double Vector2D::normalize() {
@@ -24,8 +28,5 @@ Vector2D Vector2D::floor() {
}
Vector2D Vector2D::clamp(const Vector2D& min, const Vector2D& max) {
- return Vector2D(
- std::clamp(this->x, min.x, max.x == 0 ? INFINITY : max.x),
- std::clamp(this->y, min.y, max.y == 0 ? INFINITY : max.y)
- );
+ return Vector2D(std::clamp(this->x, min.x, max.x == 0 ? INFINITY : max.x), std::clamp(this->y, min.y, max.y == 0 ? INFINITY : max.y));
} \ No newline at end of file
diff --git a/src/helpers/Vector2D.hpp b/src/helpers/Vector2D.hpp
index 557cdb53..f2f47e6b 100644
--- a/src/helpers/Vector2D.hpp
+++ b/src/helpers/Vector2D.hpp
@@ -3,7 +3,7 @@
#include <math.h>
class Vector2D {
- public:
+ public:
Vector2D(double, double);
Vector2D();
~Vector2D();
@@ -12,18 +12,18 @@ class Vector2D {
double y = 0;
// returns the scale
- double normalize();
+ double normalize();
- Vector2D operator+(const Vector2D a) const {
+ Vector2D operator+(const Vector2D& a) const {
return Vector2D(this->x + a.x, this->y + a.y);
}
- Vector2D operator-(const Vector2D a) const {
+ Vector2D operator-(const Vector2D& a) const {
return Vector2D(this->x - a.x, this->y - a.y);
}
- Vector2D operator*(const float a) const {
+ Vector2D operator*(const float& a) const {
return Vector2D(this->x * a, this->y * a);
}
- Vector2D operator/(const float a) const {
+ Vector2D operator/(const float& a) const {
return Vector2D(this->x / a, this->y / a);
}
diff --git a/src/helpers/WLClasses.hpp b/src/helpers/WLClasses.hpp
index 1461e481..3da363f9 100644
--- a/src/helpers/WLClasses.hpp
+++ b/src/helpers/WLClasses.hpp
@@ -10,8 +10,8 @@
struct SLayerSurface {
SLayerSurface();
- wlr_layer_surface_v1* layerSurface;
- wl_list link;
+ wlr_layer_surface_v1* layerSurface;
+ wl_list link;
DYNLISTENER(destroyLayerSurface);
DYNLISTENER(mapLayerSurface);
@@ -19,22 +19,22 @@ struct SLayerSurface {
DYNLISTENER(commitLayerSurface);
DYNLISTENER(newPopup);
- wlr_box geometry = {0,0,0,0};
- Vector2D position;
+ wlr_box geometry = {0, 0, 0, 0};
+ Vector2D position;
zwlr_layer_shell_v1_layer layer;
- bool mapped = false;
+ bool mapped = false;
- int monitorID = -1;
+ int monitorID = -1;
- std::string szNamespace = "";
+ std::string szNamespace = "";
- CAnimatedVariable alpha;
- bool fadingOut = false;
- bool readyToDelete = false;
- bool noProcess = false;
+ CAnimatedVariable alpha;
+ bool fadingOut = false;
+ bool readyToDelete = false;
+ bool noProcess = false;
- bool forceBlur = false;
+ bool forceBlur = false;
// For the list lookup
bool operator==(const SLayerSurface& rhs) {
@@ -44,14 +44,14 @@ struct SLayerSurface {
struct SRenderData {
wlr_output* output;
- timespec* when;
- int x, y;
+ timespec* when;
+ int x, y;
// for iters
- void* data = nullptr;
+ void* data = nullptr;
wlr_surface* surface = nullptr;
- int w, h;
- void* pMonitor = nullptr;
+ int w, h;
+ void* pMonitor = nullptr;
// for rounding
bool dontRound = true;
@@ -69,7 +69,7 @@ struct SRenderData {
int rounding = -1; // -1 means not set
// for blurring
- bool blur = false;
+ bool blur = false;
bool blockBlurOptimization = false;
// only for windows, not popups
@@ -80,17 +80,17 @@ struct SRenderData {
};
struct SExtensionFindingData {
- Vector2D origin;
- Vector2D vec;
+ Vector2D origin;
+ Vector2D vec;
wlr_surface** found;
};
struct SStringRuleNames {
- std::string layout = "";
- std::string model = "";
+ std::string layout = "";
+ std::string model = "";
std::string variant = "";
std::string options = "";
- std::string rules = "";
+ std::string rules = "";
};
struct SKeyboard {
@@ -101,18 +101,18 @@ struct SKeyboard {
DYNLISTENER(keyboardKeymap);
DYNLISTENER(keyboardDestroy);
- bool isVirtual = false;
- bool active = false;
+ bool isVirtual = false;
+ bool active = false;
xkb_layout_index_t activeLayout = 0;
- std::string name = "";
- std::string xkbFilePath = "";
+ std::string name = "";
+ std::string xkbFilePath = "";
- SStringRuleNames currentRules;
- int repeatRate = 0;
- int repeatDelay = 0;
- int numlockOn = -1;
+ SStringRuleNames currentRules;
+ int repeatRate = 0;
+ int repeatDelay = 0;
+ int numlockOn = -1;
// For the list lookup
bool operator==(const SKeyboard& rhs) {
@@ -121,18 +121,18 @@ struct SKeyboard {
};
struct SMouse {
- wlr_input_device* mouse = nullptr;
+ wlr_input_device* mouse = nullptr;
wlr_pointer_constraint_v1* currentConstraint = nullptr;
- bool constraintActive = false;
+ bool constraintActive = false;
- pixman_region32_t confinedTo;
+ pixman_region32_t confinedTo;
- std::string name = "";
+ std::string name = "";
- bool virt = false;
+ bool virt = false;
- bool connected = false; // means connected to the cursor
+ bool connected = false; // means connected to the cursor
DYNLISTENER(commitConstraint);
DYNLISTENER(destroyMouse);
@@ -143,11 +143,11 @@ struct SMouse {
};
struct SConstraint {
- SMouse* pMouse = nullptr;
+ SMouse* pMouse = nullptr;
wlr_pointer_constraint_v1* constraint = nullptr;
- bool hintSet = false;
- Vector2D positionHint; // the position hint, but will be set to the current cursor pos if not set.
+ bool hintSet = false;
+ Vector2D positionHint; // the position hint, but will be set to the current cursor pos if not set.
DYNLISTENER(setConstraintRegion);
DYNLISTENER(destroyConstraint);
@@ -160,10 +160,10 @@ struct SConstraint {
class CMonitor;
struct SXDGPopup {
- CWindow* parentWindow = nullptr;
- SXDGPopup* parentPopup = nullptr;
- wlr_xdg_popup* popup = nullptr;
- CMonitor* monitor = nullptr;
+ CWindow* parentWindow = nullptr;
+ SXDGPopup* parentPopup = nullptr;
+ wlr_xdg_popup* popup = nullptr;
+ CMonitor* monitor = nullptr;
DYNLISTENER(newPopupFromPopupXDG);
DYNLISTENER(destroyPopupXDG);
@@ -171,8 +171,8 @@ struct SXDGPopup {
DYNLISTENER(unmapPopupXDG);
DYNLISTENER(commitPopupXDG);
- double lx;
- double ly;
+ double lx;
+ double ly;
SSurfaceTreeNode* pSurfaceTree = nullptr;
@@ -183,24 +183,24 @@ struct SXDGPopup {
};
struct SSeat {
- wlr_seat* seat = nullptr;
- wl_client* exclusiveClient = nullptr;
+ wlr_seat* seat = nullptr;
+ wl_client* exclusiveClient = nullptr;
- SMouse* mouse = nullptr;
+ SMouse* mouse = nullptr;
};
struct SDrag {
- wlr_drag* drag = nullptr;
+ wlr_drag* drag = nullptr;
DYNLISTENER(destroy);
// Icon
- bool iconMapped = false;
+ bool iconMapped = false;
- wlr_drag_icon* dragIcon = nullptr;
+ wlr_drag_icon* dragIcon = nullptr;
- Vector2D pos;
+ Vector2D pos;
DYNLISTENER(destroyIcon);
DYNLISTENER(mapIcon);
@@ -215,31 +215,31 @@ struct STablet {
DYNLISTENER(Proximity);
DYNLISTENER(Destroy);
- wlr_tablet* wlrTablet = nullptr;
+ wlr_tablet* wlrTablet = nullptr;
wlr_tablet_v2_tablet* wlrTabletV2 = nullptr;
- wlr_input_device* wlrDevice = nullptr;
+ wlr_input_device* wlrDevice = nullptr;
- std::string name = "";
+ std::string name = "";
- bool operator==(const STablet& b) {
+ bool operator==(const STablet& b) {
return wlrDevice == b.wlrDevice;
}
};
struct STabletTool {
- wlr_tablet_tool* wlrTabletTool = nullptr;
+ wlr_tablet_tool* wlrTabletTool = nullptr;
wlr_tablet_v2_tablet_tool* wlrTabletToolV2 = nullptr;
- wlr_tablet_v2_tablet* wlrTabletOwnerV2 = nullptr;
+ wlr_tablet_v2_tablet* wlrTabletOwnerV2 = nullptr;
- wlr_surface* pSurface = nullptr;
+ wlr_surface* pSurface = nullptr;
- double tiltX = 0;
- double tiltY = 0;
+ double tiltX = 0;
+ double tiltY = 0;
- bool active = true;
+ bool active = true;
- std::string name = "";
+ std::string name = "";
DYNLISTENER(TabletToolDestroy);
DYNLISTENER(TabletToolSetCursor);
@@ -251,9 +251,9 @@ struct STabletTool {
struct STabletPad {
wlr_tablet_v2_tablet_pad* wlrTabletPadV2 = nullptr;
- STablet* pTabletParent = nullptr;
+ STablet* pTabletParent = nullptr;
- std::string name = "";
+ std::string name = "";
DYNLISTENER(Attach);
DYNLISTENER(Button);
@@ -268,7 +268,7 @@ struct STabletPad {
struct SIdleInhibitor {
wlr_idle_inhibitor_v1* pWlrInhibitor = nullptr;
- CWindow* pWindow = nullptr;
+ CWindow* pWindow = nullptr;
DYNLISTENER(Destroy);
@@ -278,20 +278,20 @@ struct SIdleInhibitor {
};
struct SSwipeGesture {
- CWorkspace* pWorkspaceBegin = nullptr;
+ CWorkspace* pWorkspaceBegin = nullptr;
- double delta = 0;
+ double delta = 0;
- float avgSpeed = 0;
- int speedPoints = 0;
+ float avgSpeed = 0;
+ int speedPoints = 0;
- CMonitor* pMonitor = nullptr;
+ CMonitor* pMonitor = nullptr;
};
struct STextInput {
wlr_text_input_v3* pWlrInput = nullptr;
- wlr_surface* pPendingSurface = nullptr;
+ wlr_surface* pPendingSurface = nullptr;
DYNLISTENER(textInputEnable);
DYNLISTENER(textInputDisable);
@@ -304,7 +304,7 @@ struct STextInput {
struct SIMEKbGrab {
wlr_input_method_keyboard_grab_v2* pWlrKbGrab = nullptr;
- wlr_keyboard* pKeyboard = nullptr;
+ wlr_keyboard* pKeyboard = nullptr;
DYNLISTENER(grabDestroy);
};
@@ -312,10 +312,10 @@ struct SIMEKbGrab {
struct SIMEPopup {
wlr_input_popup_surface_v2* pSurface = nullptr;
- int x, y;
- int realX, realY;
- bool visible;
- Vector2D lastSize;
+ int x, y;
+ int realX, realY;
+ bool visible;
+ Vector2D lastSize;
DYNLISTENER(mapPopup);
DYNLISTENER(unmapPopup);
@@ -332,9 +332,9 @@ struct SIMEPopup {
struct STouchDevice {
wlr_input_device* pWlrDevice = nullptr;
- std::string name = "";
+ std::string name = "";
- std::string boundOutput = "";
+ std::string boundOutput = "";
DYNLISTENER(destroy);
diff --git a/src/helpers/WLListener.cpp b/src/helpers/WLListener.cpp
index 78932a9f..7070c9c8 100644
--- a/src/helpers/WLListener.cpp
+++ b/src/helpers/WLListener.cpp
@@ -14,7 +14,7 @@ CHyprWLListener::CHyprWLListener(wl_signal* pSignal, std::function<void(void*, v
}
CHyprWLListener::CHyprWLListener() {
- m_swWrapper.m_pSelf = this;
+ m_swWrapper.m_pSelf = this;
m_swWrapper.m_sListener.notify = &handleWrapped;
wl_list_init(&m_swWrapper.m_sListener.link);
}
@@ -41,9 +41,9 @@ void CHyprWLListener::initCallback(wl_signal* pSignal, std::function<void(void*,
return;
}
- m_pOwner = pOwner;
+ m_pOwner = pOwner;
m_pCallback = callback;
- m_szAuthor = author;
+ m_szAuthor = author;
addWLSignal(pSignal, &m_swWrapper.m_sListener, pOwner, m_szAuthor);
}
diff --git a/src/helpers/WLListener.hpp b/src/helpers/WLListener.hpp
index d8d1d7c1..8327e945 100644
--- a/src/helpers/WLListener.hpp
+++ b/src/helpers/WLListener.hpp
@@ -4,35 +4,35 @@
#include <functional>
class CHyprWLListener {
-public:
+ public:
CHyprWLListener(wl_signal*, std::function<void(void*, void*)>, void* owner);
CHyprWLListener();
~CHyprWLListener();
CHyprWLListener(const CHyprWLListener&) = delete;
- CHyprWLListener(CHyprWLListener&&) = delete;
+ CHyprWLListener(CHyprWLListener&&) = delete;
CHyprWLListener& operator=(const CHyprWLListener&) = delete;
CHyprWLListener& operator=(CHyprWLListener&&) = delete;
- void initCallback(wl_signal*, std::function<void(void*, void*)>, void* owner, std::string author = "");
+ void initCallback(wl_signal*, std::function<void(void*, void*)>, void* owner, std::string author = "");
- void removeCallback();
+ void removeCallback();
- bool isConnected();
+ bool isConnected();
struct SWrapper {
- wl_listener m_sListener;
+ wl_listener m_sListener;
CHyprWLListener* m_pSelf;
};
void emit(void*);
-private:
- SWrapper m_swWrapper;
+ private:
+ SWrapper m_swWrapper;
- void* m_pOwner = nullptr;
+ void* m_pOwner = nullptr;
std::function<void(void*, void*)> m_pCallback = nullptr;
- std::string m_szAuthor = "";
+ std::string m_szAuthor = "";
}; \ No newline at end of file
diff --git a/src/helpers/Workspace.cpp b/src/helpers/Workspace.cpp
index 8e87c113..d2a8cdf0 100644
--- a/src/helpers/Workspace.cpp
+++ b/src/helpers/Workspace.cpp
@@ -9,8 +9,8 @@ CWorkspace::CWorkspace(int monitorID, std::string name, bool special) {
return;
}
- m_iMonitorID = monitorID;
- m_szName = name;
+ m_iMonitorID = monitorID;
+ m_szName = name;
m_bIsSpecialWorkspace = special;
if (!special) {
@@ -26,9 +26,11 @@ CWorkspace::CWorkspace(int monitorID, std::string name, bool special) {
}
m_vRenderOffset.m_pWorkspace = this;
- m_vRenderOffset.create(AVARTYPE_VECTOR, special ? g_pConfigManager->getAnimationPropertyConfig("specialWorkspace") : g_pConfigManager->getAnimationPropertyConfig("workspaces"), nullptr, AVARDAMAGE_ENTIRE);
+ m_vRenderOffset.create(AVARTYPE_VECTOR, special ? g_pConfigManager->getAnimationPropertyConfig("specialWorkspace") : g_pConfigManager->getAnimationPropertyConfig("workspaces"),
+ nullptr, AVARDAMAGE_ENTIRE);
m_fAlpha.m_pWorkspace = this;
- m_fAlpha.create(AVARTYPE_FLOAT, special ? g_pConfigManager->getAnimationPropertyConfig("specialWorkspace") : g_pConfigManager->getAnimationPropertyConfig("workspaces"), nullptr, AVARDAMAGE_ENTIRE);
+ m_fAlpha.create(AVARTYPE_FLOAT, special ? g_pConfigManager->getAnimationPropertyConfig("specialWorkspace") : g_pConfigManager->getAnimationPropertyConfig("workspaces"),
+ nullptr, AVARDAMAGE_ENTIRE);
m_fAlpha.setValueAndWarp(255.f);
m_vRenderOffset.registerVar();
@@ -68,7 +70,7 @@ void CWorkspace::startAnim(bool in, bool left, bool instant) {
// fallback is slide
const auto PMONITOR = g_pCompositor->getMonitorFromID(m_iMonitorID);
- m_fAlpha.setValueAndWarp(255.f); // fix a bug, if switching from fade -> slide.
+ m_fAlpha.setValueAndWarp(255.f); // fix a bug, if switching from fade -> slide.
if (in) {
m_vRenderOffset.setValueAndWarp(Vector2D(0, left ? PMONITOR->vecSize.y : -PMONITOR->vecSize.y));
diff --git a/src/helpers/Workspace.hpp b/src/helpers/Workspace.hpp
index ee70dcff..2fa29d1c 100644
--- a/src/helpers/Workspace.hpp
+++ b/src/helpers/Workspace.hpp
@@ -3,7 +3,8 @@
#include "../defines.hpp"
#include "AnimatedVariable.hpp"
-enum eFullscreenMode : uint8_t {
+enum eFullscreenMode : uint8_t
+{
FULLSCREEN_FULL = 0,
FULLSCREEN_MAXIMIZED
};
@@ -11,24 +12,24 @@ enum eFullscreenMode : uint8_t {
class CWindow;
class CWorkspace {
-public:
+ public:
CWorkspace(int monitorID, std::string name, bool special = false);
~CWorkspace();
// Workspaces ID-based have IDs > 0
// and workspaces name-based have IDs starting with -1337
- int m_iID = -1;
- std::string m_szName = "";
- uint64_t m_iMonitorID = -1;
+ int m_iID = -1;
+ std::string m_szName = "";
+ uint64_t m_iMonitorID = -1;
// Previous workspace ID is stored during a workspace change, allowing travel
// to the previous workspace.
- int m_iPrevWorkspaceID = -1;
- bool m_bHasFullscreenWindow = false;
- eFullscreenMode m_efFullscreenMode = FULLSCREEN_FULL;
+ int m_iPrevWorkspaceID = -1;
+ bool m_bHasFullscreenWindow = false;
+ eFullscreenMode m_efFullscreenMode = FULLSCREEN_FULL;
wlr_ext_workspace_handle_v1* m_pWlrHandle = nullptr;
- wl_array m_wlrCoordinateArr;
+ wl_array m_wlrCoordinateArr;
// for animations
CAnimatedVariable m_vRenderOffset;
@@ -36,19 +37,19 @@ public:
bool m_bForceRendering = false;
// "scratchpad"
- bool m_bIsSpecialWorkspace = false;
+ bool m_bIsSpecialWorkspace = false;
// last window
- CWindow* m_pLastFocusedWindow = nullptr;
+ CWindow* m_pLastFocusedWindow = nullptr;
// user-set
- bool m_bDefaultFloating = false;
- bool m_bDefaultPseudo = false;
+ bool m_bDefaultFloating = false;
+ bool m_bDefaultPseudo = false;
- void startAnim(bool in, bool left, bool instant = false);
- void setActive(bool on);
+ void startAnim(bool in, bool left, bool instant = false);
+ void setActive(bool on);
- void moveToMonitor(const int&);
+ void moveToMonitor(const int&);
- CWindow* getLastFocusedWindow();
+ CWindow* getLastFocusedWindow();
};
diff --git a/src/helpers/XWaylandStubs.hpp b/src/helpers/XWaylandStubs.hpp
index 97147f76..256709c7 100644
--- a/src/helpers/XWaylandStubs.hpp
+++ b/src/helpers/XWaylandStubs.hpp
@@ -28,68 +28,69 @@ typedef struct {
} xcb_size_hints_t;
typedef unsigned int xcb_window_t;
-typedef enum xcb_stack_mode_t {
- XCB_STACK_MODE_ABOVE = 0,
- XCB_STACK_MODE_BELOW = 1,
- XCB_STACK_MODE_TOP_IF = 2,
+typedef enum xcb_stack_mode_t
+{
+ XCB_STACK_MODE_ABOVE = 0,
+ XCB_STACK_MODE_BELOW = 1,
+ XCB_STACK_MODE_TOP_IF = 2,
XCB_STACK_MODE_BOTTOM_IF = 3,
- XCB_STACK_MODE_OPPOSITE = 4
+ XCB_STACK_MODE_OPPOSITE = 4
} xcb_stack_mode_t;
struct wlr_xwayland {
- struct wlr_xwayland_server *server;
- struct wlr_xwm *xwm;
- struct wlr_xwayland_cursor *cursor;
+ struct wlr_xwayland_server* server;
+ struct wlr_xwm* xwm;
+ struct wlr_xwayland_cursor* cursor;
- const char *display_name;
+ const char* display_name;
- struct wl_display *wl_display;
- struct wlr_compositor *compositor;
- struct wlr_seat *seat;
+ struct wl_display* wl_display;
+ struct wlr_compositor* compositor;
+ struct wlr_seat* seat;
- void *data;
+ void* data;
};
struct wlr_xwayland_surface {
- xcb_window_t window_id;
- struct wlr_xwm *xwm;
- uint32_t surface_id;
-
- struct wl_list link;
- struct wl_list stack_link;
- struct wl_list unpaired_link;
-
- struct wlr_surface *surface;
- int16_t x, y;
- uint16_t width, height;
- uint16_t saved_width, saved_height;
- bool override_redirect;
- bool mapped;
-
- char *title;
- char *_class;
- char *instance;
- char *role;
- char *startup_id;
- pid_t pid;
- bool has_utf8_title;
-
- struct wl_list children; // wlr_xwayland_surface::parent_link
- struct wlr_xwayland_surface *parent;
- struct wl_list parent_link; // wlr_xwayland_surface::children
-
- xcb_atom_t *window_type;
- size_t window_type_len;
-
- xcb_atom_t *protocols;
- size_t protocols_len;
-
- uint32_t decorations;
- xcb_icccm_wm_hints_t *hints;
- xcb_size_hints_t *size_hints;
-
- bool pinging;
- struct wl_event_source *ping_timer;
+ xcb_window_t window_id;
+ struct wlr_xwm* xwm;
+ uint32_t surface_id;
+
+ struct wl_list link;
+ struct wl_list stack_link;
+ struct wl_list unpaired_link;
+
+ struct wlr_surface* surface;
+ int16_t x, y;
+ uint16_t width, height;
+ uint16_t saved_width, saved_height;
+ bool override_redirect;
+ bool mapped;
+
+ char* title;
+ char* _class;
+ char* instance;
+ char* role;
+ char* startup_id;
+ pid_t pid;
+ bool has_utf8_title;
+
+ struct wl_list children; // wlr_xwayland_surface::parent_link
+ struct wlr_xwayland_surface* parent;
+ struct wl_list parent_link; // wlr_xwayland_surface::children
+
+ xcb_atom_t* window_type;
+ size_t window_type_len;
+
+ xcb_atom_t* protocols;
+ size_t protocols_len;
+
+ uint32_t decorations;
+ xcb_icccm_wm_hints_t* hints;
+ xcb_size_hints_t* size_hints;
+
+ bool pinging;
+ struct wl_event_source* ping_timer;
// _NET_WM_STATE
bool modal;
@@ -127,35 +128,41 @@ struct wlr_xwayland_surface {
};
struct wlr_xwayland_surface_configure_event {
- struct wlr_xwayland_surface *surface;
- int16_t x, y;
- uint16_t width, height;
- uint16_t mask; // xcb_config_window_t
+ struct wlr_xwayland_surface* surface;
+ int16_t x, y;
+ uint16_t width, height;
+ uint16_t mask; // xcb_config_window_t
};
struct wlr_xwayland_minimize_event {
- struct wlr_xwayland_surface *surface;
- bool minimize;
+ struct wlr_xwayland_surface* surface;
+ bool minimize;
};
-inline void wlr_xwayland_destroy(wlr_xwayland*) { }
+inline void wlr_xwayland_destroy(wlr_xwayland*) {}
-inline void wlr_xwayland_surface_configure(wlr_xwayland_surface*, int, int, int, int) { }
+inline void wlr_xwayland_surface_configure(wlr_xwayland_surface*, int, int, int, int) {}
-inline bool wlr_surface_is_xwayland_surface(void*) { return false; }
+inline bool wlr_surface_is_xwayland_surface(void*) {
+ return false;
+}
-inline void wlr_xwayland_surface_activate(wlr_xwayland_surface*, bool) { }
+inline void wlr_xwayland_surface_activate(wlr_xwayland_surface*, bool) {}
-inline void wlr_xwayland_surface_restack(wlr_xwayland_surface*, int, xcb_stack_mode_t) { }
+inline void wlr_xwayland_surface_restack(wlr_xwayland_surface*, int, xcb_stack_mode_t) {}
-inline wlr_xwayland_surface* wlr_xwayland_surface_from_wlr_surface(void*) { return nullptr; }
+inline wlr_xwayland_surface* wlr_xwayland_surface_from_wlr_surface(void*) {
+ return nullptr;
+}
-inline void wlr_xwayland_surface_close(wlr_xwayland_surface*) { }
+inline void wlr_xwayland_surface_close(wlr_xwayland_surface*) {}
-inline void wlr_xwayland_surface_set_fullscreen(wlr_xwayland_surface*, bool) { }
+inline void wlr_xwayland_surface_set_fullscreen(wlr_xwayland_surface*, bool) {}
-inline void wlr_xwayland_surface_set_minimized(wlr_xwayland_surface *, bool) { }
+inline void wlr_xwayland_surface_set_minimized(wlr_xwayland_surface*, bool) {}
-inline bool wlr_backend_is_x11(void*) { return false; }
+inline bool wlr_backend_is_x11(void*) {
+ return false;
+}
-inline void wlr_x11_output_create(void*) { } \ No newline at end of file
+inline void wlr_x11_output_create(void*) {} \ No newline at end of file
diff --git a/src/hyprerror/HyprError.cpp b/src/hyprerror/HyprError.cpp
index 16543f9d..169d938a 100644
--- a/src/hyprerror/HyprError.cpp
+++ b/src/hyprerror/HyprError.cpp
@@ -3,7 +3,7 @@
void CHyprError::queueCreate(std::string message, const CColor& color) {
m_szQueued = message;
- m_cQueued = color;
+ m_cQueued = color;
}
void CHyprError::createQueued() {
@@ -32,9 +32,9 @@ void CHyprError::createQueued() {
cairo_rectangle(CAIRO, 0, 0, PMONITOR->vecPixelSize.x, (FONTSIZE + 2 * (FONTSIZE / 10.f)) * LINECOUNT);
// outline
- cairo_rectangle(CAIRO, 0, 0, 1, PMONITOR->vecPixelSize.y); // left
- cairo_rectangle(CAIRO, PMONITOR->vecPixelSize.x - 1, 0, PMONITOR->vecPixelSize.x, PMONITOR->vecPixelSize.y); // right
- cairo_rectangle(CAIRO, 0, PMONITOR->vecPixelSize.y - 1, PMONITOR->vecPixelSize.x, PMONITOR->vecPixelSize.y); // bottom
+ cairo_rectangle(CAIRO, 0, 0, 1, PMONITOR->vecPixelSize.y); // left
+ cairo_rectangle(CAIRO, PMONITOR->vecPixelSize.x - 1, 0, PMONITOR->vecPixelSize.x, PMONITOR->vecPixelSize.y); // right
+ cairo_rectangle(CAIRO, 0, PMONITOR->vecPixelSize.y - 1, PMONITOR->vecPixelSize.x, PMONITOR->vecPixelSize.y); // bottom
cairo_fill(CAIRO);
@@ -46,7 +46,7 @@ void CHyprError::createQueued() {
cairo_set_source_rgba(CAIRO, textColor.r / 255.f, textColor.g / 255.f, textColor.b / 255.f, textColor.a / 255.f);
float yoffset = FONTSIZE;
- while(m_szQueued != "") {
+ while (m_szQueued != "") {
std::string current = m_szQueued.substr(0, m_szQueued.find('\n'));
if (const auto NEWLPOS = m_szQueued.find('\n'); NEWLPOS != std::string::npos)
m_szQueued = m_szQueued.substr(NEWLPOS + 1);
@@ -57,7 +57,6 @@ void CHyprError::createQueued() {
yoffset += FONTSIZE + (FONTSIZE / 10.f);
}
-
cairo_surface_flush(CAIROSURFACE);
// copy the data to an OpenGL texture we have
@@ -79,8 +78,8 @@ void CHyprError::createQueued() {
cairo_surface_destroy(CAIROSURFACE);
m_bIsCreated = true;
- m_szQueued = "";
- m_cQueued = CColor();
+ m_szQueued = "";
+ m_cQueued = CColor();
g_pHyprRenderer->damageMonitor(PMONITOR);
}
@@ -96,7 +95,7 @@ void CHyprError::draw() {
m_bQueuedDestroy = false;
m_tTexture.destroyTexture();
m_bIsCreated = false;
- m_szQueued = "";
+ m_szQueued = "";
g_pHyprRenderer->damageMonitor(g_pCompositor->m_vMonitors.front().get());
return;
}
diff --git a/src/hyprerror/HyprError.hpp b/src/hyprerror/HyprError.hpp
index f09183de..4d01e78d 100644
--- a/src/hyprerror/HyprError.hpp
+++ b/src/hyprerror/HyprError.hpp
@@ -6,18 +6,18 @@
#include <cairo/cairo.h>
class CHyprError {
-public:
- void queueCreate(std::string message, const CColor& color);
- void draw();
- void destroy();
+ public:
+ void queueCreate(std::string message, const CColor& color);
+ void draw();
+ void destroy();
-private:
- void createQueued();
- std::string m_szQueued = "";
- CColor m_cQueued;
- bool m_bQueuedDestroy = false;
- bool m_bIsCreated = false;
- CTexture m_tTexture;
+ private:
+ void createQueued();
+ std::string m_szQueued = "";
+ CColor m_cQueued;
+ bool m_bQueuedDestroy = false;
+ bool m_bIsCreated = false;
+ CTexture m_tTexture;
};
inline std::unique_ptr<CHyprError> g_pHyprError; // This is a full-screen error. Treat it with respect, and there can only be one at a time. \ No newline at end of file
diff --git a/src/layout/DwindleLayout.cpp b/src/layout/DwindleLayout.cpp
index e8371e4c..8a62698f 100644
--- a/src/layout/DwindleLayout.cpp
+++ b/src/layout/DwindleLayout.cpp
@@ -4,10 +4,10 @@
void SDwindleNodeData::recalcSizePosRecursive(bool force) {
if (children[0]) {
- const auto REVERSESPLITRATIO = 2.f - splitRatio;
+ const auto REVERSESPLITRATIO = 2.f - splitRatio;
- static auto *const PPRESERVESPLIT = &g_pConfigManager->getConfigValuePtr("dwindle:preserve_split")->intValue;
- static auto *const PFLMULT = &g_pConfigManager->getConfigValuePtr("dwindle:split_width_multiplier")->floatValue;
+ static auto* const PPRESERVESPLIT = &g_pConfigManager->getConfigValuePtr("dwindle:preserve_split")->intValue;
+ static auto* const PFLMULT = &g_pConfigManager->getConfigValuePtr("dwindle:split_width_multiplier")->floatValue;
if (*PPRESERVESPLIT == 0) {
splitTop = size.y * *PFLMULT > size.x;
@@ -18,15 +18,15 @@ void SDwindleNodeData::recalcSizePosRecursive(bool force) {
if (SPLITSIDE) {
// split left/right
children[0]->position = position;
- children[0]->size = Vector2D(size.x / 2.f * splitRatio, size.y);
+ children[0]->size = Vector2D(size.x / 2.f * splitRatio, size.y);
children[1]->position = Vector2D(position.x + size.x / 2.f * splitRatio, position.y);
- children[1]->size = Vector2D(size.x / 2.f * REVERSESPLITRATIO, size.y);
+ children[1]->size = Vector2D(size.x / 2.f * REVERSESPLITRATIO, size.y);
} else {
// split top/bottom
children[0]->position = position;
- children[0]->size = Vector2D(size.x, size.y / 2.f * splitRatio);
+ children[0]->size = Vector2D(size.x, size.y / 2.f * splitRatio);
children[1]->position = Vector2D(position.x, position.y + size.y / 2.f * splitRatio);
- children[1]->size = Vector2D(size.x, size.y / 2.f * REVERSESPLITRATIO);
+ children[1]->size = Vector2D(size.x, size.y / 2.f * REVERSESPLITRATIO);
}
children[0]->recalcSizePosRecursive(force);
@@ -93,7 +93,7 @@ void SDwindleNodeData::setGroupFocusedNode(SDwindleNodeData* pMember) {
int SDwindleNodeData::getGroupMemberCount() {
SDwindleNodeData* current = this->pNextGroupMember;
- int no = 1;
+ int no = 1;
while (current != this) {
current = current->pNextGroupMember;
@@ -161,14 +161,14 @@ void CHyprDwindleLayout::applyNodeDataToWindow(SDwindleNodeData* pNode, bool for
}
// for gaps outer
- const bool DISPLAYLEFT = STICKS(pNode->position.x, PMONITOR->vecPosition.x + PMONITOR->vecReservedTopLeft.x);
- const bool DISPLAYRIGHT = STICKS(pNode->position.x + pNode->size.x, PMONITOR->vecPosition.x + PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x);
- const bool DISPLAYTOP = STICKS(pNode->position.y, PMONITOR->vecPosition.y + PMONITOR->vecReservedTopLeft.y);
- const bool DISPLAYBOTTOM = STICKS(pNode->position.y + pNode->size.y, PMONITOR->vecPosition.y + PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y);
+ const bool DISPLAYLEFT = STICKS(pNode->position.x, PMONITOR->vecPosition.x + PMONITOR->vecReservedTopLeft.x);
+ const bool DISPLAYRIGHT = STICKS(pNode->position.x + pNode->size.x, PMONITOR->vecPosition.x + PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x);
+ const bool DISPLAYTOP = STICKS(pNode->position.y, PMONITOR->vecPosition.y + PMONITOR->vecReservedTopLeft.y);
+ const bool DISPLAYBOTTOM = STICKS(pNode->position.y + pNode->size.y, PMONITOR->vecPosition.y + PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y);
- const auto PBORDERSIZE = &g_pConfigManager->getConfigValuePtr("general:border_size")->intValue;
- const auto PGAPSIN = &g_pConfigManager->getConfigValuePtr("general:gaps_in")->intValue;
- const auto PGAPSOUT = &g_pConfigManager->getConfigValuePtr("general:gaps_out")->intValue;
+ const auto PBORDERSIZE = &g_pConfigManager->getConfigValuePtr("general:border_size")->intValue;
+ const auto PGAPSIN = &g_pConfigManager->getConfigValuePtr("general:gaps_in")->intValue;
+ const auto PGAPSOUT = &g_pConfigManager->getConfigValuePtr("general:gaps_out")->intValue;
const auto PWINDOW = pNode->pWindow;
@@ -178,40 +178,40 @@ void CHyprDwindleLayout::applyNodeDataToWindow(SDwindleNodeData* pNode, bool for
return;
}
- PWINDOW->m_vSize = pNode->size;
+ PWINDOW->m_vSize = pNode->size;
PWINDOW->m_vPosition = pNode->position;
- static auto *const PNOGAPSWHENONLY = &g_pConfigManager->getConfigValuePtr("dwindle:no_gaps_when_only")->intValue;
+ static auto* const PNOGAPSWHENONLY = &g_pConfigManager->getConfigValuePtr("dwindle:no_gaps_when_only")->intValue;
- auto calcPos = PWINDOW->m_vPosition + Vector2D(*PBORDERSIZE, *PBORDERSIZE);
- auto calcSize = PWINDOW->m_vSize - Vector2D(2 * *PBORDERSIZE, 2 * *PBORDERSIZE);
+ auto calcPos = PWINDOW->m_vPosition + Vector2D(*PBORDERSIZE, *PBORDERSIZE);
+ auto calcSize = PWINDOW->m_vSize - Vector2D(2 * *PBORDERSIZE, 2 * *PBORDERSIZE);
- const auto NODESONWORKSPACE = getNodesOnWorkspace(PWINDOW->m_iWorkspaceID);
+ const auto NODESONWORKSPACE = getNodesOnWorkspace(PWINDOW->m_iWorkspaceID);
- if (*PNOGAPSWHENONLY && !g_pCompositor->isWorkspaceSpecial(PWINDOW->m_iWorkspaceID) && (NODESONWORKSPACE == 1 || (pNode->isGroupMember() && pNode->getGroupMemberCount() == NODESONWORKSPACE) || (PWINDOW->m_bIsFullscreen && g_pCompositor->getWorkspaceByID(PWINDOW->m_iWorkspaceID)->m_efFullscreenMode == FULLSCREEN_MAXIMIZED))) {
+ if (*PNOGAPSWHENONLY && !g_pCompositor->isWorkspaceSpecial(PWINDOW->m_iWorkspaceID) &&
+ (NODESONWORKSPACE == 1 || (pNode->isGroupMember() && pNode->getGroupMemberCount() == NODESONWORKSPACE) ||
+ (PWINDOW->m_bIsFullscreen && g_pCompositor->getWorkspaceByID(PWINDOW->m_iWorkspaceID)->m_efFullscreenMode == FULLSCREEN_MAXIMIZED))) {
PWINDOW->m_vRealPosition = calcPos - Vector2D(*PBORDERSIZE, *PBORDERSIZE);
- PWINDOW->m_vRealSize = calcSize + Vector2D(2 * *PBORDERSIZE, 2 * *PBORDERSIZE);
+ PWINDOW->m_vRealSize = calcSize + Vector2D(2 * *PBORDERSIZE, 2 * *PBORDERSIZE);
PWINDOW->updateWindowDecos();
PWINDOW->m_sSpecialRenderData.rounding = false;
- PWINDOW->m_sSpecialRenderData.border = false;
+ PWINDOW->m_sSpecialRenderData.border = false;
PWINDOW->m_sSpecialRenderData.decorate = false;
return;
}
PWINDOW->m_sSpecialRenderData.rounding = true;
- PWINDOW->m_sSpecialRenderData.border = true;
+ PWINDOW->m_sSpecialRenderData.border = true;
PWINDOW->m_sSpecialRenderData.decorate = true;
- const auto OFFSETTOPLEFT = Vector2D(DISPLAYLEFT ? *PGAPSOUT : *PGAPSIN,
- DISPLAYTOP ? *PGAPSOUT : *PGAPSIN);
+ const auto OFFSETTOPLEFT = Vector2D(DISPLAYLEFT ? *PGAPSOUT : *PGAPSIN, DISPLAYTOP ? *PGAPSOUT : *PGAPSIN);
- const auto OFFSETBOTTOMRIGHT = Vector2D(DISPLAYRIGHT ? *PGAPSOUT : *PGAPSIN,
- DISPLAYBOTTOM ? *PGAPSOUT : *PGAPSIN);
+ const auto OFFSETBOTTOMRIGHT = Vector2D(DISPLAYRIGHT ? *PGAPSOUT : *PGAPSIN, DISPLAYBOTTOM ? *PGAPSOUT : *PGAPSIN);
- calcPos = calcPos + OFFSETTOPLEFT;
+ calcPos = calcPos + OFFSETTOPLEFT;
calcSize = calcSize - OFFSETTOPLEFT - OFFSETBOTTOMRIGHT;
if (PWINDOW->m_bIsPseudotiled) {
@@ -229,25 +229,25 @@ void CHyprDwindleLayout::applyNodeDataToWindow(SDwindleNodeData* pNode, bool for
}
auto DELTA = calcSize - PWINDOW->m_vPseudoSize * scale;
- calcSize = PWINDOW->m_vPseudoSize * scale;
- calcPos = calcPos + DELTA / 2.f; // center
+ calcSize = PWINDOW->m_vPseudoSize * scale;
+ calcPos = calcPos + DELTA / 2.f; // center
} else {
auto DELTA = calcSize - PWINDOW->m_vPseudoSize;
- calcPos = calcPos + DELTA / 2.f; // center
- calcSize = PWINDOW->m_vPseudoSize;
+ calcPos = calcPos + DELTA / 2.f; // center
+ calcSize = PWINDOW->m_vPseudoSize;
}
}
if (g_pCompositor->isWorkspaceSpecial(PWINDOW->m_iWorkspaceID)) {
// if special, we adjust the coords a bit
- static auto *const PSCALEFACTOR = &g_pConfigManager->getConfigValuePtr("dwindle:special_scale_factor")->floatValue;
+ static auto* const PSCALEFACTOR = &g_pConfigManager->getConfigValuePtr("dwindle:special_scale_factor")->floatValue;
PWINDOW->m_vRealPosition = calcPos + (calcSize - calcSize * *PSCALEFACTOR) / 2.f;
- PWINDOW->m_vRealSize = calcSize * *PSCALEFACTOR;
+ PWINDOW->m_vRealSize = calcSize * *PSCALEFACTOR;
g_pXWaylandManager->setWindowSize(PWINDOW, calcSize * *PSCALEFACTOR);
} else {
- PWINDOW->m_vRealSize = calcSize;
+ PWINDOW->m_vRealSize = calcSize;
PWINDOW->m_vRealPosition = calcPos;
g_pXWaylandManager->setWindowSize(PWINDOW, calcSize);
@@ -266,7 +266,7 @@ void CHyprDwindleLayout::applyNodeDataToWindow(SDwindleNodeData* pNode, bool for
// update visible node
const auto PVISNODE = pNode->getGroupVisible();
- PVISNODE->pWindow->m_vRealSize = PWINDOW->m_vRealSize.goalv();
+ PVISNODE->pWindow->m_vRealSize = PWINDOW->m_vRealSize.goalv();
PVISNODE->pWindow->m_vRealPosition = PWINDOW->m_vRealPosition.goalv();
}
@@ -278,22 +278,23 @@ void CHyprDwindleLayout::onWindowCreatedTiling(CWindow* pWindow) {
return;
m_lDwindleNodesData.push_back(SDwindleNodeData());
- const auto PNODE = &m_lDwindleNodesData.back();
+ const auto PNODE = &m_lDwindleNodesData.back();
- const auto PMONITOR = g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID);
+ const auto PMONITOR = g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID);
- static auto *const PUSEACTIVE = &g_pConfigManager->getConfigValuePtr("dwindle:use_active_for_splits")->intValue;
+ static auto* const PUSEACTIVE = &g_pConfigManager->getConfigValuePtr("dwindle:use_active_for_splits")->intValue;
// Populate the node with our window's data
PNODE->workspaceID = pWindow->m_iWorkspaceID;
- PNODE->pWindow = pWindow;
- PNODE->isNode = false;
- PNODE->layout = this;
+ PNODE->pWindow = pWindow;
+ PNODE->isNode = false;
+ PNODE->layout = this;
SDwindleNodeData* OPENINGON;
- const auto MONFROMCURSOR = g_pCompositor->getMonitorFromCursor();
+ const auto MONFROMCURSOR = g_pCompositor->getMonitorFromCursor();
- if (PMONITOR->ID == MONFROMCURSOR->ID && (PNODE->workspaceID == PMONITOR->activeWorkspace || (g_pCompositor->isWorkspaceSpecial(PNODE->workspaceID) && PMONITOR->specialWorkspaceID)) && !*PUSEACTIVE) {
+ if (PMONITOR->ID == MONFROMCURSOR->ID &&
+ (PNODE->workspaceID == PMONITOR->activeWorkspace || (g_pCompositor->isWorkspaceSpecial(PNODE->workspaceID) && PMONITOR->specialWorkspaceID)) && !*PUSEACTIVE) {
OPENINGON = getNodeFromWindow(g_pCompositor->vectorToWindowTiled(g_pInputManager->getMouseCoordsInternal()));
// happens on reserved area
@@ -301,7 +302,8 @@ void CHyprDwindleLayout::onWindowCreatedTiling(CWindow* pWindow) {
OPENINGON = getFirstNodeOnWorkspace(PMONITOR->activeWorkspace);
} else if (*PUSEACTIVE) {
- if (g_pCompositor->m_pLastWindow && !g_pCompositor->m_pLastWindow->m_bIsFloating && g_pCompositor->m_pLastWindow != pWindow && g_pCompositor->m_pLastWindow->m_iWorkspaceID == pWindow->m_iWorkspaceID && g_pCompositor->m_pLastWindow->m_bIsMapped) {
+ if (g_pCompositor->m_pLastWindow && !g_pCompositor->m_pLastWindow->m_bIsFloating && g_pCompositor->m_pLastWindow != pWindow &&
+ g_pCompositor->m_pLastWindow->m_iWorkspaceID == pWindow->m_iWorkspaceID && g_pCompositor->m_pLastWindow->m_bIsMapped) {
OPENINGON = getNodeFromWindow(g_pCompositor->m_pLastWindow);
} else {
OPENINGON = getNodeFromWindow(g_pCompositor->vectorToWindowTiled(g_pInputManager->getMouseCoordsInternal()));
@@ -349,7 +351,7 @@ void CHyprDwindleLayout::onWindowCreatedTiling(CWindow* pWindow) {
// if it's the first, it's easy. Make it fullscreen.
if (!OPENINGON || OPENINGON->pWindow == pWindow) {
PNODE->position = PMONITOR->vecPosition + PMONITOR->vecReservedTopLeft;
- PNODE->size = PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight;
+ PNODE->size = PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight;
applyNodeDataToWindow(PNODE);
@@ -363,15 +365,15 @@ void CHyprDwindleLayout::onWindowCreatedTiling(CWindow* pWindow) {
const auto PTAIL = PHEAD->pPreviousGroupMember;
PHEAD->pPreviousGroupMember = PNODE;
- PTAIL->pNextGroupMember = PNODE;
+ PTAIL->pNextGroupMember = PNODE;
- PNODE->pNextGroupMember = PHEAD;
+ PNODE->pNextGroupMember = PHEAD;
PNODE->pPreviousGroupMember = PTAIL;
PHEAD->setGroupFocusedNode(PNODE);
PNODE->position = PHEAD->position;
- PNODE->size = PHEAD->size;
+ PNODE->size = PHEAD->size;
applyNodeDataToWindow(PNODE);
@@ -386,25 +388,29 @@ void CHyprDwindleLayout::onWindowCreatedTiling(CWindow* pWindow) {
const auto NEWPARENT = &m_lDwindleNodesData.back();
// make the parent have the OPENINGON's stats
- NEWPARENT->position = OPENINGON->position;
- NEWPARENT->size = OPENINGON->size;
+ NEWPARENT->position = OPENINGON->position;
+ NEWPARENT->size = OPENINGON->size;
NEWPARENT->workspaceID = OPENINGON->workspaceID;
- NEWPARENT->pParent = OPENINGON->pParent;
- NEWPARENT->isNode = true; // it is a node
+ NEWPARENT->pParent = OPENINGON->pParent;
+ NEWPARENT->isNode = true; // it is a node
const auto PWIDTHMULTIPLIER = &g_pConfigManager->getConfigValuePtr("dwindle:split_width_multiplier")->floatValue;
// if cursor over first child, make it first, etc
const auto SIDEBYSIDE = NEWPARENT->size.x > NEWPARENT->size.y * *PWIDTHMULTIPLIER;
- NEWPARENT->splitTop = !SIDEBYSIDE;
+ NEWPARENT->splitTop = !SIDEBYSIDE;
const auto MOUSECOORDS = g_pInputManager->getMouseCoordsInternal();
const auto PFORCESPLIT = &g_pConfigManager->getConfigValuePtr("dwindle:force_split")->intValue;
if (*PFORCESPLIT == 0) {
- if ((SIDEBYSIDE && VECINRECT(MOUSECOORDS, NEWPARENT->position.x, NEWPARENT->position.y / *PWIDTHMULTIPLIER, NEWPARENT->position.x + NEWPARENT->size.x / 2.f, NEWPARENT->position.y + NEWPARENT->size.y))
- || (!SIDEBYSIDE && VECINRECT(MOUSECOORDS, NEWPARENT->position.x, NEWPARENT->position.y / *PWIDTHMULTIPLIER, NEWPARENT->position.x + NEWPARENT->size.x, NEWPARENT->position.y + NEWPARENT->size.y / 2.f))) {
+ if ((SIDEBYSIDE &&
+ VECINRECT(MOUSECOORDS, NEWPARENT->position.x, NEWPARENT->position.y / *PWIDTHMULTIPLIER, NEWPARENT->position.x + NEWPARENT->size.x / 2.f,
+ NEWPARENT->position.y + NEWPARENT->size.y)) ||
+ (!SIDEBYSIDE &&
+ VECINRECT(MOUSECOORDS, NEWPARENT->position.x, NEWPARENT->position.y / *PWIDTHMULTIPLIER, NEWPARENT->position.x + NEWPARENT->size.x,
+ NEWPARENT->position.y + NEWPARENT->size.y / 2.f))) {
// we are hovering over the first node, make PNODE first.
NEWPARENT->children[1] = OPENINGON;
NEWPARENT->children[0] = PNODE;
@@ -434,23 +440,22 @@ void CHyprDwindleLayout::onWindowCreatedTiling(CWindow* pWindow) {
// Update the children
-
if (NEWPARENT->size.x * *PWIDTHMULTIPLIER > NEWPARENT->size.y) {
// split left/right
OPENINGON->position = NEWPARENT->position;
- OPENINGON->size = Vector2D(NEWPARENT->size.x / 2.f, NEWPARENT->size.y);
- PNODE->position = Vector2D(NEWPARENT->position.x + NEWPARENT->size.x / 2.f, NEWPARENT->position.y);
- PNODE->size = Vector2D(NEWPARENT->size.x / 2.f, NEWPARENT->size.y);
+ OPENINGON->size = Vector2D(NEWPARENT->size.x / 2.f, NEWPARENT->size.y);
+ PNODE->position = Vector2D(NEWPARENT->position.x + NEWPARENT->size.x / 2.f, NEWPARENT->position.y);
+ PNODE->size = Vector2D(NEWPARENT->size.x / 2.f, NEWPARENT->size.y);
} else {
// split top/bottom
OPENINGON->position = NEWPARENT->position;
- OPENINGON->size = Vector2D(NEWPARENT->size.x, NEWPARENT->size.y / 2.f);
- PNODE->position = Vector2D(NEWPARENT->position.x, NEWPARENT->position.y + NEWPARENT->size.y / 2.f);
- PNODE->size = Vector2D(NEWPARENT->size.x, NEWPARENT->size.y / 2.f);
+ OPENINGON->size = Vector2D(NEWPARENT->size.x, NEWPARENT->size.y / 2.f);
+ PNODE->position = Vector2D(NEWPARENT->position.x, NEWPARENT->position.y + NEWPARENT->size.y / 2.f);
+ PNODE->size = Vector2D(NEWPARENT->size.x, NEWPARENT->size.y / 2.f);
}
OPENINGON->pParent = NEWPARENT;
- PNODE->pParent = NEWPARENT;
+ PNODE->pParent = NEWPARENT;
NEWPARENT->recalcSizePosRecursive();
@@ -468,7 +473,7 @@ void CHyprDwindleLayout::onWindowRemovedTiling(CWindow* pWindow) {
}
pWindow->m_sSpecialRenderData.rounding = true;
- pWindow->m_sSpecialRenderData.border = true;
+ pWindow->m_sSpecialRenderData.border = true;
pWindow->m_sSpecialRenderData.decorate = true;
if (pWindow->m_bIsFullscreen)
@@ -480,12 +485,12 @@ void CHyprDwindleLayout::onWindowRemovedTiling(CWindow* pWindow) {
const auto PPREV = PNODE->pPreviousGroupMember;
const auto PNEXT = PNODE->pNextGroupMember;
- PPREV->pNextGroupMember = PNEXT;
+ PPREV->pNextGroupMember = PNEXT;
PNEXT->pPreviousGroupMember = PPREV;
if (PNODE->groupHead) {
PNEXT->groupHead = true;
- PNEXT->pParent = PNODE->pParent;
+ PNEXT->pParent = PNODE->pParent;
if (PNODE->pParent) {
if (PNODE->pParent->children[0] == PNODE) {
@@ -496,12 +501,12 @@ void CHyprDwindleLayout::onWindowRemovedTiling(CWindow* pWindow) {
}
PNEXT->position = PNODE->position;
- PNEXT->size = PNODE->size;
+ PNEXT->size = PNODE->size;
} else {
const auto PHEAD = PNODE->getGroupHead();
PNEXT->position = PHEAD->position;
- PNEXT->size = PHEAD->size;
+ PNEXT->size = PHEAD->size;
}
PNEXT->setGroupFocusedNode(PNEXT);
@@ -530,8 +535,8 @@ void CHyprDwindleLayout::onWindowRemovedTiling(CWindow* pWindow) {
const auto PSIBLING = PPARENT->children[0] == PNODE ? PPARENT->children[1] : PPARENT->children[0];
PSIBLING->position = PPARENT->position;
- PSIBLING->size = PPARENT->size;
- PSIBLING->pParent = PPARENT->pParent;
+ PSIBLING->size = PPARENT->size;
+ PSIBLING->pParent = PPARENT->pParent;
if (PSIBLING->isGroupMember()) {
// apply to all group members
@@ -539,8 +544,8 @@ void CHyprDwindleLayout::onWindowRemovedTiling(CWindow* pWindow) {
while (current != PSIBLING) {
current->position = PPARENT->position;
- current->size = PPARENT->size;
- current = current->pNextGroupMember;
+ current->size = PPARENT->size;
+ current = current->pNextGroupMember;
}
}
@@ -553,7 +558,7 @@ void CHyprDwindleLayout::onWindowRemovedTiling(CWindow* pWindow) {
}
PPARENT->valid = false;
- PNODE->valid = false;
+ PNODE->valid = false;
if (PSIBLING->pParent)
PSIBLING->pParent->recalcSizePosRecursive();
@@ -582,7 +587,7 @@ void CHyprDwindleLayout::recalculateMonitor(const int& monid) {
if (TOPNODE && PMONITOR) {
TOPNODE->position = PMONITOR->vecPosition + PMONITOR->vecReservedTopLeft;
- TOPNODE->size = PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight;
+ TOPNODE->size = PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight;
TOPNODE->recalcSizePosRecursive();
}
}
@@ -599,12 +604,12 @@ void CHyprDwindleLayout::recalculateMonitor(const int& monid) {
PWORKSPACE->m_bHasFullscreenWindow = false;
} else {
SDwindleNodeData fakeNode;
- fakeNode.pWindow = PFULLWINDOW;
- fakeNode.position = PMONITOR->vecPosition + PMONITOR->vecReservedTopLeft;
- fakeNode.size = PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight;
- fakeNode.workspaceID = PWORKSPACE->m_iID;
+ fakeNode.pWindow = PFULLWINDOW;
+ fakeNode.position = PMONITOR->vecPosition + PMONITOR->vecReservedTopLeft;
+ fakeNode.size = PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight;
+ fakeNode.workspaceID = PWORKSPACE->m_iID;
PFULLWINDOW->m_vPosition = fakeNode.position;
- PFULLWINDOW->m_vSize = fakeNode.size;
+ PFULLWINDOW->m_vSize = fakeNode.size;
applyNodeDataToWindow(&fakeNode);
@@ -616,7 +621,7 @@ void CHyprDwindleLayout::recalculateMonitor(const int& monid) {
if (TOPNODE && PMONITOR) {
TOPNODE->position = PMONITOR->vecPosition + PMONITOR->vecReservedTopLeft;
- TOPNODE->size = PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight;
+ TOPNODE->size = PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight;
TOPNODE->recalcSizePosRecursive();
}
}
@@ -643,10 +648,10 @@ void CHyprDwindleLayout::resizeActiveWindow(const Vector2D& pixResize, CWindow*
const auto PANIMATE = &g_pConfigManager->getConfigValuePtr("misc:animate_manual_resizes")->intValue;
// get some data about our window
- const auto PMONITOR = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID);
- const bool DISPLAYLEFT = STICKS(PWINDOW->m_vPosition.x, PMONITOR->vecPosition.x + PMONITOR->vecReservedTopLeft.x);
- const bool DISPLAYRIGHT = STICKS(PWINDOW->m_vPosition.x + PWINDOW->m_vSize.x, PMONITOR->vecPosition.x + PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x);
- const bool DISPLAYTOP = STICKS(PWINDOW->m_vPosition.y, PMONITOR->vecPosition.y + PMONITOR->vecReservedTopLeft.y);
+ const auto PMONITOR = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID);
+ const bool DISPLAYLEFT = STICKS(PWINDOW->m_vPosition.x, PMONITOR->vecPosition.x + PMONITOR->vecReservedTopLeft.x);
+ const bool DISPLAYRIGHT = STICKS(PWINDOW->m_vPosition.x + PWINDOW->m_vSize.x, PMONITOR->vecPosition.x + PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x);
+ const bool DISPLAYTOP = STICKS(PWINDOW->m_vPosition.y, PMONITOR->vecPosition.y + PMONITOR->vecReservedTopLeft.y);
const bool DISPLAYBOTTOM = STICKS(PWINDOW->m_vPosition.y + PWINDOW->m_vSize.y, PMONITOR->vecPosition.y + PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y);
// construct allowed movement
@@ -661,7 +666,7 @@ void CHyprDwindleLayout::resizeActiveWindow(const Vector2D& pixResize, CWindow*
const auto PPARENT = PNODE->pParent;
if (!PPARENT)
- return; // the only window on a workspace, ignore
+ return; // the only window on a workspace, ignore
const bool PARENTSIDEBYSIDE = !PPARENT->splitTop;
@@ -704,13 +709,13 @@ void CHyprDwindleLayout::resizeActiveWindow(const Vector2D& pixResize, CWindow*
// 2 axes of freedom
const auto SIDECONTAINER = PARENTSIDEBYSIDE ? PPARENT : PPARENT2;
- const auto TOPCONTAINER = PARENTSIDEBYSIDE ? PPARENT2 : PPARENT;
+ const auto TOPCONTAINER = PARENTSIDEBYSIDE ? PPARENT2 : PPARENT;
allowedMovement.x *= 2.f / SIDECONTAINER->size.x;
allowedMovement.y *= 2.f / TOPCONTAINER->size.y;
SIDECONTAINER->splitRatio = std::clamp(SIDECONTAINER->splitRatio + allowedMovement.x, 0.1, 1.9);
- TOPCONTAINER->splitRatio = std::clamp(TOPCONTAINER->splitRatio + allowedMovement.y, 0.1, 1.9);
+ TOPCONTAINER->splitRatio = std::clamp(TOPCONTAINER->splitRatio + allowedMovement.y, 0.1, 1.9);
SIDECONTAINER->recalcSizePosRecursive(*PANIMATE == 0);
TOPCONTAINER->recalcSizePosRecursive(*PANIMATE == 0);
}
@@ -722,7 +727,7 @@ void CHyprDwindleLayout::fullscreenRequestForWindow(CWindow* pWindow, eFullscree
if (on == pWindow->m_bIsFullscreen || g_pCompositor->isWorkspaceSpecial(pWindow->m_iWorkspaceID))
return; // ignore
- const auto PMONITOR = g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID);
+ const auto PMONITOR = g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID);
const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(pWindow->m_iWorkspaceID);
if (PWORKSPACE->m_bHasFullscreenWindow && on) {
@@ -732,7 +737,7 @@ void CHyprDwindleLayout::fullscreenRequestForWindow(CWindow* pWindow, eFullscree
}
// otherwise, accept it.
- pWindow->m_bIsFullscreen = on;
+ pWindow->m_bIsFullscreen = on;
PWORKSPACE->m_bHasFullscreenWindow = !PWORKSPACE->m_bHasFullscreenWindow;
g_pEventManager->postEvent(SHyprIPCEvent{"fullscreen", std::to_string((int)on)});
@@ -745,7 +750,7 @@ void CHyprDwindleLayout::fullscreenRequestForWindow(CWindow* pWindow, eFullscree
else {
// get back its' dimensions from position and size
pWindow->m_vRealPosition = pWindow->m_vPosition;
- pWindow->m_vRealSize = pWindow->m_vSize;
+ pWindow->m_vRealSize = pWindow->m_vSize;
}
} else {
// if it now got fullscreen, make it fullscreen
@@ -755,25 +760,25 @@ void CHyprDwindleLayout::fullscreenRequestForWindow(CWindow* pWindow, eFullscree
// save position and size if floating
if (pWindow->m_bIsFloating) {
pWindow->m_vPosition = pWindow->m_vRealPosition.vec();
- pWindow->m_vSize = pWindow->m_vRealSize.vec();
+ pWindow->m_vSize = pWindow->m_vRealSize.vec();
}
// apply new pos and size being monitors' box
if (fullscreenMode == FULLSCREEN_FULL) {
pWindow->m_vRealPosition = PMONITOR->vecPosition;
- pWindow->m_vRealSize = PMONITOR->vecSize;
+ pWindow->m_vRealSize = PMONITOR->vecSize;
} else {
// This is a massive hack.
// We make a fake "only" node and apply
// To keep consistent with the settings without C+P code
SDwindleNodeData fakeNode;
- fakeNode.pWindow = pWindow;
- fakeNode.position = PMONITOR->vecPosition + PMONITOR->vecReservedTopLeft;
- fakeNode.size = PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight;
+ fakeNode.pWindow = pWindow;
+ fakeNode.position = PMONITOR->vecPosition + PMONITOR->vecReservedTopLeft;
+ fakeNode.size = PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight;
fakeNode.workspaceID = pWindow->m_iWorkspaceID;
pWindow->m_vPosition = fakeNode.position;
- pWindow->m_vSize = fakeNode.size;
+ pWindow->m_vSize = fakeNode.size;
applyNodeDataToWindow(&fakeNode);
}
@@ -828,7 +833,7 @@ void CHyprDwindleLayout::toggleWindowGroup(CWindow* pWindow) {
if (PNODE->isGroupMember()) {
// dissolve group
- const auto PHEAD = PNODE->getGroupHead();
+ const auto PHEAD = PNODE->getGroupHead();
SDwindleNodeData* current = PNODE->pNextGroupMember;
@@ -836,26 +841,26 @@ void CHyprDwindleLayout::toggleWindowGroup(CWindow* pWindow) {
std::deque<CWindow*> toAddWindows;
- const auto PWINDOWNODE = PNODE->pWindow;
+ const auto PWINDOWNODE = PNODE->pWindow;
toAddWindows.push_back(PWINDOWNODE);
while (current != PNODE) {
const auto PWINDOW = current->pWindow;
- current = current->pNextGroupMember;
+ current = current->pNextGroupMember;
toAddWindows.push_back(PWINDOW);
PWINDOW->setHidden(false);
}
- if (PHEAD->pPreviousGroupMember)
- PHEAD->pPreviousGroupMember->pNextGroupMember = PHEAD->pNextGroupMember;
+ if (PHEAD->pPreviousGroupMember)
+ PHEAD->pPreviousGroupMember->pNextGroupMember = PHEAD->pNextGroupMember;
- if (PHEAD->pNextGroupMember)
- PHEAD->pNextGroupMember->pPreviousGroupMember = PHEAD->pPreviousGroupMember;
+ if (PHEAD->pNextGroupMember)
+ PHEAD->pNextGroupMember->pPreviousGroupMember = PHEAD->pPreviousGroupMember;
- PHEAD->pPreviousGroupMember = nullptr;
- PHEAD->pNextGroupMember = nullptr;
+ PHEAD->pPreviousGroupMember = nullptr;
+ PHEAD->pNextGroupMember = nullptr;
onWindowRemoved(PHEAD->pWindow);
@@ -902,7 +907,7 @@ void CHyprDwindleLayout::toggleWindowGroup(CWindow* pWindow) {
}
PNODE->position = PNODE->pParent->position;
- PNODE->size = PNODE->pParent->size;
+ PNODE->size = PNODE->pParent->size;
applyNodeDataToWindow(PNODE);
@@ -925,14 +930,14 @@ void CHyprDwindleLayout::toggleWindowGroup(CWindow* pWindow) {
for (int i = 0; i < (int)newGroupMembers.size(); ++i) {
if (i != 0) {
newGroupMembers[i]->groupHead = false;
- newGroupMembers[i]->pParent = PNODE->pParent;
+ newGroupMembers[i]->pParent = PNODE->pParent;
}
const auto PREVMEMBER = i == 0 ? newGroupMembers[newGroupMembers.size() - 1] : newGroupMembers[i - 1];
const auto NEXTMEMBER = i == (int)newGroupMembers.size() - 1 ? newGroupMembers[0] : newGroupMembers[i + 1];
newGroupMembers[i]->pPreviousGroupMember = PREVMEMBER;
- newGroupMembers[i]->pNextGroupMember = NEXTMEMBER;
+ newGroupMembers[i]->pNextGroupMember = NEXTMEMBER;
// add the deco
newGroupMembers[i]->pWindow->m_dWindowDecorations.emplace_back(std::make_unique<CHyprGroupBarDecoration>(newGroupMembers[i]->pWindow));
@@ -961,9 +966,9 @@ std::deque<CWindow*> CHyprDwindleLayout::getGroupMembers(CWindow* pWindow) {
const auto PNODE = getNodeFromWindow(pWindow);
if (!PNODE || !PNODE->isGroupMember())
- return result; // reject with empty
+ return result; // reject with empty
- const auto HEAD = PNODE->getGroupHead();
+ const auto HEAD = PNODE->getGroupHead();
SDwindleNodeData* current = HEAD->pNextGroupMember;
result.push_back(HEAD->pWindow);
@@ -985,7 +990,7 @@ void CHyprDwindleLayout::switchGroupWindow(CWindow* pWindow, bool forward, CWind
if (!PNODE || !PNODE->isGroupMember())
return; // reject
- const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(PNODE->workspaceID);
+ const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(PNODE->workspaceID);
SDwindleNodeData* pNewNode;
@@ -1003,8 +1008,8 @@ void CHyprDwindleLayout::switchGroupWindow(CWindow* pWindow, bool forward, CWind
PNODE->setGroupFocusedNode(pNewNode);
- pNewNode->position = PNODE->position;
- pNewNode->size = PNODE->size;
+ pNewNode->position = PNODE->position;
+ pNewNode->size = PNODE->size;
pNewNode->workspaceID = PNODE->workspaceID;
applyNodeDataToWindow(pNewNode);
@@ -1037,10 +1042,10 @@ SWindowRenderLayoutHints CHyprDwindleLayout::requestRenderHints(CWindow* pWindow
SWindowRenderLayoutHints hints;
- static auto *const PGROUPCOLACTIVE = &g_pConfigManager->getConfigValuePtr("dwindle:col.group_border_active")->intValue;
- static auto *const PGROUPCOLINACTIVE = &g_pConfigManager->getConfigValuePtr("dwindle:col.group_border")->intValue;
+ static auto* const PGROUPCOLACTIVE = &g_pConfigManager->getConfigValuePtr("dwindle:col.group_border_active")->intValue;
+ static auto* const PGROUPCOLINACTIVE = &g_pConfigManager->getConfigValuePtr("dwindle:col.group_border")->intValue;
- const auto PNODE = getNodeFromWindow(pWindow);
+ const auto PNODE = getNodeFromWindow(pWindow);
if (!PNODE)
return hints; // left for the future, maybe floating funkiness
@@ -1059,17 +1064,17 @@ SWindowRenderLayoutHints CHyprDwindleLayout::requestRenderHints(CWindow* pWindow
void CHyprDwindleLayout::switchWindows(CWindow* pWindow, CWindow* pWindow2) {
// windows should be valid, insallah
- auto PNODE = getNodeFromWindow(pWindow);
+ auto PNODE = getNodeFromWindow(pWindow);
auto PNODE2 = getNodeFromWindow(pWindow2);
if (!PNODE2 || !PNODE) {
- return;
- }
+ return;
+ }
SDwindleNodeData* ACTIVE1 = nullptr;
- SDwindleNodeData* ACTIVE2 = nullptr;
+ SDwindleNodeData* ACTIVE2 = nullptr;
- if (PNODE2->isGroupMember() || PNODE->isGroupMember()) {
+ if (PNODE2->isGroupMember() || PNODE->isGroupMember()) {
if (PNODE->workspaceID != PNODE2->workspaceID) {
Debug::log(ERR, "Groups are confined to a monitor");
@@ -1078,82 +1083,82 @@ void CHyprDwindleLayout::switchWindows(CWindow* pWindow, CWindow* pWindow2) {
if (PNODE->isGroupMember()) {
ACTIVE1 = PNODE;
- PNODE = PNODE->getGroupHead();
- }
+ PNODE = PNODE->getGroupHead();
+ }
- if (PNODE2->isGroupMember()) {
+ if (PNODE2->isGroupMember()) {
ACTIVE2 = PNODE2;
- PNODE2 = PNODE2->getGroupHead();
- }
-
- if (PNODE2->pParent == PNODE->pParent) {
- const auto PPARENT = PNODE->pParent;
-
- if (PPARENT->children[0] == PNODE) {
- PPARENT->children[0] = PNODE2;
- PPARENT->children[1] = PNODE;
- } else {
- PPARENT->children[0] = PNODE;
- PPARENT->children[1] = PNODE2;
- }
- } else {
- if (PNODE->pParent) {
- const auto PPARENT = PNODE->pParent;
-
- if (PPARENT->children[0] == PNODE) {
- PPARENT->children[0] = PNODE2;
- } else {
- PPARENT->children[1] = PNODE2;
- }
- }
-
- if (PNODE2->pParent) {
- const auto PPARENT = PNODE2->pParent;
-
- if (PPARENT->children[0] == PNODE2) {
- PPARENT->children[0] = PNODE;
- } else {
- PPARENT->children[1] = PNODE;
- }
- }
- }
-
- const auto PPARENTNODE2 = PNODE2->pParent;
- PNODE2->pParent = PNODE->pParent;
- PNODE->pParent = PPARENTNODE2;
-
- std::swap(PNODE2->workspaceID, PNODE->workspaceID);
- } else {
- // swap the windows and recalc
- PNODE2->pWindow = pWindow;
- PNODE->pWindow = pWindow2;
- }
-
- if (PNODE->workspaceID != PNODE2->workspaceID) {
- std::swap(pWindow2->m_iMonitorID, pWindow->m_iMonitorID);
- std::swap(pWindow2->m_iWorkspaceID, pWindow->m_iWorkspaceID);
- }
-
- // recalc the workspace
+ PNODE2 = PNODE2->getGroupHead();
+ }
+
+ if (PNODE2->pParent == PNODE->pParent) {
+ const auto PPARENT = PNODE->pParent;
+
+ if (PPARENT->children[0] == PNODE) {
+ PPARENT->children[0] = PNODE2;
+ PPARENT->children[1] = PNODE;
+ } else {
+ PPARENT->children[0] = PNODE;
+ PPARENT->children[1] = PNODE2;
+ }
+ } else {
+ if (PNODE->pParent) {
+ const auto PPARENT = PNODE->pParent;
+
+ if (PPARENT->children[0] == PNODE) {
+ PPARENT->children[0] = PNODE2;
+ } else {
+ PPARENT->children[1] = PNODE2;
+ }
+ }
+
+ if (PNODE2->pParent) {
+ const auto PPARENT = PNODE2->pParent;
+
+ if (PPARENT->children[0] == PNODE2) {
+ PPARENT->children[0] = PNODE;
+ } else {
+ PPARENT->children[1] = PNODE;
+ }
+ }
+ }
+
+ const auto PPARENTNODE2 = PNODE2->pParent;
+ PNODE2->pParent = PNODE->pParent;
+ PNODE->pParent = PPARENTNODE2;
+
+ std::swap(PNODE2->workspaceID, PNODE->workspaceID);
+ } else {
+ // swap the windows and recalc
+ PNODE2->pWindow = pWindow;
+ PNODE->pWindow = pWindow2;
+ }
+
+ if (PNODE->workspaceID != PNODE2->workspaceID) {
+ std::swap(pWindow2->m_iMonitorID, pWindow->m_iMonitorID);
+ std::swap(pWindow2->m_iWorkspaceID, pWindow->m_iWorkspaceID);
+ }
+
+ // recalc the workspace
getMasterNodeOnWorkspace(PNODE->workspaceID)->recalcSizePosRecursive();
if (PNODE2->workspaceID != PNODE->workspaceID) {
getMasterNodeOnWorkspace(PNODE2->workspaceID)->recalcSizePosRecursive();
}
- if (ACTIVE1) {
- ACTIVE1->position = PNODE->position;
- ACTIVE1->size = PNODE->size;
- ACTIVE1->pWindow->m_vPosition = ACTIVE1->position;
- ACTIVE1->pWindow->m_vSize = ACTIVE1->size;
- }
-
- if (ACTIVE2) {
- ACTIVE2->position = PNODE2->position;
- ACTIVE2->size = PNODE2->size;
- ACTIVE2->pWindow->m_vPosition = ACTIVE2->position;
- ACTIVE2->pWindow->m_vSize = ACTIVE2->size;
- }
+ if (ACTIVE1) {
+ ACTIVE1->position = PNODE->position;
+ ACTIVE1->size = PNODE->size;
+ ACTIVE1->pWindow->m_vPosition = ACTIVE1->position;
+ ACTIVE1->pWindow->m_vSize = ACTIVE1->size;
+ }
+
+ if (ACTIVE2) {
+ ACTIVE2->position = PNODE2->position;
+ ACTIVE2->size = PNODE2->size;
+ ACTIVE2->pWindow->m_vPosition = ACTIVE2->position;
+ ACTIVE2->pWindow->m_vSize = ACTIVE2->size;
+ }
g_pHyprRenderer->damageWindow(pWindow);
g_pHyprRenderer->damageWindow(pWindow2);
diff --git a/src/layout/DwindleLayout.hpp b/src/layout/DwindleLayout.hpp
index 624863b6..2c6f7229 100644
--- a/src/layout/DwindleLayout.hpp
+++ b/src/layout/DwindleLayout.hpp
@@ -4,80 +4,81 @@
#include <list>
#include <deque>
#include "../render/decorations/CHyprGroupBarDecoration.hpp"
+#include <array>
class CHyprDwindleLayout;
enum eFullscreenMode : uint8_t;
struct SDwindleNodeData {
- SDwindleNodeData* pParent = nullptr;
- bool isNode = false;
+ SDwindleNodeData* pParent = nullptr;
+ bool isNode = false;
- CWindow* pWindow = nullptr;
+ CWindow* pWindow = nullptr;
- std::array<SDwindleNodeData*, 2> children = { nullptr, nullptr };
+ std::array<SDwindleNodeData*, 2> children = {nullptr, nullptr};
- bool splitTop = false; // for preserve_split
+ bool splitTop = false; // for preserve_split
- bool groupHead = false;
- SDwindleNodeData* pNextGroupMember = nullptr;
- SDwindleNodeData* pPreviousGroupMember = nullptr;
+ bool groupHead = false;
+ SDwindleNodeData* pNextGroupMember = nullptr;
+ SDwindleNodeData* pPreviousGroupMember = nullptr;
- Vector2D position;
- Vector2D size;
+ Vector2D position;
+ Vector2D size;
- int workspaceID = -1;
+ int workspaceID = -1;
- float splitRatio = 1.f;
+ float splitRatio = 1.f;
- bool valid = true;
+ bool valid = true;
// For list lookup
bool operator==(const SDwindleNodeData& rhs) {
- return pWindow == rhs.pWindow && workspaceID == rhs.workspaceID && position == rhs.position && size == rhs.size && pParent == rhs.pParent && children[0] == rhs.children[0] && children[1] == rhs.children[1];
+ return pWindow == rhs.pWindow && workspaceID == rhs.workspaceID && position == rhs.position && size == rhs.size && pParent == rhs.pParent &&
+ children[0] == rhs.children[0] && children[1] == rhs.children[1];
}
- void recalcSizePosRecursive(bool force = false);
- void getAllChildrenRecursive(std::deque<SDwindleNodeData*>*);
- bool isGroupMember();
- SDwindleNodeData* getGroupHead();
- SDwindleNodeData* getGroupVisible();
- int getGroupMemberCount();
- void setGroupFocusedNode(SDwindleNodeData*);
+ void recalcSizePosRecursive(bool force = false);
+ void getAllChildrenRecursive(std::deque<SDwindleNodeData*>*);
+ bool isGroupMember();
+ SDwindleNodeData* getGroupHead();
+ SDwindleNodeData* getGroupVisible();
+ int getGroupMemberCount();
+ void setGroupFocusedNode(SDwindleNodeData*);
CHyprDwindleLayout* layout = nullptr;
};
class CHyprDwindleLayout : public IHyprLayout {
-public:
- virtual void onWindowCreatedTiling(CWindow*);
- virtual void onWindowRemovedTiling(CWindow*);
- virtual bool isWindowTiled(CWindow*);
- virtual void recalculateMonitor(const int&);
- virtual void recalculateWindow(CWindow*);
- virtual void resizeActiveWindow(const Vector2D&, CWindow* pWindow = nullptr);
- virtual void fullscreenRequestForWindow(CWindow*, eFullscreenMode, bool);
- virtual std::any layoutMessage(SLayoutMessageHeader, std::string);
+ public:
+ virtual void onWindowCreatedTiling(CWindow*);
+ virtual void onWindowRemovedTiling(CWindow*);
+ virtual bool isWindowTiled(CWindow*);
+ virtual void recalculateMonitor(const int&);
+ virtual void recalculateWindow(CWindow*);
+ virtual void resizeActiveWindow(const Vector2D&, CWindow* pWindow = nullptr);
+ virtual void fullscreenRequestForWindow(CWindow*, eFullscreenMode, bool);
+ virtual std::any layoutMessage(SLayoutMessageHeader, std::string);
virtual SWindowRenderLayoutHints requestRenderHints(CWindow*);
- virtual void switchWindows(CWindow*, CWindow*);
- virtual void alterSplitRatioBy(CWindow*, float);
- virtual std::string getLayoutName();
-
- virtual void onEnable();
- virtual void onDisable();
-
-private:
-
- std::list<SDwindleNodeData> m_lDwindleNodesData;
-
- int getNodesOnWorkspace(const int&);
- void applyNodeDataToWindow(SDwindleNodeData*, bool force = false);
- SDwindleNodeData* getNodeFromWindow(CWindow*);
- SDwindleNodeData* getFirstNodeOnWorkspace(const int&);
- SDwindleNodeData* getMasterNodeOnWorkspace(const int&);
-
- void toggleWindowGroup(CWindow*);
- void switchGroupWindow(CWindow*, bool forward, CWindow* to = nullptr);
- void toggleSplit(CWindow*);
- std::deque<CWindow*> getGroupMembers(CWindow*);
+ virtual void switchWindows(CWindow*, CWindow*);
+ virtual void alterSplitRatioBy(CWindow*, float);
+ virtual std::string getLayoutName();
+
+ virtual void onEnable();
+ virtual void onDisable();
+
+ private:
+ std::list<SDwindleNodeData> m_lDwindleNodesData;
+
+ int getNodesOnWorkspace(const int&);
+ void applyNodeDataToWindow(SDwindleNodeData*, bool force = false);
+ SDwindleNodeData* getNodeFromWindow(CWindow*);
+ SDwindleNodeData* getFirstNodeOnWorkspace(const int&);
+ SDwindleNodeData* getMasterNodeOnWorkspace(const int&);
+
+ void toggleWindowGroup(CWindow*);
+ void switchGroupWindow(CWindow*, bool forward, CWindow* to = nullptr);
+ void toggleSplit(CWindow*);
+ std::deque<CWindow*> getGroupMembers(CWindow*);
friend struct SDwindleNodeData;
}; \ No newline at end of file
diff --git a/src/layout/IHyprLayout.cpp b/src/layout/IHyprLayout.cpp
index 8696dc31..bc7e7984 100644
--- a/src/layout/IHyprLayout.cpp
+++ b/src/layout/IHyprLayout.cpp
@@ -10,7 +10,7 @@ void IHyprLayout::onWindowCreated(CWindow* pWindow) {
g_pXWaylandManager->getGeometryForWindow(pWindow, &desiredGeometry);
if (desiredGeometry.width <= 5 || desiredGeometry.height <= 5) {
- const auto PMONITOR = g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID);
+ const auto PMONITOR = g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID);
pWindow->m_vLastFloatingSize = PMONITOR->vecSize / 2.f;
} else {
pWindow->m_vLastFloatingSize = Vector2D(desiredGeometry.width, desiredGeometry.height);
@@ -50,9 +50,10 @@ void IHyprLayout::onWindowCreatedFloating(CWindow* pWindow) {
if (desiredGeometry.width <= 5 || desiredGeometry.height <= 5) {
const auto PWINDOWSURFACE = g_pXWaylandManager->getWindowSurface(pWindow);
- pWindow->m_vRealSize = Vector2D(PWINDOWSURFACE->current.width, PWINDOWSURFACE->current.height);
+ pWindow->m_vRealSize = Vector2D(PWINDOWSURFACE->current.width, PWINDOWSURFACE->current.height);
- if ((desiredGeometry.width <= 1 || desiredGeometry.height <= 1) && pWindow->m_bIsX11 && pWindow->m_iX11Type == 2) { // XDG windows should be fine. TODO: check for weird atoms?
+ if ((desiredGeometry.width <= 1 || desiredGeometry.height <= 1) && pWindow->m_bIsX11 &&
+ pWindow->m_iX11Type == 2) { // XDG windows should be fine. TODO: check for weird atoms?
pWindow->setHidden(true);
return;
}
@@ -62,7 +63,8 @@ void IHyprLayout::onWindowCreatedFloating(CWindow* pWindow) {
pWindow->m_vRealSize = PMONITOR->vecSize / 2.f;
}
- pWindow->m_vRealPosition = Vector2D(PMONITOR->vecPosition.x + (PMONITOR->vecSize.x - pWindow->m_vRealSize.goalv().x) / 2.f, PMONITOR->vecPosition.y + (PMONITOR->vecSize.y - pWindow->m_vRealSize.goalv().y) / 2.f);
+ pWindow->m_vRealPosition = Vector2D(PMONITOR->vecPosition.x + (PMONITOR->vecSize.x - pWindow->m_vRealSize.goalv().x) / 2.f,
+ PMONITOR->vecPosition.y + (PMONITOR->vecSize.y - pWindow->m_vRealSize.goalv().y) / 2.f);
} else {
// we respect the size.
pWindow->m_vRealSize = Vector2D(desiredGeometry.width, desiredGeometry.height);
@@ -75,10 +77,14 @@ void IHyprLayout::onWindowCreatedFloating(CWindow* pWindow) {
if (!pWindow->m_bIsX11) {
for (auto& m : g_pCompositor->m_vMonitors) {
- if (VECINRECT(Vector2D(desiredGeometry.x, desiredGeometry.y), m->vecPosition.x, m->vecPosition.y, m->vecPosition.x + m->vecSize.x, m->vecPosition.y + m->vecPosition.y)
- || VECINRECT(Vector2D(desiredGeometry.x + desiredGeometry.width, desiredGeometry.y), m->vecPosition.x, m->vecPosition.y, m->vecPosition.x + m->vecSize.x, m->vecPosition.y + m->vecPosition.y)
- || VECINRECT(Vector2D(desiredGeometry.x, desiredGeometry.y + desiredGeometry.height), m->vecPosition.x, m->vecPosition.y, m->vecPosition.x + m->vecSize.x, m->vecPosition.y + m->vecPosition.y)
- || VECINRECT(Vector2D(desiredGeometry.x + desiredGeometry.width, desiredGeometry.y + desiredGeometry.height), m->vecPosition.x, m->vecPosition.y, m->vecPosition.x + m->vecSize.x, m->vecPosition.y + m->vecPosition.y)) {
+ if (VECINRECT(Vector2D(desiredGeometry.x, desiredGeometry.y), m->vecPosition.x, m->vecPosition.y, m->vecPosition.x + m->vecSize.x,
+ m->vecPosition.y + m->vecPosition.y) ||
+ VECINRECT(Vector2D(desiredGeometry.x + desiredGeometry.width, desiredGeometry.y), m->vecPosition.x, m->vecPosition.y, m->vecPosition.x + m->vecSize.x,
+ m->vecPosition.y + m->vecPosition.y) ||
+ VECINRECT(Vector2D(desiredGeometry.x, desiredGeometry.y + desiredGeometry.height), m->vecPosition.x, m->vecPosition.y, m->vecPosition.x + m->vecSize.x,
+ m->vecPosition.y + m->vecPosition.y) ||
+ VECINRECT(Vector2D(desiredGeometry.x + desiredGeometry.width, desiredGeometry.y + desiredGeometry.height), m->vecPosition.x, m->vecPosition.y,
+ m->vecPosition.x + m->vecSize.x, m->vecPosition.y + m->vecPosition.y)) {
visible = true;
break;
@@ -144,17 +150,17 @@ void IHyprLayout::onBeginDragWindow() {
if (!DRAGGINGWINDOW->m_bIsFloating) {
if (g_pInputManager->dragMode == MBIND_MOVE) {
changeWindowFloatingMode(DRAGGINGWINDOW);
- DRAGGINGWINDOW->m_bIsFloating = true;
+ DRAGGINGWINDOW->m_bIsFloating = true;
DRAGGINGWINDOW->m_bDraggingTiled = true;
DRAGGINGWINDOW->m_vRealPosition = g_pInputManager->getMouseCoordsInternal() - DRAGGINGWINDOW->m_vRealSize.goalv() / 2.f;
}
}
- m_vBeginDragXY = g_pInputManager->getMouseCoordsInternal();
+ m_vBeginDragXY = g_pInputManager->getMouseCoordsInternal();
m_vBeginDragPositionXY = DRAGGINGWINDOW->m_vRealPosition.goalv();
- m_vBeginDragSizeXY = DRAGGINGWINDOW->m_vRealSize.goalv();
- m_vLastDragXY = m_vBeginDragXY;
+ m_vBeginDragSizeXY = DRAGGINGWINDOW->m_vRealSize.goalv();
+ m_vLastDragXY = m_vBeginDragXY;
// get the grab corner
if (m_vBeginDragXY.x < m_vBeginDragPositionXY.x + m_vBeginDragSizeXY.x / 2.0) {
@@ -208,7 +214,7 @@ void IHyprLayout::onMouseMove(const Vector2D& mousePos) {
const auto SPECIAL = g_pCompositor->isWorkspaceSpecial(DRAGGINGWINDOW->m_iWorkspaceID);
- const auto DELTA = Vector2D(mousePos.x - m_vBeginDragXY.x, mousePos.y - m_vBeginDragXY.y);
+ const auto DELTA = Vector2D(mousePos.x - m_vBeginDragXY.x, mousePos.y - m_vBeginDragXY.y);
const auto TICKDELTA = Vector2D(mousePos.x - m_vLastDragXY.x, mousePos.y - m_vLastDragXY.y);
const auto PANIMATE = &g_pConfigManager->getConfigValuePtr("misc:animate_manual_resizes")->intValue;
@@ -237,25 +243,25 @@ void IHyprLayout::onMouseMove(const Vector2D& mousePos) {
// calc the new size and pos
Vector2D newSize = m_vBeginDragSizeXY;
- Vector2D newPos = m_vBeginDragPositionXY;
+ Vector2D newPos = m_vBeginDragPositionXY;
if (m_iGrabbedCorner == 3) {
newSize = newSize + DELTA;
} else if (m_iGrabbedCorner == 0) {
newSize = newSize - DELTA;
- newPos = newPos + DELTA;
+ newPos = newPos + DELTA;
} else if (m_iGrabbedCorner == 1) {
newSize = newSize + Vector2D(DELTA.x, -DELTA.y);
- newPos = newPos + Vector2D(0, DELTA.y);
+ newPos = newPos + Vector2D(0, DELTA.y);
} else if (m_iGrabbedCorner == 4) {
newSize = newSize + Vector2D(-DELTA.x, DELTA.y);
- newPos = newPos + Vector2D(DELTA.x, 0);
+ newPos = newPos + Vector2D(DELTA.x, 0);
}
- newSize = newSize.clamp(Vector2D(20,20), MAXSIZE);
+ newSize = newSize.clamp(Vector2D(20, 20), MAXSIZE);
if (*PANIMATE) {
- DRAGGINGWINDOW->m_vRealSize = newSize;
+ DRAGGINGWINDOW->m_vRealSize = newSize;
DRAGGINGWINDOW->m_vRealPosition = newPos;
} else {
DRAGGINGWINDOW->m_vRealSize.setValueAndWarp(newSize);
@@ -301,15 +307,15 @@ void IHyprLayout::changeWindowFloatingMode(CWindow* pWindow) {
const auto TILED = isWindowTiled(pWindow);
// event
- g_pEventManager->postEvent(SHyprIPCEvent{ "changefloatingmode", getFormat("%x,%d", pWindow, (int)TILED) });
+ g_pEventManager->postEvent(SHyprIPCEvent{"changefloatingmode", getFormat("%x,%d", pWindow, (int)TILED)});
if (!TILED) {
- const auto PNEWMON = g_pCompositor->getMonitorFromVector(pWindow->m_vRealPosition.vec() + pWindow->m_vRealSize.vec() / 2.f);
+ const auto PNEWMON = g_pCompositor->getMonitorFromVector(pWindow->m_vRealPosition.vec() + pWindow->m_vRealSize.vec() / 2.f);
pWindow->m_iMonitorID = PNEWMON->ID;
pWindow->moveToWorkspace(PNEWMON->activeWorkspace);
// save real pos cuz the func applies the default 5,5 mid
- const auto PSAVEDPOS = pWindow->m_vRealPosition.goalv();
+ const auto PSAVEDPOS = pWindow->m_vRealPosition.goalv();
const auto PSAVEDSIZE = pWindow->m_vRealSize.goalv();
// if the window is pseudo, update its size
@@ -336,9 +342,9 @@ void IHyprLayout::changeWindowFloatingMode(CWindow* pWindow) {
g_pCompositor->moveWindowToTop(pWindow);
pWindow->m_vRealPosition = pWindow->m_vRealPosition.goalv() + (pWindow->m_vRealSize.goalv() - pWindow->m_vLastFloatingSize) / 2.f;
- pWindow->m_vRealSize = pWindow->m_vLastFloatingSize;
+ pWindow->m_vRealSize = pWindow->m_vLastFloatingSize;
- pWindow->m_vSize = pWindow->m_vRealSize.goalv();
+ pWindow->m_vSize = pWindow->m_vRealSize.goalv();
pWindow->m_vPosition = pWindow->m_vRealPosition.goalv();
g_pHyprRenderer->damageMonitor(g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID));
@@ -389,8 +395,10 @@ CWindow* IHyprLayout::getNextWindowCandidate(CWindow* pWindow) {
// find whether there is a floating window below this one
for (auto& w : g_pCompositor->m_vWindows) {
- if (w->m_bIsMapped && !w->isHidden() && w->m_bIsFloating && w->m_iX11Type != 2 && w->m_iWorkspaceID == pWindow->m_iWorkspaceID && !w->m_bX11ShouldntFocus && !w->m_bNoFocus) {
- if (VECINRECT((pWindow->m_vSize / 2.f + pWindow->m_vPosition), w->m_vPosition.x, w->m_vPosition.y, w->m_vPosition.x + w->m_vSize.x, w->m_vPosition.y + w->m_vSize.y)) {
+ if (w->m_bIsMapped && !w->isHidden() && w->m_bIsFloating && w->m_iX11Type != 2 && w->m_iWorkspaceID == pWindow->m_iWorkspaceID && !w->m_bX11ShouldntFocus &&
+ !w->m_bNoFocus) {
+ if (VECINRECT((pWindow->m_vSize / 2.f + pWindow->m_vPosition), w->m_vPosition.x, w->m_vPosition.y, w->m_vPosition.x + w->m_vSize.x,
+ w->m_vPosition.y + w->m_vSize.y)) {
return w.get();
}
}
@@ -406,7 +414,8 @@ CWindow* IHyprLayout::getNextWindowCandidate(CWindow* pWindow) {
// if not, floating window
for (auto& w : g_pCompositor->m_vWindows) {
- if (w->m_bIsMapped && !w->isHidden() && w->m_bIsFloating && w->m_iX11Type != 2 && w->m_iWorkspaceID == pWindow->m_iWorkspaceID && !w->m_bX11ShouldntFocus && !w->m_bNoFocus)
+ if (w->m_bIsMapped && !w->isHidden() && w->m_bIsFloating && w->m_iX11Type != 2 && w->m_iWorkspaceID == pWindow->m_iWorkspaceID && !w->m_bX11ShouldntFocus &&
+ !w->m_bNoFocus)
return w.get();
}
@@ -417,11 +426,11 @@ CWindow* IHyprLayout::getNextWindowCandidate(CWindow* pWindow) {
// if it was a tiled window, we first try to find the window that will replace it.
const auto PWINDOWCANDIDATE = g_pCompositor->vectorToWindowIdeal(pWindow->m_vRealPosition.goalv() + pWindow->m_vRealSize.goalv() / 2.f);
- if (!PWINDOWCANDIDATE || pWindow == PWINDOWCANDIDATE || !PWINDOWCANDIDATE->m_bIsMapped || PWINDOWCANDIDATE->isHidden() || PWINDOWCANDIDATE->m_bX11ShouldntFocus || PWINDOWCANDIDATE->m_iX11Type == 2 || PWINDOWCANDIDATE->m_iMonitorID != g_pCompositor->m_pLastMonitor->ID)
+ if (!PWINDOWCANDIDATE || pWindow == PWINDOWCANDIDATE || !PWINDOWCANDIDATE->m_bIsMapped || PWINDOWCANDIDATE->isHidden() || PWINDOWCANDIDATE->m_bX11ShouldntFocus ||
+ PWINDOWCANDIDATE->m_iX11Type == 2 || PWINDOWCANDIDATE->m_iMonitorID != g_pCompositor->m_pLastMonitor->ID)
return nullptr;
return PWINDOWCANDIDATE;
}
-IHyprLayout::~IHyprLayout() {
-}
+IHyprLayout::~IHyprLayout() {}
diff --git a/src/layout/IHyprLayout.hpp b/src/layout/IHyprLayout.hpp
index 1d22e41c..a58783e4 100644
--- a/src/layout/IHyprLayout.hpp
+++ b/src/layout/IHyprLayout.hpp
@@ -2,103 +2,104 @@
#include "../defines.hpp"
#include "../Window.hpp"
+#include <any>
struct SWindowRenderLayoutHints {
- bool isBorderColor = false;
- CColor borderColor;
+ bool isBorderColor = false;
+ CColor borderColor;
};
struct SLayoutMessageHeader {
- CWindow* pWindow = nullptr;
+ CWindow* pWindow = nullptr;
};
enum eFullscreenMode : uint8_t;
interface IHyprLayout {
-public:
- virtual ~IHyprLayout() = 0;
- virtual void onEnable() = 0;
- virtual void onDisable() = 0;
+ public:
+ virtual ~IHyprLayout() = 0;
+ virtual void onEnable() = 0;
+ virtual void onDisable() = 0;
/*
Called when a window is created (mapped)
The layout HAS TO set the goal pos and size (anim mgr will use it)
If !animationinprogress, then the anim mgr will not apply an anim.
*/
- virtual void onWindowCreated(CWindow*);
- virtual void onWindowCreatedTiling(CWindow*) = 0;
- virtual void onWindowCreatedFloating(CWindow*);
+ virtual void onWindowCreated(CWindow*);
+ virtual void onWindowCreatedTiling(CWindow*) = 0;
+ virtual void onWindowCreatedFloating(CWindow*);
/*
Return tiled status
*/
- virtual bool isWindowTiled(CWindow*) = 0;
+ virtual bool isWindowTiled(CWindow*) = 0;
/*
Called when a window is removed (unmapped)
*/
- virtual void onWindowRemoved(CWindow*);
- virtual void onWindowRemovedTiling(CWindow*) = 0;
- virtual void onWindowRemovedFloating(CWindow*);
+ virtual void onWindowRemoved(CWindow*);
+ virtual void onWindowRemovedTiling(CWindow*) = 0;
+ virtual void onWindowRemovedFloating(CWindow*);
/*
Called when the monitor requires a layout recalculation
this usually means reserved area changes
*/
- virtual void recalculateMonitor(const int&) = 0;
+ virtual void recalculateMonitor(const int&) = 0;
/*
Called when the compositor requests a window
to be recalculated, e.g. when pseudo is toggled.
*/
- virtual void recalculateWindow(CWindow*) = 0;
+ virtual void recalculateWindow(CWindow*) = 0;
/*
Called when a window is requested to be floated
*/
- virtual void changeWindowFloatingMode(CWindow*);
+ virtual void changeWindowFloatingMode(CWindow*);
/*
Called when a window is clicked on, beginning a drag
this might be a resize, move, whatever the layout defines it
as.
*/
- virtual void onBeginDragWindow();
+ virtual void onBeginDragWindow();
/*
Called when a user requests a resize of the current window by a vec
Vector2D holds pixel values
Optional pWindow for a specific window
*/
- virtual void resizeActiveWindow(const Vector2D&, CWindow* pWindow = nullptr) = 0;
+ virtual void resizeActiveWindow(const Vector2D&, CWindow* pWindow = nullptr) = 0;
/*
Called when a user requests a move of the current window by a vec
Vector2D holds pixel values
Optional pWindow for a specific window
*/
- virtual void moveActiveWindow(const Vector2D&, CWindow* pWindow = nullptr);
+ virtual void moveActiveWindow(const Vector2D&, CWindow* pWindow = nullptr);
/*
Called when a window is ended being dragged
(mouse up)
*/
- virtual void onEndDragWindow();
+ virtual void onEndDragWindow();
/*
Called whenever the mouse moves, should the layout want to
do anything with it.
Useful for dragging.
*/
- virtual void onMouseMove(const Vector2D&);
+ virtual void onMouseMove(const Vector2D&);
/*
Called when a window / the user requests to toggle the fullscreen state of a window
The layout sets all the fullscreen flags.
It can either accept or ignore.
*/
- virtual void fullscreenRequestForWindow(CWindow*, eFullscreenMode, bool) = 0;
+ virtual void fullscreenRequestForWindow(CWindow*, eFullscreenMode, bool) = 0;
/*
Called when a dispatcher requests a custom message
The layout is free to ignore.
std::any is the reply. Can be empty.
*/
- virtual std::any layoutMessage(SLayoutMessageHeader, std::string) = 0;
+ virtual std::any layoutMessage(SLayoutMessageHeader, std::string) = 0;
/*
Required to be handled, but may return just SWindowRenderLayoutHints()
@@ -111,35 +112,35 @@ public:
Called when the user requests two windows to be swapped places.
The layout is free to ignore.
*/
- virtual void switchWindows(CWindow*, CWindow*) = 0;
+ virtual void switchWindows(CWindow*, CWindow*) = 0;
/*
Called when the user requests to change the splitratio by X
on a window
*/
- virtual void alterSplitRatioBy(CWindow*, float) = 0;
+ virtual void alterSplitRatioBy(CWindow*, float) = 0;
/*
Called when something wants the current layout's name
*/
- virtual std::string getLayoutName() = 0;
+ virtual std::string getLayoutName() = 0;
/*
Called for getting the next candidate for a focus
*/
- virtual CWindow* getNextWindowCandidate(CWindow*);
+ virtual CWindow* getNextWindowCandidate(CWindow*);
/*
Internal: called when window focus changes
*/
- virtual void onWindowFocusChange(CWindow*);
+ virtual void onWindowFocusChange(CWindow*);
-private:
- Vector2D m_vBeginDragXY;
- Vector2D m_vLastDragXY;
- Vector2D m_vBeginDragPositionXY;
- Vector2D m_vBeginDragSizeXY;
- int m_iGrabbedCorner = 0;
+ private:
+ Vector2D m_vBeginDragXY;
+ Vector2D m_vLastDragXY;
+ Vector2D m_vBeginDragPositionXY;
+ Vector2D m_vBeginDragSizeXY;
+ int m_iGrabbedCorner = 0;
- CWindow* m_pLastTiledWindow = nullptr;
+ CWindow* m_pLastTiledWindow = nullptr;
};
diff --git a/src/layout/MasterLayout.cpp b/src/layout/MasterLayout.cpp
index d1ece288..e4d8474c 100644
--- a/src/layout/MasterLayout.cpp
+++ b/src/layout/MasterLayout.cpp
@@ -37,9 +37,9 @@ SMasterWorkspaceData* CHyprMasterLayout::getMasterWorkspaceData(const int& ws) {
}
//create on the fly if it doesn't exist yet
- const auto PWORKSPACEDATA = &m_lMasterWorkspacesData.emplace_back();
+ const auto PWORKSPACEDATA = &m_lMasterWorkspacesData.emplace_back();
PWORKSPACEDATA->workspaceID = ws;
- const auto orientation = &g_pConfigManager->getConfigValuePtr("master:orientation")->strValue;
+ const auto orientation = &g_pConfigManager->getConfigValuePtr("master:orientation")->strValue;
if (*orientation == "top") {
PWORKSPACEDATA->orientation = ORIENTATION_TOP;
} else if (*orientation == "right") {
@@ -69,30 +69,30 @@ void CHyprMasterLayout::onWindowCreatedTiling(CWindow* pWindow) {
if (pWindow->m_bIsFloating)
return;
- static auto *const PNEWTOP = &g_pConfigManager->getConfigValuePtr("master:new_on_top")->intValue;
+ static auto* const PNEWTOP = &g_pConfigManager->getConfigValuePtr("master:new_on_top")->intValue;
- const auto PMONITOR = g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID);
+ const auto PMONITOR = g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID);
- const auto PNODE = *PNEWTOP ? &m_lMasterNodesData.emplace_front() : &m_lMasterNodesData.emplace_back();
+ const auto PNODE = *PNEWTOP ? &m_lMasterNodesData.emplace_front() : &m_lMasterNodesData.emplace_back();
PNODE->workspaceID = pWindow->m_iWorkspaceID;
- PNODE->pWindow = pWindow;
+ PNODE->pWindow = pWindow;
- static auto *const PNEWISMASTER = &g_pConfigManager->getConfigValuePtr("master:new_is_master")->intValue;
+ static auto* const PNEWISMASTER = &g_pConfigManager->getConfigValuePtr("master:new_is_master")->intValue;
- const auto WINDOWSONWORKSPACE = getNodesOnWorkspace(PNODE->workspaceID);
- float lastSplitPercent = 0.5f;
+ const auto WINDOWSONWORKSPACE = getNodesOnWorkspace(PNODE->workspaceID);
+ float lastSplitPercent = 0.5f;
if (*PNEWISMASTER || WINDOWSONWORKSPACE == 1) {
for (auto& nd : m_lMasterNodesData) {
if (nd.isMaster && nd.workspaceID == PNODE->workspaceID) {
- nd.isMaster = false;
+ nd.isMaster = false;
lastSplitPercent = nd.percMaster;
break;
}
}
- PNODE->isMaster = true;
+ PNODE->isMaster = true;
PNODE->percMaster = lastSplitPercent;
// first, check if it isn't too big.
@@ -107,7 +107,8 @@ void CHyprMasterLayout::onWindowCreatedTiling(CWindow* pWindow) {
PNODE->isMaster = false;
// first, check if it isn't too big.
- if (const auto MAXSIZE = g_pXWaylandManager->getMaxSizeForWindow(pWindow); MAXSIZE.x < PMONITOR->vecSize.x * (1 - lastSplitPercent) || MAXSIZE.y < PMONITOR->vecSize.y * (1.f / (WINDOWSONWORKSPACE - 1))) {
+ if (const auto MAXSIZE = g_pXWaylandManager->getMaxSizeForWindow(pWindow);
+ MAXSIZE.x < PMONITOR->vecSize.x * (1 - lastSplitPercent) || MAXSIZE.y < PMONITOR->vecSize.y * (1.f / (WINDOWSONWORKSPACE - 1))) {
// we can't continue. make it floating.
pWindow->m_bIsFloating = true;
m_lMasterNodesData.remove(*PNODE);
@@ -134,7 +135,7 @@ void CHyprMasterLayout::onWindowRemovedTiling(CWindow* pWindow) {
return;
pWindow->m_sSpecialRenderData.rounding = true;
- pWindow->m_sSpecialRenderData.border = true;
+ pWindow->m_sSpecialRenderData.border = true;
pWindow->m_sSpecialRenderData.decorate = true;
if (pWindow->m_bIsFullscreen)
@@ -169,7 +170,7 @@ void CHyprMasterLayout::onWindowRemovedTiling(CWindow* pWindow) {
}
void CHyprMasterLayout::recalculateMonitor(const int& monid) {
- const auto PMONITOR = g_pCompositor->getMonitorFromID(monid);
+ const auto PMONITOR = g_pCompositor->getMonitorFromID(monid);
const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(PMONITOR->activeWorkspace);
if (!PWORKSPACE)
@@ -186,15 +187,15 @@ void CHyprMasterLayout::recalculateMonitor(const int& monid) {
return;
// massive hack from the fullscreen func
- const auto PFULLWINDOW = g_pCompositor->getFullscreenWindowOnWorkspace(PWORKSPACE->m_iID);
+ const auto PFULLWINDOW = g_pCompositor->getFullscreenWindowOnWorkspace(PWORKSPACE->m_iID);
SMasterNodeData fakeNode;
- fakeNode.pWindow = PFULLWINDOW;
- fakeNode.position = PMONITOR->vecPosition + PMONITOR->vecReservedTopLeft;
- fakeNode.size = PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight;
- fakeNode.workspaceID = PWORKSPACE->m_iID;
+ fakeNode.pWindow = PFULLWINDOW;
+ fakeNode.position = PMONITOR->vecPosition + PMONITOR->vecReservedTopLeft;
+ fakeNode.size = PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight;
+ fakeNode.workspaceID = PWORKSPACE->m_iID;
PFULLWINDOW->m_vPosition = fakeNode.position;
- PFULLWINDOW->m_vSize = fakeNode.size;
+ PFULLWINDOW->m_vSize = fakeNode.size;
applyNodeDataToWindow(&fakeNode);
@@ -225,14 +226,15 @@ void CHyprMasterLayout::calculateWorkspace(const int& ws) {
//compute placement of master window(s)
if (getNodesOnWorkspace(PWORKSPACE->m_iID) < 2) {
PMASTERNODE->position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition;
- PMASTERNODE->size = Vector2D(PMONITOR->vecSize.x - PMONITOR->vecReservedTopLeft.x - PMONITOR->vecReservedBottomRight.x, PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y);
+ PMASTERNODE->size = Vector2D(PMONITOR->vecSize.x - PMONITOR->vecReservedTopLeft.x - PMONITOR->vecReservedBottomRight.x,
+ PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y);
applyNodeDataToWindow(PMASTERNODE);
return;
} else if (PWORKSPACEDATA->orientation == ORIENTATION_LEFT || PWORKSPACEDATA->orientation == ORIENTATION_RIGHT) {
- float heightLeft = PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y;
- int nodesLeft = MASTERS;
- float nextY = 0;
- const float WIDTH = (PMONITOR->vecSize.x - PMONITOR->vecReservedTopLeft.x - PMONITOR->vecReservedBottomRight.x) * PMASTERNODE->percMaster;
+ float heightLeft = PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y;
+ int nodesLeft = MASTERS;
+ float nextY = 0;
+ const float WIDTH = (PMONITOR->vecSize.x - PMONITOR->vecReservedTopLeft.x - PMONITOR->vecReservedBottomRight.x) * PMASTERNODE->percMaster;
for (auto& n : m_lMasterNodesData) {
if (n.workspaceID == PWORKSPACE->m_iID && n.isMaster) {
@@ -254,15 +256,15 @@ void CHyprMasterLayout::calculateWorkspace(const int& ws) {
}
}
} else if (PWORKSPACEDATA->orientation == ORIENTATION_TOP || PWORKSPACEDATA->orientation == ORIENTATION_BOTTOM) {
- float widthLeft = PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x - PMONITOR->vecReservedTopLeft.x;
- int nodesLeft = MASTERS;
- float nextX = 0;
- const float HEIGHT = (PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y) * PMASTERNODE->percMaster;
+ float widthLeft = PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x - PMONITOR->vecReservedTopLeft.x;
+ int nodesLeft = MASTERS;
+ float nextX = 0;
+ const float HEIGHT = (PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y) * PMASTERNODE->percMaster;
for (auto& n : m_lMasterNodesData) {
if (n.workspaceID == PWORKSPACE->m_iID && n.isMaster) {
- if (PWORKSPACEDATA->orientation == ORIENTATION_BOTTOM) {
- n.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition + Vector2D(nextX,PMONITOR->vecSize.y - HEIGHT - PMONITOR->vecReservedBottomRight.y);
+ if (PWORKSPACEDATA->orientation == ORIENTATION_BOTTOM) {
+ n.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition + Vector2D(nextX, PMONITOR->vecSize.y - HEIGHT - PMONITOR->vecReservedBottomRight.y);
} else {
n.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition + Vector2D(nextX, 0);
}
@@ -280,20 +282,20 @@ void CHyprMasterLayout::calculateWorkspace(const int& ws) {
}
}
-
//compute placement of slave window(s)
int slavesLeft = getNodesOnWorkspace(PWORKSPACE->m_iID) - MASTERS;
if (PWORKSPACEDATA->orientation == ORIENTATION_LEFT || PWORKSPACEDATA->orientation == ORIENTATION_RIGHT) {
- float heightLeft = PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y;
- float nextY = 0;
- const float WIDTH = PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x - PMONITOR->vecReservedTopLeft.x - PMASTERNODE->size.x;
+ float heightLeft = PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y;
+ float nextY = 0;
+ const float WIDTH = PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x - PMONITOR->vecReservedTopLeft.x - PMASTERNODE->size.x;
for (auto& nd : m_lMasterNodesData) {
if (nd.workspaceID != PWORKSPACE->m_iID || nd.isMaster)
continue;
if (PWORKSPACEDATA->orientation == ORIENTATION_LEFT) {
- nd.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition + Vector2D(PMASTERNODE->percMaster * (PMONITOR->vecSize.x - PMONITOR->vecReservedTopLeft.x - PMONITOR->vecReservedBottomRight.x), nextY);
+ nd.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition +
+ Vector2D(PMASTERNODE->percMaster * (PMONITOR->vecSize.x - PMONITOR->vecReservedTopLeft.x - PMONITOR->vecReservedBottomRight.x), nextY);
} else {
nd.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition + Vector2D(0, nextY);
}
@@ -309,15 +311,16 @@ void CHyprMasterLayout::calculateWorkspace(const int& ws) {
applyNodeDataToWindow(&nd);
}
} else if (PWORKSPACEDATA->orientation == ORIENTATION_TOP || PWORKSPACEDATA->orientation == ORIENTATION_BOTTOM) {
- float widthLeft = PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x - PMONITOR->vecReservedTopLeft.x;
- float nextX = 0;
- const float HEIGHT = PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y - PMASTERNODE->size.y;
+ float widthLeft = PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x - PMONITOR->vecReservedTopLeft.x;
+ float nextX = 0;
+ const float HEIGHT = PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y - PMASTERNODE->size.y;
for (auto& nd : m_lMasterNodesData) {
if (nd.workspaceID != PWORKSPACE->m_iID || nd.isMaster)
continue;
if (PWORKSPACEDATA->orientation == ORIENTATION_TOP) {
- nd.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition + Vector2D(nextX, PMASTERNODE->percMaster * (PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y));
+ nd.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition +
+ Vector2D(nextX, PMASTERNODE->percMaster * (PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y));
} else {
nd.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition + Vector2D(nextX, 0);
}
@@ -333,8 +336,6 @@ void CHyprMasterLayout::calculateWorkspace(const int& ws) {
applyNodeDataToWindow(&nd);
}
}
-
-
}
void CHyprMasterLayout::applyNodeDataToWindow(SMasterNodeData* pNode) {
@@ -357,14 +358,14 @@ void CHyprMasterLayout::applyNodeDataToWindow(SMasterNodeData* pNode) {
}
// for gaps outer
- const bool DISPLAYLEFT = STICKS(pNode->position.x, PMONITOR->vecPosition.x + PMONITOR->vecReservedTopLeft.x);
- const bool DISPLAYRIGHT = STICKS(pNode->position.x + pNode->size.x, PMONITOR->vecPosition.x + PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x);
- const bool DISPLAYTOP = STICKS(pNode->position.y, PMONITOR->vecPosition.y + PMONITOR->vecReservedTopLeft.y);
- const bool DISPLAYBOTTOM = STICKS(pNode->position.y + pNode->size.y, PMONITOR->vecPosition.y + PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y);
+ const bool DISPLAYLEFT = STICKS(pNode->position.x, PMONITOR->vecPosition.x + PMONITOR->vecReservedTopLeft.x);
+ const bool DISPLAYRIGHT = STICKS(pNode->position.x + pNode->size.x, PMONITOR->vecPosition.x + PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x);
+ const bool DISPLAYTOP = STICKS(pNode->position.y, PMONITOR->vecPosition.y + PMONITOR->vecReservedTopLeft.y);
+ const bool DISPLAYBOTTOM = STICKS(pNode->position.y + pNode->size.y, PMONITOR->vecPosition.y + PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y);
- const auto PBORDERSIZE = &g_pConfigManager->getConfigValuePtr("general:border_size")->intValue;
- const auto PGAPSIN = &g_pConfigManager->getConfigValuePtr("general:gaps_in")->intValue;
- const auto PGAPSOUT = &g_pConfigManager->getConfigValuePtr("general:gaps_out")->intValue;
+ const auto PBORDERSIZE = &g_pConfigManager->getConfigValuePtr("general:border_size")->intValue;
+ const auto PGAPSIN = &g_pConfigManager->getConfigValuePtr("general:gaps_in")->intValue;
+ const auto PGAPSOUT = &g_pConfigManager->getConfigValuePtr("general:gaps_out")->intValue;
const auto PWINDOW = pNode->pWindow;
@@ -373,49 +374,49 @@ void CHyprMasterLayout::applyNodeDataToWindow(SMasterNodeData* pNode) {
return;
}
- static auto *const PNOGAPSWHENONLY = &g_pConfigManager->getConfigValuePtr("master:no_gaps_when_only")->intValue;
+ static auto* const PNOGAPSWHENONLY = &g_pConfigManager->getConfigValuePtr("master:no_gaps_when_only")->intValue;
- PWINDOW->m_vSize = pNode->size;
+ PWINDOW->m_vSize = pNode->size;
PWINDOW->m_vPosition = pNode->position;
- auto calcPos = PWINDOW->m_vPosition + Vector2D(*PBORDERSIZE, *PBORDERSIZE);
+ auto calcPos = PWINDOW->m_vPosition + Vector2D(*PBORDERSIZE, *PBORDERSIZE);
auto calcSize = PWINDOW->m_vSize - Vector2D(2 * *PBORDERSIZE, 2 * *PBORDERSIZE);
- if (*PNOGAPSWHENONLY && !g_pCompositor->isWorkspaceSpecial(PWINDOW->m_iWorkspaceID) && (getNodesOnWorkspace(PWINDOW->m_iWorkspaceID) == 1 || (PWINDOW->m_bIsFullscreen && g_pCompositor->getWorkspaceByID(PWINDOW->m_iWorkspaceID)->m_efFullscreenMode == FULLSCREEN_MAXIMIZED))) {
+ if (*PNOGAPSWHENONLY && !g_pCompositor->isWorkspaceSpecial(PWINDOW->m_iWorkspaceID) &&
+ (getNodesOnWorkspace(PWINDOW->m_iWorkspaceID) == 1 ||
+ (PWINDOW->m_bIsFullscreen && g_pCompositor->getWorkspaceByID(PWINDOW->m_iWorkspaceID)->m_efFullscreenMode == FULLSCREEN_MAXIMIZED))) {
PWINDOW->m_vRealPosition = calcPos - Vector2D(*PBORDERSIZE, *PBORDERSIZE);
- PWINDOW->m_vRealSize = calcSize + Vector2D(2 * *PBORDERSIZE, 2 * *PBORDERSIZE);
+ PWINDOW->m_vRealSize = calcSize + Vector2D(2 * *PBORDERSIZE, 2 * *PBORDERSIZE);
PWINDOW->updateWindowDecos();
PWINDOW->m_sSpecialRenderData.rounding = false;
- PWINDOW->m_sSpecialRenderData.border = false;
+ PWINDOW->m_sSpecialRenderData.border = false;
PWINDOW->m_sSpecialRenderData.decorate = false;
return;
}
PWINDOW->m_sSpecialRenderData.rounding = true;
- PWINDOW->m_sSpecialRenderData.border = true;
+ PWINDOW->m_sSpecialRenderData.border = true;
PWINDOW->m_sSpecialRenderData.decorate = true;
- const auto OFFSETTOPLEFT = Vector2D(DISPLAYLEFT ? *PGAPSOUT : *PGAPSIN,
- DISPLAYTOP ? *PGAPSOUT : *PGAPSIN);
+ const auto OFFSETTOPLEFT = Vector2D(DISPLAYLEFT ? *PGAPSOUT : *PGAPSIN, DISPLAYTOP ? *PGAPSOUT : *PGAPSIN);
- const auto OFFSETBOTTOMRIGHT = Vector2D(DISPLAYRIGHT ? *PGAPSOUT : *PGAPSIN,
- DISPLAYBOTTOM ? *PGAPSOUT : *PGAPSIN);
+ const auto OFFSETBOTTOMRIGHT = Vector2D(DISPLAYRIGHT ? *PGAPSOUT : *PGAPSIN, DISPLAYBOTTOM ? *PGAPSOUT : *PGAPSIN);
- calcPos = calcPos + OFFSETTOPLEFT;
+ calcPos = calcPos + OFFSETTOPLEFT;
calcSize = calcSize - OFFSETTOPLEFT - OFFSETBOTTOMRIGHT;
if (g_pCompositor->isWorkspaceSpecial(PWINDOW->m_iWorkspaceID)) {
- static auto *const PSCALEFACTOR = &g_pConfigManager->getConfigValuePtr("master:special_scale_factor")->floatValue;
+ static auto* const PSCALEFACTOR = &g_pConfigManager->getConfigValuePtr("master:special_scale_factor")->floatValue;
PWINDOW->m_vRealPosition = calcPos + (calcSize - calcSize * *PSCALEFACTOR) / 2.f;
- PWINDOW->m_vRealSize = calcSize * *PSCALEFACTOR;
+ PWINDOW->m_vRealSize = calcSize * *PSCALEFACTOR;
g_pXWaylandManager->setWindowSize(PWINDOW, calcSize * *PSCALEFACTOR);
} else {
- PWINDOW->m_vRealSize = calcSize;
+ PWINDOW->m_vRealSize = calcSize;
PWINDOW->m_vRealPosition = calcPos;
g_pXWaylandManager->setWindowSize(PWINDOW, calcSize);
@@ -471,10 +472,10 @@ void CHyprMasterLayout::resizeActiveWindow(const Vector2D& pixResize, CWindow* p
if (PNODE->isMaster && getMastersOnWorkspace(PNODE->workspaceID) > 1) {
// check master size
const auto SIZEY = (PMONITOR->vecSize.y - PMONITOR->vecReservedTopLeft.y - PMONITOR->vecReservedBottomRight.y) / getMastersOnWorkspace(PNODE->workspaceID);
- PNODE->percSize = std::clamp(PNODE->percSize + pixResize.y / SIZEY, 0.05, 1.95);
+ PNODE->percSize = std::clamp(PNODE->percSize + pixResize.y / SIZEY, 0.05, 1.95);
} else if (!PNODE->isMaster && (getNodesOnWorkspace(PWINDOW->m_iWorkspaceID) - getMastersOnWorkspace(PNODE->workspaceID)) > 1) {
const auto SIZEY = (PMONITOR->vecSize.y - PMONITOR->vecReservedTopLeft.y - PMONITOR->vecReservedBottomRight.y) / getNodesOnWorkspace(PNODE->workspaceID);
- PNODE->percSize = std::clamp(PNODE->percSize + pixResize.y / SIZEY, 0.05, 1.95);
+ PNODE->percSize = std::clamp(PNODE->percSize + pixResize.y / SIZEY, 0.05, 1.95);
}
}
@@ -488,9 +489,9 @@ void CHyprMasterLayout::fullscreenRequestForWindow(CWindow* pWindow, eFullscreen
return;
if (on == pWindow->m_bIsFullscreen || g_pCompositor->isWorkspaceSpecial(pWindow->m_iWorkspaceID))
- return; // ignore
+ return; // ignore
- const auto PMONITOR = g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID);
+ const auto PMONITOR = g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID);
const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(pWindow->m_iWorkspaceID);
if (PWORKSPACE->m_bHasFullscreenWindow && on) {
@@ -500,7 +501,7 @@ void CHyprMasterLayout::fullscreenRequestForWindow(CWindow* pWindow, eFullscreen
}
// otherwise, accept it.
- pWindow->m_bIsFullscreen = on;
+ pWindow->m_bIsFullscreen = on;
PWORKSPACE->m_bHasFullscreenWindow = !PWORKSPACE->m_bHasFullscreenWindow;
g_pEventManager->postEvent(SHyprIPCEvent{"fullscreen", std::to_string((int)on)});
@@ -513,7 +514,7 @@ void CHyprMasterLayout::fullscreenRequestForWindow(CWindow* pWindow, eFullscreen
else {
// get back its' dimensions from position and size
pWindow->m_vRealPosition = pWindow->m_vPosition;
- pWindow->m_vRealSize = pWindow->m_vSize;
+ pWindow->m_vRealSize = pWindow->m_vSize;
}
} else {
// if it now got fullscreen, make it fullscreen
@@ -523,25 +524,25 @@ void CHyprMasterLayout::fullscreenRequestForWindow(CWindow* pWindow, eFullscreen
// save position and size if floating
if (pWindow->m_bIsFloating) {
pWindow->m_vPosition = pWindow->m_vRealPosition.vec();
- pWindow->m_vSize = pWindow->m_vRealSize.vec();
+ pWindow->m_vSize = pWindow->m_vRealSize.vec();
}
// apply new pos and size being monitors' box
if (fullscreenMode == FULLSCREEN_FULL) {
pWindow->m_vRealPosition = PMONITOR->vecPosition;
- pWindow->m_vRealSize = PMONITOR->vecSize;
+ pWindow->m_vRealSize = PMONITOR->vecSize;
} else {
// This is a massive hack.
// We make a fake "only" node and apply
// To keep consistent with the settings without C+P code
SMasterNodeData fakeNode;
- fakeNode.pWindow = pWindow;
- fakeNode.position = PMONITOR->vecPosition + PMONITOR->vecReservedTopLeft;
- fakeNode.size = PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight;
+ fakeNode.pWindow = pWindow;
+ fakeNode.position = PMONITOR->vecPosition + PMONITOR->vecReservedTopLeft;
+ fakeNode.size = PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight;
fakeNode.workspaceID = pWindow->m_iWorkspaceID;
pWindow->m_vPosition = fakeNode.position;
- pWindow->m_vSize = fakeNode.size;
+ pWindow->m_vSize = fakeNode.size;
applyNodeDataToWindow(&fakeNode);
}
@@ -576,7 +577,7 @@ SWindowRenderLayoutHints CHyprMasterLayout::requestRenderHints(CWindow* pWindow)
void CHyprMasterLayout::switchWindows(CWindow* pWindow, CWindow* pWindow2) {
// windows should be valid, insallah
- const auto PNODE = getNodeFromWindow(pWindow);
+ const auto PNODE = getNodeFromWindow(pWindow);
const auto PNODE2 = getNodeFromWindow(pWindow2);
if (!PNODE2 || !PNODE)
@@ -590,7 +591,7 @@ void CHyprMasterLayout::switchWindows(CWindow* pWindow, CWindow* pWindow2) {
}
// massive hack: just swap window pointers, lol
- PNODE->pWindow = pWindow2;
+ PNODE->pWindow = pWindow2;
PNODE2->pWindow = pWindow;
recalculateMonitor(pWindow->m_iMonitorID);
@@ -635,7 +636,7 @@ CWindow* CHyprMasterLayout::getNextWindow(CWindow* pWindow, bool next) {
} else {
// focus next
bool reached = false;
- bool found = false;
+ bool found = false;
for (auto n : m_lMasterNodesData) {
if (n.pWindow == pWindow) {
reached = true;
@@ -664,7 +665,7 @@ CWindow* CHyprMasterLayout::getNextWindow(CWindow* pWindow, bool next) {
} else {
// focus previous
bool reached = false;
- bool found = false;
+ bool found = false;
for (auto it = m_lMasterNodesData.rbegin(); it != m_lMasterNodesData.rend(); it++) {
if (it->pWindow == pWindow) {
reached = true;
@@ -694,7 +695,7 @@ bool CHyprMasterLayout::prepareLoseFocus(CWindow* pWindow) {
//if the current window is fullscreen, make it normal again if we are about to lose focus
if (pWindow->m_bIsFullscreen) {
g_pCompositor->setWindowFullscreen(pWindow, false, FULLSCREEN_FULL);
- static auto *const INHERIT = &g_pConfigManager->getConfigValuePtr("master:inherit_fullscreen")->intValue;
+ static auto* const INHERIT = &g_pConfigManager->getConfigValuePtr("master:inherit_fullscreen")->intValue;
return *INHERIT == 1;
}
@@ -732,7 +733,6 @@ std::any CHyprMasterLayout::layoutMessage(SLayoutMessageHeader header, std::stri
if (!PMASTER)
return 0;
-
if (PMASTER->pWindow != PWINDOW) {
switchWindows(PWINDOW, PMASTER->pWindow);
switchToWindow(PWINDOW);
@@ -835,7 +835,7 @@ std::any CHyprMasterLayout::layoutMessage(SLayoutMessageHeader header, std::stri
if (header.pWindow->m_bIsFloating)
return 0;
- const auto PNODE = getNodeFromWindow(header.pWindow);
+ const auto PNODE = getNodeFromWindow(header.pWindow);
const auto WINDOWS = getNodesOnWorkspace(header.pWindow->m_iWorkspaceID);
const auto MASTERS = getMastersOnWorkspace(header.pWindow->m_iWorkspaceID);
@@ -900,13 +900,13 @@ std::any CHyprMasterLayout::layoutMessage(SLayoutMessageHeader header, std::stri
const auto PWORKSPACEDATA = getMasterWorkspaceData(PWINDOW->m_iWorkspaceID);
- if (message == "orientationleft")
+ if (message == "orientationleft")
PWORKSPACEDATA->orientation = ORIENTATION_LEFT;
- else if (message == "orientationright")
+ else if (message == "orientationright")
PWORKSPACEDATA->orientation = ORIENTATION_RIGHT;
- else if (message == "orientationtop")
+ else if (message == "orientationtop")
PWORKSPACEDATA->orientation = ORIENTATION_TOP;
- else if (message == "orientationbottom")
+ else if (message == "orientationbottom")
PWORKSPACEDATA->orientation = ORIENTATION_BOTTOM;
recalculateMonitor(header.pWindow->m_iMonitorID);
@@ -924,7 +924,7 @@ std::any CHyprMasterLayout::layoutMessage(SLayoutMessageHeader header, std::stri
if (PWORKSPACEDATA->orientation == ORIENTATION_BOTTOM) {
PWORKSPACEDATA->orientation = ORIENTATION_LEFT;
} else {
- PWORKSPACEDATA->orientation = (eOrientation) (PWORKSPACEDATA->orientation + 1);
+ PWORKSPACEDATA->orientation = (eOrientation)(PWORKSPACEDATA->orientation + 1);
}
recalculateMonitor(header.pWindow->m_iMonitorID);
@@ -941,7 +941,7 @@ std::any CHyprMasterLayout::layoutMessage(SLayoutMessageHeader header, std::stri
if (PWORKSPACEDATA->orientation == ORIENTATION_LEFT) {
PWORKSPACEDATA->orientation = ORIENTATION_BOTTOM;
} else {
- PWORKSPACEDATA->orientation = (eOrientation) (PWORKSPACEDATA->orientation - 1);
+ PWORKSPACEDATA->orientation = (eOrientation)(PWORKSPACEDATA->orientation - 1);
}
recalculateMonitor(header.pWindow->m_iMonitorID);
diff --git a/src/layout/MasterLayout.hpp b/src/layout/MasterLayout.hpp
index 06dd8f00..1b637fde 100644
--- a/src/layout/MasterLayout.hpp
+++ b/src/layout/MasterLayout.hpp
@@ -4,11 +4,13 @@
#include <vector>
#include <list>
#include <deque>
+#include <any>
enum eFullscreenMode : uint8_t;
//orientation determines which side of the screen the master area resides
-enum eOrientation : uint8_t {
+enum eOrientation : uint8_t
+{
ORIENTATION_LEFT = 0,
ORIENTATION_TOP,
ORIENTATION_RIGHT,
@@ -16,67 +18,66 @@ enum eOrientation : uint8_t {
};
struct SMasterNodeData {
- bool isMaster = false;
- float percMaster = 0.5f;
+ bool isMaster = false;
+ float percMaster = 0.5f;
CWindow* pWindow = nullptr;
Vector2D position;
Vector2D size;
- float percSize = 1.f; // size multiplier for resizing children
+ float percSize = 1.f; // size multiplier for resizing children
- int workspaceID = -1;
+ int workspaceID = -1;
- bool operator==(const SMasterNodeData& rhs) {
+ bool operator==(const SMasterNodeData& rhs) {
return pWindow == rhs.pWindow;
}
};
struct SMasterWorkspaceData {
- int workspaceID = -1;
+ int workspaceID = -1;
eOrientation orientation = ORIENTATION_LEFT;
- bool operator==(const SMasterWorkspaceData& rhs) {
+ bool operator==(const SMasterWorkspaceData& rhs) {
return workspaceID == rhs.workspaceID;
}
};
class CHyprMasterLayout : public IHyprLayout {
-public:
- virtual void onWindowCreatedTiling(CWindow*);
- virtual void onWindowRemovedTiling(CWindow*);
- virtual bool isWindowTiled(CWindow*);
- virtual void recalculateMonitor(const int&);
- virtual void recalculateWindow(CWindow*);
- virtual void resizeActiveWindow(const Vector2D&, CWindow* pWindow = nullptr);
- virtual void fullscreenRequestForWindow(CWindow*, eFullscreenMode, bool);
- virtual std::any layoutMessage(SLayoutMessageHeader, std::string);
+ public:
+ virtual void onWindowCreatedTiling(CWindow*);
+ virtual void onWindowRemovedTiling(CWindow*);
+ virtual bool isWindowTiled(CWindow*);
+ virtual void recalculateMonitor(const int&);
+ virtual void recalculateWindow(CWindow*);
+ virtual void resizeActiveWindow(const Vector2D&, CWindow* pWindow = nullptr);
+ virtual void fullscreenRequestForWindow(CWindow*, eFullscreenMode, bool);
+ virtual std::any layoutMessage(SLayoutMessageHeader, std::string);
virtual SWindowRenderLayoutHints requestRenderHints(CWindow*);
- virtual void switchWindows(CWindow*, CWindow*);
- virtual void alterSplitRatioBy(CWindow*, float);
- virtual std::string getLayoutName();
+ virtual void switchWindows(CWindow*, CWindow*);
+ virtual void alterSplitRatioBy(CWindow*, float);
+ virtual std::string getLayoutName();
- virtual void onEnable();
- virtual void onDisable();
+ virtual void onEnable();
+ virtual void onDisable();
-private:
-
- std::list<SMasterNodeData> m_lMasterNodesData;
+ private:
+ std::list<SMasterNodeData> m_lMasterNodesData;
std::vector<SMasterWorkspaceData> m_lMasterWorkspacesData;
- bool m_bForceWarps = false;
-
- int getNodesOnWorkspace(const int&);
- void applyNodeDataToWindow(SMasterNodeData*);
- SMasterNodeData* getNodeFromWindow(CWindow*);
- SMasterNodeData* getMasterNodeOnWorkspace(const int&);
- SMasterWorkspaceData* getMasterWorkspaceData(const int&);
- void calculateWorkspace(const int&);
- CWindow* getNextWindow(CWindow*, bool);
- int getMastersOnWorkspace(const int&);
- bool prepareLoseFocus(CWindow*);
- void prepareNewFocus(CWindow*, bool inherit_fullscreen);
+ bool m_bForceWarps = false;
+
+ int getNodesOnWorkspace(const int&);
+ void applyNodeDataToWindow(SMasterNodeData*);
+ SMasterNodeData* getNodeFromWindow(CWindow*);
+ SMasterNodeData* getMasterNodeOnWorkspace(const int&);
+ SMasterWorkspaceData* getMasterWorkspaceData(const int&);
+ void calculateWorkspace(const int&);
+ CWindow* getNextWindow(CWindow*, bool);
+ int getMastersOnWorkspace(const int&);
+ bool prepareLoseFocus(CWindow*);
+ void prepareNewFocus(CWindow*, bool inherit_fullscreen);
friend struct SMasterNodeData;
friend struct SMasterWorkspaceData;
diff --git a/src/main.cpp b/src/main.cpp
index 77aece7a..5b56944e 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -20,7 +20,7 @@ int main(int argc, char** argv) {
// parse some args
std::string configPath;
- bool ignoreSudo = false;
+ bool ignoreSudo = false;
for (int i = 1; i < argc; ++i) {
if (!strcmp(argv[i], "--i-am-really-stupid"))
ignoreSudo = true;
@@ -28,9 +28,9 @@ int main(int argc, char** argv) {
configPath = std::string(argv[++i]);
Debug::log(LOG, "Using config location %s.", configPath.c_str());
} else {
- std::cout << "Hyprland usage: Hyprland [arg [...]].\n\nArguments:\n" <<
- "--help -h | Show this help message\n" <<
- "--config -c | Specify config file to use\n";
+ std::cout << "Hyprland usage: Hyprland [arg [...]].\n\nArguments:\n"
+ << "--help -h | Show this help message\n"
+ << "--config -c | Specify config file to use\n";
return 1;
}
}
@@ -41,7 +41,7 @@ int main(int argc, char** argv) {
if (Init::isSudo()) {
std::cout << "Hyprland shall not be run as the root user. If you really want to, use the --i-am-really-stupid flag.\n";
return 1;
- }
+ }
} else {
std::cout << "Running with ignored root checks, I surely hope you know what you're doing.\n";
sleep(1);
@@ -55,7 +55,7 @@ int main(int argc, char** argv) {
// let's init the compositor.
// it initializes basic Wayland stuff in the constructor.
- g_pCompositor = std::make_unique<CCompositor>();
+ g_pCompositor = std::make_unique<CCompositor>();
g_pCompositor->explicitConfigPath = configPath;
Debug::log(LOG, "Hyprland init finished.");
diff --git a/src/managers/AnimationManager.cpp b/src/managers/AnimationManager.cpp
index b15e96a9..c257622a 100644
--- a/src/managers/AnimationManager.cpp
+++ b/src/managers/AnimationManager.cpp
@@ -21,17 +21,17 @@ void CAnimationManager::addBezierWithName(std::string name, const Vector2D& p1,
void CAnimationManager::tick() {
- bool animGlobalDisabled = false;
+ bool animGlobalDisabled = false;
- static auto *const PANIMENABLED = &g_pConfigManager->getConfigValuePtr("animations:enabled")->intValue;
+ static auto* const PANIMENABLED = &g_pConfigManager->getConfigValuePtr("animations:enabled")->intValue;
if (!*PANIMENABLED)
animGlobalDisabled = true;
- static auto *const PBORDERSIZE = &g_pConfigManager->getConfigValuePtr("general:border_size")->intValue;
- static auto *const PSHADOWSENABLED = &g_pConfigManager->getConfigValuePtr("decoration:drop_shadow")->intValue;
+ static auto* const PBORDERSIZE = &g_pConfigManager->getConfigValuePtr("general:border_size")->intValue;
+ static auto* const PSHADOWSENABLED = &g_pConfigManager->getConfigValuePtr("decoration:drop_shadow")->intValue;
- const auto DEFAULTBEZIER = m_mBezierCurves.find("default");
+ const auto DEFAULTBEZIER = m_mBezierCurves.find("default");
std::vector<CAnimatedVariable*> animationEndedVars;
@@ -50,23 +50,23 @@ void CAnimationManager::tick() {
const float SPENT = av->getPercent();
// window stuff
- const auto PWINDOW = (CWindow*)av->m_pWindow;
- const auto PWORKSPACE = (CWorkspace*)av->m_pWorkspace;
- const auto PLAYER = (SLayerSurface*)av->m_pLayer;
- CMonitor* PMONITOR = nullptr;
- bool animationsDisabled = animGlobalDisabled;
+ const auto PWINDOW = (CWindow*)av->m_pWindow;
+ const auto PWORKSPACE = (CWorkspace*)av->m_pWorkspace;
+ const auto PLAYER = (SLayerSurface*)av->m_pLayer;
+ CMonitor* PMONITOR = nullptr;
+ bool animationsDisabled = animGlobalDisabled;
- wlr_box WLRBOXPREV = {0,0,0,0};
+ wlr_box WLRBOXPREV = {0, 0, 0, 0};
if (PWINDOW) {
- WLRBOXPREV = PWINDOW->getFullWindowBoundingBox();
- PMONITOR = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID);
+ WLRBOXPREV = PWINDOW->getFullWindowBoundingBox();
+ PMONITOR = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID);
animationsDisabled = animationsDisabled || PWINDOW->m_sAdditionalConfigData.forceNoAnims;
} else if (PWORKSPACE) {
- PMONITOR = g_pCompositor->getMonitorFromID(PWORKSPACE->m_iMonitorID);
+ PMONITOR = g_pCompositor->getMonitorFromID(PWORKSPACE->m_iMonitorID);
WLRBOXPREV = {(int)PMONITOR->vecPosition.x, (int)PMONITOR->vecPosition.y, (int)PMONITOR->vecSize.x, (int)PMONITOR->vecSize.y};
} else if (PLAYER) {
WLRBOXPREV = PLAYER->geometry;
- PMONITOR = g_pCompositor->getMonitorFromVector(Vector2D(PLAYER->geometry.x, PLAYER->geometry.y) + Vector2D(PLAYER->geometry.width, PLAYER->geometry.height) / 2.f);
+ PMONITOR = g_pCompositor->getMonitorFromVector(Vector2D(PLAYER->geometry.x, PLAYER->geometry.y) + Vector2D(PLAYER->geometry.width, PLAYER->geometry.height) / 2.f);
}
// beziers are with a switch unforto
@@ -85,7 +85,7 @@ void CAnimationManager::tick() {
break;
}
- const auto DELTA = av->m_fGoal - av->m_fBegun;
+ const auto DELTA = av->m_fGoal - av->m_fBegun;
const auto BEZIER = m_mBezierCurves.find(av->m_pConfig->pValues->internalBezier);
if (BEZIER != m_mBezierCurves.end())
@@ -106,7 +106,7 @@ void CAnimationManager::tick() {
break;
}
- const auto DELTA = av->m_vGoal - av->m_vBegun;
+ const auto DELTA = av->m_vGoal - av->m_vBegun;
const auto BEZIER = m_mBezierCurves.find(av->m_pConfig->pValues->internalBezier);
if (BEZIER != m_mBezierCurves.end())
@@ -127,7 +127,7 @@ void CAnimationManager::tick() {
break;
}
- const auto DELTA = av->m_cGoal - av->m_cBegun;
+ const auto DELTA = av->m_cGoal - av->m_cBegun;
const auto BEZIER = m_mBezierCurves.find(av->m_pConfig->pValues->internalBezier);
if (BEZIER != m_mBezierCurves.end())
@@ -164,40 +164,45 @@ void CAnimationManager::tick() {
g_pHyprOpenGL->markBlurDirtyForMonitor(PMONITOR);
}
break;
- } case AVARDAMAGE_BORDER: {
+ }
+ case AVARDAMAGE_BORDER: {
RASSERT(PWINDOW, "Tried to AVARDAMAGE_BORDER a non-window AVAR!");
// damage only the border.
- static auto *const PROUNDING = &g_pConfigManager->getConfigValuePtr("decoration:rounding")->intValue;
- const auto ROUNDINGSIZE = *PROUNDING + 1;
- const auto BORDERSIZE = *PBORDERSIZE;
+ static auto* const PROUNDING = &g_pConfigManager->getConfigValuePtr("decoration:rounding")->intValue;
+ const auto ROUNDINGSIZE = *PROUNDING + 1;
+ const auto BORDERSIZE = *PBORDERSIZE;
// damage for old box
- g_pHyprRenderer->damageBox(WLRBOXPREV.x - BORDERSIZE, WLRBOXPREV.y - BORDERSIZE, WLRBOXPREV.width + 2 * BORDERSIZE, BORDERSIZE + ROUNDINGSIZE); // top
- g_pHyprRenderer->damageBox(WLRBOXPREV.x - BORDERSIZE, WLRBOXPREV.y - BORDERSIZE, BORDERSIZE + ROUNDINGSIZE, WLRBOXPREV.height + 2 * BORDERSIZE); // left
- g_pHyprRenderer->damageBox(WLRBOXPREV.x + WLRBOXPREV.width - ROUNDINGSIZE, WLRBOXPREV.y - BORDERSIZE, BORDERSIZE + ROUNDINGSIZE, WLRBOXPREV.height + 2 * BORDERSIZE); // right
- g_pHyprRenderer->damageBox(WLRBOXPREV.x, WLRBOXPREV.y + WLRBOXPREV.height - ROUNDINGSIZE, WLRBOXPREV.width + 2 * BORDERSIZE, BORDERSIZE + ROUNDINGSIZE); // bottom
+ g_pHyprRenderer->damageBox(WLRBOXPREV.x - BORDERSIZE, WLRBOXPREV.y - BORDERSIZE, WLRBOXPREV.width + 2 * BORDERSIZE, BORDERSIZE + ROUNDINGSIZE); // top
+ g_pHyprRenderer->damageBox(WLRBOXPREV.x - BORDERSIZE, WLRBOXPREV.y - BORDERSIZE, BORDERSIZE + ROUNDINGSIZE, WLRBOXPREV.height + 2 * BORDERSIZE); // left
+ g_pHyprRenderer->damageBox(WLRBOXPREV.x + WLRBOXPREV.width - ROUNDINGSIZE, WLRBOXPREV.y - BORDERSIZE, BORDERSIZE + ROUNDINGSIZE,
+ WLRBOXPREV.height + 2 * BORDERSIZE); // right
+ g_pHyprRenderer->damageBox(WLRBOXPREV.x, WLRBOXPREV.y + WLRBOXPREV.height - ROUNDINGSIZE, WLRBOXPREV.width + 2 * BORDERSIZE, BORDERSIZE + ROUNDINGSIZE); // bottom
// damage for new box
const wlr_box WLRBOXNEW = {PWINDOW->m_vRealPosition.vec().x, PWINDOW->m_vRealPosition.vec().y, PWINDOW->m_vRealSize.vec().x, PWINDOW->m_vRealSize.vec().y};
- g_pHyprRenderer->damageBox(WLRBOXNEW.x - BORDERSIZE, WLRBOXNEW.y - BORDERSIZE, WLRBOXNEW.width + 2 * BORDERSIZE, BORDERSIZE + ROUNDINGSIZE); // top
- g_pHyprRenderer->damageBox(WLRBOXNEW.x - BORDERSIZE, WLRBOXNEW.y - BORDERSIZE, BORDERSIZE + ROUNDINGSIZE, WLRBOXNEW.height + 2 * BORDERSIZE); // left
- g_pHyprRenderer->damageBox(WLRBOXNEW.x + WLRBOXNEW.width - ROUNDINGSIZE, WLRBOXNEW.y - BORDERSIZE, BORDERSIZE + ROUNDINGSIZE, WLRBOXNEW.height + 2 * BORDERSIZE); // right
- g_pHyprRenderer->damageBox(WLRBOXNEW.x, WLRBOXNEW.y + WLRBOXNEW.height - ROUNDINGSIZE, WLRBOXNEW.width + 2 * BORDERSIZE, BORDERSIZE + ROUNDINGSIZE); // bottom
+ g_pHyprRenderer->damageBox(WLRBOXNEW.x - BORDERSIZE, WLRBOXNEW.y - BORDERSIZE, WLRBOXNEW.width + 2 * BORDERSIZE, BORDERSIZE + ROUNDINGSIZE); // top
+ g_pHyprRenderer->damageBox(WLRBOXNEW.x - BORDERSIZE, WLRBOXNEW.y - BORDERSIZE, BORDERSIZE + ROUNDINGSIZE, WLRBOXNEW.height + 2 * BORDERSIZE); // left
+ g_pHyprRenderer->damageBox(WLRBOXNEW.x + WLRBOXNEW.width - ROUNDINGSIZE, WLRBOXNEW.y - BORDERSIZE, BORDERSIZE + ROUNDINGSIZE,
+ WLRBOXNEW.height + 2 * BORDERSIZE); // right
+ g_pHyprRenderer->damageBox(WLRBOXNEW.x, WLRBOXNEW.y + WLRBOXNEW.height - ROUNDINGSIZE, WLRBOXNEW.width + 2 * BORDERSIZE, BORDERSIZE + ROUNDINGSIZE); // bottom
break;
- } case AVARDAMAGE_SHADOW: {
+ }
+ case AVARDAMAGE_SHADOW: {
RASSERT(PWINDOW, "Tried to AVARDAMAGE_SHADOW a non-window AVAR!");
- static auto *const PSHADOWIGNOREWINDOW = &g_pConfigManager->getConfigValuePtr("decoration:shadow_ignore_window")->intValue;
+ static auto* const PSHADOWIGNOREWINDOW = &g_pConfigManager->getConfigValuePtr("decoration:shadow_ignore_window")->intValue;
- const auto PDECO = PWINDOW->getDecorationByType(DECORATION_SHADOW);
+ const auto PDECO = PWINDOW->getDecorationByType(DECORATION_SHADOW);
if (PDECO) {
const auto EXTENTS = PDECO->getWindowDecorationExtents();
- wlr_box dmg = {PWINDOW->m_vRealPosition.vec().x - EXTENTS.topLeft.x, PWINDOW->m_vRealPosition.vec().y - EXTENTS.topLeft.y,
- PWINDOW->m_vRealSize.vec().x + EXTENTS.topLeft.x + EXTENTS.bottomRight.x, PWINDOW->m_vRealSize.vec().y + EXTENTS.topLeft.y + EXTENTS.bottomRight.y};
+ wlr_box dmg = {PWINDOW->m_vRealPosition.vec().x - EXTENTS.topLeft.x, PWINDOW->m_vRealPosition.vec().y - EXTENTS.topLeft.y,
+ PWINDOW->m_vRealSize.vec().x + EXTENTS.topLeft.x + EXTENTS.bottomRight.x,
+ PWINDOW->m_vRealSize.vec().y + EXTENTS.topLeft.y + EXTENTS.bottomRight.y};
if (!*PSHADOWIGNOREWINDOW) {
// easy, damage the entire box
@@ -206,7 +211,8 @@ void CAnimationManager::tick() {
pixman_region32_t rg;
pixman_region32_init_rect(&rg, dmg.x, dmg.y, dmg.width, dmg.height);
pixman_region32_t wb;
- pixman_region32_init_rect(&wb, PWINDOW->m_vRealPosition.vec().x, PWINDOW->m_vRealPosition.vec().y, PWINDOW->m_vRealSize.vec().x, PWINDOW->m_vRealSize.vec().y);
+ pixman_region32_init_rect(&wb, PWINDOW->m_vRealPosition.vec().x, PWINDOW->m_vRealPosition.vec().y, PWINDOW->m_vRealSize.vec().x,
+ PWINDOW->m_vRealSize.vec().y);
pixman_region32_subtract(&rg, &rg, &wb);
g_pHyprRenderer->damageRegion(&rg);
pixman_region32_fini(&rg);
@@ -265,7 +271,7 @@ bool CAnimationManager::deltazero(const CColor& a, const CColor& b) {
}
bool CAnimationManager::bezierExists(const std::string& bezier) {
- for (auto&[bc, bz] : m_mBezierCurves) {
+ for (auto& [bc, bz] : m_mBezierCurves) {
if (bc == bezier)
return true;
}
@@ -279,33 +285,37 @@ bool CAnimationManager::bezierExists(const std::string& bezier) {
//
void CAnimationManager::animationPopin(CWindow* pWindow, bool close, float minPerc) {
- const auto GOALPOS = pWindow->m_vRealPosition.goalv();
+ const auto GOALPOS = pWindow->m_vRealPosition.goalv();
const auto GOALSIZE = pWindow->m_vRealSize.goalv();
if (!close) {
pWindow->m_vRealSize.setValue((GOALSIZE * minPerc).clamp({5, 5}, {GOALSIZE.x, GOALSIZE.y}));
pWindow->m_vRealPosition.setValue(GOALPOS + GOALSIZE / 2.f - pWindow->m_vRealSize.m_vValue / 2.f);
} else {
- pWindow->m_vRealSize = (GOALSIZE * minPerc).clamp({5, 5}, {GOALSIZE.x, GOALSIZE.y});
+ pWindow->m_vRealSize = (GOALSIZE * minPerc).clamp({5, 5}, {GOALSIZE.x, GOALSIZE.y});
pWindow->m_vRealPosition = GOALPOS + GOALSIZE / 2.f - pWindow->m_vRealSize.m_vGoal / 2.f;
}
}
void CAnimationManager::animationSlide(CWindow* pWindow, std::string force, bool close) {
- pWindow->m_vRealSize.warp(false); // size we preserve in slide
+ pWindow->m_vRealSize.warp(false); // size we preserve in slide
- const auto GOALPOS = pWindow->m_vRealPosition.goalv();
+ const auto GOALPOS = pWindow->m_vRealPosition.goalv();
const auto GOALSIZE = pWindow->m_vRealSize.goalv();
const auto PMONITOR = g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID);
- Vector2D posOffset;
+ Vector2D posOffset;
if (force != "") {
- if (force == "bottom") posOffset = Vector2D(GOALPOS.x, PMONITOR->vecPosition.y + PMONITOR->vecSize.y);
- else if (force == "left") posOffset = GOALPOS - Vector2D(GOALSIZE.x, 0);
- else if (force == "right") posOffset = GOALPOS + Vector2D(GOALSIZE.x, 0);
- else posOffset = Vector2D(GOALPOS.x, PMONITOR->vecPosition.y - GOALSIZE.y);
+ if (force == "bottom")
+ posOffset = Vector2D(GOALPOS.x, PMONITOR->vecPosition.y + PMONITOR->vecSize.y);
+ else if (force == "left")
+ posOffset = GOALPOS - Vector2D(GOALSIZE.x, 0);
+ else if (force == "right")
+ posOffset = GOALPOS + Vector2D(GOALSIZE.x, 0);
+ else
+ posOffset = Vector2D(GOALPOS.x, PMONITOR->vecPosition.y - GOALSIZE.y);
if (!close)
pWindow->m_vRealPosition.setValue(posOffset);
@@ -318,9 +328,9 @@ void CAnimationManager::animationSlide(CWindow* pWindow, std::string force, bool
const auto MIDPOINT = GOALPOS + GOALSIZE / 2.f;
// check sides it touches
- const bool DISPLAYLEFT = STICKS(pWindow->m_vPosition.x, PMONITOR->vecPosition.x + PMONITOR->vecReservedTopLeft.x);
- const bool DISPLAYRIGHT = STICKS(pWindow->m_vPosition.x + pWindow->m_vSize.x, PMONITOR->vecPosition.x + PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x);
- const bool DISPLAYTOP = STICKS(pWindow->m_vPosition.y, PMONITOR->vecPosition.y + PMONITOR->vecReservedTopLeft.y);
+ const bool DISPLAYLEFT = STICKS(pWindow->m_vPosition.x, PMONITOR->vecPosition.x + PMONITOR->vecReservedTopLeft.x);
+ const bool DISPLAYRIGHT = STICKS(pWindow->m_vPosition.x + pWindow->m_vSize.x, PMONITOR->vecPosition.x + PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x);
+ const bool DISPLAYTOP = STICKS(pWindow->m_vPosition.y, PMONITOR->vecPosition.y + PMONITOR->vecReservedTopLeft.y);
const bool DISPLAYBOTTOM = STICKS(pWindow->m_vPosition.y + pWindow->m_vSize.y, PMONITOR->vecPosition.y + PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y);
if (DISPLAYBOTTOM && DISPLAYTOP) {
@@ -351,12 +361,12 @@ void CAnimationManager::animationSlide(CWindow* pWindow, std::string force, bool
void CAnimationManager::onWindowPostCreateClose(CWindow* pWindow, bool close) {
if (!close) {
pWindow->m_vRealPosition.m_pConfig = g_pConfigManager->getAnimationPropertyConfig("windowsIn");
- pWindow->m_vRealSize.m_pConfig = g_pConfigManager->getAnimationPropertyConfig("windowsIn");
- pWindow->m_fAlpha.m_pConfig = g_pConfigManager->getAnimationPropertyConfig("fadeIn");
+ pWindow->m_vRealSize.m_pConfig = g_pConfigManager->getAnimationPropertyConfig("windowsIn");
+ pWindow->m_fAlpha.m_pConfig = g_pConfigManager->getAnimationPropertyConfig("fadeIn");
} else {
pWindow->m_vRealPosition.m_pConfig = g_pConfigManager->getAnimationPropertyConfig("windowsOut");
- pWindow->m_vRealSize.m_pConfig = g_pConfigManager->getAnimationPropertyConfig("windowsOut");
- pWindow->m_fAlpha.m_pConfig = g_pConfigManager->getAnimationPropertyConfig("fadeOut");
+ pWindow->m_vRealSize.m_pConfig = g_pConfigManager->getAnimationPropertyConfig("windowsOut");
+ pWindow->m_fAlpha.m_pConfig = g_pConfigManager->getAnimationPropertyConfig("fadeOut");
}
auto ANIMSTYLE = pWindow->m_vRealPosition.m_pConfig->pValues->internalStyle;
@@ -386,7 +396,7 @@ void CAnimationManager::onWindowPostCreateClose(CWindow* pWindow, bool close) {
if (pWindow->m_sAdditionalConfigData.animationStyle.find("%") != std::string::npos) {
try {
auto percstr = pWindow->m_sAdditionalConfigData.animationStyle.substr(pWindow->m_sAdditionalConfigData.animationStyle.find_last_of(' '));
- minPerc = std::stoi(percstr.substr(0, percstr.length() - 1));
+ minPerc = std::stoi(percstr.substr(0, percstr.length() - 1));
} catch (std::exception& e) {
; // oops
}
@@ -404,7 +414,7 @@ void CAnimationManager::onWindowPostCreateClose(CWindow* pWindow, bool close) {
if (ANIMSTYLE.find("%") != 0) {
try {
auto percstr = ANIMSTYLE.substr(ANIMSTYLE.find_last_of(' '));
- minPerc = std::stoi(percstr.substr(0, percstr.length() - 1));
+ minPerc = std::stoi(percstr.substr(0, percstr.length() - 1));
} catch (std::exception& e) {
; // oops
}
@@ -425,10 +435,8 @@ std::string CAnimationManager::styleValidInConfigVar(const std::string& config,
if (style.find("%") != std::string::npos) {
try {
auto percstr = style.substr(style.find_last_of(' '));
- minPerc = std::stoi(percstr.substr(0, percstr.length() - 1));
- } catch (std::exception& e) {
- return "invalid minperc";
- }
+ minPerc = std::stoi(percstr.substr(0, percstr.length() - 1));
+ } catch (std::exception& e) { return "invalid minperc"; }
return "";
}
diff --git a/src/managers/AnimationManager.hpp b/src/managers/AnimationManager.hpp
index b3148d25..3a2905b0 100644
--- a/src/managers/AnimationManager.hpp
+++ b/src/managers/AnimationManager.hpp
@@ -8,35 +8,34 @@
#include "../Window.hpp"
class CAnimationManager {
-public:
-
+ public:
CAnimationManager();
- void tick();
- void addBezierWithName(std::string, const Vector2D&, const Vector2D&);
- void removeAllBeziers();
+ void tick();
+ void addBezierWithName(std::string, const Vector2D&, const Vector2D&);
+ void removeAllBeziers();
- void onWindowPostCreateClose(CWindow*, bool close = false);
+ void onWindowPostCreateClose(CWindow*, bool close = false);
- bool bezierExists(const std::string&);
+ bool bezierExists(const std::string&);
- std::string styleValidInConfigVar(const std::string&, const std::string&);
+ std::string styleValidInConfigVar(const std::string&, const std::string&);
std::list<CAnimatedVariable*> m_lAnimatedVariables;
-private:
- bool deltaSmallToFlip(const Vector2D& a, const Vector2D& b);
- bool deltaSmallToFlip(const CColor& a, const CColor& b);
- bool deltaSmallToFlip(const float& a, const float& b);
- bool deltazero(const Vector2D& a, const Vector2D& b);
- bool deltazero(const CColor& a, const CColor& b);
- bool deltazero(const float& a, const float& b);
+ private:
+ bool deltaSmallToFlip(const Vector2D& a, const Vector2D& b);
+ bool deltaSmallToFlip(const CColor& a, const CColor& b);
+ bool deltaSmallToFlip(const float& a, const float& b);
+ bool deltazero(const Vector2D& a, const Vector2D& b);
+ bool deltazero(const CColor& a, const CColor& b);
+ bool deltazero(const float& a, const float& b);
std::unordered_map<std::string, CBezierCurve> m_mBezierCurves;
// Anim stuff
- void animationPopin(CWindow*, bool close = false, float minPerc = 0.f);
- void animationSlide(CWindow*, std::string force = "", bool close = false);
+ void animationPopin(CWindow*, bool close = false, float minPerc = 0.f);
+ void animationSlide(CWindow*, std::string force = "", bool close = false);
};
inline std::unique_ptr<CAnimationManager> g_pAnimationManager; \ No newline at end of file
diff --git a/src/managers/EventManager.cpp b/src/managers/EventManager.cpp
index e1b3d26b..81acd379 100644
--- a/src/managers/EventManager.cpp
+++ b/src/managers/EventManager.cpp
@@ -15,14 +15,13 @@
#include <string>
-CEventManager::CEventManager() {
-}
+CEventManager::CEventManager() {}
int fdHandleWrite(int fd, uint32_t mask, void* data) {
if (mask & WL_EVENT_ERROR || mask & WL_EVENT_HANGUP) {
// remove, hanged up
const auto ACCEPTEDFDS = (std::deque<std::pair<int, wl_event_source*>>*)data;
- for (auto it = ACCEPTEDFDS->begin(); it != ACCEPTEDFDS->end(); ) {
+ for (auto it = ACCEPTEDFDS->begin(); it != ACCEPTEDFDS->end();) {
if (it->first == fd) {
wl_event_source_remove(it->second); // remove this fd listener
it = ACCEPTEDFDS->erase(it);
@@ -45,7 +44,7 @@ void CEventManager::startThread() {
}
sockaddr_un SERVERADDRESS = {.sun_family = AF_UNIX};
- std::string socketPath = "/tmp/hypr/" + g_pCompositor->m_szInstanceSignature + "/.socket2.sock";
+ std::string socketPath = "/tmp/hypr/" + g_pCompositor->m_szInstanceSignature + "/.socket2.sock";
strcpy(SERVERADDRESS.sun_path, socketPath.c_str());
bind(SOCKET, (sockaddr*)&SERVERADDRESS, SUN_LEN(&SERVERADDRESS));
@@ -54,7 +53,7 @@ void CEventManager::startThread() {
listen(SOCKET, 10);
sockaddr_in clientAddress;
- socklen_t clientSize = sizeof(clientAddress);
+ socklen_t clientSize = sizeof(clientAddress);
Debug::log(LOG, "Hypr socket 2 started at %s", socketPath.c_str());
@@ -70,7 +69,8 @@ void CEventManager::startThread() {
Debug::log(LOG, "Socket 2 accepted a new client at FD %d", ACCEPTEDCONNECTION);
// add to event loop so we can close it when we need to
- m_dAcceptedSocketFDs.push_back({ACCEPTEDCONNECTION, wl_event_loop_add_fd(g_pCompositor->m_sWLEventLoop, ACCEPTEDCONNECTION, WL_EVENT_READABLE, fdHandleWrite, &m_dAcceptedSocketFDs)});
+ m_dAcceptedSocketFDs.push_back(
+ {ACCEPTEDCONNECTION, wl_event_loop_add_fd(g_pCompositor->m_sWLEventLoop, ACCEPTEDCONNECTION, WL_EVENT_READABLE, fdHandleWrite, &m_dAcceptedSocketFDs)});
}
}
@@ -98,15 +98,18 @@ void CEventManager::flushEvents() {
void CEventManager::postEvent(const SHyprIPCEvent event, bool force) {
if ((m_bIgnoreEvents && !force) || g_pCompositor->m_bIsShuttingDown) {
- Debug::log(WARN, "Suppressed (ignoreevents true / shutting down) event of type %s, content: %s",event.event.c_str(), event.data.c_str());
+ Debug::log(WARN, "Suppressed (ignoreevents true / shutting down) event of type %s, content: %s", event.event.c_str(), event.data.c_str());
return;
}
- std::thread([&](const SHyprIPCEvent ev) {
- eventQueueMutex.lock();
- m_dQueuedEvents.push_back(ev);
- eventQueueMutex.unlock();
+ std::thread(
+ [&](const SHyprIPCEvent ev) {
+ eventQueueMutex.lock();
+ m_dQueuedEvents.push_back(ev);
+ eventQueueMutex.unlock();
- flushEvents();
- }, event).detach();
+ flushEvents();
+ },
+ event)
+ .detach();
}
diff --git a/src/managers/EventManager.hpp b/src/managers/EventManager.hpp
index 348e3361..dbb1e8a1 100644
--- a/src/managers/EventManager.hpp
+++ b/src/managers/EventManager.hpp
@@ -12,23 +12,22 @@ struct SHyprIPCEvent {
};
class CEventManager {
-public:
+ public:
CEventManager();
- void postEvent(const SHyprIPCEvent event, bool force = false);
+ void postEvent(const SHyprIPCEvent event, bool force = false);
- void startThread();
+ void startThread();
- bool m_bIgnoreEvents = false;
+ bool m_bIgnoreEvents = false;
std::thread m_tThread;
-private:
+ private:
+ void flushEvents();
- void flushEvents();
-
- std::mutex eventQueueMutex;
- std::deque<SHyprIPCEvent> m_dQueuedEvents;
+ std::mutex eventQueueMutex;
+ std::deque<SHyprIPCEvent> m_dQueuedEvents;
std::deque<std::pair<int, wl_event_source*>> m_dAcceptedSocketFDs;
};
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index 388a1df4..a2de8162 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -5,47 +5,47 @@
CKeybindManager::CKeybindManager() {
// initialize all dispatchers
- m_mDispatchers["exec"] = spawn;
- m_mDispatchers["killactive"] = killActive;
- m_mDispatchers["closewindow"] = kill;
- m_mDispatchers["togglefloating"] = toggleActiveFloating;
- m_mDispatchers["workspace"] = changeworkspace;
- m_mDispatchers["fullscreen"] = fullscreenActive;
- m_mDispatchers["movetoworkspace"] = moveActiveToWorkspace;
- m_mDispatchers["movetoworkspacesilent"] = moveActiveToWorkspaceSilent;
- m_mDispatchers["pseudo"] = toggleActivePseudo;
- m_mDispatchers["movefocus"] = moveFocusTo;
- m_mDispatchers["movewindow"] = moveActiveTo;
- m_mDispatchers["centerwindow"] = centerWindow;
- m_mDispatchers["togglegroup"] = toggleGroup;
- m_mDispatchers["changegroupactive"] = changeGroupActive;
- m_mDispatchers["togglesplit"] = toggleSplit;
- m_mDispatchers["splitratio"] = alterSplitRatio;
- m_mDispatchers["focusmonitor"] = focusMonitor;
- m_mDispatchers["movecursortocorner"] = moveCursorToCorner;
- m_mDispatchers["workspaceopt"] = workspaceOpt;
- m_mDispatchers["exit"] = exitHyprland;
+ m_mDispatchers["exec"] = spawn;
+ m_mDispatchers["killactive"] = killActive;
+ m_mDispatchers["closewindow"] = kill;
+ m_mDispatchers["togglefloating"] = toggleActiveFloating;
+ m_mDispatchers["workspace"] = changeworkspace;
+ m_mDispatchers["fullscreen"] = fullscreenActive;
+ m_mDispatchers["movetoworkspace"] = moveActiveToWorkspace;
+ m_mDispatchers["movetoworkspacesilent"] = moveActiveToWorkspaceSilent;
+ m_mDispatchers["pseudo"] = toggleActivePseudo;
+ m_mDispatchers["movefocus"] = moveFocusTo;
+ m_mDispatchers["movewindow"] = moveActiveTo;
+ m_mDispatchers["centerwindow"] = centerWindow;
+ m_mDispatchers["togglegroup"] = toggleGroup;
+ m_mDispatchers["changegroupactive"] = changeGroupActive;
+ m_mDispatchers["togglesplit"] = toggleSplit;
+ m_mDispatchers["splitratio"] = alterSplitRatio;
+ m_mDispatchers["focusmonitor"] = focusMonitor;
+ m_mDispatchers["movecursortocorner"] = moveCursorToCorner;
+ m_mDispatchers["workspaceopt"] = workspaceOpt;
+ m_mDispatchers["exit"] = exitHyprland;
m_mDispatchers["movecurrentworkspacetomonitor"] = moveCurrentWorkspaceToMonitor;
- m_mDispatchers["moveworkspacetomonitor"] = moveWorkspaceToMonitor;
- m_mDispatchers["togglespecialworkspace"] = toggleSpecialWorkspace;
- m_mDispatchers["forcerendererreload"] = forceRendererReload;
- m_mDispatchers["resizeactive"] = resizeActive;
- m_mDispatchers["moveactive"] = moveActive;
- m_mDispatchers["cyclenext"] = circleNext;
- m_mDispatchers["focuswindowbyclass"] = focusWindow;
- m_mDispatchers["focuswindow"] = focusWindow;
- m_mDispatchers["submap"] = setSubmap;
- m_mDispatchers["pass"] = pass;
- m_mDispatchers["layoutmsg"] = layoutmsg;
- m_mDispatchers["toggleopaque"] = toggleOpaque;
- m_mDispatchers["dpms"] = dpms;
- m_mDispatchers["movewindowpixel"] = moveWindow;
- m_mDispatchers["resizewindowpixel"] = resizeWindow;
- m_mDispatchers["swapnext"] = swapnext;
- m_mDispatchers["swapactiveworkspaces"] = swapActiveWorkspaces;
- m_mDispatchers["pin"] = pinActive;
- m_mDispatchers["mouse"] = mouse;
- m_mDispatchers["bringactivetotop"] = bringActiveToTop;
+ m_mDispatchers["moveworkspacetomonitor"] = moveWorkspaceToMonitor;
+ m_mDispatchers["togglespecialworkspace"] = toggleSpecialWorkspace;
+ m_mDispatchers["forcerendererreload"] = forceRendererReload;
+ m_mDispatchers["resizeactive"] = resizeActive;
+ m_mDispatchers["moveactive"] = moveActive;
+ m_mDispatchers["cyclenext"] = circleNext;
+ m_mDispatchers["focuswindowbyclass"] = focusWindow;
+ m_mDispatchers["focuswindow"] = focusWindow;
+ m_mDispatchers["submap"] = setSubmap;
+ m_mDispatchers["pass"] = pass;
+ m_mDispatchers["layoutmsg"] = layoutmsg;
+ m_mDispatchers["toggleopaque"] = toggleOpaque;
+ m_mDispatchers["dpms"] = dpms;
+ m_mDispatchers["movewindowpixel"] = moveWindow;
+ m_mDispatchers["resizewindowpixel"] = resizeWindow;
+ m_mDispatchers["swapnext"] = swapnext;
+ m_mDispatchers["swapactiveworkspaces"] = swapActiveWorkspaces;
+ m_mDispatchers["pin"] = pinActive;
+ m_mDispatchers["mouse"] = mouse;
+ m_mDispatchers["bringactivetotop"] = bringActiveToTop;
m_tScrollTimer.reset();
}
@@ -67,8 +67,7 @@ void CKeybindManager::removeKeybind(uint32_t mod, const std::string& key) {
if (it == m_lKeybinds.end())
break;
}
- }
- else if (it->modmask == mod && it->key == key) {
+ } else if (it->modmask == mod && it->key == key) {
it = m_lKeybinds.erase(it);
if (it == m_lKeybinds.end())
@@ -109,28 +108,27 @@ void CKeybindManager::updateXKBTranslationState() {
m_pXKBTranslationState = nullptr;
}
- const auto FILEPATH = g_pConfigManager->getString("input:kb_file");
- const auto RULES = g_pConfigManager->getString("input:kb_rules");
- const auto MODEL = g_pConfigManager->getString("input:kb_model");
- const auto LAYOUT = g_pConfigManager->getString("input:kb_layout");
- const auto VARIANT = g_pConfigManager->getString("input:kb_variant");
- const auto OPTIONS = g_pConfigManager->getString("input:kb_options");
+ const auto FILEPATH = g_pConfigManager->getString("input:kb_file");
+ const auto RULES = g_pConfigManager->getString("input:kb_rules");
+ const auto MODEL = g_pConfigManager->getString("input:kb_model");
+ const auto LAYOUT = g_pConfigManager->getString("input:kb_layout");
+ const auto VARIANT = g_pConfigManager->getString("input:kb_variant");
+ const auto OPTIONS = g_pConfigManager->getString("input:kb_options");
- xkb_rule_names rules = {
- .rules = RULES.c_str(),
- .model = MODEL.c_str(),
- .layout = LAYOUT.c_str(),
- .variant = VARIANT.c_str(),
- .options = OPTIONS.c_str()};
+ xkb_rule_names rules = {.rules = RULES.c_str(), .model = MODEL.c_str(), .layout = LAYOUT.c_str(), .variant = VARIANT.c_str(), .options = OPTIONS.c_str()};
- const auto PCONTEXT = xkb_context_new(XKB_CONTEXT_NO_FLAGS);
+ const auto PCONTEXT = xkb_context_new(XKB_CONTEXT_NO_FLAGS);
- auto PKEYMAP = FILEPATH == "" ? xkb_keymap_new_from_names(PCONTEXT, &rules, XKB_KEYMAP_COMPILE_NO_FLAGS) : xkb_keymap_new_from_file(PCONTEXT, fopen(FILEPATH.c_str(), "r"), XKB_KEYMAP_FORMAT_TEXT_V1, XKB_KEYMAP_COMPILE_NO_FLAGS);
+ auto PKEYMAP = FILEPATH == "" ? xkb_keymap_new_from_names(PCONTEXT, &rules, XKB_KEYMAP_COMPILE_NO_FLAGS) :
+ xkb_keymap_new_from_file(PCONTEXT, fopen(FILEPATH.c_str(), "r"), XKB_KEYMAP_FORMAT_TEXT_V1, XKB_KEYMAP_COMPILE_NO_FLAGS);
if (!PKEYMAP) {
- g_pHyprError->queueCreate("[Runtime Error] Invalid keyboard layout passed. ( rules: " + RULES + ", model: " + MODEL + ", variant: " + VARIANT + ", options: " + OPTIONS + ", layout: " + LAYOUT + " )", CColor(255, 50, 50, 255));
+ g_pHyprError->queueCreate("[Runtime Error] Invalid keyboard layout passed. ( rules: " + RULES + ", model: " + MODEL + ", variant: " + VARIANT + ", options: " + OPTIONS +
+ ", layout: " + LAYOUT + " )",
+ CColor(255, 50, 50, 255));
- Debug::log(ERR, "[XKBTranslationState] Keyboard layout %s with variant %s (rules: %s, model: %s, options: %s) couldn't have been loaded.", rules.layout, rules.variant, rules.rules, rules.model, rules.options);
+ Debug::log(ERR, "[XKBTranslationState] Keyboard layout %s with variant %s (rules: %s, model: %s, options: %s) couldn't have been loaded.", rules.layout, rules.variant,
+ rules.rules, rules.model, rules.options);
memset(&rules, 0, sizeof(rules));
PKEYMAP = xkb_keymap_new_from_names(PCONTEXT, &rules, XKB_KEYMAP_COMPILE_NO_FLAGS);
@@ -148,7 +146,7 @@ bool CKeybindManager::ensureMouseBindState() {
m_bIsMouseBindActive = false;
g_pLayoutManager->getCurrentLayout()->onEndDragWindow();
g_pInputManager->currentlyDraggedWindow = nullptr;
- g_pInputManager->dragMode = MBIND_INVALID;
+ g_pInputManager->dragMode = MBIND_INVALID;
return true;
}
@@ -176,9 +174,9 @@ bool CKeybindManager::onKeyEvent(wlr_keyboard_key_event* e, SKeyboard* pKeyboard
return true;
}
- const auto KEYCODE = e->keycode + 8; // Because to xkbcommon it's +8 from libinput
+ const auto KEYCODE = e->keycode + 8; // Because to xkbcommon it's +8 from libinput
- const xkb_keysym_t keysym = xkb_state_key_get_one_sym(m_pXKBTranslationState, KEYCODE);
+ const xkb_keysym_t keysym = xkb_state_key_get_one_sym(m_pXKBTranslationState, KEYCODE);
const xkb_keysym_t internalKeysym = xkb_state_key_get_one_sym(wlr_keyboard_from_input_device(pKeyboard->keyboard)->xkb_state, KEYCODE);
if (handleInternalKeybinds(internalKeysym))
@@ -186,8 +184,8 @@ bool CKeybindManager::onKeyEvent(wlr_keyboard_key_event* e, SKeyboard* pKeyboard
const auto MODS = g_pInputManager->accumulateModsFromAllKBs();
- m_uTimeLastMs = e->time_msec;
- m_uLastCode = KEYCODE;
+ m_uTimeLastMs = e->time_msec;
+ m_uLastCode = KEYCODE;
m_uLastMouseCode = 0;
bool mouseBindWasActive = ensureMouseBindState();
@@ -198,7 +196,7 @@ bool CKeybindManager::onKeyEvent(wlr_keyboard_key_event* e, SKeyboard* pKeyboard
if (m_pActiveKeybindEventSource) {
wl_event_source_remove(m_pActiveKeybindEventSource);
m_pActiveKeybindEventSource = nullptr;
- m_pActiveKeybind = nullptr;
+ m_pActiveKeybind = nullptr;
}
m_dPressedKeycodes.push_back(KEYCODE);
@@ -215,7 +213,7 @@ bool CKeybindManager::onKeyEvent(wlr_keyboard_key_event* e, SKeyboard* pKeyboard
if (m_pActiveKeybindEventSource) {
wl_event_source_remove(m_pActiveKeybindEventSource);
m_pActiveKeybindEventSource = nullptr;
- m_pActiveKeybind = nullptr;
+ m_pActiveKeybind = nullptr;
}
m_dPressedKeycodes.erase(std::remove(m_dPressedKeycodes.begin(), m_dPressedKeycodes.end(), KEYCODE), m_dPressedKeycodes.end());
@@ -232,9 +230,9 @@ bool CKeybindManager::onKeyEvent(wlr_keyboard_key_event* e, SKeyboard* pKeyboard
}
bool CKeybindManager::onAxisEvent(wlr_pointer_axis_event* e) {
- const auto MODS = g_pInputManager->accumulateModsFromAllKBs();
+ const auto MODS = g_pInputManager->accumulateModsFromAllKBs();
- static auto *const PDELAY = &g_pConfigManager->getConfigValuePtr("binds:scroll_event_delay")->intValue;
+ static auto* const PDELAY = &g_pConfigManager->getConfigValuePtr("binds:scroll_event_delay")->intValue;
if (m_tScrollTimer.getMillis() < *PDELAY) {
m_tScrollTimer.reset();
@@ -261,11 +259,11 @@ bool CKeybindManager::onAxisEvent(wlr_pointer_axis_event* e) {
bool CKeybindManager::onMouseEvent(wlr_pointer_button_event* e) {
const auto MODS = g_pInputManager->accumulateModsFromAllKBs();
- bool found = false;
+ bool found = false;
m_uLastMouseCode = e->button;
- m_uLastCode = 0;
- m_uTimeLastMs = e->time_msec;
+ m_uLastCode = 0;
+ m_uTimeLastMs = e->time_msec;
bool mouseBindWasActive = ensureMouseBindState();
@@ -316,7 +314,8 @@ bool CKeybindManager::handleKeybinds(const uint32_t& modmask, const std::string&
}
for (auto& k : m_lKeybinds) {
- if (modmask != k.modmask || (g_pCompositor->m_sSeat.exclusiveClient && !k.locked) || k.submap != m_szCurrentSelectedSubmap || (!pressed && !k.release && k.handler != "pass" && k.handler != "mouse") || k.shadowed)
+ if (modmask != k.modmask || (g_pCompositor->m_sSeat.exclusiveClient && !k.locked) || k.submap != m_szCurrentSelectedSubmap ||
+ (!pressed && !k.release && k.handler != "pass" && k.handler != "mouse") || k.shadowed)
continue;
if (!key.empty()) {
@@ -327,11 +326,11 @@ bool CKeybindManager::handleKeybinds(const uint32_t& modmask, const std::string&
continue;
} else {
if (keysym == 0)
- continue; // this is a keycode check run
+ continue; // this is a keycode check run
// oMg such performance hit!!11!
// this little maneouver is gonna cost us 4µs
- const auto KBKEY = xkb_keysym_from_name(k.key.c_str(), XKB_KEYSYM_CASE_INSENSITIVE);
+ const auto KBKEY = xkb_keysym_from_name(k.key.c_str(), XKB_KEYSYM_CASE_INSENSITIVE);
const auto KBKEYUPPER = xkb_keysym_to_upper(KBKEY);
// small TODO: fix 0-9 keys and other modified ones with shift
@@ -370,7 +369,7 @@ bool CKeybindManager::handleKeybinds(const uint32_t& modmask, const std::string&
}
if (k.repeat) {
- m_pActiveKeybind = &k;
+ m_pActiveKeybind = &k;
m_pActiveKeybindEventSource = wl_event_loop_add_timer(g_pCompositor->m_sWLEventLoop, repeatKeyHandler, &m_pActiveKeybind);
const auto PACTIVEKEEB = g_pInputManager->m_pActiveKeyboard;
@@ -389,9 +388,9 @@ void CKeybindManager::shadowKeybinds(const xkb_keysym_t& doesntHave, const int&
for (auto& k : m_lKeybinds) {
- bool shadow = false;
+ bool shadow = false;
- const auto KBKEY = xkb_keysym_from_name(k.key.c_str(), XKB_KEYSYM_CASE_INSENSITIVE);
+ const auto KBKEY = xkb_keysym_from_name(k.key.c_str(), XKB_KEYSYM_CASE_INSENSITIVE);
const auto KBKEYUPPER = xkb_keysym_to_upper(KBKEY);
for (auto& pk : m_dPressedKeysyms) {
@@ -433,10 +432,10 @@ bool CKeybindManager::handleVT(xkb_keysym_t keysym) {
// vtnr is bugged for some reason.
const std::string TTYSTR = execAndGet("head -n 1 /sys/devices/virtual/tty/tty0/active").substr(3);
- unsigned int ttynum = 0;
+ unsigned int ttynum = 0;
try {
ttynum = std::stoll(TTYSTR);
- } catch (std::exception &e) {
+ } catch (std::exception& e) {
; // oops?
}
@@ -452,7 +451,7 @@ bool CKeybindManager::handleVT(xkb_keysym_t keysym) {
for (auto& m : g_pCompositor->m_vMonitors) {
m->noFrameSchedule = true;
- m->framesToSkip = 1;
+ m->framesToSkip = 1;
}
Debug::log(LOG, "Switched to VT %i, destroyed all render data, frames to skip for each: 2", TTY);
@@ -491,7 +490,7 @@ void CKeybindManager::spawn(std::string args) {
if (args[0] == '[') {
// we have exec rules
RULES = args.substr(1, args.substr(1).find_first_of(']'));
- args = args.substr(args.find_first_of(']') + 1);
+ args = args.substr(args.find_first_of(']') + 1);
}
if (g_pXWaylandManager->m_sWLRXWayland)
@@ -613,7 +612,7 @@ void CKeybindManager::centerWindow(std::string args) {
const auto PMONITOR = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID);
PWINDOW->m_vRealPosition = PMONITOR->vecPosition + PMONITOR->vecSize / 2.f - PWINDOW->m_vRealSize.goalv() / 2.f;
- PWINDOW->m_vPosition = PWINDOW->m_vRealPosition.goalv();
+ PWINDOW->m_vPosition = PWINDOW->m_vRealPosition.goalv();
}
void CKeybindManager::toggleActivePseudo(std::string args) {
@@ -629,8 +628,8 @@ void CKeybindManager::toggleActivePseudo(std::string args) {
}
void CKeybindManager::changeworkspace(std::string args) {
- int workspaceToChangeTo = 0;
- std::string workspaceName = "";
+ int workspaceToChangeTo = 0;
+ std::string workspaceName = "";
// Flag needed so that the previous workspace is not recorded when switching
// to a previous workspace.
@@ -639,7 +638,7 @@ void CKeybindManager::changeworkspace(std::string args) {
bool internal = false;
if (args.find("[internal]") == 0) {
- workspaceToChangeTo = std::stoi(args.substr(10));
+ workspaceToChangeTo = std::stoi(args.substr(10));
const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(workspaceToChangeTo);
if (PWORKSPACE)
workspaceName = PWORKSPACE->m_szName;
@@ -664,7 +663,7 @@ void CKeybindManager::changeworkspace(std::string args) {
// If the previous workspace ID isn't reset, cycles can form when continually going
// to the previous workspace again and again.
- static auto *const PALLOWWORKSPACECYCLES = &g_pConfigManager->getConfigValuePtr("binds:allow_workspace_cycles")->intValue;
+ static auto* const PALLOWWORKSPACECYCLES = &g_pConfigManager->getConfigValuePtr("binds:allow_workspace_cycles")->intValue;
if (!*PALLOWWORKSPACECYCLES)
PCURRENTWORKSPACE->m_iPrevWorkspaceID = -1;
}
@@ -679,8 +678,8 @@ void CKeybindManager::changeworkspace(std::string args) {
// Workspace_back_and_forth being enabled means that an attempt to switch to
// the current workspace will instead switch to the previous.
- const auto PCURRENTWORKSPACE = g_pCompositor->getWorkspaceByID(g_pCompositor->m_pLastMonitor->activeWorkspace);
- static auto *const PBACKANDFORTH = &g_pConfigManager->getConfigValuePtr("binds:workspace_back_and_forth")->intValue;
+ const auto PCURRENTWORKSPACE = g_pCompositor->getWorkspaceByID(g_pCompositor->m_pLastMonitor->activeWorkspace);
+ static auto* const PBACKANDFORTH = &g_pConfigManager->getConfigValuePtr("binds:workspace_back_and_forth")->intValue;
if (*PBACKANDFORTH && PCURRENTWORKSPACE && PCURRENTWORKSPACE->m_iID == workspaceToChangeTo && PCURRENTWORKSPACE->m_iPrevWorkspaceID != -1 && !internal) {
@@ -874,7 +873,7 @@ void CKeybindManager::moveActiveToWorkspace(std::string args) {
if (args.contains(',')) {
PWINDOW = g_pCompositor->getWindowByRegex(args.substr(args.find_last_of(',') + 1));
- args = args.substr(0, args.find_last_of(','));
+ args = args.substr(0, args.find_last_of(','));
} else {
PWINDOW = g_pCompositor->m_pLastWindow;
}
@@ -886,7 +885,7 @@ void CKeybindManager::moveActiveToWorkspace(std::string args) {
// hack
std::string workspaceName;
- const auto WORKSPACEID = getWorkspaceIDFromString(args, workspaceName);
+ const auto WORKSPACEID = getWorkspaceIDFromString(args, workspaceName);
if (WORKSPACEID == INT_MAX) {
Debug::log(LOG, "Invalid workspace in moveActiveToWorkspace");
@@ -898,8 +897,8 @@ void CKeybindManager::moveActiveToWorkspace(std::string args) {
return;
}
- auto PSAVEDSIZE = PWINDOW->m_vRealSize.goalv();
- auto PSAVEDPOS = PWINDOW->m_vRealPosition.goalv();
+ auto PSAVEDSIZE = PWINDOW->m_vRealSize.goalv();
+ auto PSAVEDPOS = PWINDOW->m_vRealPosition.goalv();
const bool WASFULLSCREEN = PWINDOW->m_bIsFullscreen;
g_pLayoutManager->getCurrentLayout()->onWindowRemoved(PWINDOW);
@@ -931,7 +930,8 @@ void CKeybindManager::moveActiveToWorkspace(std::string args) {
// and restore it
if (PWINDOW->m_bIsFloating) {
PWINDOW->m_vRealSize.setValueAndWarp(PSAVEDSIZE);
- PWINDOW->m_vRealPosition.setValueAndWarp(PSAVEDPOS - g_pCompositor->getMonitorFromID(OLDWORKSPACE->m_iMonitorID)->vecPosition + g_pCompositor->getMonitorFromID(PWORKSPACE->m_iMonitorID)->vecPosition);
+ PWINDOW->m_vRealPosition.setValueAndWarp(PSAVEDPOS - g_pCompositor->getMonitorFromID(OLDWORKSPACE->m_iMonitorID)->vecPosition +
+ g_pCompositor->getMonitorFromID(PWORKSPACE->m_iMonitorID)->vecPosition);
PWINDOW->m_vPosition = PWINDOW->m_vRealPosition.vec();
}
@@ -952,13 +952,13 @@ void CKeybindManager::moveActiveToWorkspaceSilent(std::string args) {
// hacky, but works lol
// TODO: this sucks
- CWindow* PWINDOW = nullptr;
+ CWindow* PWINDOW = nullptr;
const auto ORIGINALARGS = args;
if (args.contains(',')) {
PWINDOW = g_pCompositor->getWindowByRegex(args.substr(args.find_last_of(',') + 1));
- args = args.substr(0, args.find_last_of(','));
+ args = args.substr(0, args.find_last_of(','));
} else {
PWINDOW = g_pCompositor->m_pLastWindow;
}
@@ -966,8 +966,8 @@ void CKeybindManager::moveActiveToWorkspaceSilent(std::string args) {
if (!PWINDOW)
return;
- int workspaceToMoveTo = 0;
- std::string workspaceName = "";
+ int workspaceToMoveTo = 0;
+ std::string workspaceName = "";
workspaceToMoveTo = getWorkspaceIDFromString(args, workspaceName);
@@ -992,9 +992,9 @@ void CKeybindManager::moveActiveToWorkspaceSilent(std::string args) {
}
const auto OLDWORKSPACEIDONMONITOR = PMONITORNEW->activeWorkspace;
- const auto OLDWORKSPACEIDRETURN = PMONITOR->activeWorkspace;
+ const auto OLDWORKSPACEIDRETURN = PMONITOR->activeWorkspace;
- const auto POLDWORKSPACEONMON = g_pCompositor->getWorkspaceByID(OLDWORKSPACEIDONMONITOR);
+ const auto POLDWORKSPACEONMON = g_pCompositor->getWorkspaceByID(OLDWORKSPACEIDONMONITOR);
const auto POLDWORKSPACEIDRETURN = g_pCompositor->getWorkspaceByID(OLDWORKSPACEIDRETURN);
g_pEventManager->m_bIgnoreEvents = true;
@@ -1007,7 +1007,7 @@ void CKeybindManager::moveActiveToWorkspaceSilent(std::string args) {
changeworkspace("[internal]" + std::to_string(OLDWORKSPACEIDRETURN));
// revert animations
- PWORKSPACE->m_vRenderOffset.setValueAndWarp(Vector2D(0,0));
+ PWORKSPACE->m_vRenderOffset.setValueAndWarp(Vector2D(0, 0));
PWORKSPACE->m_fAlpha.setValueAndWarp(0.f);
POLDWORKSPACEIDRETURN->m_vRenderOffset.setValueAndWarp(Vector2D(0, 0));
@@ -1021,9 +1021,9 @@ void CKeybindManager::moveActiveToWorkspaceSilent(std::string args) {
// manually post event cuz it got ignored above
g_pEventManager->postEvent(SHyprIPCEvent{"movewindow", getFormat("%x,%s", PWINDOW, PWORKSPACE->m_szName.c_str())});
- PWINDOW->m_iWorkspaceID = OLDWORKSPACEIDRETURN;
+ PWINDOW->m_iWorkspaceID = OLDWORKSPACEIDRETURN;
const auto PNEXTCANDIDATE = g_pLayoutManager->getCurrentLayout()->getNextWindowCandidate(PWINDOW);
- PWINDOW->m_iWorkspaceID = workspaceToMoveTo;
+ PWINDOW->m_iWorkspaceID = workspaceToMoveTo;
g_pCompositor->focusWindow(PNEXTCANDIDATE);
}
@@ -1045,10 +1045,9 @@ void CKeybindManager::moveFocusTo(std::string args) {
g_pInputManager->unconstrainMouse();
auto switchToWindow = [&](CWindow* PWINDOWTOCHANGETO) {
-
if (PLASTWINDOW->m_iWorkspaceID == PWINDOWTOCHANGETO->m_iWorkspaceID && PLASTWINDOW->m_bIsFullscreen) {
const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(PLASTWINDOW->m_iWorkspaceID);
- const auto FSMODE = PWORKSPACE->m_efFullscreenMode;
+ const auto FSMODE = PWORKSPACE->m_efFullscreenMode;
if (!PWINDOWTOCHANGETO->m_bPinned)
g_pCompositor->setWindowFullscreen(PLASTWINDOW, false, FULLSCREEN_FULL);
@@ -1084,7 +1083,7 @@ void CKeybindManager::moveFocusTo(std::string args) {
}
void CKeybindManager::moveActiveTo(std::string args) {
- char arg = args[0];
+ char arg = args[0];
const auto LASTMONITOR = g_pCompositor->m_pLastMonitor;
@@ -1202,15 +1201,18 @@ void CKeybindManager::moveCursorToCorner(std::string arg) {
switch (CORNER) {
case 0:
// bottom left
- wlr_cursor_warp(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sSeat.mouse->mouse, PWINDOW->m_vRealPosition.vec().x, PWINDOW->m_vRealPosition.vec().y + PWINDOW->m_vRealSize.vec().y);
+ wlr_cursor_warp(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sSeat.mouse->mouse, PWINDOW->m_vRealPosition.vec().x,
+ PWINDOW->m_vRealPosition.vec().y + PWINDOW->m_vRealSize.vec().y);
break;
case 1:
// bottom right
- wlr_cursor_warp(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sSeat.mouse->mouse, PWINDOW->m_vRealPosition.vec().x + PWINDOW->m_vRealSize.vec().x, PWINDOW->m_vRealPosition.vec().y + PWINDOW->m_vRealSize.vec().y);
+ wlr_cursor_warp(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sSeat.mouse->mouse, PWINDOW->m_vRealPosition.vec().x + PWINDOW->m_vRealSize.vec().x,
+ PWINDOW->m_vRealPosition.vec().y + PWINDOW->m_vRealSize.vec().y);
break;
case 2:
// top right
- wlr_cursor_warp(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sSeat.mouse->mouse, PWINDOW->m_vRealPosition.vec().x + PWINDOW->m_vRealSize.vec().x, PWINDOW->m_vRealPosition.vec().y);
+ wlr_cursor_warp(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sSeat.mouse->mouse, PWINDOW->m_vRealPosition.vec().x + PWINDOW->m_vRealSize.vec().x,
+ PWINDOW->m_vRealPosition.vec().y);
break;
case 3:
// top left
@@ -1251,7 +1253,7 @@ void CKeybindManager::workspaceOpt(std::string args) {
continue;
if (!w->m_bRequestsFloat && w->m_bIsFloating != PWORKSPACE->m_bDefaultFloating) {
- const auto SAVEDPOS = w->m_vRealPosition.vec();
+ const auto SAVEDPOS = w->m_vRealPosition.vec();
const auto SAVEDSIZE = w->m_vRealSize.vec();
w->m_bIsFloating = PWORKSPACE->m_bDefaultFloating;
@@ -1261,8 +1263,8 @@ void CKeybindManager::workspaceOpt(std::string args) {
w->m_vRealPosition.setValueAndWarp(SAVEDPOS);
w->m_vRealSize.setValueAndWarp(SAVEDSIZE);
g_pXWaylandManager->setWindowSize(w, SAVEDSIZE);
- w->m_vRealSize = w->m_vRealSize.vec() + Vector2D(4,4);
- w->m_vRealPosition = w->m_vRealPosition.vec() - Vector2D(2,2);
+ w->m_vRealSize = w->m_vRealSize.vec() + Vector2D(4, 4);
+ w->m_vRealPosition = w->m_vRealPosition.vec() - Vector2D(2, 2);
}
}
}
@@ -1299,17 +1301,17 @@ void CKeybindManager::moveWorkspaceToMonitor(std::string args) {
return;
std::string workspace = args.substr(0, args.find_first_of(' '));
- std::string monitor = args.substr(args.find_first_of(' ') + 1);
+ std::string monitor = args.substr(args.find_first_of(' ') + 1);
- const auto PMONITOR = g_pCompositor->getMonitorFromString(monitor);
+ const auto PMONITOR = g_pCompositor->getMonitorFromString(monitor);
- if (!PMONITOR){
+ if (!PMONITOR) {
Debug::log(ERR, "Ignoring moveWorkspaceToMonitor: monitor doesnt exist");
return;
}
std::string workspaceName;
- const int WORKSPACEID = getWorkspaceIDFromString(workspace, workspaceName);
+ const int WORKSPACEID = getWorkspaceIDFromString(workspace, workspaceName);
if (WORKSPACEID == INT_MAX) {
Debug::log(ERR, "moveWorkspaceToMonitor invalid workspace!");
@@ -1328,10 +1330,10 @@ void CKeybindManager::moveWorkspaceToMonitor(std::string args) {
void CKeybindManager::toggleSpecialWorkspace(std::string args) {
- static auto *const PFOLLOWMOUSE = &g_pConfigManager->getConfigValuePtr("input:follow_mouse")->intValue;
+ static auto* const PFOLLOWMOUSE = &g_pConfigManager->getConfigValuePtr("input:follow_mouse")->intValue;
- std::string workspaceName = "";
- int workspaceID = getWorkspaceIDFromString("special:" + args, workspaceName);
+ std::string workspaceName = "";
+ int workspaceID = getWorkspaceIDFromString("special:" + args, workspaceName);
if (workspaceID == INT_MAX || !g_pCompositor->isWorkspaceSpecial(workspaceID)) {
Debug::log(ERR, "Invalid workspace passed to special");
@@ -1343,9 +1345,9 @@ void CKeybindManager::toggleSpecialWorkspace(std::string args) {
return;
}
- bool requestedWorkspaceIsAlreadyOpen = false;
- const auto PMONITOR = *PFOLLOWMOUSE == 1 ? g_pCompositor->getMonitorFromCursor() : g_pCompositor->m_pLastMonitor;
- int specialOpenOnMonitor = PMONITOR->specialWorkspaceID;
+ bool requestedWorkspaceIsAlreadyOpen = false;
+ const auto PMONITOR = *PFOLLOWMOUSE == 1 ? g_pCompositor->getMonitorFromCursor() : g_pCompositor->m_pLastMonitor;
+ int specialOpenOnMonitor = PMONITOR->specialWorkspaceID;
for (auto& m : g_pCompositor->m_vMonitors) {
if (m->specialWorkspaceID == workspaceID) {
@@ -1382,7 +1384,7 @@ void CKeybindManager::toggleSpecialWorkspace(std::string args) {
// move to current
const auto PSPECIALWORKSPACE = g_pCompositor->getWorkspaceByID(workspaceID);
- const auto POLDMON = g_pCompositor->getMonitorFromID(PSPECIALWORKSPACE->m_iMonitorID);
+ const auto POLDMON = g_pCompositor->getMonitorFromID(PSPECIALWORKSPACE->m_iMonitorID);
POLDMON->specialWorkspaceID = 0;
g_pLayoutManager->getCurrentLayout()->recalculateMonitor(POLDMON->ID);
@@ -1451,8 +1453,8 @@ void CKeybindManager::resizeActive(std::string args) {
}
void CKeybindManager::moveActive(std::string args) {
- if (!g_pCompositor->m_pLastWindow || g_pCompositor->m_pLastWindow->m_bIsFullscreen)
- return;
+ if (!g_pCompositor->m_pLastWindow || g_pCompositor->m_pLastWindow->m_bIsFullscreen)
+ return;
const auto POS = g_pCompositor->parseWindowVectorArgsRelative(args, g_pCompositor->m_pLastWindow->m_vRealPosition.goalv());
@@ -1462,7 +1464,7 @@ void CKeybindManager::moveActive(std::string args) {
void CKeybindManager::moveWindow(std::string args) {
const auto WINDOWREGEX = args.substr(args.find_first_of(',') + 1);
- const auto MOVECMD = args.substr(0, args.find_first_of(','));
+ const auto MOVECMD = args.substr(0, args.find_first_of(','));
const auto PWINDOW = g_pCompositor->getWindowByRegex(WINDOWREGEX);
@@ -1482,7 +1484,7 @@ void CKeybindManager::moveWindow(std::string args) {
void CKeybindManager::resizeWindow(std::string args) {
const auto WINDOWREGEX = args.substr(args.find_first_of(',') + 1);
- const auto MOVECMD = args.substr(0, args.find_first_of(','));
+ const auto MOVECMD = args.substr(0, args.find_first_of(','));
const auto PWINDOW = g_pCompositor->getWindowByRegex(WINDOWREGEX);
@@ -1491,10 +1493,10 @@ void CKeybindManager::resizeWindow(std::string args) {
return;
}
- if (PWINDOW->m_bIsFullscreen)
- return;
+ if (PWINDOW->m_bIsFullscreen)
+ return;
- const auto SIZ = g_pCompositor->parseWindowVectorArgsRelative(MOVECMD, PWINDOW->m_vRealSize.goalv());
+ const auto SIZ = g_pCompositor->parseWindowVectorArgsRelative(MOVECMD, PWINDOW->m_vRealSize.goalv());
g_pLayoutManager->getCurrentLayout()->resizeActiveWindow(SIZ - PWINDOW->m_vRealSize.goalv(), PWINDOW);
@@ -1509,7 +1511,7 @@ void CKeybindManager::circleNext(std::string arg) {
if (g_pCompositor->m_pLastWindow && g_pCompositor->m_pLastWindow->m_iWorkspaceID == PWINDOWTOCHANGETO->m_iWorkspaceID && g_pCompositor->m_pLastWindow->m_bIsFullscreen) {
const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(g_pCompositor->m_pLastWindow->m_iWorkspaceID);
- const auto FSMODE = PWORKSPACE->m_efFullscreenMode;
+ const auto FSMODE = PWORKSPACE->m_efFullscreenMode;
if (!PWINDOWTOCHANGETO->m_bPinned)
g_pCompositor->setWindowFullscreen(g_pCompositor->m_pLastWindow, false, FULLSCREEN_FULL);
@@ -1591,13 +1593,13 @@ void CKeybindManager::pass(std::string regexp) {
const auto KEYBOARD = wlr_seat_get_keyboard(g_pCompositor->m_sSeat.seat);
- if (!KEYBOARD){
+ if (!KEYBOARD) {
Debug::log(ERR, "No kb in pass?");
return;
}
const auto XWTOXW = PWINDOW->m_bIsX11 && g_pCompositor->m_pLastWindow && g_pCompositor->m_pLastWindow->m_bIsX11;
- const auto SL = Vector2D(g_pCompositor->m_sSeat.seat->pointer_state.sx, g_pCompositor->m_sSeat.seat->pointer_state.sy);
+ const auto SL = Vector2D(g_pCompositor->m_sSeat.seat->pointer_state.sx, g_pCompositor->m_sSeat.seat->pointer_state.sy);
// pass all mf shit
if (!XWTOXW) {
@@ -1607,7 +1609,6 @@ void CKeybindManager::pass(std::string regexp) {
wlr_seat_pointer_enter(g_pCompositor->m_sSeat.seat, g_pXWaylandManager->getWindowSurface(PWINDOW), 1, 1);
}
-
wlr_keyboard_modifiers kbmods = {g_pInputManager->accumulateModsFromAllKBs(), 0, 0, 0};
wlr_seat_keyboard_notify_modifiers(g_pCompositor->m_sSeat.seat, &kbmods);
@@ -1640,10 +1641,10 @@ void CKeybindManager::pass(std::string regexp) {
// please kill me
if (PWINDOW->m_bIsX11) {
if (g_pKeybindManager->m_uLastCode != 0) {
- g_pCompositor->m_sSeat.seat->keyboard_state.focused_client = nullptr;
+ g_pCompositor->m_sSeat.seat->keyboard_state.focused_client = nullptr;
g_pCompositor->m_sSeat.seat->keyboard_state.focused_surface = nullptr;
} else {
- g_pCompositor->m_sSeat.seat->pointer_state.focused_client = nullptr;
+ g_pCompositor->m_sSeat.seat->pointer_state.focused_client = nullptr;
g_pCompositor->m_sSeat.seat->pointer_state.focused_surface = nullptr;
}
}
@@ -1665,15 +1666,15 @@ void CKeybindManager::toggleOpaque(std::string unused) {
if (!PWINDOW)
return;
- PWINDOW->m_sAdditionalConfigData.forceOpaque = !PWINDOW->m_sAdditionalConfigData.forceOpaque;
+ PWINDOW->m_sAdditionalConfigData.forceOpaque = !PWINDOW->m_sAdditionalConfigData.forceOpaque;
PWINDOW->m_sAdditionalConfigData.forceOpaqueOverriden = true;
g_pHyprRenderer->damageWindow(PWINDOW);
}
void CKeybindManager::dpms(std::string arg) {
- bool enable = arg.find("on") == 0;
- std::string port = "";
+ bool enable = arg.find("on") == 0;
+ std::string port = "";
if (arg.find_first_of(' ') != std::string::npos) {
port = arg.substr(arg.find_first_of(' ') + 1);
@@ -1708,7 +1709,10 @@ void CKeybindManager::swapnext(std::string arg) {
const auto PLASTWINDOW = g_pCompositor->m_pLastWindow;
- const auto PLASTCYCLED = g_pCompositor->windowValidMapped(g_pCompositor->m_pLastWindow->m_pLastCycledWindow) && g_pCompositor->m_pLastWindow->m_pLastCycledWindow->m_iWorkspaceID == PLASTWINDOW->m_iWorkspaceID ? g_pCompositor->m_pLastWindow->m_pLastCycledWindow : nullptr;
+ const auto PLASTCYCLED = g_pCompositor->windowValidMapped(g_pCompositor->m_pLastWindow->m_pLastCycledWindow) &&
+ g_pCompositor->m_pLastWindow->m_pLastCycledWindow->m_iWorkspaceID == PLASTWINDOW->m_iWorkspaceID ?
+ g_pCompositor->m_pLastWindow->m_pLastCycledWindow :
+ nullptr;
if (arg == "last" || arg == "l" || arg == "prev" || arg == "p")
toSwap = g_pCompositor->getPrevWindowOnWorkspace(PLASTCYCLED ? PLASTCYCLED : PLASTWINDOW, true);
@@ -1747,7 +1751,7 @@ void CKeybindManager::pinActive(std::string args) {
if (!g_pCompositor->m_pLastWindow || !g_pCompositor->m_pLastWindow->m_bIsFloating || g_pCompositor->m_pLastWindow->m_bIsFullscreen)
return;
- g_pCompositor->m_pLastWindow->m_bPinned = !g_pCompositor->m_pLastWindow->m_bPinned;
+ g_pCompositor->m_pLastWindow->m_bPinned = !g_pCompositor->m_pLastWindow->m_bPinned;
g_pCompositor->m_pLastWindow->m_iWorkspaceID = g_pCompositor->getMonitorFromID(g_pCompositor->m_pLastWindow->m_iMonitorID)->activeWorkspace;
g_pCompositor->m_pLastWindow->updateDynamicRules();
@@ -1767,7 +1771,7 @@ void CKeybindManager::mouse(std::string args) {
g_pKeybindManager->m_bIsMouseBindActive = true;
g_pInputManager->currentlyDraggedWindow = g_pCompositor->vectorToWindowIdeal(g_pInputManager->getMouseCoordsInternal());
- g_pInputManager->dragMode = MBIND_MOVE;
+ g_pInputManager->dragMode = MBIND_MOVE;
g_pLayoutManager->getCurrentLayout()->onBeginDragWindow();
} else {
@@ -1776,7 +1780,7 @@ void CKeybindManager::mouse(std::string args) {
if (g_pInputManager->currentlyDraggedWindow) {
g_pLayoutManager->getCurrentLayout()->onEndDragWindow();
g_pInputManager->currentlyDraggedWindow = nullptr;
- g_pInputManager->dragMode = MBIND_INVALID;
+ g_pInputManager->dragMode = MBIND_INVALID;
}
}
} else if (TRUEARG == "resizewindow") {
@@ -1784,7 +1788,7 @@ void CKeybindManager::mouse(std::string args) {
g_pKeybindManager->m_bIsMouseBindActive = true;
g_pInputManager->currentlyDraggedWindow = g_pCompositor->vectorToWindowIdeal(g_pInputManager->getMouseCoordsInternal());
- g_pInputManager->dragMode = MBIND_RESIZE;
+ g_pInputManager->dragMode = MBIND_RESIZE;
g_pLayoutManager->getCurrentLayout()->onBeginDragWindow();
} else {
@@ -1793,7 +1797,7 @@ void CKeybindManager::mouse(std::string args) {
if (g_pInputManager->currentlyDraggedWindow) {
g_pLayoutManager->getCurrentLayout()->onEndDragWindow();
g_pInputManager->currentlyDraggedWindow = nullptr;
- g_pInputManager->dragMode = MBIND_INVALID;
+ g_pInputManager->dragMode = MBIND_INVALID;
}
}
}
diff --git a/src/managers/KeybindManager.hpp b/src/managers/KeybindManager.hpp
index 3d3dbce0..bc9c2437 100644
--- a/src/managers/KeybindManager.hpp
+++ b/src/managers/KeybindManager.hpp
@@ -10,22 +10,23 @@ class CInputManager;
class CConfigManager;
struct SKeybind {
- std::string key = "";
- int keycode = -1;
- uint32_t modmask = 0;
- std::string handler = "";
- std::string arg = "";
- bool locked = false;
- std::string submap = "";
- bool release = false;
- bool repeat = false;
- bool mouse = false;
+ std::string key = "";
+ int keycode = -1;
+ uint32_t modmask = 0;
+ std::string handler = "";
+ std::string arg = "";
+ bool locked = false;
+ std::string submap = "";
+ bool release = false;
+ bool repeat = false;
+ bool mouse = false;
// DO NOT INITIALIZE
- bool shadowed = false;
+ bool shadowed = false;
};
-enum eFocusWindowMode {
+enum eFocusWindowMode
+{
MODE_CLASS_REGEX = 0,
MODE_TITLE_REGEX,
MODE_ADDRESS,
@@ -33,96 +34,96 @@ enum eFocusWindowMode {
};
class CKeybindManager {
-public:
+ public:
CKeybindManager();
- bool onKeyEvent(wlr_keyboard_key_event*, SKeyboard*);
- bool onAxisEvent(wlr_pointer_axis_event*);
- bool onMouseEvent(wlr_pointer_button_event*);
- void onSwitchEvent(const std::string&);
+ bool onKeyEvent(wlr_keyboard_key_event*, SKeyboard*);
+ bool onAxisEvent(wlr_pointer_axis_event*);
+ bool onMouseEvent(wlr_pointer_button_event*);
+ void onSwitchEvent(const std::string&);
- void addKeybind(SKeybind);
- void removeKeybind(uint32_t, const std::string&);
- uint32_t stringToModMask(std::string);
- void clearKeybinds();
- void shadowKeybinds(const xkb_keysym_t& doesntHave = 0, const int& doesntHaveCode = 0);
+ void addKeybind(SKeybind);
+ void removeKeybind(uint32_t, const std::string&);
+ uint32_t stringToModMask(std::string);
+ void clearKeybinds();
+ void shadowKeybinds(const xkb_keysym_t& doesntHave = 0, const int& doesntHaveCode = 0);
std::unordered_map<std::string, std::function<void(std::string)>> m_mDispatchers;
- wl_event_source* m_pActiveKeybindEventSource = nullptr;
+ wl_event_source* m_pActiveKeybindEventSource = nullptr;
-private:
- std::list<SKeybind> m_lKeybinds;
- std::deque<xkb_keysym_t> m_dPressedKeysyms;
- std::deque<int> m_dPressedKeycodes;
+ private:
+ std::list<SKeybind> m_lKeybinds;
+ std::deque<xkb_keysym_t> m_dPressedKeysyms;
+ std::deque<int> m_dPressedKeycodes;
inline static std::string m_szCurrentSelectedSubmap = "";
- xkb_keysym_t m_kHeldBack = 0;
+ xkb_keysym_t m_kHeldBack = 0;
- SKeybind* m_pActiveKeybind = nullptr;
+ SKeybind* m_pActiveKeybind = nullptr;
- uint32_t m_uTimeLastMs = 0;
- uint32_t m_uLastCode = 0;
- uint32_t m_uLastMouseCode = 0;
+ uint32_t m_uTimeLastMs = 0;
+ uint32_t m_uLastCode = 0;
+ uint32_t m_uLastMouseCode = 0;
- bool m_bIsMouseBindActive = false;
+ bool m_bIsMouseBindActive = false;
- int m_iPassPressed = -1; // used for pass
+ int m_iPassPressed = -1; // used for pass
- CTimer m_tScrollTimer;
+ CTimer m_tScrollTimer;
- bool handleKeybinds(const uint32_t&, const std::string&, const xkb_keysym_t&, const int&, bool, uint32_t);
+ bool handleKeybinds(const uint32_t&, const std::string&, const xkb_keysym_t&, const int&, bool, uint32_t);
- bool handleInternalKeybinds(xkb_keysym_t);
- bool handleVT(xkb_keysym_t);
+ bool handleInternalKeybinds(xkb_keysym_t);
+ bool handleVT(xkb_keysym_t);
- xkb_state* m_pXKBTranslationState = nullptr;
+ xkb_state* m_pXKBTranslationState = nullptr;
- void updateXKBTranslationState();
- bool ensureMouseBindState();
+ void updateXKBTranslationState();
+ bool ensureMouseBindState();
// -------------- Dispatchers -------------- //
- static void killActive(std::string);
- static void kill(std::string);
- static void spawn(std::string);
- static void toggleActiveFloating(std::string);
- static void toggleActivePseudo(std::string);
- static void changeworkspace(std::string);
- static void fullscreenActive(std::string);
- static void moveActiveToWorkspace(std::string);
- static void moveActiveToWorkspaceSilent(std::string);
- static void moveFocusTo(std::string);
- static void centerWindow(std::string);
- static void moveActiveTo(std::string);
- static void toggleGroup(std::string);
- static void changeGroupActive(std::string);
- static void alterSplitRatio(std::string);
- static void focusMonitor(std::string);
- static void toggleSplit(std::string);
- static void moveCursorToCorner(std::string);
- static void workspaceOpt(std::string);
- static void exitHyprland(std::string);
- static void moveCurrentWorkspaceToMonitor(std::string);
- static void moveWorkspaceToMonitor(std::string);
- static void toggleSpecialWorkspace(std::string);
- static void forceRendererReload(std::string);
- static void resizeActive(std::string);
- static void moveActive(std::string);
- static void moveWindow(std::string);
- static void resizeWindow(std::string);
- static void circleNext(std::string);
- static void focusWindow(std::string);
- static void setSubmap(std::string);
- static void pass(std::string);
- static void layoutmsg(std::string);
- static void toggleOpaque(std::string);
- static void dpms(std::string);
- static void swapnext(std::string);
- static void swapActiveWorkspaces(std::string);
- static void pinActive(std::string);
- static void mouse(std::string);
- static void bringActiveToTop(std::string);
+ static void killActive(std::string);
+ static void kill(std::string);
+ static void spawn(std::string);
+ static void toggleActiveFloating(std::string);
+ static void toggleActivePseudo(std::string);
+ static void changeworkspace(std::string);
+ static void fullscreenActive(std::string);
+ static void moveActiveToWorkspace(std::string);
+ static void moveActiveToWorkspaceSilent(std::string);
+ static void moveFocusTo(std::string);
+ static void centerWindow(std::string);
+ static void moveActiveTo(std::string);
+ static void toggleGroup(std::string);
+ static void changeGroupActive(std::string);
+ static void alterSplitRatio(std::string);
+ static void focusMonitor(std::string);
+ static void toggleSplit(std::string);
+ static void moveCursorToCorner(std::string);
+ static void workspaceOpt(std::string);
+ static void exitHyprland(std::string);
+ static void moveCurrentWorkspaceToMonitor(std::string);
+ static void moveWorkspaceToMonitor(std::string);
+ static void toggleSpecialWorkspace(std::string);
+ static void forceRendererReload(std::string);
+ static void resizeActive(std::string);
+ static void moveActive(std::string);
+ static void moveWindow(std::string);
+ static void resizeWindow(std::string);
+ static void circleNext(std::string);
+ static void focusWindow(std::string);
+ static void setSubmap(std::string);
+ static void pass(std::string);
+ static void layoutmsg(std::string);
+ static void toggleOpaque(std::string);
+ static void dpms(std::string);
+ static void swapnext(std::string);
+ static void swapActiveWorkspaces(std::string);
+ static void pinActive(std::string);
+ static void mouse(std::string);
+ static void bringActiveToTop(std::string);
friend class CCompositor;
friend class CInputManager;
diff --git a/src/managers/LayoutManager.cpp b/src/managers/LayoutManager.cpp
index 155b0bfc..8e352184 100644
--- a/src/managers/LayoutManager.cpp
+++ b/src/managers/LayoutManager.cpp
@@ -2,10 +2,8 @@
IHyprLayout* CLayoutManager::getCurrentLayout() {
switch (m_iCurrentLayoutID) {
- case DWINDLE:
- return &m_cDwindleLayout;
- case MASTER:
- return &m_cMasterLayout;
+ case DWINDLE: return &m_cDwindleLayout;
+ case MASTER: return &m_cMasterLayout;
}
// fallback
diff --git a/src/managers/LayoutManager.hpp b/src/managers/LayoutManager.hpp
index aa340e79..103aa7b9 100644
--- a/src/managers/LayoutManager.hpp
+++ b/src/managers/LayoutManager.hpp
@@ -4,19 +4,19 @@
#include "../layout/MasterLayout.hpp"
class CLayoutManager {
-public:
+ public:
+ IHyprLayout* getCurrentLayout();
- IHyprLayout* getCurrentLayout();
+ void switchToLayout(std::string);
- void switchToLayout(std::string);
-
-private:
- enum HYPRLAYOUTS {
+ private:
+ enum HYPRLAYOUTS
+ {
DWINDLE = 0,
MASTER
};
- HYPRLAYOUTS m_iCurrentLayoutID = DWINDLE;
+ HYPRLAYOUTS m_iCurrentLayoutID = DWINDLE;
CHyprDwindleLayout m_cDwindleLayout;
CHyprMasterLayout m_cMasterLayout;
diff --git a/src/managers/ProtocolManager.hpp b/src/managers/ProtocolManager.hpp
index 810bb547..4e583a02 100644
--- a/src/managers/ProtocolManager.hpp
+++ b/src/managers/ProtocolManager.hpp
@@ -4,7 +4,7 @@
#include "../protocols/ToplevelExport.hpp"
class CProtocolManager {
-public:
+ public:
CProtocolManager();
std::unique_ptr<CToplevelExportProtocolManager> m_pToplevelExportProtocolManager;
diff --git a/src/managers/ThreadManager.cpp b/src/managers/ThreadManager.cpp
index efe0ac10..a268258f 100644
--- a/src/managers/ThreadManager.cpp
+++ b/src/managers/ThreadManager.cpp
@@ -5,9 +5,9 @@
int slowUpdate = 0;
int handleTimer(void* data) {
- const auto PTM = (CThreadManager*)data;
+ const auto PTM = (CThreadManager*)data;
- static auto *const PDISABLECFGRELOAD = &g_pConfigManager->getConfigValuePtr("misc:disable_autoreload")->intValue;
+ static auto* const PDISABLECFGRELOAD = &g_pConfigManager->getConfigValuePtr("misc:disable_autoreload")->intValue;
if (*PDISABLECFGRELOAD != 1)
g_pConfigManager->tick();
diff --git a/src/managers/ThreadManager.hpp b/src/managers/ThreadManager.hpp
index 0a716e0b..5c77d6a0 100644
--- a/src/managers/ThreadManager.hpp
+++ b/src/managers/ThreadManager.hpp
@@ -5,13 +5,13 @@
#include "../Compositor.hpp"
class CThreadManager {
-public:
+ public:
CThreadManager();
~CThreadManager();
wl_event_source* m_esConfigTimer;
- private:
+ private:
};
inline std::unique_ptr<CThreadManager> g_pThreadManager; \ No newline at end of file
diff --git a/src/managers/XWaylandManager.cpp b/src/managers/XWaylandManager.cpp
index e41d2e82..ed56ebf1 100644
--- a/src/managers/XWaylandManager.cpp
+++ b/src/managers/XWaylandManager.cpp
@@ -18,13 +18,11 @@ CHyprXWaylandManager::CHyprXWaylandManager() {
Debug::log(LOG, "CHyprXWaylandManager started on display %s", m_sWLRXWayland->display_name);
#else
- unsetenv("DISPLAY"); // unset DISPLAY so that X11 apps do not try to start on a different/invalid DISPLAY
+ unsetenv("DISPLAY"); // unset DISPLAY so that X11 apps do not try to start on a different/invalid DISPLAY
#endif
}
-CHyprXWaylandManager::~CHyprXWaylandManager() {
-
-}
+CHyprXWaylandManager::~CHyprXWaylandManager() {}
wlr_surface* CHyprXWaylandManager::getWindowSurface(CWindow* pWindow) {
if (pWindow->m_bIsX11)
@@ -48,7 +46,6 @@ void CHyprXWaylandManager::activateSurface(wlr_surface* pSurface, bool activate)
if (activate)
wlr_xwayland_surface_restack(wlr_xwayland_surface_from_wlr_surface(pSurface), NULL, XCB_STACK_MODE_ABOVE);
}
-
}
void CHyprXWaylandManager::activateWindow(CWindow* pWindow, bool activate) {
@@ -58,14 +55,13 @@ void CHyprXWaylandManager::activateWindow(CWindow* pWindow, bool activate) {
wlr_xwayland_surface_set_minimized(pWindow->m_uSurface.xwayland, false);
wlr_xwayland_surface_restack(pWindow->m_uSurface.xwayland, NULL, XCB_STACK_MODE_ABOVE);
}
-
+
wlr_xwayland_surface_activate(pWindow->m_uSurface.xwayland, activate);
- }
- else
+ } else
wlr_xdg_toplevel_set_activated(pWindow->m_uSurface.xdg->toplevel, activate);
if (activate) {
- g_pCompositor->m_pLastFocus = getWindowSurface(pWindow);
+ g_pCompositor->m_pLastFocus = getWindowSurface(pWindow);
g_pCompositor->m_pLastWindow = pWindow;
}
@@ -78,14 +74,14 @@ void CHyprXWaylandManager::getGeometryForWindow(CWindow* pWindow, wlr_box* pbox)
const auto SIZEHINTS = pWindow->m_uSurface.xwayland->size_hints;
if (SIZEHINTS && pWindow->m_iX11Type != 2) {
- pbox->x = SIZEHINTS->x;
- pbox->y = SIZEHINTS->y;
- pbox->width = SIZEHINTS->width;
+ pbox->x = SIZEHINTS->x;
+ pbox->y = SIZEHINTS->y;
+ pbox->width = SIZEHINTS->width;
pbox->height = SIZEHINTS->height;
} else {
- pbox->x = pWindow->m_uSurface.xwayland->x;
- pbox->y = pWindow->m_uSurface.xwayland->y;
- pbox->width = pWindow->m_uSurface.xwayland->width;
+ pbox->x = pWindow->m_uSurface.xwayland->x;
+ pbox->y = pWindow->m_uSurface.xwayland->y;
+ pbox->width = pWindow->m_uSurface.xwayland->width;
pbox->height = pWindow->m_uSurface.xwayland->height;
}
} else {
@@ -106,9 +102,7 @@ std::string CHyprXWaylandManager::getTitle(CWindow* pWindow) {
} else {
return "";
}
- } catch (...) {
- Debug::log(ERR, "Error in getTitle (probably null title)");
- }
+ } catch (...) { Debug::log(ERR, "Error in getTitle (probably null title)"); }
return "";
}
@@ -129,9 +123,7 @@ std::string CHyprXWaylandManager::getAppIDClass(CWindow* pWindow) {
} else {
return "";
}
- } catch (std::logic_error& e) {
- Debug::log(ERR, "Error in getAppIDClass: %s", e.what());
- }
+ } catch (std::logic_error& e) { Debug::log(ERR, "Error in getAppIDClass: %s", e.what()); }
return "";
}
@@ -146,11 +138,12 @@ void CHyprXWaylandManager::sendCloseWindow(CWindow* pWindow) {
void CHyprXWaylandManager::setWindowSize(CWindow* pWindow, const Vector2D& size, bool force) {
- if (!force && ((pWindow->m_vReportedSize == size && pWindow->m_vRealPosition.vec() == pWindow->m_vReportedPosition) || (pWindow->m_vReportedSize == size && !pWindow->m_bIsX11)))
+ if (!force &&
+ ((pWindow->m_vReportedSize == size && pWindow->m_vRealPosition.vec() == pWindow->m_vReportedPosition) || (pWindow->m_vReportedSize == size && !pWindow->m_bIsX11)))
return;
pWindow->m_vReportedPosition = pWindow->m_vRealPosition.vec();
- pWindow->m_vReportedSize = size;
+ pWindow->m_vReportedSize = size;
if (pWindow->m_bIsX11)
wlr_xwayland_surface_configure(pWindow->m_uSurface.xwayland, pWindow->m_vRealPosition.vec().x, pWindow->m_vRealPosition.vec().y, size.x, size.y);
@@ -173,18 +166,23 @@ wlr_surface* CHyprXWaylandManager::surfaceAt(CWindow* pWindow, const Vector2D& c
bool CHyprXWaylandManager::shouldBeFloated(CWindow* pWindow) {
if (pWindow->m_bIsX11) {
for (size_t i = 0; i < pWindow->m_uSurface.xwayland->window_type_len; i++)
- if (pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_DIALOG"] || pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_SPLASH"] ||
- pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_TOOLBAR"] || pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_UTILITY"] ||
- pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_TOOLTIP"] || pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_POPUP_MENU"] ||
- pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_DOCK"] || pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_DROPDOWN_MENU"] ||
- pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_MENU"])
- {
- if (pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_DROPDOWN_MENU"] || pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_MENU"])
- pWindow->m_bX11ShouldntFocus = true;
-
- pWindow->m_bNoInitialFocus = true;
- return true;
- }
+ if (pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_DIALOG"] ||
+ pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_SPLASH"] ||
+ pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_TOOLBAR"] ||
+ pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_UTILITY"] ||
+ pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_TOOLTIP"] ||
+ pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_POPUP_MENU"] ||
+ pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_DOCK"] ||
+ pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_DROPDOWN_MENU"] ||
+ pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_MENU"]) {
+
+ if (pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_DROPDOWN_MENU"] ||
+ pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_MENU"])
+ pWindow->m_bX11ShouldntFocus = true;
+
+ pWindow->m_bNoInitialFocus = true;
+ return true;
+ }
if (pWindow->m_uSurface.xwayland->role) {
try {
@@ -192,9 +190,7 @@ bool CHyprXWaylandManager::shouldBeFloated(CWindow* pWindow) {
if (winrole.contains("pop-up") || winrole.contains("task_dialog")) {
return true;
}
- } catch (std::exception& e) {
- Debug::log(ERR, "Error in shouldBeFloated, winrole threw %s", e.what());
- }
+ } catch (std::exception& e) { Debug::log(ERR, "Error in shouldBeFloated, winrole threw %s", e.what()); }
}
if (pWindow->m_uSurface.xwayland->modal) {
@@ -212,7 +208,8 @@ bool CHyprXWaylandManager::shouldBeFloated(CWindow* pWindow) {
} else {
const auto PSTATE = &pWindow->m_uSurface.xdg->toplevel->current;
- if ((PSTATE->min_width != 0 && PSTATE->min_height != 0 && (PSTATE->min_width == PSTATE->max_width || PSTATE->min_height == PSTATE->max_height)) || pWindow->m_uSurface.xdg->toplevel->parent)
+ if ((PSTATE->min_width != 0 && PSTATE->min_height != 0 && (PSTATE->min_width == PSTATE->max_width || PSTATE->min_height == PSTATE->max_height)) ||
+ pWindow->m_uSurface.xdg->toplevel->parent)
return true;
}
@@ -233,9 +230,12 @@ void CHyprXWaylandManager::checkBorders(CWindow* pWindow) {
return;
for (size_t i = 0; i < pWindow->m_uSurface.xwayland->window_type_len; i++) {
- if (pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_POPUP_MENU"] || pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_NOTIFICATION"] ||
- pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_DROPDOWN_MENU"] || pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_COMBO"] ||
- pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_MENU"] || pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_SPLASH"] ||
+ if (pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_POPUP_MENU"] ||
+ pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_NOTIFICATION"] ||
+ pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_DROPDOWN_MENU"] ||
+ pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_COMBO"] ||
+ pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_MENU"] ||
+ pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_SPLASH"] ||
pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_TOOLTIP"]) {
pWindow->m_bX11DoesntWantBorders = true;
@@ -263,11 +263,12 @@ Vector2D CHyprXWaylandManager::getMaxSizeForWindow(CWindow* pWindow) {
if (!g_pCompositor->windowValidMapped(pWindow))
return Vector2D(99999, 99999);
- if ((pWindow->m_bIsX11 && !pWindow->m_uSurface.xwayland->size_hints) || (!pWindow->m_bIsX11 && !pWindow->m_uSurface.xdg->toplevel) || pWindow->m_sAdditionalConfigData.noMaxSize)
+ if ((pWindow->m_bIsX11 && !pWindow->m_uSurface.xwayland->size_hints) || (!pWindow->m_bIsX11 && !pWindow->m_uSurface.xdg->toplevel) ||
+ pWindow->m_sAdditionalConfigData.noMaxSize)
return Vector2D(99999, 99999);
- auto MAXSIZE = pWindow->m_bIsX11 ? Vector2D(pWindow->m_uSurface.xwayland->size_hints->max_width, pWindow->m_uSurface.xwayland->size_hints->max_height)
- : Vector2D(pWindow->m_uSurface.xdg->toplevel->current.max_width, pWindow->m_uSurface.xdg->toplevel->current.max_height);
+ auto MAXSIZE = pWindow->m_bIsX11 ? Vector2D(pWindow->m_uSurface.xwayland->size_hints->max_width, pWindow->m_uSurface.xwayland->size_hints->max_height) :
+ Vector2D(pWindow->m_uSurface.xdg->toplevel->current.max_width, pWindow->m_uSurface.xdg->toplevel->current.max_height);
if (MAXSIZE.x < 5)
MAXSIZE.x = 99999;
diff --git a/src/managers/XWaylandManager.hpp b/src/managers/XWaylandManager.hpp
index 6ac1ffde..cb3daaf5 100644
--- a/src/managers/XWaylandManager.hpp
+++ b/src/managers/XWaylandManager.hpp
@@ -4,27 +4,27 @@
#include "../Window.hpp"
class CHyprXWaylandManager {
-public:
+ public:
CHyprXWaylandManager();
~CHyprXWaylandManager();
- wlr_xwayland* m_sWLRXWayland = nullptr;
+ wlr_xwayland* m_sWLRXWayland = nullptr;
- wlr_surface* getWindowSurface(CWindow*);
- void activateSurface(wlr_surface*, bool);
- void activateWindow(CWindow*, bool);
- void getGeometryForWindow(CWindow*, wlr_box*);
- std::string getTitle(CWindow*);
- std::string getAppIDClass(CWindow*);
- void sendCloseWindow(CWindow*);
- void setWindowSize(CWindow*, const Vector2D&, bool force = false);
- void setWindowStyleTiled(CWindow*, uint32_t);
- void setWindowFullscreen(CWindow*, bool);
- wlr_surface* surfaceAt(CWindow*, const Vector2D&, Vector2D&);
- bool shouldBeFloated(CWindow*);
- void moveXWaylandWindow(CWindow*, const Vector2D&);
- void checkBorders(CWindow*);
- Vector2D getMaxSizeForWindow(CWindow*);
+ wlr_surface* getWindowSurface(CWindow*);
+ void activateSurface(wlr_surface*, bool);
+ void activateWindow(CWindow*, bool);
+ void getGeometryForWindow(CWindow*, wlr_box*);
+ std::string getTitle(CWindow*);
+ std::string getAppIDClass(CWindow*);
+ void sendCloseWindow(CWindow*);
+ void setWindowSize(CWindow*, const Vector2D&, bool force = false);
+ void setWindowStyleTiled(CWindow*, uint32_t);
+ void setWindowFullscreen(CWindow*, bool);
+ wlr_surface* surfaceAt(CWindow*, const Vector2D&, Vector2D&);
+ bool shouldBeFloated(CWindow*);
+ void moveXWaylandWindow(CWindow*, const Vector2D&);
+ void checkBorders(CWindow*);
+ Vector2D getMaxSizeForWindow(CWindow*);
};
inline std::unique_ptr<CHyprXWaylandManager> g_pXWaylandManager; \ No newline at end of file
diff --git a/src/managers/input/IdleInhibitor.cpp b/src/managers/input/IdleInhibitor.cpp
index 8c0a3267..3e3411fb 100644
--- a/src/managers/input/IdleInhibitor.cpp
+++ b/src/managers/input/IdleInhibitor.cpp
@@ -17,17 +17,18 @@ void CInputManager::newIdleInhibitor(wlr_idle_inhibitor_v1* pInhibitor) {
PINHIBIT->pWlrInhibitor = pInhibitor;
- PINHIBIT->hyprListener_Destroy.initCallback(&pInhibitor->events.destroy, [](void* owner, void* data){
+ PINHIBIT->hyprListener_Destroy.initCallback(
+ &pInhibitor->events.destroy,
+ [](void* owner, void* data) {
+ const auto PINH = (SIdleInhibitor*)owner;
- const auto PINH = (SIdleInhibitor*)owner;
+ g_pInputManager->m_lIdleInhibitors.remove(*PINH);
- g_pInputManager->m_lIdleInhibitors.remove(*PINH);
+ Debug::log(LOG, "Destroyed an idleinhibitor");
- Debug::log(LOG, "Destroyed an idleinhibitor");
-
- g_pInputManager->recheckIdleInhibitorStatus();
-
- }, PINHIBIT, "IdleInhibitor");
+ g_pInputManager->recheckIdleInhibitorStatus();
+ },
+ PINHIBIT, "IdleInhibitor");
PINHIBIT->pWindow = g_pCompositor->getWindowFromSurface(pInhibitor->surface);
diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp
index 41233f92..d3cd9079 100644
--- a/src/managers/input/InputManager.cpp
+++ b/src/managers/input/InputManager.cpp
@@ -2,16 +2,18 @@
#include "../../Compositor.hpp"
void CInputManager::onMouseMoved(wlr_pointer_motion_event* e) {
- static auto *const PSENS = &g_pConfigManager->getConfigValuePtr("general:sensitivity")->floatValue;
- static auto *const PNOACCEL = &g_pConfigManager->getConfigValuePtr("input:force_no_accel")->intValue;
+ static auto* const PSENS = &g_pConfigManager->getConfigValuePtr("general:sensitivity")->floatValue;
+ static auto* const PNOACCEL = &g_pConfigManager->getConfigValuePtr("input:force_no_accel")->intValue;
static auto* const PSENSTORAW = &g_pConfigManager->getConfigValuePtr("general:apply_sens_to_raw")->intValue;
- const auto DELTA = *PNOACCEL == 1 ? Vector2D(e->unaccel_dx, e->unaccel_dy) : Vector2D(e->delta_x, e->delta_y);
+ const auto DELTA = *PNOACCEL == 1 ? Vector2D(e->unaccel_dx, e->unaccel_dy) : Vector2D(e->delta_x, e->delta_y);
if (*PSENSTORAW == 1)
- wlr_relative_pointer_manager_v1_send_relative_motion(g_pCompositor->m_sWLRRelPointerMgr, g_pCompositor->m_sSeat.seat, (uint64_t)e->time_msec * 1000, DELTA.x * *PSENS, DELTA.y * *PSENS, e->unaccel_dx * *PSENS, e->unaccel_dy * *PSENS);
+ wlr_relative_pointer_manager_v1_send_relative_motion(g_pCompositor->m_sWLRRelPointerMgr, g_pCompositor->m_sSeat.seat, (uint64_t)e->time_msec * 1000, DELTA.x * *PSENS,
+ DELTA.y * *PSENS, e->unaccel_dx * *PSENS, e->unaccel_dy * *PSENS);
else
- wlr_relative_pointer_manager_v1_send_relative_motion(g_pCompositor->m_sWLRRelPointerMgr, g_pCompositor->m_sSeat.seat, (uint64_t)e->time_msec * 1000, DELTA.x, DELTA.y, e->unaccel_dx, e->unaccel_dy);
+ wlr_relative_pointer_manager_v1_send_relative_motion(g_pCompositor->m_sWLRRelPointerMgr, g_pCompositor->m_sSeat.seat, (uint64_t)e->time_msec * 1000, DELTA.x, DELTA.y,
+ e->unaccel_dx, e->unaccel_dy);
wlr_cursor_move(g_pCompositor->m_sWLRCursor, &e->pointer->base, DELTA.x * *PSENS, DELTA.y * *PSENS);
@@ -29,19 +31,19 @@ void CInputManager::onMouseWarp(wlr_pointer_motion_absolute_event* e) {
}
void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) {
- static auto *const PFOLLOWMOUSE = &g_pConfigManager->getConfigValuePtr("input:follow_mouse")->intValue;
- static auto *const PMOUSEDPMS = &g_pConfigManager->getConfigValuePtr("misc:mouse_move_enables_dpms")->intValue;
- static auto *const PFOLLOWONDND = &g_pConfigManager->getConfigValuePtr("misc:always_follow_on_dnd")->intValue;
- static auto *const PHOGFOCUS = &g_pConfigManager->getConfigValuePtr("misc:layers_hog_keyboard_focus")->intValue;
- static auto *const PFLOATBEHAVIOR = &g_pConfigManager->getConfigValuePtr("input:float_switch_override_focus")->intValue;
-
- m_pFoundSurfaceToFocus = nullptr;
- m_pFoundLSToFocus = nullptr;
- m_pFoundWindowToFocus = nullptr;
- wlr_surface* foundSurface = nullptr;
- Vector2D surfaceCoords;
- Vector2D surfacePos = Vector2D(-1337, -1337);
- CWindow* pFoundWindow = nullptr;
+ static auto* const PFOLLOWMOUSE = &g_pConfigManager->getConfigValuePtr("input:follow_mouse")->intValue;
+ static auto* const PMOUSEDPMS = &g_pConfigManager->getConfigValuePtr("misc:mouse_move_enables_dpms")->intValue;
+ static auto* const PFOLLOWONDND = &g_pConfigManager->getConfigValuePtr("misc:always_follow_on_dnd")->intValue;
+ static auto* const PHOGFOCUS = &g_pConfigManager->getConfigValuePtr("misc:layers_hog_keyboard_focus")->intValue;
+ static auto* const PFLOATBEHAVIOR = &g_pConfigManager->getConfigValuePtr("input:float_switch_override_focus")->intValue;
+
+ m_pFoundSurfaceToFocus = nullptr;
+ m_pFoundLSToFocus = nullptr;
+ m_pFoundWindowToFocus = nullptr;
+ wlr_surface* foundSurface = nullptr;
+ Vector2D surfaceCoords;
+ Vector2D surfacePos = Vector2D(-1337, -1337);
+ CWindow* pFoundWindow = nullptr;
SLayerSurface* pFoundLayerSurface = nullptr;
if (!g_pCompositor->m_bReadyToProcess || g_pCompositor->m_bIsShuttingDown)
@@ -57,7 +59,7 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) {
g_pKeybindManager->dpms("on");
}
- Vector2D mouseCoords = getMouseCoordsInternal();
+ Vector2D mouseCoords = getMouseCoordsInternal();
const auto MOUSECOORDSFLOORED = mouseCoords.floor();
if (MOUSECOORDSFLOORED == m_vLastCursorPosFloored && !refocus)
@@ -73,20 +75,22 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) {
// XWayland windows sometimes issue constraints weirdly.
// TODO: We probably should search their parent. wlr_xwayland_surface->parent
const auto CONSTRAINTWINDOW = g_pCompositor->getConstraintWindow(g_pCompositor->m_sSeat.mouse);
- const auto PCONSTRAINT = constraintFromWlr(g_pCompositor->m_sSeat.mouse->currentConstraint);
+ const auto PCONSTRAINT = constraintFromWlr(g_pCompositor->m_sSeat.mouse->currentConstraint);
if (!CONSTRAINTWINDOW || !PCONSTRAINT) {
unconstrainMouse();
} else {
// Native Wayland apps know how 2 constrain themselves.
// XWayland, we just have to accept them. Might cause issues, but thats XWayland for ya.
- const auto CONSTRAINTPOS = CONSTRAINTWINDOW->m_bIsX11 ? Vector2D(CONSTRAINTWINDOW->m_uSurface.xwayland->x, CONSTRAINTWINDOW->m_uSurface.xwayland->y) : CONSTRAINTWINDOW->m_vRealPosition.vec();
- const auto CONSTRAINTSIZE = CONSTRAINTWINDOW->m_bIsX11 ? Vector2D(CONSTRAINTWINDOW->m_uSurface.xwayland->width, CONSTRAINTWINDOW->m_uSurface.xwayland->height) : CONSTRAINTWINDOW->m_vRealSize.vec();
+ const auto CONSTRAINTPOS =
+ CONSTRAINTWINDOW->m_bIsX11 ? Vector2D(CONSTRAINTWINDOW->m_uSurface.xwayland->x, CONSTRAINTWINDOW->m_uSurface.xwayland->y) : CONSTRAINTWINDOW->m_vRealPosition.vec();
+ const auto CONSTRAINTSIZE = CONSTRAINTWINDOW->m_bIsX11 ? Vector2D(CONSTRAINTWINDOW->m_uSurface.xwayland->width, CONSTRAINTWINDOW->m_uSurface.xwayland->height) :
+ CONSTRAINTWINDOW->m_vRealSize.vec();
if (g_pCompositor->m_sSeat.mouse->currentConstraint->type == WLR_POINTER_CONSTRAINT_V1_LOCKED) {
// we just snap the cursor to where it should be.
- Vector2D hint = { PCONSTRAINT->positionHint.x, PCONSTRAINT->positionHint.y };
+ Vector2D hint = {PCONSTRAINT->positionHint.x, PCONSTRAINT->positionHint.y};
wlr_cursor_warp_closest(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sSeat.mouse->mouse, CONSTRAINTPOS.x + hint.x, CONSTRAINTPOS.y + hint.y);
@@ -108,7 +112,7 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) {
if (CONSTRAINTWINDOW->m_bIsX11) {
foundSurface = g_pXWaylandManager->getWindowSurface(CONSTRAINTWINDOW);
- surfacePos = CONSTRAINTWINDOW->m_vRealPosition.vec();
+ surfacePos = CONSTRAINTWINDOW->m_vRealPosition.vec();
} else {
g_pCompositor->vectorWindowToSurface(mouseCoords, CONSTRAINTWINDOW, surfaceCoords);
}
@@ -152,7 +156,9 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) {
// only check floating because tiled cant be over fullscreen
for (auto w = g_pCompositor->m_vWindows.rbegin(); w != g_pCompositor->m_vWindows.rend(); w++) {
wlr_box box = {(*w)->m_vRealPosition.vec().x, (*w)->m_vRealPosition.vec().y, (*w)->m_vRealSize.vec().x, (*w)->m_vRealSize.vec().y};
- if ((((*w)->m_bIsFloating && (*w)->m_bIsMapped && ((*w)->m_bCreatedOverFullscreen || (*w)->m_bPinned)) || (g_pCompositor->isWorkspaceSpecial((*w)->m_iWorkspaceID) && PMONITOR->specialWorkspaceID)) && wlr_box_contains_point(&box, mouseCoords.x, mouseCoords.y) && g_pCompositor->isWorkspaceVisible((*w)->m_iWorkspaceID) && !(*w)->isHidden()) {
+ if ((((*w)->m_bIsFloating && (*w)->m_bIsMapped && ((*w)->m_bCreatedOverFullscreen || (*w)->m_bPinned)) ||
+ (g_pCompositor->isWorkspaceSpecial((*w)->m_iWorkspaceID) && PMONITOR->specialWorkspaceID)) &&
+ wlr_box_contains_point(&box, mouseCoords.x, mouseCoords.y) && g_pCompositor->isWorkspaceVisible((*w)->m_iWorkspaceID) && !(*w)->isHidden()) {
pFoundWindow = (*w).get();
break;
}
@@ -160,10 +166,10 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) {
if (!pFoundWindow->m_bIsX11) {
foundSurface = g_pCompositor->vectorWindowToSurface(mouseCoords, pFoundWindow, surfaceCoords);
- surfacePos = Vector2D(-1337, -1337);
+ surfacePos = Vector2D(-1337, -1337);
} else {
foundSurface = g_pXWaylandManager->getWindowSurface(pFoundWindow);
- surfacePos = pFoundWindow->m_vRealPosition.vec();
+ surfacePos = pFoundWindow->m_vRealPosition.vec();
}
}
@@ -187,9 +193,9 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) {
pFoundWindow = g_pCompositor->vectorToWindowIdeal(mouseCoords);
// TODO: this causes crashes, sometimes. ???
- // if (refocus && !pFoundWindow) {
- // pFoundWindow = g_pCompositor->getFirstWindowOnWorkspace(PMONITOR->activeWorkspace);
- // }
+ // if (refocus && !pFoundWindow) {
+ // pFoundWindow = g_pCompositor->getFirstWindowOnWorkspace(PMONITOR->activeWorkspace);
+ // }
}
if (pFoundWindow) {
@@ -197,7 +203,7 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) {
foundSurface = g_pCompositor->vectorWindowToSurface(mouseCoords, pFoundWindow, surfaceCoords);
} else {
foundSurface = g_pXWaylandManager->getWindowSurface(pFoundWindow);
- surfacePos = pFoundWindow->m_vRealPosition.vec();
+ surfacePos = pFoundWindow->m_vRealPosition.vec();
}
}
}
@@ -218,7 +224,7 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) {
wlr_xcursor_manager_set_cursor_image(g_pCompositor->m_sWLRXCursorMgr, "crosshair", g_pCompositor->m_sWLRCursor);
else
wlr_xcursor_manager_set_cursor_image(g_pCompositor->m_sWLRXCursorMgr, "left_ptr", g_pCompositor->m_sWLRCursor);
-
+
m_bEmptyFocusCursorSet = true;
}
@@ -258,14 +264,15 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) {
// set the values for use
if (refocus) {
- m_pFoundLSToFocus = pFoundLayerSurface;
- m_pFoundWindowToFocus = pFoundWindow;
+ m_pFoundLSToFocus = pFoundLayerSurface;
+ m_pFoundWindowToFocus = pFoundWindow;
m_pFoundSurfaceToFocus = foundSurface;
}
if (pFoundWindow) {
if (*PFOLLOWMOUSE != 1 && !refocus) {
- if (pFoundWindow != g_pCompositor->m_pLastWindow && g_pCompositor->m_pLastWindow && ((pFoundWindow->m_bIsFloating && *PFLOATBEHAVIOR == 2) || (g_pCompositor->m_pLastWindow->m_bIsFloating != pFoundWindow->m_bIsFloating && *PFLOATBEHAVIOR != 0))) {
+ if (pFoundWindow != g_pCompositor->m_pLastWindow && g_pCompositor->m_pLastWindow &&
+ ((pFoundWindow->m_bIsFloating && *PFLOATBEHAVIOR == 2) || (g_pCompositor->m_pLastWindow->m_bIsFloating != pFoundWindow->m_bIsFloating && *PFLOATBEHAVIOR != 0))) {
// enter if change floating style
if (*PFOLLOWMOUSE != 3 && allowKeyboardRefocus)
g_pCompositor->focusWindow(pFoundWindow, foundSurface);
@@ -289,7 +296,7 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) {
wlr_seat_pointer_notify_motion(g_pCompositor->m_sSeat.seat, time, surfaceLocal.x, surfaceLocal.y);
m_bLastFocusOnLS = false;
- return; // don't enter any new surfaces
+ return; // don't enter any new surfaces
} else {
if ((*PFOLLOWMOUSE != 3 && allowKeyboardRefocus) || refocus)
g_pCompositor->focusWindow(pFoundWindow, foundSurface);
@@ -315,14 +322,9 @@ void CInputManager::onMouseButton(wlr_pointer_button_event* e) {
m_tmrLastCursorMovement.reset();
switch (m_ecbClickBehavior) {
- case CLICKMODE_DEFAULT:
- processMouseDownNormal(e);
- break;
- case CLICKMODE_KILL:
- processMouseDownKill(e);
- break;
- default:
- break;
+ case CLICKMODE_DEFAULT: processMouseDownNormal(e); break;
+ case CLICKMODE_KILL: processMouseDownKill(e); break;
+ default: break;
}
}
@@ -372,17 +374,16 @@ void CInputManager::setClickMode(eClickBehaviorMode mode) {
// set cursor
wlr_xcursor_manager_set_cursor_image(g_pCompositor->m_sWLRXCursorMgr, "crosshair", g_pCompositor->m_sWLRCursor);
break;
- default:
- break;
+ default: break;
}
}
void CInputManager::processMouseDownNormal(wlr_pointer_button_event* e) {
-
+
// notify the keybind manager
- static auto *const PPASSMOUSE = &g_pConfigManager->getConfigValuePtr("binds:pass_mouse_when_bound")->intValue;
- const auto PASS = g_pKeybindManager->onMouseEvent(e);
- static auto *const PFOLLOWMOUSE = &g_pConfigManager->getConfigValuePtr("input:follow_mouse")->intValue;
+ static auto* const PPASSMOUSE = &g_pConfigManager->getConfigValuePtr("binds:pass_mouse_when_bound")->intValue;
+ const auto PASS = g_pKeybindManager->onMouseEvent(e);
+ static auto* const PFOLLOWMOUSE = &g_pConfigManager->getConfigValuePtr("input:follow_mouse")->intValue;
if (!PASS && !*PPASSMOUSE)
return;
@@ -400,8 +401,7 @@ void CInputManager::processMouseDownNormal(wlr_pointer_button_event* e) {
g_pCompositor->moveWindowToTop(g_pCompositor->m_pLastWindow);
break;
- case WLR_BUTTON_RELEASED:
- break;
+ case WLR_BUTTON_RELEASED: break;
}
// notify app if we didnt handle it
@@ -424,10 +424,8 @@ void CInputManager::processMouseDownKill(wlr_pointer_button_event* e) {
kill(PWINDOW->getPID(), SIGKILL);
break;
}
- case WLR_BUTTON_RELEASED:
- break;
- default:
- break;
+ case WLR_BUTTON_RELEASED: break;
+ default: break;
}
// reset click behavior mode
@@ -435,17 +433,16 @@ void CInputManager::processMouseDownKill(wlr_pointer_button_event* e) {
}
void CInputManager::onMouseWheel(wlr_pointer_axis_event* e) {
- static auto *const PSCROLLFACTOR = &g_pConfigManager->getConfigValuePtr("input:touchpad:scroll_factor")->floatValue;
+ static auto* const PSCROLLFACTOR = &g_pConfigManager->getConfigValuePtr("input:touchpad:scroll_factor")->floatValue;
- auto factor = (*PSCROLLFACTOR <= 0.f || e->source != WLR_AXIS_SOURCE_FINGER ? 1.f : *PSCROLLFACTOR);
+ auto factor = (*PSCROLLFACTOR <= 0.f || e->source != WLR_AXIS_SOURCE_FINGER ? 1.f : *PSCROLLFACTOR);
- bool passEvent = g_pKeybindManager->onAxisEvent(e);
+ bool passEvent = g_pKeybindManager->onAxisEvent(e);
wlr_idle_notify_activity(g_pCompositor->m_sWLRIdle, g_pCompositor->m_sSeat.seat);
if (passEvent) {
- wlr_seat_pointer_notify_axis(g_pCompositor->m_sSeat.seat, e->time_msec, e->orientation, factor * e->delta,
- std::round(factor * e->delta_discrete), e->source);
+ wlr_seat_pointer_notify_axis(g_pCompositor->m_sSeat.seat, e->time_msec, e->orientation, factor * e->delta, std::round(factor * e->delta_discrete), e->source);
}
}
@@ -461,19 +458,21 @@ void CInputManager::newKeyboard(wlr_input_device* keyboard) {
try {
PNEWKEYBOARD->name = getNameForNewDevice(keyboard->name);
} catch (std::exception& e) {
- Debug::log(ERR, "Keyboard had no name???"); // logic error
+ Debug::log(ERR, "Keyboard had no name???"); // logic error
}
PNEWKEYBOARD->hyprListener_keyboardMod.initCallback(&wlr_keyboard_from_input_device(keyboard)->events.modifiers, &Events::listener_keyboardMod, PNEWKEYBOARD, "Keyboard");
PNEWKEYBOARD->hyprListener_keyboardKey.initCallback(&wlr_keyboard_from_input_device(keyboard)->events.key, &Events::listener_keyboardKey, PNEWKEYBOARD, "Keyboard");
PNEWKEYBOARD->hyprListener_keyboardDestroy.initCallback(&keyboard->events.destroy, &Events::listener_keyboardDestroy, PNEWKEYBOARD, "Keyboard");
- PNEWKEYBOARD->hyprListener_keyboardKeymap.initCallback(&wlr_keyboard_from_input_device(keyboard)->events.keymap, [&](void* owner, void* data) {
- const auto PKEYBOARD = (SKeyboard*)owner;
-
- g_pEventManager->postEvent(SHyprIPCEvent{"activelayout", PKEYBOARD->name + "," +getActiveLayoutForKeyboard(PKEYBOARD)}, true); // force as this should ALWAYS be sent
+ PNEWKEYBOARD->hyprListener_keyboardKeymap.initCallback(
+ &wlr_keyboard_from_input_device(keyboard)->events.keymap,
+ [&](void* owner, void* data) {
+ const auto PKEYBOARD = (SKeyboard*)owner;
- }, PNEWKEYBOARD, "Keyboard");
+ g_pEventManager->postEvent(SHyprIPCEvent{"activelayout", PKEYBOARD->name + "," + getActiveLayoutForKeyboard(PKEYBOARD)}, true); // force as this should ALWAYS be sent
+ },
+ PNEWKEYBOARD, "Keyboard");
disableAllKeyboards(false);
@@ -491,24 +490,26 @@ void CInputManager::newKeyboard(wlr_input_device* keyboard) {
void CInputManager::newVirtualKeyboard(wlr_input_device* keyboard) {
const auto PNEWKEYBOARD = &m_lKeyboards.emplace_back();
- PNEWKEYBOARD->keyboard = keyboard;
+ PNEWKEYBOARD->keyboard = keyboard;
PNEWKEYBOARD->isVirtual = true;
try {
PNEWKEYBOARD->name = getNameForNewDevice(keyboard->name);
} catch (std::exception& e) {
- Debug::log(ERR, "Keyboard had no name???"); // logic error
+ Debug::log(ERR, "Keyboard had no name???"); // logic error
}
PNEWKEYBOARD->hyprListener_keyboardMod.initCallback(&wlr_keyboard_from_input_device(keyboard)->events.modifiers, &Events::listener_keyboardMod, PNEWKEYBOARD, "Keyboard");
PNEWKEYBOARD->hyprListener_keyboardKey.initCallback(&wlr_keyboard_from_input_device(keyboard)->events.key, &Events::listener_keyboardKey, PNEWKEYBOARD, "Keyboard");
PNEWKEYBOARD->hyprListener_keyboardDestroy.initCallback(&keyboard->events.destroy, &Events::listener_keyboardDestroy, PNEWKEYBOARD, "Keyboard");
- PNEWKEYBOARD->hyprListener_keyboardKeymap.initCallback(&wlr_keyboard_from_input_device(keyboard)->events.keymap, [&](void* owner, void* data) {
- const auto PKEYBOARD = (SKeyboard*)owner;
-
- g_pEventManager->postEvent(SHyprIPCEvent{"activelayout", PKEYBOARD->name + "," +getActiveLayoutForKeyboard(PKEYBOARD)}, true); // force as this should ALWAYS be sent
+ PNEWKEYBOARD->hyprListener_keyboardKeymap.initCallback(
+ &wlr_keyboard_from_input_device(keyboard)->events.keymap,
+ [&](void* owner, void* data) {
+ const auto PKEYBOARD = (SKeyboard*)owner;
- }, PNEWKEYBOARD, "Keyboard");
+ g_pEventManager->postEvent(SHyprIPCEvent{"activelayout", PKEYBOARD->name + "," + getActiveLayoutForKeyboard(PKEYBOARD)}, true); // force as this should ALWAYS be sent
+ },
+ PNEWKEYBOARD, "Keyboard");
disableAllKeyboards(true);
@@ -531,7 +532,7 @@ void CInputManager::setKeyboardLayout() {
}
void CInputManager::applyConfigToKeyboard(SKeyboard* pKeyboard) {
- auto devname = pKeyboard->name;
+ auto devname = pKeyboard->name;
const auto HASCONFIG = g_pConfigManager->deviceConfigExists(devname);
@@ -542,20 +543,22 @@ void CInputManager::applyConfigToKeyboard(SKeyboard* pKeyboard) {
if (!wlr_keyboard_from_input_device(pKeyboard->keyboard))
return;
- const auto REPEATRATE = HASCONFIG ? g_pConfigManager->getDeviceInt(devname, "repeat_rate") : g_pConfigManager->getInt("input:repeat_rate");
+ const auto REPEATRATE = HASCONFIG ? g_pConfigManager->getDeviceInt(devname, "repeat_rate") : g_pConfigManager->getInt("input:repeat_rate");
const auto REPEATDELAY = HASCONFIG ? g_pConfigManager->getDeviceInt(devname, "repeat_delay") : g_pConfigManager->getInt("input:repeat_delay");
const auto NUMLOCKON = HASCONFIG ? g_pConfigManager->getDeviceInt(devname, "numlock_by_default") : g_pConfigManager->getInt("input:numlock_by_default");
const auto FILEPATH = HASCONFIG ? g_pConfigManager->getDeviceString(devname, "kb_file") : g_pConfigManager->getString("input:kb_file");
- const auto RULES = HASCONFIG ? g_pConfigManager->getDeviceString(devname, "kb_rules") : g_pConfigManager->getString("input:kb_rules");
- const auto MODEL = HASCONFIG ? g_pConfigManager->getDeviceString(devname, "kb_model") : g_pConfigManager->getString("input:kb_model");
- const auto LAYOUT = HASCONFIG ? g_pConfigManager->getDeviceString(devname, "kb_layout") : g_pConfigManager->getString("input:kb_layout");
- const auto VARIANT = HASCONFIG ? g_pConfigManager->getDeviceString(devname, "kb_variant") : g_pConfigManager->getString("input:kb_variant");
- const auto OPTIONS = HASCONFIG ? g_pConfigManager->getDeviceString(devname, "kb_options") : g_pConfigManager->getString("input:kb_options");
+ const auto RULES = HASCONFIG ? g_pConfigManager->getDeviceString(devname, "kb_rules") : g_pConfigManager->getString("input:kb_rules");
+ const auto MODEL = HASCONFIG ? g_pConfigManager->getDeviceString(devname, "kb_model") : g_pConfigManager->getString("input:kb_model");
+ const auto LAYOUT = HASCONFIG ? g_pConfigManager->getDeviceString(devname, "kb_layout") : g_pConfigManager->getString("input:kb_layout");
+ const auto VARIANT = HASCONFIG ? g_pConfigManager->getDeviceString(devname, "kb_variant") : g_pConfigManager->getString("input:kb_variant");
+ const auto OPTIONS = HASCONFIG ? g_pConfigManager->getDeviceString(devname, "kb_options") : g_pConfigManager->getString("input:kb_options");
try {
- if (NUMLOCKON == pKeyboard->numlockOn && REPEATDELAY == pKeyboard->repeatDelay && REPEATRATE == pKeyboard->repeatRate && RULES != "" && RULES == pKeyboard->currentRules.rules && MODEL == pKeyboard->currentRules.model && LAYOUT == pKeyboard->currentRules.layout && VARIANT == pKeyboard->currentRules.variant && OPTIONS == pKeyboard->currentRules.options && FILEPATH == pKeyboard->xkbFilePath) {
+ if (NUMLOCKON == pKeyboard->numlockOn && REPEATDELAY == pKeyboard->repeatDelay && REPEATRATE == pKeyboard->repeatRate && RULES != "" &&
+ RULES == pKeyboard->currentRules.rules && MODEL == pKeyboard->currentRules.model && LAYOUT == pKeyboard->currentRules.layout &&
+ VARIANT == pKeyboard->currentRules.variant && OPTIONS == pKeyboard->currentRules.options && FILEPATH == pKeyboard->xkbFilePath) {
Debug::log(LOG, "Not applying config to keyboard, it did not change.");
return;
}
@@ -567,22 +570,17 @@ void CInputManager::applyConfigToKeyboard(SKeyboard* pKeyboard) {
wlr_keyboard_set_repeat_info(wlr_keyboard_from_input_device(pKeyboard->keyboard), std::max(0, REPEATRATE), std::max(0, REPEATDELAY));
pKeyboard->repeatDelay = REPEATDELAY;
- pKeyboard->repeatRate = REPEATRATE;
- pKeyboard->numlockOn = NUMLOCKON;
+ pKeyboard->repeatRate = REPEATRATE;
+ pKeyboard->numlockOn = NUMLOCKON;
pKeyboard->xkbFilePath = FILEPATH.c_str();
- xkb_rule_names rules = {
- .rules = RULES.c_str(),
- .model = MODEL.c_str(),
- .layout = LAYOUT.c_str(),
- .variant = VARIANT.c_str(),
- .options = OPTIONS.c_str()};
+ xkb_rule_names rules = {.rules = RULES.c_str(), .model = MODEL.c_str(), .layout = LAYOUT.c_str(), .variant = VARIANT.c_str(), .options = OPTIONS.c_str()};
- pKeyboard->currentRules.rules = RULES;
- pKeyboard->currentRules.model = MODEL;
+ pKeyboard->currentRules.rules = RULES;
+ pKeyboard->currentRules.model = MODEL;
pKeyboard->currentRules.variant = VARIANT;
pKeyboard->currentRules.options = OPTIONS;
- pKeyboard->currentRules.layout = LAYOUT;
+ pKeyboard->currentRules.layout = LAYOUT;
const auto CONTEXT = xkb_context_new(XKB_CONTEXT_NO_FLAGS);
@@ -591,35 +589,38 @@ void CInputManager::applyConfigToKeyboard(SKeyboard* pKeyboard) {
return;
}
- Debug::log(LOG, "Attempting to create a keymap for layout %s with variant %s (rules: %s, model: %s, options: %s)", rules.layout, rules.variant, rules.rules, rules.model, rules.options);
+ Debug::log(LOG, "Attempting to create a keymap for layout %s with variant %s (rules: %s, model: %s, options: %s)", rules.layout, rules.variant, rules.rules, rules.model,
+ rules.options);
- xkb_keymap * KEYMAP = NULL;
+ xkb_keymap* KEYMAP = NULL;
if (!FILEPATH.empty()) {
- auto path = absolutePath(FILEPATH, g_pConfigManager->configCurrentPath);
+ auto path = absolutePath(FILEPATH, g_pConfigManager->configCurrentPath);
- if (!std::filesystem::exists(path)) {
- Debug::log(ERR, "input:kb_file= file doesnt exist");
- } else {
- KEYMAP = xkb_keymap_new_from_file(CONTEXT, fopen(path.c_str(), "r"), XKB_KEYMAP_FORMAT_TEXT_V1, XKB_KEYMAP_COMPILE_NO_FLAGS);
- }
+ if (!std::filesystem::exists(path)) {
+ Debug::log(ERR, "input:kb_file= file doesnt exist");
+ } else {
+ KEYMAP = xkb_keymap_new_from_file(CONTEXT, fopen(path.c_str(), "r"), XKB_KEYMAP_FORMAT_TEXT_V1, XKB_KEYMAP_COMPILE_NO_FLAGS);
+ }
}
if (!KEYMAP) {
- KEYMAP = xkb_keymap_new_from_names(CONTEXT, &rules, XKB_KEYMAP_COMPILE_NO_FLAGS);
+ KEYMAP = xkb_keymap_new_from_names(CONTEXT, &rules, XKB_KEYMAP_COMPILE_NO_FLAGS);
}
if (!KEYMAP) {
- g_pConfigManager->addParseError("Invalid keyboard layout passed. ( rules: " + RULES + ", model: " + MODEL + ", variant: " + VARIANT + ", options: " + OPTIONS + ", layout: " + LAYOUT + " )");
+ g_pConfigManager->addParseError("Invalid keyboard layout passed. ( rules: " + RULES + ", model: " + MODEL + ", variant: " + VARIANT + ", options: " + OPTIONS +
+ ", layout: " + LAYOUT + " )");
- Debug::log(ERR, "Keyboard layout %s with variant %s (rules: %s, model: %s, options: %s) couldn't have been loaded.", rules.layout, rules.variant, rules.rules, rules.model, rules.options);
+ Debug::log(ERR, "Keyboard layout %s with variant %s (rules: %s, model: %s, options: %s) couldn't have been loaded.", rules.layout, rules.variant, rules.rules, rules.model,
+ rules.options);
memset(&rules, 0, sizeof(rules));
- pKeyboard->currentRules.rules = "";
- pKeyboard->currentRules.model = "";
+ pKeyboard->currentRules.rules = "";
+ pKeyboard->currentRules.model = "";
pKeyboard->currentRules.variant = "";
pKeyboard->currentRules.options = "";
- pKeyboard->currentRules.layout = "";
+ pKeyboard->currentRules.layout = "";
KEYMAP = xkb_keymap_new_from_names(CONTEXT, &rules, XKB_KEYMAP_COMPILE_NO_FLAGS);
}
@@ -643,7 +644,7 @@ void CInputManager::applyConfigToKeyboard(SKeyboard* pKeyboard) {
xkb_keymap_unref(KEYMAP);
xkb_context_unref(CONTEXT);
- g_pEventManager->postEvent(SHyprIPCEvent{"activelayout", pKeyboard->name + "," +getActiveLayoutForKeyboard(pKeyboard)}, true); // force as this should ALWAYS be sent
+ g_pEventManager->postEvent(SHyprIPCEvent{"activelayout", pKeyboard->name + "," + getActiveLayoutForKeyboard(pKeyboard)}, true); // force as this should ALWAYS be sent
Debug::log(LOG, "Set the keyboard layout to %s and variant to %s for keyboard \"%s\"", rules.layout, rules.variant, pKeyboard->keyboard->name);
}
@@ -653,17 +654,19 @@ void CInputManager::newMouse(wlr_input_device* mouse, bool virt) {
const auto PMOUSE = &m_lMice.back();
PMOUSE->mouse = mouse;
- PMOUSE->virt = virt;
+ PMOUSE->virt = virt;
try {
PMOUSE->name = getNameForNewDevice(mouse->name);
- } catch(std::exception& e) {
+ } catch (std::exception& e) {
Debug::log(ERR, "Mouse had no name???"); // logic error
}
if (wlr_input_device_is_libinput(mouse)) {
const auto LIBINPUTDEV = (libinput_device*)wlr_libinput_get_device_handle(mouse);
- Debug::log(LOG, "New mouse has libinput sens %.2f (%.2f) with accel profile %i (%i)", libinput_device_config_accel_get_speed(LIBINPUTDEV), libinput_device_config_accel_get_default_speed(LIBINPUTDEV), libinput_device_config_accel_get_profile(LIBINPUTDEV), libinput_device_config_accel_get_default_profile(LIBINPUTDEV));
+ Debug::log(LOG, "New mouse has libinput sens %.2f (%.2f) with accel profile %i (%i)", libinput_device_config_accel_get_speed(LIBINPUTDEV),
+ libinput_device_config_accel_get_default_speed(LIBINPUTDEV), libinput_device_config_accel_get_profile(LIBINPUTDEV),
+ libinput_device_config_accel_get_default_profile(LIBINPUTDEV));
}
wlr_cursor_attach_input_device(g_pCompositor->m_sWLRCursor, mouse);
@@ -685,7 +688,7 @@ void CInputManager::setPointerConfigs() {
for (auto& m : m_lMice) {
const auto PPOINTER = &m;
- auto devname = PPOINTER->name;
+ auto devname = PPOINTER->name;
const auto HASCONFIG = g_pConfigManager->deviceConfigExists(devname);
@@ -703,7 +706,8 @@ void CInputManager::setPointerConfigs() {
if (wlr_input_device_is_libinput(m.mouse)) {
const auto LIBINPUTDEV = (libinput_device*)wlr_libinput_get_device_handle(m.mouse);
- if ((HASCONFIG ? g_pConfigManager->getDeviceInt(devname, "clickfinger_behavior") : g_pConfigManager->getInt("input:touchpad:clickfinger_behavior")) == 0) // toggle software buttons or clickfinger
+ if ((HASCONFIG ? g_pConfigManager->getDeviceInt(devname, "clickfinger_behavior") : g_pConfigManager->getInt("input:touchpad:clickfinger_behavior")) ==
+ 0) // toggle software buttons or clickfinger
libinput_device_config_click_set_method(LIBINPUTDEV, LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS);
else
libinput_device_config_click_set_method(LIBINPUTDEV, LIBINPUT_CONFIG_CLICK_METHOD_CLICKFINGER);
@@ -713,7 +717,7 @@ void CInputManager::setPointerConfigs() {
else
libinput_device_config_left_handed_set(LIBINPUTDEV, 1);
- if (libinput_device_config_middle_emulation_is_available(LIBINPUTDEV)) { // middleclick on r+l mouse button pressed
+ if (libinput_device_config_middle_emulation_is_available(LIBINPUTDEV)) { // middleclick on r+l mouse button pressed
if ((HASCONFIG ? g_pConfigManager->getDeviceInt(devname, "middle_button_emulation") : g_pConfigManager->getInt("input:touchpad:middle_button_emulation")) == 1)
libinput_device_config_middle_emulation_set_enabled(LIBINPUTDEV, LIBINPUT_CONFIG_MIDDLE_EMULATION_ENABLED);
else
@@ -740,25 +744,30 @@ void CInputManager::setPointerConfigs() {
else
libinput_device_config_tap_set_drag_lock_enabled(LIBINPUTDEV, LIBINPUT_CONFIG_DRAG_LOCK_ENABLED);
- if (libinput_device_config_tap_get_finger_count(LIBINPUTDEV)) // this is for tapping (like on a laptop)
+ if (libinput_device_config_tap_get_finger_count(LIBINPUTDEV)) // this is for tapping (like on a laptop)
if ((HASCONFIG ? g_pConfigManager->getDeviceInt(devname, "tap-to-click") : g_pConfigManager->getInt("input:touchpad:tap-to-click")) == 1)
libinput_device_config_tap_set_enabled(LIBINPUTDEV, LIBINPUT_CONFIG_TAP_ENABLED);
if (libinput_device_config_scroll_has_natural_scroll(LIBINPUTDEV)) {
double w = 0, h = 0;
- if (libinput_device_has_capability(LIBINPUTDEV, LIBINPUT_DEVICE_CAP_POINTER) && libinput_device_get_size(LIBINPUTDEV, &w, &h) == 0) // pointer with size is a touchpad
- libinput_device_config_scroll_set_natural_scroll_enabled(LIBINPUTDEV, (HASCONFIG ? g_pConfigManager->getDeviceInt(devname, "natural_scroll") : g_pConfigManager->getInt("input:touchpad:natural_scroll")));
+ if (libinput_device_has_capability(LIBINPUTDEV, LIBINPUT_DEVICE_CAP_POINTER) &&
+ libinput_device_get_size(LIBINPUTDEV, &w, &h) == 0) // pointer with size is a touchpad
+ libinput_device_config_scroll_set_natural_scroll_enabled(
+ LIBINPUTDEV, (HASCONFIG ? g_pConfigManager->getDeviceInt(devname, "natural_scroll") : g_pConfigManager->getInt("input:touchpad:natural_scroll")));
else
- libinput_device_config_scroll_set_natural_scroll_enabled(LIBINPUTDEV, (HASCONFIG ? g_pConfigManager->getDeviceInt(devname, "natural_scroll") : g_pConfigManager->getInt("input:natural_scroll")));
+ libinput_device_config_scroll_set_natural_scroll_enabled(
+ LIBINPUTDEV, (HASCONFIG ? g_pConfigManager->getDeviceInt(devname, "natural_scroll") : g_pConfigManager->getInt("input:natural_scroll")));
}
if (libinput_device_config_dwt_is_available(LIBINPUTDEV)) {
- const auto DWT = static_cast<enum libinput_config_dwt_state>((HASCONFIG ? g_pConfigManager->getDeviceInt(devname, "disable_while_typing") : g_pConfigManager->getInt("input:touchpad:disable_while_typing")) != 0);
+ const auto DWT = static_cast<enum libinput_config_dwt_state>(
+ (HASCONFIG ? g_pConfigManager->getDeviceInt(devname, "disable_while_typing") : g_pConfigManager->getInt("input:touchpad:disable_while_typing")) != 0);
libinput_device_config_dwt_set_enabled(LIBINPUTDEV, DWT);
}
- const auto LIBINPUTSENS = std::clamp((HASCONFIG ? g_pConfigManager->getDeviceFloat(devname, "sensitivity") : g_pConfigManager->getFloat("input:sensitivity")), -1.f, 1.f);
+ const auto LIBINPUTSENS =
+ std::clamp((HASCONFIG ? g_pConfigManager->getDeviceFloat(devname, "sensitivity") : g_pConfigManager->getFloat("input:sensitivity")), -1.f, 1.f);
libinput_device_config_accel_set_speed(LIBINPUTDEV, LIBINPUTSENS);
const auto ACCELPROFILE = HASCONFIG ? g_pConfigManager->getDeviceString(devname, "accel_profile") : g_pConfigManager->getString("input:accel_profile");
@@ -791,7 +800,7 @@ void CInputManager::destroyKeyboard(SKeyboard* pKeyboard) {
m_lKeyboards.remove(*pKeyboard);
if (m_lKeyboards.size() > 0) {
- m_pActiveKeyboard = &m_lKeyboards.back();
+ m_pActiveKeyboard = &m_lKeyboards.back();
m_pActiveKeyboard->active = true;
} else {
m_pActiveKeyboard = nullptr;
@@ -815,22 +824,20 @@ void CInputManager::destroyMouse(wlr_input_device* mouse) {
unconstrainMouse();
}
-
-void CInputManager::updateKeyboardsLeds(wlr_input_device* pKeyboard) {
+void CInputManager::updateKeyboardsLeds(wlr_input_device* pKeyboard) {
auto keyboard = wlr_keyboard_from_input_device(pKeyboard);
-
+
if (keyboard->xkb_state == NULL) {
- return;
- }
-
- uint32_t leds = 0;
- for (uint32_t i = 0; i < WLR_LED_COUNT; ++i) {
- if (xkb_state_led_index_is_active(keyboard->xkb_state,
- keyboard->led_indexes[i])) {
- leds |= (1 << i);
- }
- }
-
+ return;
+ }
+
+ uint32_t leds = 0;
+ for (uint32_t i = 0; i < WLR_LED_COUNT; ++i) {
+ if (xkb_state_led_index_is_active(keyboard->xkb_state, keyboard->led_indexes[i])) {
+ leds |= (1 << i);
+ }
+ }
+
for (auto& kb : m_lKeyboards) {
if ((kb.isVirtual && shouldIgnoreVirtualKeyboard(&kb)) || kb.keyboard == pKeyboard)
continue;
@@ -839,7 +846,6 @@ void CInputManager::updateKeyboardsLeds(wlr_input_device* pKeyboard) {
}
}
-
void CInputManager::onKeyboardKey(wlr_keyboard_key_event* e, SKeyboard* pKeyboard) {
bool passEvent = g_pKeybindManager->onKeyEvent(e, pKeyboard);
@@ -866,8 +872,8 @@ void CInputManager::onKeyboardMod(void* data, SKeyboard* pKeyboard) {
const auto ALLMODS = accumulateModsFromAllKBs();
- auto MODS = wlr_keyboard_from_input_device(pKeyboard->keyboard)->modifiers;
- MODS.depressed = ALLMODS;
+ auto MODS = wlr_keyboard_from_input_device(pKeyboard->keyboard)->modifiers;
+ MODS.depressed = ALLMODS;
if (PIMEGRAB && PIMEGRAB->pWlrKbGrab && PIMEGRAB->pWlrKbGrab->input_method) {
wlr_input_method_keyboard_grab_v2_set_keyboard(PIMEGRAB->pWlrKbGrab, wlr_keyboard_from_input_device(pKeyboard->keyboard));
@@ -882,14 +888,16 @@ void CInputManager::onKeyboardMod(void* data, SKeyboard* pKeyboard) {
const auto PWLRKB = wlr_keyboard_from_input_device(pKeyboard->keyboard);
if (PWLRKB->modifiers.group != pKeyboard->activeLayout) {
- pKeyboard->activeLayout = PWLRKB->modifiers.group;
+ pKeyboard->activeLayout = PWLRKB->modifiers.group;
g_pEventManager->postEvent(SHyprIPCEvent{"activelayout", pKeyboard->name + "," + getActiveLayoutForKeyboard(pKeyboard)}, true); // force as this should ALWAYS be sent
- }
+ }
}
bool CInputManager::shouldIgnoreVirtualKeyboard(SKeyboard* pKeyboard) {
- return !pKeyboard || (m_sIMERelay.m_pKeyboardGrab && wl_resource_get_client(m_sIMERelay.m_pKeyboardGrab->pWlrKbGrab->resource) == wl_resource_get_client(wlr_input_device_get_virtual_keyboard(pKeyboard->keyboard)->resource));
+ return !pKeyboard ||
+ (m_sIMERelay.m_pKeyboardGrab &&
+ wl_resource_get_client(m_sIMERelay.m_pKeyboardGrab->pWlrKbGrab->resource) == wl_resource_get_client(wlr_input_device_get_virtual_keyboard(pKeyboard->keyboard)->resource));
}
void CInputManager::refocus() {
@@ -901,16 +909,14 @@ void CInputManager::updateDragIcon() {
return;
switch (m_sDrag.dragIcon->drag->grab_type) {
- case WLR_DRAG_GRAB_KEYBOARD:
- break;
+ case WLR_DRAG_GRAB_KEYBOARD: break;
case WLR_DRAG_GRAB_KEYBOARD_POINTER: {
wlr_box box = {m_sDrag.pos.x - 2, m_sDrag.pos.y - 2, m_sDrag.dragIcon->surface->current.width + 4, m_sDrag.dragIcon->surface->current.height + 4};
g_pHyprRenderer->damageBox(&box);
m_sDrag.pos = getMouseCoordsInternal();
break;
}
- default:
- break;
+ default: break;
}
}
@@ -926,10 +932,11 @@ void CInputManager::recheckConstraint(SMouse* pMouse) {
pixman_region32_clear(&pMouse->confinedTo);
}
- const auto PWINDOW = g_pCompositor->getConstraintWindow(g_pCompositor->m_sSeat.mouse);
+ const auto PWINDOW = g_pCompositor->getConstraintWindow(g_pCompositor->m_sSeat.mouse);
const auto PWINDOWNAME = PWINDOW ? PWINDOW->m_szTitle : "";
- Debug::log(LOG, "Constraint rechecked: %i, %i to %i, %i for %x (window name: %s)", PREGION->extents.x1, PREGION->extents.y1, PREGION->extents.x2, PREGION->extents.y2, pMouse->currentConstraint->surface, PWINDOWNAME.c_str());
+ Debug::log(LOG, "Constraint rechecked: %i, %i to %i, %i for %x (window name: %s)", PREGION->extents.x1, PREGION->extents.y1, PREGION->extents.x2, PREGION->extents.y2,
+ pMouse->currentConstraint->surface, PWINDOWNAME.c_str());
}
void CInputManager::constrainMouse(SMouse* pMouse, wlr_pointer_constraint_v1* constraint) {
@@ -937,7 +944,7 @@ void CInputManager::constrainMouse(SMouse* pMouse, wlr_pointer_constraint_v1* co
if (pMouse->currentConstraint == constraint)
return;
- const auto PWINDOW = g_pCompositor->getWindowFromSurface(constraint->surface);
+ const auto PWINDOW = g_pCompositor->getWindowFromSurface(constraint->surface);
const auto MOUSECOORDS = getMouseCoordsInternal();
pMouse->hyprListener_commitConstraint.removeCallback();
@@ -949,13 +956,13 @@ void CInputManager::constrainMouse(SMouse* pMouse, wlr_pointer_constraint_v1* co
if (constraint->current.committed & WLR_POINTER_CONSTRAINT_V1_STATE_CURSOR_HINT) {
if (PWINDOW) {
if (PWINDOW->m_bIsX11) {
- wlr_cursor_warp(g_pCompositor->m_sWLRCursor, nullptr,
- constraint->current.cursor_hint.x + PWINDOW->m_uSurface.xwayland->x, PWINDOW->m_uSurface.xwayland->y + PWINDOW->m_vRealPosition.vec().y);
+ wlr_cursor_warp(g_pCompositor->m_sWLRCursor, nullptr, constraint->current.cursor_hint.x + PWINDOW->m_uSurface.xwayland->x,
+ PWINDOW->m_uSurface.xwayland->y + PWINDOW->m_vRealPosition.vec().y);
wlr_seat_pointer_warp(constraint->seat, constraint->current.cursor_hint.x, constraint->current.cursor_hint.y);
} else {
- wlr_cursor_warp(g_pCompositor->m_sWLRCursor, nullptr,
- constraint->current.cursor_hint.x + PWINDOW->m_vRealPosition.vec().x, constraint->current.cursor_hint.y + PWINDOW->m_vRealPosition.vec().y);
+ wlr_cursor_warp(g_pCompositor->m_sWLRCursor, nullptr, constraint->current.cursor_hint.x + PWINDOW->m_vRealPosition.vec().x,
+ constraint->current.cursor_hint.y + PWINDOW->m_vRealPosition.vec().y);
wlr_seat_pointer_warp(constraint->seat, constraint->current.cursor_hint.x, constraint->current.cursor_hint.y);
}
@@ -964,7 +971,7 @@ void CInputManager::constrainMouse(SMouse* pMouse, wlr_pointer_constraint_v1* co
const auto PCONSTRAINT = constraintFromWlr(constraint);
if (PCONSTRAINT) { // should never be null but who knows
PCONSTRAINT->positionHint = Vector2D(constraint->current.cursor_hint.x, constraint->current.cursor_hint.y);
- PCONSTRAINT->hintSet = true;
+ PCONSTRAINT->hintSet = true;
}
}
}
@@ -973,7 +980,7 @@ void CInputManager::constrainMouse(SMouse* pMouse, wlr_pointer_constraint_v1* co
}
pMouse->currentConstraint = constraint;
- pMouse->constraintActive = true;
+ pMouse->constraintActive = true;
if (pixman_region32_not_empty(&constraint->current.region)) {
pixman_region32_intersect(&constraint->region, &constraint->surface->input_region, &constraint->current.region);
@@ -1015,9 +1022,9 @@ void Events::listener_commitConstraint(void* owner, void* data) {
if (PMOUSE->currentConstraint->current.committed & WLR_POINTER_CONSTRAINT_V1_STATE_CURSOR_HINT) {
const auto PCONSTRAINT = g_pInputManager->constraintFromWlr(PMOUSE->currentConstraint);
- if (PCONSTRAINT) { // should never be null but who knows
+ if (PCONSTRAINT) { // should never be null but who knows
PCONSTRAINT->positionHint = Vector2D(PMOUSE->currentConstraint->current.cursor_hint.x, PMOUSE->currentConstraint->current.cursor_hint.y);
- PCONSTRAINT->hintSet = true;
+ PCONSTRAINT->hintSet = true;
}
}
}
@@ -1053,9 +1060,9 @@ uint32_t CInputManager::accumulateModsFromAllKBs() {
}
std::string CInputManager::getActiveLayoutForKeyboard(SKeyboard* pKeyboard) {
- const auto WLRKB = wlr_keyboard_from_input_device(pKeyboard->keyboard);
- const auto KEYMAP = WLRKB->keymap;
- const auto STATE = WLRKB->xkb_state;
+ const auto WLRKB = wlr_keyboard_from_input_device(pKeyboard->keyboard);
+ const auto KEYMAP = WLRKB->keymap;
+ const auto STATE = WLRKB->xkb_state;
const auto LAYOUTSNUM = xkb_keymap_num_layouts(KEYMAP);
for (uint32_t i = 0; i < LAYOUTSNUM; ++i) {
@@ -1082,12 +1089,12 @@ void CInputManager::disableAllKeyboards(bool virt) {
}
void CInputManager::newTouchDevice(wlr_input_device* pDevice) {
- const auto PNEWDEV = &m_lTouchDevices.emplace_back();
+ const auto PNEWDEV = &m_lTouchDevices.emplace_back();
PNEWDEV->pWlrDevice = pDevice;
try {
PNEWDEV->name = getNameForNewDevice(pDevice->name);
- } catch(std::exception& e) {
+ } catch (std::exception& e) {
Debug::log(ERR, "Touch Device had no name???"); // logic error
}
@@ -1096,47 +1103,28 @@ void CInputManager::newTouchDevice(wlr_input_device* pDevice) {
Debug::log(LOG, "New touch device added at %x", PNEWDEV);
- PNEWDEV->hyprListener_destroy.initCallback(&pDevice->events.destroy, [&](void* owner, void* data) {
- destroyTouchDevice((STouchDevice*)data);
- }, PNEWDEV, "TouchDevice");
+ PNEWDEV->hyprListener_destroy.initCallback(
+ &pDevice->events.destroy, [&](void* owner, void* data) { destroyTouchDevice((STouchDevice*)data); }, PNEWDEV, "TouchDevice");
}
void CInputManager::setTouchDeviceConfigs() {
// The third row is always 0 0 1 and is not expected by `libinput_device_config_calibration_set_matrix`
- static const float MATRICES[8][6] = {
- { // normal
- 1, 0, 0,
- 0, 1, 0
- },
- { // rotation 90°
- 0, -1, 1,
- 1, 0, 0
- },
- { // rotation 180°
- -1, 0, 1,
- 0, -1, 1
- },
- { // rotation 270°
- 0, 1, 0,
- -1, 0, 1
- },
- { // flipped
- -1, 0, 1,
- 0, 1, 0
- },
- { // flipped + rotation 90°
- 0, 1, 0,
- 1, 0, 0
- },
- { // flipped + rotation 180°
- 1, 0, 0,
- 0, -1, 1
- },
- { // flipped + rotation 270°
- 0, -1, 1,
- -1, 0, 1
- }
- };
+ static const float MATRICES[8][6] = {{// normal
+ 1, 0, 0, 0, 1, 0},
+ {// rotation 90°
+ 0, -1, 1, 1, 0, 0},
+ {// rotation 180°
+ -1, 0, 1, 0, -1, 1},
+ {// rotation 270°
+ 0, 1, 0, -1, 0, 1},
+ {// flipped
+ -1, 0, 1, 0, 1, 0},
+ {// flipped + rotation 90°
+ 0, 1, 0, 1, 0, 0},
+ {// flipped + rotation 180°
+ 1, 0, 0, 0, -1, 1},
+ {// flipped + rotation 270°
+ 0, -1, 1, -1, 0, 1}};
for (auto& m : m_lTouchDevices) {
const auto PTOUCHDEV = &m;
@@ -1145,7 +1133,8 @@ void CInputManager::setTouchDeviceConfigs() {
if (wlr_input_device_is_libinput(m.pWlrDevice)) {
const auto LIBINPUTDEV = (libinput_device*)wlr_libinput_get_device_handle(m.pWlrDevice);
- const int ROTATION = std::clamp(HASCONFIG ? g_pConfigManager->getDeviceInt(PTOUCHDEV->name, "touch_transform") : g_pConfigManager->getInt("input:touchdevice:transform"), 0, 7);
+ const int ROTATION =
+ std::clamp(HASCONFIG ? g_pConfigManager->getDeviceInt(PTOUCHDEV->name, "touch_transform") : g_pConfigManager->getInt("input:touchdevice:transform"), 0, 7);
libinput_device_config_calibration_set_matrix(LIBINPUTDEV, MATRICES[ROTATION]);
const auto OUTPUT = HASCONFIG ? g_pConfigManager->getDeviceString(PTOUCHDEV->name, "touch_output") : g_pConfigManager->getString("input:touchdevice:output");
@@ -1164,25 +1153,27 @@ void CInputManager::destroyTouchDevice(STouchDevice* pDevice) {
}
void CInputManager::newSwitch(wlr_input_device* pDevice) {
- const auto PNEWDEV = &m_lSwitches.emplace_back();
+ const auto PNEWDEV = &m_lSwitches.emplace_back();
PNEWDEV->pWlrDevice = pDevice;
Debug::log(LOG, "New switch with name \"%s\" added", pDevice->name);
- PNEWDEV->hyprListener_destroy.initCallback(&pDevice->events.destroy, [&](void* owner, void* data) {
- destroySwitch((SSwitchDevice*)owner);
- }, PNEWDEV, "SwitchDevice");
+ PNEWDEV->hyprListener_destroy.initCallback(
+ &pDevice->events.destroy, [&](void* owner, void* data) { destroySwitch((SSwitchDevice*)owner); }, PNEWDEV, "SwitchDevice");
const auto PSWITCH = wlr_switch_from_input_device(pDevice);
- PNEWDEV->hyprListener_toggle.initCallback(&PSWITCH->events.toggle, [&](void* owner, void* data) {
- const auto PDEVICE = (SSwitchDevice*)owner;
- const auto NAME = std::string(PDEVICE->pWlrDevice->name);
+ PNEWDEV->hyprListener_toggle.initCallback(
+ &PSWITCH->events.toggle,
+ [&](void* owner, void* data) {
+ const auto PDEVICE = (SSwitchDevice*)owner;
+ const auto NAME = std::string(PDEVICE->pWlrDevice->name);
- Debug::log(LOG, "Switch %s fired, triggering binds.", NAME.c_str());
+ Debug::log(LOG, "Switch %s fired, triggering binds.", NAME.c_str());
- g_pKeybindManager->onSwitchEvent(NAME);
- }, PNEWDEV, "SwitchDevice");
+ g_pKeybindManager->onSwitchEvent(NAME);
+ },
+ PNEWDEV, "SwitchDevice");
}
void CInputManager::destroySwitch(SSwitchDevice* pDevice) {
@@ -1212,24 +1203,30 @@ std::string CInputManager::deviceNameToInternalString(std::string in) {
std::string CInputManager::getNameForNewDevice(std::string internalName) {
auto proposedNewName = deviceNameToInternalString(internalName);
- int dupeno = 0;
+ int dupeno = 0;
- while (std::find_if(m_lKeyboards.begin(), m_lKeyboards.end(), [&] (const SKeyboard& other) { return other.name == proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); }) != m_lKeyboards.end())
+ while (std::find_if(m_lKeyboards.begin(), m_lKeyboards.end(),
+ [&](const SKeyboard& other) { return other.name == proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); }) != m_lKeyboards.end())
dupeno++;
- while (std::find_if(m_lMice.begin(), m_lMice.end(), [&] (const SMouse& other) { return other.name == proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); }) != m_lMice.end())
+ while (std::find_if(m_lMice.begin(), m_lMice.end(), [&](const SMouse& other) { return other.name == proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); }) !=
+ m_lMice.end())
dupeno++;
- while (std::find_if(m_lTouchDevices.begin(), m_lTouchDevices.end(), [&] (const STouchDevice& other) { return other.name == proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); }) != m_lTouchDevices.end())
+ while (std::find_if(m_lTouchDevices.begin(), m_lTouchDevices.end(),
+ [&](const STouchDevice& other) { return other.name == proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); }) != m_lTouchDevices.end())
dupeno++;
- while (std::find_if(m_lTabletPads.begin(), m_lTabletPads.end(), [&] (const STabletPad& other) { return other.name == proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); }) != m_lTabletPads.end())
+ while (std::find_if(m_lTabletPads.begin(), m_lTabletPads.end(),
+ [&](const STabletPad& other) { return other.name == proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); }) != m_lTabletPads.end())
dupeno++;
- while (std::find_if(m_lTablets.begin(), m_lTablets.end(), [&] (const STablet& other) { return other.name == proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); }) != m_lTablets.end())
+ while (std::find_if(m_lTablets.begin(), m_lTablets.end(),
+ [&](const STablet& other) { return other.name == proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); }) != m_lTablets.end())
dupeno++;
- while (std::find_if(m_lTabletTools.begin(), m_lTabletTools.end(), [&] (const STabletTool& other) { return other.name == proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); }) != m_lTabletTools.end())
+ while (std::find_if(m_lTabletTools.begin(), m_lTabletTools.end(),
+ [&](const STabletTool& other) { return other.name == proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); }) != m_lTabletTools.end())
dupeno++;
return proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno)));
diff --git a/src/managers/input/InputManager.hpp b/src/managers/input/InputManager.hpp
index 5645f163..460b5ac2 100644
--- a/src/managers/input/InputManager.hpp
+++ b/src/managers/input/InputManager.hpp
@@ -7,89 +7,90 @@
#include "../../helpers/Timer.hpp"
#include "InputMethodRelay.hpp"
-enum eClickBehaviorMode {
+enum eClickBehaviorMode
+{
CLICKMODE_DEFAULT = 0,
CLICKMODE_KILL
};
-enum eMouseBindMode {
+enum eMouseBindMode
+{
MBIND_INVALID = -1,
- MBIND_MOVE = 0,
+ MBIND_MOVE = 0,
MBIND_RESIZE
};
struct STouchData {
- CWindow* touchFocusWindow = nullptr;
- SLayerSurface* touchFocusLS = nullptr;
- wlr_surface* touchFocusSurface = nullptr;
- Vector2D touchSurfaceOrigin;
+ CWindow* touchFocusWindow = nullptr;
+ SLayerSurface* touchFocusLS = nullptr;
+ wlr_surface* touchFocusSurface = nullptr;
+ Vector2D touchSurfaceOrigin;
};
class CKeybindManager;
class CInputManager {
-public:
-
- void onMouseMoved(wlr_pointer_motion_event*);
- void onMouseWarp(wlr_pointer_motion_absolute_event*);
- void onMouseButton(wlr_pointer_button_event*);
- void onMouseWheel(wlr_pointer_axis_event*);
- void onKeyboardKey(wlr_keyboard_key_event*, SKeyboard*);
- void onKeyboardMod(void*, SKeyboard*);
-
- void newKeyboard(wlr_input_device*);
- void newVirtualKeyboard(wlr_input_device*);
- void newMouse(wlr_input_device*, bool virt = false);
- void newTouchDevice(wlr_input_device*);
- void newSwitch(wlr_input_device*);
- void destroyTouchDevice(STouchDevice*);
- void destroyKeyboard(SKeyboard*);
- void destroyMouse(wlr_input_device*);
- void destroySwitch(SSwitchDevice*);
-
- void constrainMouse(SMouse*, wlr_pointer_constraint_v1*);
- void recheckConstraint(SMouse*);
- void unconstrainMouse();
- SConstraint* constraintFromWlr(wlr_pointer_constraint_v1*);
- std::string getActiveLayoutForKeyboard(SKeyboard*);
-
- Vector2D getMouseCoordsInternal();
- void refocus();
-
- void setKeyboardLayout();
- void setPointerConfigs();
- void setTouchDeviceConfigs();
-
- void updateDragIcon();
- void updateCapabilities();
-
- void setClickMode(eClickBehaviorMode);
+ public:
+ void onMouseMoved(wlr_pointer_motion_event*);
+ void onMouseWarp(wlr_pointer_motion_absolute_event*);
+ void onMouseButton(wlr_pointer_button_event*);
+ void onMouseWheel(wlr_pointer_axis_event*);
+ void onKeyboardKey(wlr_keyboard_key_event*, SKeyboard*);
+ void onKeyboardMod(void*, SKeyboard*);
+
+ void newKeyboard(wlr_input_device*);
+ void newVirtualKeyboard(wlr_input_device*);
+ void newMouse(wlr_input_device*, bool virt = false);
+ void newTouchDevice(wlr_input_device*);
+ void newSwitch(wlr_input_device*);
+ void destroyTouchDevice(STouchDevice*);
+ void destroyKeyboard(SKeyboard*);
+ void destroyMouse(wlr_input_device*);
+ void destroySwitch(SSwitchDevice*);
+
+ void constrainMouse(SMouse*, wlr_pointer_constraint_v1*);
+ void recheckConstraint(SMouse*);
+ void unconstrainMouse();
+ SConstraint* constraintFromWlr(wlr_pointer_constraint_v1*);
+ std::string getActiveLayoutForKeyboard(SKeyboard*);
+
+ Vector2D getMouseCoordsInternal();
+ void refocus();
+
+ void setKeyboardLayout();
+ void setPointerConfigs();
+ void setTouchDeviceConfigs();
+
+ void updateDragIcon();
+ void updateCapabilities();
+
+ void setClickMode(eClickBehaviorMode);
eClickBehaviorMode getClickMode();
- void processMouseRequest(wlr_seat_pointer_request_set_cursor_event*);
+ void processMouseRequest(wlr_seat_pointer_request_set_cursor_event*);
- void onTouchDown(wlr_touch_down_event*);
- void onTouchUp(wlr_touch_up_event*);
- void onTouchMove(wlr_touch_motion_event*);
+ void onTouchDown(wlr_touch_down_event*);
+ void onTouchUp(wlr_touch_up_event*);
+ void onTouchMove(wlr_touch_motion_event*);
- void onPointerHoldBegin(wlr_pointer_hold_begin_event*);
- void onPointerHoldEnd(wlr_pointer_hold_end_event*);
+ void onPointerHoldBegin(wlr_pointer_hold_begin_event*);
+ void onPointerHoldEnd(wlr_pointer_hold_end_event*);
- STouchData m_sTouchData;
+ STouchData m_sTouchData;
// for dragging floating windows
- CWindow* currentlyDraggedWindow = nullptr;
- eMouseBindMode dragMode = MBIND_INVALID;
+ CWindow* currentlyDraggedWindow = nullptr;
+ eMouseBindMode dragMode = MBIND_INVALID;
- SDrag m_sDrag;
+ SDrag m_sDrag;
- std::list<SConstraint> m_lConstraints;
- std::list<SKeyboard> m_lKeyboards;
- std::list<SMouse> m_lMice;
+ std::list<SConstraint> m_lConstraints;
+ std::list<SKeyboard> m_lKeyboards;
+ std::list<SMouse> m_lMice;
// tablets
- std::list<STablet> m_lTablets;
- std::list<STabletTool> m_lTabletTools;
- std::list<STabletPad> m_lTabletPads;
+ std::list<STablet> m_lTablets;
+ std::list<STabletTool> m_lTabletTools;
+ std::list<STabletPad> m_lTabletPads;
// idle inhibitors
std::list<SIdleInhibitor> m_lIdleInhibitors;
@@ -100,73 +101,72 @@ public:
// Switches
std::list<SSwitchDevice> m_lSwitches;
- void newTabletTool(wlr_input_device*);
- void newTabletPad(wlr_input_device*);
- void focusTablet(STablet*, wlr_tablet_tool*, bool motion = false);
- void newIdleInhibitor(wlr_idle_inhibitor_v1*);
- void recheckIdleInhibitorStatus();
+ void newTabletTool(wlr_input_device*);
+ void newTabletPad(wlr_input_device*);
+ void focusTablet(STablet*, wlr_tablet_tool*, bool motion = false);
+ void newIdleInhibitor(wlr_idle_inhibitor_v1*);
+ void recheckIdleInhibitorStatus();
- void onSwipeBegin(wlr_pointer_swipe_begin_event*);
- void onSwipeEnd(wlr_pointer_swipe_end_event*);
- void onSwipeUpdate(wlr_pointer_swipe_update_event*);
+ void onSwipeBegin(wlr_pointer_swipe_begin_event*);
+ void onSwipeEnd(wlr_pointer_swipe_end_event*);
+ void onSwipeUpdate(wlr_pointer_swipe_update_event*);
- SSwipeGesture m_sActiveSwipe;
+ SSwipeGesture m_sActiveSwipe;
- SKeyboard* m_pActiveKeyboard = nullptr;
+ SKeyboard* m_pActiveKeyboard = nullptr;
- CTimer m_tmrLastCursorMovement;
+ CTimer m_tmrLastCursorMovement;
- CInputMethodRelay m_sIMERelay;
+ CInputMethodRelay m_sIMERelay;
- void updateKeyboardsLeds(wlr_input_device* pKeyboard);
+ void updateKeyboardsLeds(wlr_input_device* pKeyboard);
// for shared mods
- uint32_t accumulateModsFromAllKBs();
+ uint32_t accumulateModsFromAllKBs();
- CWindow* m_pFollowOnDnDBegin = nullptr;
+ CWindow* m_pFollowOnDnDBegin = nullptr;
// for virtual keyboards: whether we should respect them as normal ones
- bool shouldIgnoreVirtualKeyboard(SKeyboard*);
+ bool shouldIgnoreVirtualKeyboard(SKeyboard*);
// for special cursors that we choose
- void setCursorImageUntilUnset(std::string);
- void unsetCursorImage();
+ void setCursorImageUntilUnset(std::string);
+ void unsetCursorImage();
- std::string deviceNameToInternalString(std::string);
- std::string getNameForNewDevice(std::string);
+ std::string deviceNameToInternalString(std::string);
+ std::string getNameForNewDevice(std::string);
-private:
-
- bool m_bCursorImageOverriden = false;
+ private:
+ bool m_bCursorImageOverriden = false;
// for click behavior override
- eClickBehaviorMode m_ecbClickBehavior = CLICKMODE_DEFAULT;
- bool m_bEmptyFocusCursorSet = false;
- Vector2D m_vLastCursorPosFloored = Vector2D();
+ eClickBehaviorMode m_ecbClickBehavior = CLICKMODE_DEFAULT;
+ bool m_bEmptyFocusCursorSet = false;
+ Vector2D m_vLastCursorPosFloored = Vector2D();
// for some bugs in follow mouse 0
- bool m_bLastFocusOnLS = false;
+ bool m_bLastFocusOnLS = false;
- void processMouseDownNormal(wlr_pointer_button_event* e);
- void processMouseDownKill(wlr_pointer_button_event* e);
+ void processMouseDownNormal(wlr_pointer_button_event* e);
+ void processMouseDownKill(wlr_pointer_button_event* e);
- void disableAllKeyboards(bool virt = false);
+ void disableAllKeyboards(bool virt = false);
- uint32_t m_uiCapabilities = 0;
+ uint32_t m_uiCapabilities = 0;
- void mouseMoveUnified(uint32_t, bool refocus = false);
+ void mouseMoveUnified(uint32_t, bool refocus = false);
- STabletTool* ensureTabletToolPresent(wlr_tablet_tool*);
+ STabletTool* ensureTabletToolPresent(wlr_tablet_tool*);
- void applyConfigToKeyboard(SKeyboard*);
+ void applyConfigToKeyboard(SKeyboard*);
// this will be set after a refocus()
- wlr_surface* m_pFoundSurfaceToFocus = nullptr;
- SLayerSurface* m_pFoundLSToFocus = nullptr;
- CWindow* m_pFoundWindowToFocus = nullptr;
+ wlr_surface* m_pFoundSurfaceToFocus = nullptr;
+ SLayerSurface* m_pFoundLSToFocus = nullptr;
+ CWindow* m_pFoundWindowToFocus = nullptr;
// swipe
- void beginWorkspaceSwipe();
+ void beginWorkspaceSwipe();
friend class CKeybindManager;
};
diff --git a/src/managers/input/InputMethodRelay.cpp b/src/managers/input/InputMethodRelay.cpp
index d49623db..93c7040b 100644
--- a/src/managers/input/InputMethodRelay.cpp
+++ b/src/managers/input/InputMethodRelay.cpp
@@ -2,7 +2,7 @@
#include "InputManager.hpp"
#include "../../Compositor.hpp"
-CInputMethodRelay::CInputMethodRelay() { }
+CInputMethodRelay::CInputMethodRelay() {}
void CInputMethodRelay::onNewIME(wlr_input_method_v2* pIME) {
if (m_pWLRIME) {
@@ -15,101 +15,107 @@ void CInputMethodRelay::onNewIME(wlr_input_method_v2* pIME) {
m_pWLRIME = pIME;
- hyprListener_IMECommit.initCallback(&m_pWLRIME->events.commit, [&](void* owner, void* data) {
+ hyprListener_IMECommit.initCallback(
+ &m_pWLRIME->events.commit,
+ [&](void* owner, void* data) {
+ const auto PTI = getFocusedTextInput();
+ const auto PIMR = (CInputMethodRelay*)owner;
- const auto PTI = getFocusedTextInput();
- const auto PIMR = (CInputMethodRelay*)owner;
-
- if (!PTI) {
- Debug::log(LOG, "No focused TextInput on IME Commit");
- return;
- }
-
- if (PIMR->m_pWLRIME->current.preedit.text) {
- wlr_text_input_v3_send_preedit_string(PTI->pWlrInput, PIMR->m_pWLRIME->current.preedit.text, PIMR->m_pWLRIME->current.preedit.cursor_begin, PIMR->m_pWLRIME->current.preedit.cursor_end);
- }
-
- if (PIMR->m_pWLRIME->current.commit_text) {
- wlr_text_input_v3_send_commit_string(PTI->pWlrInput, PIMR->m_pWLRIME->current.commit_text);
- }
-
- if (PIMR->m_pWLRIME->current.delete_.before_length || PIMR->m_pWLRIME->current.delete_.after_length) {
- wlr_text_input_v3_send_delete_surrounding_text(PTI->pWlrInput, PIMR->m_pWLRIME->current.delete_.before_length, PIMR->m_pWLRIME->current.delete_.after_length);
- }
-
- wlr_text_input_v3_send_done(PTI->pWlrInput);
-
- }, this, "IMERelay");
-
- hyprListener_IMEDestroy.initCallback(&m_pWLRIME->events.destroy, [&](void* owner, void* data) {
-
- m_pWLRIME = nullptr;
-
- hyprListener_IMEDestroy.removeCallback();
- hyprListener_IMECommit.removeCallback();
- hyprListener_IMEGrab.removeCallback();
- hyprListener_IMENewPopup.removeCallback();
-
- m_pKeyboardGrab.reset(nullptr);
+ if (!PTI) {
+ Debug::log(LOG, "No focused TextInput on IME Commit");
+ return;
+ }
- const auto PTI = getFocusedTextInput();
+ if (PIMR->m_pWLRIME->current.preedit.text) {
+ wlr_text_input_v3_send_preedit_string(PTI->pWlrInput, PIMR->m_pWLRIME->current.preedit.text, PIMR->m_pWLRIME->current.preedit.cursor_begin,
+ PIMR->m_pWLRIME->current.preedit.cursor_end);
+ }
- Debug::log(LOG, "IME Destroy");
+ if (PIMR->m_pWLRIME->current.commit_text) {
+ wlr_text_input_v3_send_commit_string(PTI->pWlrInput, PIMR->m_pWLRIME->current.commit_text);
+ }
- if (PTI) {
- setPendingSurface(PTI, PTI->pWlrInput->focused_surface);
+ if (PIMR->m_pWLRIME->current.delete_.before_length || PIMR->m_pWLRIME->current.delete_.after_length) {
+ wlr_text_input_v3_send_delete_surrounding_text(PTI->pWlrInput, PIMR->m_pWLRIME->current.delete_.before_length, PIMR->m_pWLRIME->current.delete_.after_length);
+ }
- wlr_text_input_v3_send_leave(PTI->pWlrInput);
- }
+ wlr_text_input_v3_send_done(PTI->pWlrInput);
+ },
+ this, "IMERelay");
- }, this, "IMERelay");
+ hyprListener_IMEDestroy.initCallback(
+ &m_pWLRIME->events.destroy,
+ [&](void* owner, void* data) {
+ m_pWLRIME = nullptr;
- hyprListener_IMEGrab.initCallback(&m_pWLRIME->events.grab_keyboard, [&](void* owner, void* data) {
+ hyprListener_IMEDestroy.removeCallback();
+ hyprListener_IMECommit.removeCallback();
+ hyprListener_IMEGrab.removeCallback();
+ hyprListener_IMENewPopup.removeCallback();
- Debug::log(LOG, "IME TextInput Keyboard Grab new");
+ m_pKeyboardGrab.reset(nullptr);
- m_pKeyboardGrab.reset(nullptr);
+ const auto PTI = getFocusedTextInput();
- m_pKeyboardGrab = std::make_unique<SIMEKbGrab>();
+ Debug::log(LOG, "IME Destroy");
- m_pKeyboardGrab->pKeyboard = wlr_seat_get_keyboard(g_pCompositor->m_sSeat.seat);
+ if (PTI) {
+ setPendingSurface(PTI, PTI->pWlrInput->focused_surface);
- const auto PKBGRAB = (wlr_input_method_keyboard_grab_v2*)data;
+ wlr_text_input_v3_send_leave(PTI->pWlrInput);
+ }
+ },
+ this, "IMERelay");
- m_pKeyboardGrab->pWlrKbGrab = PKBGRAB;
+ hyprListener_IMEGrab.initCallback(
+ &m_pWLRIME->events.grab_keyboard,
+ [&](void* owner, void* data) {
+ Debug::log(LOG, "IME TextInput Keyboard Grab new");
- wlr_input_method_keyboard_grab_v2_set_keyboard(m_pKeyboardGrab->pWlrKbGrab, m_pKeyboardGrab->pKeyboard);
+ m_pKeyboardGrab.reset(nullptr);
- m_pKeyboardGrab->hyprListener_grabDestroy.initCallback(&PKBGRAB->events.destroy, [&](void* owner, void* data) {
+ m_pKeyboardGrab = std::make_unique<SIMEKbGrab>();
- m_pKeyboardGrab->hyprListener_grabDestroy.removeCallback();
+ m_pKeyboardGrab->pKeyboard = wlr_seat_get_keyboard(g_pCompositor->m_sSeat.seat);
- Debug::log(LOG, "IME TextInput Keyboard Grab destroy");
+ const auto PKBGRAB = (wlr_input_method_keyboard_grab_v2*)data;
- if (m_pKeyboardGrab->pKeyboard) {
- wlr_seat_keyboard_notify_modifiers(g_pCompositor->m_sSeat.seat, &m_pKeyboardGrab->pKeyboard->modifiers);
- }
+ m_pKeyboardGrab->pWlrKbGrab = PKBGRAB;
- m_pKeyboardGrab.reset(nullptr);
+ wlr_input_method_keyboard_grab_v2_set_keyboard(m_pKeyboardGrab->pWlrKbGrab, m_pKeyboardGrab->pKeyboard);
- }, m_pKeyboardGrab.get(), "IME Keyboard Grab");
+ m_pKeyboardGrab->hyprListener_grabDestroy.initCallback(
+ &PKBGRAB->events.destroy,
+ [&](void* owner, void* data) {
+ m_pKeyboardGrab->hyprListener_grabDestroy.removeCallback();
- }, this, "IMERelay");
+ Debug::log(LOG, "IME TextInput Keyboard Grab destroy");
- hyprListener_IMENewPopup.initCallback(&m_pWLRIME->events.new_popup_surface, [&](void* owner, void* data) {
+ if (m_pKeyboardGrab->pKeyboard) {
+ wlr_seat_keyboard_notify_modifiers(g_pCompositor->m_sSeat.seat, &m_pKeyboardGrab->pKeyboard->modifiers);
+ }
- const auto PNEWPOPUP = &m_lIMEPopups.emplace_back();
+ m_pKeyboardGrab.reset(nullptr);
+ },
+ m_pKeyboardGrab.get(), "IME Keyboard Grab");
+ },
+ this, "IMERelay");
- PNEWPOPUP->pSurface = (wlr_input_popup_surface_v2*)data;
+ hyprListener_IMENewPopup.initCallback(
+ &m_pWLRIME->events.new_popup_surface,
+ [&](void* owner, void* data) {
+ const auto PNEWPOPUP = &m_lIMEPopups.emplace_back();
- PNEWPOPUP->hyprListener_commitPopup.initCallback(&PNEWPOPUP->pSurface->surface->events.commit, &Events::listener_commitInputPopup, PNEWPOPUP, "IME Popup");
- PNEWPOPUP->hyprListener_mapPopup.initCallback(&PNEWPOPUP->pSurface->events.map, &Events::listener_mapInputPopup, PNEWPOPUP, "IME Popup");
- PNEWPOPUP->hyprListener_unmapPopup.initCallback(&PNEWPOPUP->pSurface->events.unmap, &Events::listener_unmapInputPopup, PNEWPOPUP, "IME Popup");
- PNEWPOPUP->hyprListener_destroyPopup.initCallback(&PNEWPOPUP->pSurface->events.destroy, &Events::listener_destroyInputPopup, PNEWPOPUP, "IME Popup");
+ PNEWPOPUP->pSurface = (wlr_input_popup_surface_v2*)data;
- Debug::log(LOG, "New input popup");
+ PNEWPOPUP->hyprListener_commitPopup.initCallback(&PNEWPOPUP->pSurface->surface->events.commit, &Events::listener_commitInputPopup, PNEWPOPUP, "IME Popup");
+ PNEWPOPUP->hyprListener_mapPopup.initCallback(&PNEWPOPUP->pSurface->events.map, &Events::listener_mapInputPopup, PNEWPOPUP, "IME Popup");
+ PNEWPOPUP->hyprListener_unmapPopup.initCallback(&PNEWPOPUP->pSurface->events.unmap, &Events::listener_unmapInputPopup, PNEWPOPUP, "IME Popup");
+ PNEWPOPUP->hyprListener_destroyPopup.initCallback(&PNEWPOPUP->pSurface->events.destroy, &Events::listener_destroyInputPopup, PNEWPOPUP, "IME Popup");
- }, this, "IMERelay");
+ Debug::log(LOG, "New input popup");
+ },
+ this, "IMERelay");
const auto PTI = getFocusableTextInput();
@@ -131,25 +137,25 @@ void CInputMethodRelay::updateInputPopup(SIMEPopup* pPopup) {
if (!PFOCUSEDTI || !PFOCUSEDTI->pWlrInput->focused_surface)
return;
- bool cursorRect = PFOCUSEDTI->pWlrInput->current.features & WLR_TEXT_INPUT_V3_FEATURE_CURSOR_RECTANGLE;
+ bool cursorRect = PFOCUSEDTI->pWlrInput->current.features & WLR_TEXT_INPUT_V3_FEATURE_CURSOR_RECTANGLE;
const auto PFOCUSEDSURFACE = PFOCUSEDTI->pWlrInput->focused_surface;
- auto cursorBox = PFOCUSEDTI->pWlrInput->current.cursor_rectangle;
+ auto cursorBox = PFOCUSEDTI->pWlrInput->current.cursor_rectangle;
- Vector2D parentPos;
- Vector2D parentSize;
+ Vector2D parentPos;
+ Vector2D parentSize;
if (wlr_surface_is_layer_surface(PFOCUSEDSURFACE)) {
const auto PLS = g_pCompositor->getLayerSurfaceFromWlr(wlr_layer_surface_v1_from_wlr_surface(PFOCUSEDSURFACE));
if (PLS) {
- parentPos = Vector2D(PLS->geometry.x, PLS->geometry.y) + g_pCompositor->getMonitorFromID(PLS->monitorID)->vecPosition;
+ parentPos = Vector2D(PLS->geometry.x, PLS->geometry.y) + g_pCompositor->getMonitorFromID(PLS->monitorID)->vecPosition;
parentSize = Vector2D(PLS->geometry.width, PLS->geometry.height);
}
} else {
const auto PWINDOW = g_pCompositor->getWindowFromSurface(PFOCUSEDSURFACE);
if (PWINDOW) {
- parentPos = PWINDOW->m_vRealPosition.goalv();
+ parentPos = PWINDOW->m_vRealPosition.goalv();
parentSize = PWINDOW->m_vRealSize.goalv();
}
}
@@ -230,7 +236,7 @@ void CInputMethodRelay::damagePopup(SIMEPopup* pPopup) {
if (!PFOCUSEDTI || !PFOCUSEDTI->pWlrInput->focused_surface)
return;
- Vector2D parentPos;
+ Vector2D parentPos;
const auto PFOCUSEDSURFACE = PFOCUSEDTI->pWlrInput->focused_surface;
@@ -296,82 +302,86 @@ void CInputMethodRelay::createNewTextInput(wlr_text_input_v3* pInput) {
PTEXTINPUT->pWlrInput = pInput;
- PTEXTINPUT->hyprListener_textInputEnable.initCallback(&pInput->events.enable, [](void* owner, void* data) {
-
- const auto PINPUT = (STextInput*)owner;
-
- if (!g_pInputManager->m_sIMERelay.m_pWLRIME) {
- // Debug::log(WARN, "Enabling TextInput on no IME!");
- return;
- }
-
- Debug::log(LOG, "Enable TextInput");
-
- wlr_input_method_v2_send_activate(g_pInputManager->m_sIMERelay.m_pWLRIME);
- g_pInputManager->m_sIMERelay.commitIMEState(PINPUT->pWlrInput);
-
- }, PTEXTINPUT, "textInput");
-
- PTEXTINPUT->hyprListener_textInputCommit.initCallback(&pInput->events.commit, [](void* owner, void* data) {
-
- const auto PINPUT = (STextInput*)owner;
-
- if (!g_pInputManager->m_sIMERelay.m_pWLRIME) {
- // Debug::log(WARN, "Committing TextInput on no IME!");
- return;
- }
+ PTEXTINPUT->hyprListener_textInputEnable.initCallback(
+ &pInput->events.enable,
+ [](void* owner, void* data) {
+ const auto PINPUT = (STextInput*)owner;
- if (!PINPUT->pWlrInput->current_enabled) {
- Debug::log(WARN, "Disabled TextInput commit?");
- return;
- }
+ if (!g_pInputManager->m_sIMERelay.m_pWLRIME) {
+ // Debug::log(WARN, "Enabling TextInput on no IME!");
+ return;
+ }
- g_pInputManager->m_sIMERelay.commitIMEState(PINPUT->pWlrInput);
+ Debug::log(LOG, "Enable TextInput");
- }, PTEXTINPUT, "textInput");
+ wlr_input_method_v2_send_activate(g_pInputManager->m_sIMERelay.m_pWLRIME);
+ g_pInputManager->m_sIMERelay.commitIMEState(PINPUT->pWlrInput);
+ },
+ PTEXTINPUT, "textInput");
- PTEXTINPUT->hyprListener_textInputDisable.initCallback(&pInput->events.disable, [](void* owner, void* data) {
+ PTEXTINPUT->hyprListener_textInputCommit.initCallback(
+ &pInput->events.commit,
+ [](void* owner, void* data) {
+ const auto PINPUT = (STextInput*)owner;
- const auto PINPUT = (STextInput*)owner;
+ if (!g_pInputManager->m_sIMERelay.m_pWLRIME) {
+ // Debug::log(WARN, "Committing TextInput on no IME!");
+ return;
+ }
- if (!g_pInputManager->m_sIMERelay.m_pWLRIME) {
- // Debug::log(WARN, "Disabling TextInput on no IME!");
- return;
- }
+ if (!PINPUT->pWlrInput->current_enabled) {
+ Debug::log(WARN, "Disabled TextInput commit?");
+ return;
+ }
- Debug::log(LOG, "Disable TextInput");
+ g_pInputManager->m_sIMERelay.commitIMEState(PINPUT->pWlrInput);
+ },
+ PTEXTINPUT, "textInput");
- wlr_input_method_v2_send_deactivate(g_pInputManager->m_sIMERelay.m_pWLRIME);
+ PTEXTINPUT->hyprListener_textInputDisable.initCallback(
+ &pInput->events.disable,
+ [](void* owner, void* data) {
+ const auto PINPUT = (STextInput*)owner;
- g_pInputManager->m_sIMERelay.commitIMEState(PINPUT->pWlrInput);
+ if (!g_pInputManager->m_sIMERelay.m_pWLRIME) {
+ // Debug::log(WARN, "Disabling TextInput on no IME!");
+ return;
+ }
- }, PTEXTINPUT, "textInput");
+ Debug::log(LOG, "Disable TextInput");
- PTEXTINPUT->hyprListener_textInputDestroy.initCallback(&pInput->events.destroy, [](void* owner, void* data) {
+ wlr_input_method_v2_send_deactivate(g_pInputManager->m_sIMERelay.m_pWLRIME);
- const auto PINPUT = (STextInput*)owner;
+ g_pInputManager->m_sIMERelay.commitIMEState(PINPUT->pWlrInput);
+ },
+ PTEXTINPUT, "textInput");
- if (!g_pInputManager->m_sIMERelay.m_pWLRIME) {
- // Debug::log(WARN, "Disabling TextInput on no IME!");
- return;
- }
+ PTEXTINPUT->hyprListener_textInputDestroy.initCallback(
+ &pInput->events.destroy,
+ [](void* owner, void* data) {
+ const auto PINPUT = (STextInput*)owner;
- if (PINPUT->pWlrInput->current_enabled) {
- wlr_input_method_v2_send_deactivate(g_pInputManager->m_sIMERelay.m_pWLRIME);
+ if (!g_pInputManager->m_sIMERelay.m_pWLRIME) {
+ // Debug::log(WARN, "Disabling TextInput on no IME!");
+ return;
+ }
- g_pInputManager->m_sIMERelay.commitIMEState(PINPUT->pWlrInput);
- }
+ if (PINPUT->pWlrInput->current_enabled) {
+ wlr_input_method_v2_send_deactivate(g_pInputManager->m_sIMERelay.m_pWLRIME);
- g_pInputManager->m_sIMERelay.setPendingSurface(PINPUT, nullptr);
+ g_pInputManager->m_sIMERelay.commitIMEState(PINPUT->pWlrInput);
+ }
- PINPUT->hyprListener_textInputCommit.removeCallback();
- PINPUT->hyprListener_textInputDestroy.removeCallback();
- PINPUT->hyprListener_textInputDisable.removeCallback();
- PINPUT->hyprListener_textInputEnable.removeCallback();
+ g_pInputManager->m_sIMERelay.setPendingSurface(PINPUT, nullptr);
- g_pInputManager->m_sIMERelay.removeTextInput(PINPUT->pWlrInput);
+ PINPUT->hyprListener_textInputCommit.removeCallback();
+ PINPUT->hyprListener_textInputDestroy.removeCallback();
+ PINPUT->hyprListener_textInputDisable.removeCallback();
+ PINPUT->hyprListener_textInputEnable.removeCallback();
- }, PTEXTINPUT, "textInput");
+ g_pInputManager->m_sIMERelay.removeTextInput(PINPUT->pWlrInput);
+ },
+ PTEXTINPUT, "textInput");
}
void CInputMethodRelay::removeTextInput(wlr_text_input_v3* pInput) {
@@ -417,7 +427,6 @@ void CInputMethodRelay::onKeyboardFocus(wlr_surface* pSurface) {
} else {
continue;
}
-
}
if (pSurface && wl_resource_get_client(ti.pWlrInput->resource) == wl_resource_get_client(pSurface->resource)) {
@@ -427,7 +436,6 @@ void CInputMethodRelay::onKeyboardFocus(wlr_surface* pSurface) {
} else {
setPendingSurface(&ti, pSurface);
}
-
}
}
}
@@ -436,13 +444,16 @@ void CInputMethodRelay::setPendingSurface(STextInput* pInput, wlr_surface* pSurf
pInput->pPendingSurface = pSurface;
if (pSurface) {
- pInput->hyprListener_pendingSurfaceDestroy.initCallback(&pSurface->events.destroy, [](void* owner, void* data) {
- const auto PINPUT = (STextInput*)owner;
+ pInput->hyprListener_pendingSurfaceDestroy.initCallback(
+ &pSurface->events.destroy,
+ [](void* owner, void* data) {
+ const auto PINPUT = (STextInput*)owner;
- PINPUT->pPendingSurface = nullptr;
+ PINPUT->pPendingSurface = nullptr;
- PINPUT->hyprListener_pendingSurfaceDestroy.removeCallback();
- }, pInput, "TextInput");
+ PINPUT->hyprListener_pendingSurfaceDestroy.removeCallback();
+ },
+ pInput, "TextInput");
} else {
pInput->hyprListener_pendingSurfaceDestroy.removeCallback();
}
diff --git a/src/managers/input/InputMethodRelay.hpp b/src/managers/input/InputMethodRelay.hpp
index 5f4e9752..76746487 100644
--- a/src/managers/input/InputMethodRelay.hpp
+++ b/src/managers/input/InputMethodRelay.hpp
@@ -6,37 +6,36 @@
class CInputManager;
class CInputMethodRelay {
-public:
+ public:
CInputMethodRelay();
- void onNewIME(wlr_input_method_v2*);
- void onNewTextInput(wlr_text_input_v3*);
+ void onNewIME(wlr_input_method_v2*);
+ void onNewTextInput(wlr_text_input_v3*);
wlr_input_method_v2* m_pWLRIME = nullptr;
- void commitIMEState(wlr_text_input_v3*);
- void removeTextInput(wlr_text_input_v3*);
+ void commitIMEState(wlr_text_input_v3*);
+ void removeTextInput(wlr_text_input_v3*);
- void onKeyboardFocus(wlr_surface*);
+ void onKeyboardFocus(wlr_surface*);
- STextInput* getFocusedTextInput();
- STextInput* getFocusableTextInput();
+ STextInput* getFocusedTextInput();
+ STextInput* getFocusableTextInput();
- void setPendingSurface(STextInput*, wlr_surface*);
+ void setPendingSurface(STextInput*, wlr_surface*);
- SIMEKbGrab* getIMEKeyboardGrab(SKeyboard*);
+ SIMEKbGrab* getIMEKeyboardGrab(SKeyboard*);
- void setIMEPopupFocus(SIMEPopup*, wlr_surface*);
- void updateInputPopup(SIMEPopup*);
- void damagePopup(SIMEPopup*);
- void removePopup(SIMEPopup*);
-
-private:
+ void setIMEPopupFocus(SIMEPopup*, wlr_surface*);
+ void updateInputPopup(SIMEPopup*);
+ void damagePopup(SIMEPopup*);
+ void removePopup(SIMEPopup*);
+ private:
std::unique_ptr<SIMEKbGrab> m_pKeyboardGrab;
- std::list<STextInput> m_lTextInputs;
- std::list<SIMEPopup> m_lIMEPopups;
+ std::list<STextInput> m_lTextInputs;
+ std::list<SIMEPopup> m_lIMEPopups;
DYNLISTENER(textInputNew);
DYNLISTENER(IMECommit);
@@ -44,7 +43,7 @@ private:
DYNLISTENER(IMEGrab);
DYNLISTENER(IMENewPopup);
- void createNewTextInput(wlr_text_input_v3*);
+ void createNewTextInput(wlr_text_input_v3*);
friend class CHyprRenderer;
friend class CInputManager;
diff --git a/src/managers/input/Swipe.cpp b/src/managers/input/Swipe.cpp
index ab85a988..f2a31172 100644
--- a/src/managers/input/Swipe.cpp
+++ b/src/managers/input/Swipe.cpp
@@ -2,9 +2,9 @@
#include "../../Compositor.hpp"
void CInputManager::onSwipeBegin(wlr_pointer_swipe_begin_event* e) {
- static auto *const PSWIPE = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe")->intValue;
- static auto *const PSWIPEFINGERS = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_fingers")->intValue;
- static auto *const PSWIPENEW = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_create_new")->intValue;
+ static auto* const PSWIPE = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe")->intValue;
+ static auto* const PSWIPEFINGERS = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_fingers")->intValue;
+ static auto* const PSWIPENEW = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_create_new")->intValue;
if (e->fingers != *PSWIPEFINGERS || *PSWIPE == 0)
return;
@@ -28,10 +28,10 @@ void CInputManager::beginWorkspaceSwipe() {
Debug::log(LOG, "Starting a swipe from %s", PWORKSPACE->m_szName.c_str());
m_sActiveSwipe.pWorkspaceBegin = PWORKSPACE;
- m_sActiveSwipe.delta = 0;
- m_sActiveSwipe.pMonitor = g_pCompositor->m_pLastMonitor;
- m_sActiveSwipe.avgSpeed = 0;
- m_sActiveSwipe.speedPoints = 0;
+ m_sActiveSwipe.delta = 0;
+ m_sActiveSwipe.pMonitor = g_pCompositor->m_pLastMonitor;
+ m_sActiveSwipe.avgSpeed = 0;
+ m_sActiveSwipe.speedPoints = 0;
if (PWORKSPACE->m_bHasFullscreenWindow) {
for (auto& ls : g_pCompositor->m_pLastMonitor->m_aLayerSurfaceLists[ZWLR_LAYER_SHELL_V1_LAYER_TOP]) {
@@ -44,35 +44,37 @@ void CInputManager::onSwipeEnd(wlr_pointer_swipe_end_event* e) {
if (!m_sActiveSwipe.pWorkspaceBegin)
return; // no valid swipe
- static auto *const PSWIPEPERC = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_cancel_ratio")->floatValue;
- static auto *const PSWIPEDIST = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_distance")->intValue;
- static auto *const PSWIPEFORC = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_min_speed_to_force")->intValue;
- static auto *const PSWIPENEW = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_create_new")->intValue;
- const bool VERTANIMS = m_sActiveSwipe.pWorkspaceBegin->m_vRenderOffset.getConfig()->pValues->internalStyle == "slidevert";
+ static auto* const PSWIPEPERC = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_cancel_ratio")->floatValue;
+ static auto* const PSWIPEDIST = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_distance")->intValue;
+ static auto* const PSWIPEFORC = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_min_speed_to_force")->intValue;
+ static auto* const PSWIPENEW = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_create_new")->intValue;
+ const bool VERTANIMS = m_sActiveSwipe.pWorkspaceBegin->m_vRenderOffset.getConfig()->pValues->internalStyle == "slidevert";
// commit
- std::string wsname = "";
- auto workspaceIDLeft = getWorkspaceIDFromString("m-1", wsname);
- auto workspaceIDRight = getWorkspaceIDFromString("m+1", wsname);
+ std::string wsname = "";
+ auto workspaceIDLeft = getWorkspaceIDFromString("m-1", wsname);
+ auto workspaceIDRight = getWorkspaceIDFromString("m+1", wsname);
- if ((workspaceIDRight <= m_sActiveSwipe.pWorkspaceBegin->m_iID || (workspaceIDRight == workspaceIDLeft && workspaceIDLeft == m_sActiveSwipe.pWorkspaceBegin->m_iID)) && *PSWIPENEW) {
+ if ((workspaceIDRight <= m_sActiveSwipe.pWorkspaceBegin->m_iID || (workspaceIDRight == workspaceIDLeft && workspaceIDLeft == m_sActiveSwipe.pWorkspaceBegin->m_iID)) &&
+ *PSWIPENEW) {
workspaceIDRight = m_sActiveSwipe.pWorkspaceBegin->m_iID > 0 ? m_sActiveSwipe.pWorkspaceBegin->m_iID + 1 : 1;
}
- auto PWORKSPACER = g_pCompositor->getWorkspaceByID(workspaceIDRight); // not guaranteed if PSWIPENEW
- const auto PWORKSPACEL = g_pCompositor->getWorkspaceByID(workspaceIDLeft);
+ auto PWORKSPACER = g_pCompositor->getWorkspaceByID(workspaceIDRight); // not guaranteed if PSWIPENEW
+ const auto PWORKSPACEL = g_pCompositor->getWorkspaceByID(workspaceIDLeft);
- const auto RENDEROFFSETMIDDLE = m_sActiveSwipe.pWorkspaceBegin->m_vRenderOffset.vec();
+ const auto RENDEROFFSETMIDDLE = m_sActiveSwipe.pWorkspaceBegin->m_vRenderOffset.vec();
CWorkspace* pSwitchedTo = nullptr;
- if ((abs(m_sActiveSwipe.delta) < *PSWIPEDIST * *PSWIPEPERC && (*PSWIPEFORC == 0 || (*PSWIPEFORC != 0 && m_sActiveSwipe.avgSpeed < *PSWIPEFORC))) || abs(m_sActiveSwipe.delta) < 2) {
+ if ((abs(m_sActiveSwipe.delta) < *PSWIPEDIST * *PSWIPEPERC && (*PSWIPEFORC == 0 || (*PSWIPEFORC != 0 && m_sActiveSwipe.avgSpeed < *PSWIPEFORC))) ||
+ abs(m_sActiveSwipe.delta) < 2) {
// revert
if (abs(m_sActiveSwipe.delta) < 2) {
- PWORKSPACEL->m_vRenderOffset.setValueAndWarp(Vector2D(0,0));
+ PWORKSPACEL->m_vRenderOffset.setValueAndWarp(Vector2D(0, 0));
if (PWORKSPACER)
- PWORKSPACER->m_vRenderOffset.setValueAndWarp(Vector2D(0,0));
- m_sActiveSwipe.pWorkspaceBegin->m_vRenderOffset.setValueAndWarp(Vector2D(0,0));
+ PWORKSPACER->m_vRenderOffset.setValueAndWarp(Vector2D(0, 0));
+ m_sActiveSwipe.pWorkspaceBegin->m_vRenderOffset.setValueAndWarp(Vector2D(0, 0));
} else {
if (m_sActiveSwipe.delta < 0) {
// to left
@@ -163,21 +165,21 @@ void CInputManager::onSwipeUpdate(wlr_pointer_swipe_update_event* e) {
if (!m_sActiveSwipe.pWorkspaceBegin)
return;
- static auto *const PSWIPEDIST = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_distance")->intValue;
- static auto *const PSWIPEINVR = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_invert")->intValue;
- static auto *const PSWIPENEW = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_create_new")->intValue;
- static auto *const PSWIPEFOREVER = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_forever")->intValue;
+ static auto* const PSWIPEDIST = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_distance")->intValue;
+ static auto* const PSWIPEINVR = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_invert")->intValue;
+ static auto* const PSWIPENEW = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_create_new")->intValue;
+ static auto* const PSWIPEFOREVER = &g_pConfigManager->getConfigValuePtr("gestures:workspace_swipe_forever")->intValue;
- const bool VERTANIMS = m_sActiveSwipe.pWorkspaceBegin->m_vRenderOffset.getConfig()->pValues->internalStyle == "slidevert";
+ const bool VERTANIMS = m_sActiveSwipe.pWorkspaceBegin->m_vRenderOffset.getConfig()->pValues->internalStyle == "slidevert";
m_sActiveSwipe.delta += VERTANIMS ? (*PSWIPEINVR ? -e->dy : e->dy) : (*PSWIPEINVR ? -e->dx : e->dx);
m_sActiveSwipe.avgSpeed = (m_sActiveSwipe.avgSpeed * m_sActiveSwipe.speedPoints + abs(e->dx)) / (m_sActiveSwipe.speedPoints + 1);
m_sActiveSwipe.speedPoints++;
- std::string wsname = "";
- auto workspaceIDLeft = getWorkspaceIDFromString("m-1", wsname);
- auto workspaceIDRight = getWorkspaceIDFromString("m+1", wsname);
+ std::string wsname = "";
+ auto workspaceIDLeft = getWorkspaceIDFromString("m-1", wsname);
+ auto workspaceIDRight = getWorkspaceIDFromString("m+1", wsname);
if ((workspaceIDLeft == INT_MAX || workspaceIDRight == INT_MAX || workspaceIDLeft == m_sActiveSwipe.pWorkspaceBegin->m_iID) && !*PSWIPENEW) {
m_sActiveSwipe.pWorkspaceBegin = nullptr; // invalidate the swipe
@@ -189,7 +191,8 @@ void CInputManager::onSwipeUpdate(wlr_pointer_swipe_update_event* e) {
m_sActiveSwipe.delta = std::clamp(m_sActiveSwipe.delta, (double)-*PSWIPEDIST, (double)*PSWIPEDIST);
if ((m_sActiveSwipe.pWorkspaceBegin->m_iID == workspaceIDLeft && *PSWIPENEW && (m_sActiveSwipe.delta < 0)) ||
- (m_sActiveSwipe.delta > 0 && g_pCompositor->getWindowsOnWorkspace(m_sActiveSwipe.pWorkspaceBegin->m_iID) == 0 && workspaceIDRight <= m_sActiveSwipe.pWorkspaceBegin->m_iID) ||
+ (m_sActiveSwipe.delta > 0 && g_pCompositor->getWindowsOnWorkspace(m_sActiveSwipe.pWorkspaceBegin->m_iID) == 0 &&
+ workspaceIDRight <= m_sActiveSwipe.pWorkspaceBegin->m_iID) ||
(m_sActiveSwipe.delta < 0 && m_sActiveSwipe.pWorkspaceBegin->m_iID <= workspaceIDLeft)) {
m_sActiveSwipe.delta = 0;
@@ -197,7 +200,7 @@ void CInputManager::onSwipeUpdate(wlr_pointer_swipe_update_event* e) {
}
if (m_sActiveSwipe.delta < 0) {
- if (workspaceIDLeft > m_sActiveSwipe.pWorkspaceBegin->m_iID && !*PSWIPENEW){
+ if (workspaceIDLeft > m_sActiveSwipe.pWorkspaceBegin->m_iID && !*PSWIPENEW) {
m_sActiveSwipe.delta = 0;
return;
}
@@ -215,10 +218,12 @@ void CInputManager::onSwipeUpdate(wlr_pointer_swipe_update_event* e) {
}
if (VERTANIMS) {
- PWORKSPACE->m_vRenderOffset.setValueAndWarp(Vector2D(0, ((-m_sActiveSwipe.delta) / *PSWIPEDIST) * m_sActiveSwipe.pMonitor->vecSize.y - m_sActiveSwipe.pMonitor->vecSize.y));
+ PWORKSPACE->m_vRenderOffset.setValueAndWarp(
+ Vector2D(0, ((-m_sActiveSwipe.delta) / *PSWIPEDIST) * m_sActiveSwipe.pMonitor->vecSize.y - m_sActiveSwipe.pMonitor->vecSize.y));
m_sActiveSwipe.pWorkspaceBegin->m_vRenderOffset.setValueAndWarp(Vector2D(0, ((-m_sActiveSwipe.delta) / *PSWIPEDIST) * m_sActiveSwipe.pMonitor->vecSize.y));
} else {
- PWORKSPACE->m_vRenderOffset.setValueAndWarp(Vector2D(((-m_sActiveSwipe.delta) / *PSWIPEDIST) * m_sActiveSwipe.pMonitor->vecSize.x - m_sActiveSwipe.pMonitor->vecSize.x, 0));
+ PWORKSPACE->m_vRenderOffset.setValueAndWarp(
+ Vector2D(((-m_sActiveSwipe.delta) / *PSWIPEDIST) * m_sActiveSwipe.pMonitor->vecSize.x - m_sActiveSwipe.pMonitor->vecSize.x, 0));
m_sActiveSwipe.pWorkspaceBegin->m_vRenderOffset.setValueAndWarp(Vector2D(((-m_sActiveSwipe.delta) / *PSWIPEDIST) * m_sActiveSwipe.pMonitor->vecSize.x, 0));
}
@@ -253,10 +258,12 @@ void CInputManager::onSwipeUpdate(wlr_pointer_swipe_update_event* e) {
}
if (VERTANIMS) {
- PWORKSPACE->m_vRenderOffset.setValueAndWarp(Vector2D(0, ((-m_sActiveSwipe.delta) / *PSWIPEDIST) * m_sActiveSwipe.pMonitor->vecSize.y + m_sActiveSwipe.pMonitor->vecSize.y));
+ PWORKSPACE->m_vRenderOffset.setValueAndWarp(
+ Vector2D(0, ((-m_sActiveSwipe.delta) / *PSWIPEDIST) * m_sActiveSwipe.pMonitor->vecSize.y + m_sActiveSwipe.pMonitor->vecSize.y));
m_sActiveSwipe.pWorkspaceBegin->m_vRenderOffset.setValueAndWarp(Vector2D(0, ((-m_sActiveSwipe.delta) / *PSWIPEDIST) * m_sActiveSwipe.pMonitor->vecSize.y));
} else {
- PWORKSPACE->m_vRenderOffset.setValueAndWarp(Vector2D(((-m_sActiveSwipe.delta) / *PSWIPEDIST) * m_sActiveSwipe.pMonitor->vecSize.x + m_sActiveSwipe.pMonitor->vecSize.x, 0));
+ PWORKSPACE->m_vRenderOffset.setValueAndWarp(
+ Vector2D(((-m_sActiveSwipe.delta) / *PSWIPEDIST) * m_sActiveSwipe.pMonitor->vecSize.x + m_sActiveSwipe.pMonitor->vecSize.x, 0));
m_sActiveSwipe.pWorkspaceBegin->m_vRenderOffset.setValueAndWarp(Vector2D(((-m_sActiveSwipe.delta) / *PSWIPEDIST) * m_sActiveSwipe.pMonitor->vecSize.x, 0));
}
diff --git a/src/managers/input/Tablets.cpp b/src/managers/input/Tablets.cpp
index eef466ec..00cedb09 100644
--- a/src/managers/input/Tablets.cpp
+++ b/src/managers/input/Tablets.cpp
@@ -7,127 +7,136 @@ void CInputManager::newTabletTool(wlr_input_device* pDevice) {
try {
PNEWTABLET->name = deviceNameToInternalString(pDevice->name);
} catch (std::exception& e) {
- Debug::log(ERR, "Tablet had no name???"); // logic error
+ Debug::log(ERR, "Tablet had no name???"); // logic error
}
- PNEWTABLET->wlrTablet = wlr_tablet_from_input_device(pDevice);
- PNEWTABLET->wlrDevice = pDevice;
- PNEWTABLET->wlrTabletV2 = wlr_tablet_create(g_pCompositor->m_sWLRTabletManager, g_pCompositor->m_sSeat.seat, pDevice);
+ PNEWTABLET->wlrTablet = wlr_tablet_from_input_device(pDevice);
+ PNEWTABLET->wlrDevice = pDevice;
+ PNEWTABLET->wlrTabletV2 = wlr_tablet_create(g_pCompositor->m_sWLRTabletManager, g_pCompositor->m_sSeat.seat, pDevice);
PNEWTABLET->wlrTablet->data = PNEWTABLET;
Debug::log(LOG, "Attaching tablet to cursor!");
wlr_cursor_attach_input_device(g_pCompositor->m_sWLRCursor, pDevice);
- PNEWTABLET->hyprListener_Destroy.initCallback(&pDevice->events.destroy, [](void* owner, void* data) {
- const auto PTAB = (STablet*)owner;
-
- g_pInputManager->m_lTablets.remove(*PTAB);
-
- Debug::log(LOG, "Removed a tablet");
- }, PNEWTABLET, "Tablet");
-
- PNEWTABLET->hyprListener_Axis.initCallback(&wlr_tablet_from_input_device(pDevice)->events.axis, [](void* owner, void* data) {
+ PNEWTABLET->hyprListener_Destroy.initCallback(
+ &pDevice->events.destroy,
+ [](void* owner, void* data) {
+ const auto PTAB = (STablet*)owner;
+
+ g_pInputManager->m_lTablets.remove(*PTAB);
+
+ Debug::log(LOG, "Removed a tablet");
+ },
+ PNEWTABLET, "Tablet");
+
+ PNEWTABLET->hyprListener_Axis.initCallback(
+ &wlr_tablet_from_input_device(pDevice)->events.axis,
+ [](void* owner, void* data) {
+ const auto EVENT = (wlr_tablet_tool_axis_event*)data;
+ const auto PTAB = (STablet*)owner;
+
+ switch (EVENT->tool->type) {
+ case WLR_TABLET_TOOL_TYPE_MOUSE:
+ wlr_cursor_move(g_pCompositor->m_sWLRCursor, PTAB->wlrDevice, EVENT->dx, EVENT->dy);
+ g_pInputManager->refocus();
+ break;
+ default:
+ double x = (EVENT->updated_axes & WLR_TABLET_TOOL_AXIS_X) ? EVENT->x : NAN;
+ double y = (EVENT->updated_axes & WLR_TABLET_TOOL_AXIS_Y) ? EVENT->y : NAN;
+ wlr_cursor_warp_absolute(g_pCompositor->m_sWLRCursor, PTAB->wlrDevice, x, y);
+ g_pInputManager->refocus();
+ break;
+ }
- const auto EVENT = (wlr_tablet_tool_axis_event*)data;
- const auto PTAB = (STablet*)owner;
+ const auto PTOOL = g_pInputManager->ensureTabletToolPresent(EVENT->tool);
- switch (EVENT->tool->type) {
- case WLR_TABLET_TOOL_TYPE_MOUSE:
- wlr_cursor_move(g_pCompositor->m_sWLRCursor, PTAB->wlrDevice, EVENT->dx, EVENT->dy);
- g_pInputManager->refocus();
- break;
- default:
- double x = (EVENT->updated_axes & WLR_TABLET_TOOL_AXIS_X) ? EVENT->x : NAN;
- double y = (EVENT->updated_axes & WLR_TABLET_TOOL_AXIS_Y) ? EVENT->y : NAN;
- wlr_cursor_warp_absolute(g_pCompositor->m_sWLRCursor, PTAB->wlrDevice, x, y);
+ // TODO: this might be wrong
+ if (PTOOL->active) {
g_pInputManager->refocus();
- break;
- }
-
- const auto PTOOL = g_pInputManager->ensureTabletToolPresent(EVENT->tool);
-
- // TODO: this might be wrong
- if (PTOOL->active) {
- g_pInputManager->refocus();
-
- g_pInputManager->focusTablet(PTAB, EVENT->tool, true);
- }
-
- if (EVENT->updated_axes & WLR_TABLET_TOOL_AXIS_PRESSURE)
- wlr_tablet_v2_tablet_tool_notify_pressure(PTOOL->wlrTabletToolV2, EVENT->pressure);
- if (EVENT->updated_axes & WLR_TABLET_TOOL_AXIS_DISTANCE)
- wlr_tablet_v2_tablet_tool_notify_distance(PTOOL->wlrTabletToolV2, EVENT->distance);
+ g_pInputManager->focusTablet(PTAB, EVENT->tool, true);
+ }
- if (EVENT->updated_axes & WLR_TABLET_TOOL_AXIS_ROTATION)
- wlr_tablet_v2_tablet_tool_notify_rotation(PTOOL->wlrTabletToolV2, EVENT->rotation);
+ if (EVENT->updated_axes & WLR_TABLET_TOOL_AXIS_PRESSURE)
+ wlr_tablet_v2_tablet_tool_notify_pressure(PTOOL->wlrTabletToolV2, EVENT->pressure);
- if (EVENT->updated_axes & WLR_TABLET_TOOL_AXIS_SLIDER)
- wlr_tablet_v2_tablet_tool_notify_slider(PTOOL->wlrTabletToolV2, EVENT->slider);
+ if (EVENT->updated_axes & WLR_TABLET_TOOL_AXIS_DISTANCE)
+ wlr_tablet_v2_tablet_tool_notify_distance(PTOOL->wlrTabletToolV2, EVENT->distance);
- if (EVENT->updated_axes & WLR_TABLET_TOOL_AXIS_WHEEL)
- wlr_tablet_v2_tablet_tool_notify_wheel(PTOOL->wlrTabletToolV2, EVENT->wheel_delta, 0);
+ if (EVENT->updated_axes & WLR_TABLET_TOOL_AXIS_ROTATION)
+ wlr_tablet_v2_tablet_tool_notify_rotation(PTOOL->wlrTabletToolV2, EVENT->rotation);
- if (EVENT->updated_axes & WLR_TABLET_TOOL_AXIS_TILT_X)
- PTOOL->tiltX = EVENT->tilt_x;
+ if (EVENT->updated_axes & WLR_TABLET_TOOL_AXIS_SLIDER)
+ wlr_tablet_v2_tablet_tool_notify_slider(PTOOL->wlrTabletToolV2, EVENT->slider);
- if (EVENT->updated_axes & WLR_TABLET_TOOL_AXIS_TILT_Y)
- PTOOL->tiltY = EVENT->tilt_y;
+ if (EVENT->updated_axes & WLR_TABLET_TOOL_AXIS_WHEEL)
+ wlr_tablet_v2_tablet_tool_notify_wheel(PTOOL->wlrTabletToolV2, EVENT->wheel_delta, 0);
- if (EVENT->updated_axes & (WLR_TABLET_TOOL_AXIS_TILT_X | WLR_TABLET_TOOL_AXIS_TILT_Y))
- wlr_tablet_v2_tablet_tool_notify_tilt(PTOOL->wlrTabletToolV2, PTOOL->tiltX, PTOOL->tiltY);
+ if (EVENT->updated_axes & WLR_TABLET_TOOL_AXIS_TILT_X)
+ PTOOL->tiltX = EVENT->tilt_x;
- }, PNEWTABLET, "Tablet");
+ if (EVENT->updated_axes & WLR_TABLET_TOOL_AXIS_TILT_Y)
+ PTOOL->tiltY = EVENT->tilt_y;
- PNEWTABLET->hyprListener_Tip.initCallback(&wlr_tablet_from_input_device(pDevice)->events.tip, [](void* owner, void* data) {
- const auto EVENT = (wlr_tablet_tool_tip_event*)data;
- const auto PTAB = (STablet*)owner;
+ if (EVENT->updated_axes & (WLR_TABLET_TOOL_AXIS_TILT_X | WLR_TABLET_TOOL_AXIS_TILT_Y))
+ wlr_tablet_v2_tablet_tool_notify_tilt(PTOOL->wlrTabletToolV2, PTOOL->tiltX, PTOOL->tiltY);
+ },
+ PNEWTABLET, "Tablet");
- const auto PTOOL = g_pInputManager->ensureTabletToolPresent(EVENT->tool);
+ PNEWTABLET->hyprListener_Tip.initCallback(
+ &wlr_tablet_from_input_device(pDevice)->events.tip,
+ [](void* owner, void* data) {
+ const auto EVENT = (wlr_tablet_tool_tip_event*)data;
+ const auto PTAB = (STablet*)owner;
- // TODO: this might be wrong
- if (EVENT->state == WLR_TABLET_TOOL_TIP_DOWN) {
- g_pInputManager->refocus();
- g_pInputManager->focusTablet(PTAB, EVENT->tool);
- wlr_send_tablet_v2_tablet_tool_down(PTOOL->wlrTabletToolV2);
- }
- else {
- wlr_send_tablet_v2_tablet_tool_up(PTOOL->wlrTabletToolV2);
- }
+ const auto PTOOL = g_pInputManager->ensureTabletToolPresent(EVENT->tool);
- }, PNEWTABLET, "Tablet");
+ // TODO: this might be wrong
+ if (EVENT->state == WLR_TABLET_TOOL_TIP_DOWN) {
+ g_pInputManager->refocus();
+ g_pInputManager->focusTablet(PTAB, EVENT->tool);
+ wlr_send_tablet_v2_tablet_tool_down(PTOOL->wlrTabletToolV2);
+ } else {
+ wlr_send_tablet_v2_tablet_tool_up(PTOOL->wlrTabletToolV2);
+ }
+ },
+ PNEWTABLET, "Tablet");
- PNEWTABLET->hyprListener_Button.initCallback(&wlr_tablet_from_input_device(pDevice)->events.button, [](void* owner, void* data) {
- const auto EVENT = (wlr_tablet_tool_button_event*)data;
+ PNEWTABLET->hyprListener_Button.initCallback(
+ &wlr_tablet_from_input_device(pDevice)->events.button,
+ [](void* owner, void* data) {
+ const auto EVENT = (wlr_tablet_tool_button_event*)data;
- const auto PTOOL = g_pInputManager->ensureTabletToolPresent(EVENT->tool);
+ const auto PTOOL = g_pInputManager->ensureTabletToolPresent(EVENT->tool);
- wlr_tablet_v2_tablet_tool_notify_button(PTOOL->wlrTabletToolV2, (zwp_tablet_pad_v2_button_state)EVENT->button, (zwp_tablet_pad_v2_button_state)EVENT->state);
+ wlr_tablet_v2_tablet_tool_notify_button(PTOOL->wlrTabletToolV2, (zwp_tablet_pad_v2_button_state)EVENT->button, (zwp_tablet_pad_v2_button_state)EVENT->state);
+ },
+ PNEWTABLET, "Tablet");
- }, PNEWTABLET, "Tablet");
+ PNEWTABLET->hyprListener_Proximity.initCallback(
+ &wlr_tablet_from_input_device(pDevice)->events.proximity,
+ [](void* owner, void* data) {
+ const auto EVENT = (wlr_tablet_tool_proximity_event*)data;
+ const auto PTAB = (STablet*)owner;
- PNEWTABLET->hyprListener_Proximity.initCallback(&wlr_tablet_from_input_device(pDevice)->events.proximity, [](void* owner, void* data) {
- const auto EVENT = (wlr_tablet_tool_proximity_event*)data;
- const auto PTAB = (STablet*)owner;
+ const auto PTOOL = g_pInputManager->ensureTabletToolPresent(EVENT->tool);
- const auto PTOOL = g_pInputManager->ensureTabletToolPresent(EVENT->tool);
+ if (EVENT->state == WLR_TABLET_TOOL_PROXIMITY_OUT) {
+ PTOOL->active = false;
- if (EVENT->state == WLR_TABLET_TOOL_PROXIMITY_OUT) {
- PTOOL->active = false;
+ if (PTOOL->pSurface) {
+ wlr_tablet_v2_tablet_tool_notify_proximity_out(PTOOL->wlrTabletToolV2);
+ PTOOL->pSurface = nullptr;
+ }
- if (PTOOL->pSurface) {
- wlr_tablet_v2_tablet_tool_notify_proximity_out(PTOOL->wlrTabletToolV2);
- PTOOL->pSurface = nullptr;
+ } else {
+ PTOOL->active = true;
+ g_pInputManager->refocus();
+ g_pInputManager->focusTablet(PTAB, EVENT->tool);
}
-
- } else {
- PTOOL->active = true;
- g_pInputManager->refocus();
- g_pInputManager->focusTablet(PTAB, EVENT->tool);
- }
-
- }, PNEWTABLET, "Tablet");
+ },
+ PNEWTABLET, "Tablet");
}
STabletTool* CInputManager::ensureTabletToolPresent(wlr_tablet_tool* pTool) {
@@ -137,16 +146,19 @@ STabletTool* CInputManager::ensureTabletToolPresent(wlr_tablet_tool* pTool) {
Debug::log(LOG, "Creating tablet tool v2 for %x", pTool);
PTOOL->wlrTabletTool = pTool;
- pTool->data = PTOOL;
+ pTool->data = PTOOL;
PTOOL->wlrTabletToolV2 = wlr_tablet_tool_create(g_pCompositor->m_sWLRTabletManager, g_pCompositor->m_sSeat.seat, pTool);
- PTOOL->hyprListener_TabletToolDestroy.initCallback(&pTool->events.destroy, [](void* owner, void* data) {
- const auto PTOOL = (STabletTool*)owner;
+ PTOOL->hyprListener_TabletToolDestroy.initCallback(
+ &pTool->events.destroy,
+ [](void* owner, void* data) {
+ const auto PTOOL = (STabletTool*)owner;
- PTOOL->wlrTabletTool->data = nullptr;
- g_pInputManager->m_lTabletTools.remove(*PTOOL);
- }, PTOOL, "Tablet Tool V1");
+ PTOOL->wlrTabletTool->data = nullptr;
+ g_pInputManager->m_lTabletTools.remove(*PTOOL);
+ },
+ PTOOL, "Tablet Tool V1");
//TODO: set cursor request
}
@@ -160,60 +172,65 @@ void CInputManager::newTabletPad(wlr_input_device* pDevice) {
try {
PNEWPAD->name = deviceNameToInternalString(pDevice->name);
} catch (std::exception& e) {
- Debug::log(ERR, "Pad had no name???"); // logic error
+ Debug::log(ERR, "Pad had no name???"); // logic error
}
PNEWPAD->wlrTabletPadV2 = wlr_tablet_pad_create(g_pCompositor->m_sWLRTabletManager, g_pCompositor->m_sSeat.seat, pDevice);
- PNEWPAD->hyprListener_Button.initCallback(&wlr_tablet_pad_from_input_device(pDevice)->events.button, [](void* owner, void* data) {
-
- const auto EVENT = (wlr_tablet_pad_button_event*)data;
- const auto PPAD = (STabletPad*)owner;
-
- wlr_tablet_v2_tablet_pad_notify_mode(PPAD->wlrTabletPadV2, EVENT->group, EVENT->mode, EVENT->time_msec);
- wlr_tablet_v2_tablet_pad_notify_button(PPAD->wlrTabletPadV2, EVENT->button, EVENT->time_msec, (zwp_tablet_pad_v2_button_state)EVENT->state);
-
- }, PNEWPAD, "Tablet Pad");
-
- PNEWPAD->hyprListener_Strip.initCallback(&wlr_tablet_pad_from_input_device(pDevice)->events.strip, [](void* owner, void* data) {
-
- const auto EVENT = (wlr_tablet_pad_strip_event*)data;
- const auto PPAD = (STabletPad*)owner;
-
- wlr_tablet_v2_tablet_pad_notify_strip(PPAD->wlrTabletPadV2, EVENT->strip, EVENT->position, EVENT->source == WLR_TABLET_PAD_STRIP_SOURCE_FINGER, EVENT->time_msec);
-
- }, PNEWPAD, "Tablet Pad");
-
- PNEWPAD->hyprListener_Ring.initCallback(&wlr_tablet_pad_from_input_device(pDevice)->events.strip, [](void* owner, void* data) {
-
- const auto EVENT = (wlr_tablet_pad_ring_event*)data;
- const auto PPAD = (STabletPad*)owner;
-
- wlr_tablet_v2_tablet_pad_notify_ring(PPAD->wlrTabletPadV2, EVENT->ring, EVENT->position, EVENT->source == WLR_TABLET_PAD_RING_SOURCE_FINGER, EVENT->time_msec);
-
- }, PNEWPAD, "Tablet Pad");
-
- PNEWPAD->hyprListener_Attach.initCallback(&wlr_tablet_pad_from_input_device(pDevice)->events.strip, [](void* owner, void* data) {
-
- const auto TABLET = (wlr_tablet_tool*)data;
- const auto PPAD = (STabletPad*)owner;
-
- PPAD->pTabletParent = (STablet*)TABLET->data;
-
- if (!PPAD->pTabletParent)
- Debug::log(ERR, "tabletpad got attached to a nullptr tablet!! this might be bad.");
-
- }, PNEWPAD, "Tablet Pad");
-
- PNEWPAD->hyprListener_Destroy.initCallback(&pDevice->events.destroy, [](void* owner, void* data) {
-
- const auto PPAD = (STabletPad*)owner;
-
- g_pInputManager->m_lTabletPads.remove(*PPAD);
-
- Debug::log(LOG, "Removed a tablet pad");
-
- }, PNEWPAD, "Tablet Pad");
+ PNEWPAD->hyprListener_Button.initCallback(
+ &wlr_tablet_pad_from_input_device(pDevice)->events.button,
+ [](void* owner, void* data) {
+ const auto EVENT = (wlr_tablet_pad_button_event*)data;
+ const auto PPAD = (STabletPad*)owner;
+
+ wlr_tablet_v2_tablet_pad_notify_mode(PPAD->wlrTabletPadV2, EVENT->group, EVENT->mode, EVENT->time_msec);
+ wlr_tablet_v2_tablet_pad_notify_button(PPAD->wlrTabletPadV2, EVENT->button, EVENT->time_msec, (zwp_tablet_pad_v2_button_state)EVENT->state);
+ },
+ PNEWPAD, "Tablet Pad");
+
+ PNEWPAD->hyprListener_Strip.initCallback(
+ &wlr_tablet_pad_from_input_device(pDevice)->events.strip,
+ [](void* owner, void* data) {
+ const auto EVENT = (wlr_tablet_pad_strip_event*)data;
+ const auto PPAD = (STabletPad*)owner;
+
+ wlr_tablet_v2_tablet_pad_notify_strip(PPAD->wlrTabletPadV2, EVENT->strip, EVENT->position, EVENT->source == WLR_TABLET_PAD_STRIP_SOURCE_FINGER, EVENT->time_msec);
+ },
+ PNEWPAD, "Tablet Pad");
+
+ PNEWPAD->hyprListener_Ring.initCallback(
+ &wlr_tablet_pad_from_input_device(pDevice)->events.strip,
+ [](void* owner, void* data) {
+ const auto EVENT = (wlr_tablet_pad_ring_event*)data;
+ const auto PPAD = (STabletPad*)owner;
+
+ wlr_tablet_v2_tablet_pad_notify_ring(PPAD->wlrTabletPadV2, EVENT->ring, EVENT->position, EVENT->source == WLR_TABLET_PAD_RING_SOURCE_FINGER, EVENT->time_msec);
+ },
+ PNEWPAD, "Tablet Pad");
+
+ PNEWPAD->hyprListener_Attach.initCallback(
+ &wlr_tablet_pad_from_input_device(pDevice)->events.strip,
+ [](void* owner, void* data) {
+ const auto TABLET = (wlr_tablet_tool*)data;
+ const auto PPAD = (STabletPad*)owner;
+
+ PPAD->pTabletParent = (STablet*)TABLET->data;
+
+ if (!PPAD->pTabletParent)
+ Debug::log(ERR, "tabletpad got attached to a nullptr tablet!! this might be bad.");
+ },
+ PNEWPAD, "Tablet Pad");
+
+ PNEWPAD->hyprListener_Destroy.initCallback(
+ &pDevice->events.destroy,
+ [](void* owner, void* data) {
+ const auto PPAD = (STabletPad*)owner;
+
+ g_pInputManager->m_lTabletPads.remove(*PPAD);
+
+ Debug::log(LOG, "Removed a tablet pad");
+ },
+ PNEWPAD, "Tablet Pad");
}
void CInputManager::focusTablet(STablet* pTab, wlr_tablet_tool* pTool, bool motion) {
diff --git a/src/managers/input/Touch.cpp b/src/managers/input/Touch.cpp
index b07bb915..9c0c2a8d 100644
--- a/src/managers/input/Touch.cpp
+++ b/src/managers/input/Touch.cpp
@@ -2,7 +2,7 @@
#include "../../Compositor.hpp"
void CInputManager::onTouchDown(wlr_touch_down_event* e) {
- auto PMONITOR = g_pCompositor->getMonitorFromName(e->touch->output_name ? e->touch->output_name : "");
+ auto PMONITOR = g_pCompositor->getMonitorFromName(e->touch->output_name ? e->touch->output_name : "");
const auto PDEVIT = std::find_if(m_lTouchDevices.begin(), m_lTouchDevices.end(), [&](const STouchDevice& other) { return other.pWlrDevice == &e->touch->base; });
@@ -15,9 +15,9 @@ void CInputManager::onTouchDown(wlr_touch_down_event* e) {
refocus();
- m_sTouchData.touchFocusWindow = m_pFoundWindowToFocus;
+ m_sTouchData.touchFocusWindow = m_pFoundWindowToFocus;
m_sTouchData.touchFocusSurface = m_pFoundSurfaceToFocus;
- m_sTouchData.touchFocusLS = m_pFoundLSToFocus;
+ m_sTouchData.touchFocusLS = m_pFoundLSToFocus;
Vector2D local;
@@ -30,7 +30,8 @@ void CInputManager::onTouchDown(wlr_touch_down_event* e) {
m_sTouchData.touchSurfaceOrigin = g_pInputManager->getMouseCoordsInternal() - local;
} else if (m_sTouchData.touchFocusLS) {
- local = g_pInputManager->getMouseCoordsInternal() - Vector2D(m_sTouchData.touchFocusLS->geometry.x, m_sTouchData.touchFocusLS->geometry.y) - g_pCompositor->m_pLastMonitor->vecPosition;
+ local = g_pInputManager->getMouseCoordsInternal() - Vector2D(m_sTouchData.touchFocusLS->geometry.x, m_sTouchData.touchFocusLS->geometry.y) -
+ g_pCompositor->m_pLastMonitor->vecPosition;
m_sTouchData.touchSurfaceOrigin = g_pInputManager->getMouseCoordsInternal() - local;
} else {
@@ -42,17 +43,18 @@ void CInputManager::onTouchDown(wlr_touch_down_event* e) {
wlr_idle_notify_activity(g_pCompositor->m_sWLRIdle, g_pCompositor->m_sSeat.seat);
}
-void CInputManager::onTouchUp(wlr_touch_up_event* e){
+void CInputManager::onTouchUp(wlr_touch_up_event* e) {
if (m_sTouchData.touchFocusSurface) {
wlr_seat_touch_notify_up(g_pCompositor->m_sSeat.seat, e->time_msec, e->touch_id);
}
}
-void CInputManager::onTouchMove(wlr_touch_motion_event* e){
+void CInputManager::onTouchMove(wlr_touch_motion_event* e) {
if (m_sTouchData.touchFocusWindow && g_pCompositor->windowValidMapped(m_sTouchData.touchFocusWindow)) {
const auto PMONITOR = g_pCompositor->getMonitorFromID(m_sTouchData.touchFocusWindow->m_iMonitorID);
- wlr_cursor_warp(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sSeat.mouse->mouse, PMONITOR->vecPosition.x + e->x * PMONITOR->vecSize.x, PMONITOR->vecPosition.y + e->y * PMONITOR->vecSize.y);
+ wlr_cursor_warp(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sSeat.mouse->mouse, PMONITOR->vecPosition.x + e->x * PMONITOR->vecSize.x,
+ PMONITOR->vecPosition.y + e->y * PMONITOR->vecSize.y);
const auto local = g_pInputManager->getMouseCoordsInternal() - m_sTouchData.touchSurfaceOrigin;
@@ -60,7 +62,8 @@ void CInputManager::onTouchMove(wlr_touch_motion_event* e){
} else if (m_sTouchData.touchFocusLS) {
const auto PMONITOR = g_pCompositor->getMonitorFromID(m_sTouchData.touchFocusLS->monitorID);
- wlr_cursor_warp(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sSeat.mouse->mouse, PMONITOR->vecPosition.x + e->x * PMONITOR->vecSize.x, PMONITOR->vecPosition.y + e->y * PMONITOR->vecSize.y);
+ wlr_cursor_warp(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sSeat.mouse->mouse, PMONITOR->vecPosition.x + e->x * PMONITOR->vecSize.x,
+ PMONITOR->vecPosition.y + e->y * PMONITOR->vecSize.y);
const auto local = g_pInputManager->getMouseCoordsInternal() - m_sTouchData.touchSurfaceOrigin;
diff --git a/src/protocols/ToplevelExport.cpp b/src/protocols/ToplevelExport.cpp
index e579e1a7..1a696628 100644
--- a/src/protocols/ToplevelExport.cpp
+++ b/src/protocols/ToplevelExport.cpp
@@ -27,8 +27,7 @@ CToplevelExportProtocolManager::CToplevelExportProtocolManager() {
return;
#endif
- m_pGlobal = wl_global_create(g_pCompositor->m_sWLDisplay, &hyprland_toplevel_export_manager_v1_interface,
- TOPLEVEL_EXPORT_VERSION, this, bindManagerInt);
+ m_pGlobal = wl_global_create(g_pCompositor->m_sWLDisplay, &hyprland_toplevel_export_manager_v1_interface, TOPLEVEL_EXPORT_VERSION, this, bindManagerInt);
if (!m_pGlobal) {
Debug::log(ERR, "ToplevelExportManager could not start! Sharing windows will not work!");
@@ -67,17 +66,14 @@ void handleDestroyFrame(wl_client* client, wl_resource* resource) {
}
static const struct hyprland_toplevel_export_manager_v1_interface toplevelExportManagerImpl = {
- .capture_toplevel = handleCaptureToplevel,
- .destroy = handleDestroy,
+ .capture_toplevel = handleCaptureToplevel,
+ .destroy = handleDestroy,
.capture_toplevel_with_wlr_toplevel_handle = handleCaptureToplevelWithWlr,
};
-static const struct hyprland_toplevel_export_frame_v1_interface toplevelFrameImpl = {
- .copy = handleCopyFrame,
- .destroy = handleDestroyFrame
-};
+static const struct hyprland_toplevel_export_frame_v1_interface toplevelFrameImpl = {.copy = handleCopyFrame, .destroy = handleDestroyFrame};
-SToplevelClient* clientFromResource(wl_resource* resource) {
+SToplevelClient* clientFromResource(wl_resource* resource) {
ASSERT(wl_resource_instance_of(resource, &hyprland_toplevel_export_manager_v1_interface, &toplevelExportManagerImpl));
return (SToplevelClient*)wl_resource_get_user_data(resource);
}
@@ -108,8 +104,7 @@ void handleManagerResourceDestroy(wl_resource* resource) {
void CToplevelExportProtocolManager::bindManager(wl_client* client, void* data, uint32_t version, uint32_t id) {
const auto PCLIENT = &m_lClients.emplace_back();
- PCLIENT->resource = wl_resource_create(client, &hyprland_toplevel_export_manager_v1_interface,
- version, id);
+ PCLIENT->resource = wl_resource_create(client, &hyprland_toplevel_export_manager_v1_interface, version, id);
if (!PCLIENT->resource) {
Debug::log(ERR, "ToplevelExportManager could not bind! (out of memory?)");
@@ -135,7 +130,7 @@ void CToplevelExportProtocolManager::removeFrame(SToplevelFrame* frame, bool for
if (!frame)
return;
- std::erase_if(m_vFramesAwaitingWrite, [&] (const auto& other) { return other == frame; });
+ std::erase_if(m_vFramesAwaitingWrite, [&](const auto& other) { return other == frame; });
wl_resource_set_user_data(frame->resource, nullptr);
wlr_buffer_unlock(frame->buffer);
@@ -147,10 +142,10 @@ void CToplevelExportProtocolManager::captureToplevel(wl_client* client, wl_resou
const auto PCLIENT = clientFromResource(resource);
// create a frame
- const auto PFRAME = &m_lFrames.emplace_back();
+ const auto PFRAME = &m_lFrames.emplace_back();
PFRAME->overlayCursor = !!overlay_cursor;
- PFRAME->resource = wl_resource_create(client, &hyprland_toplevel_export_frame_v1_interface, wl_resource_get_version(resource), frame);
- PFRAME->pWindow = pWindow;
+ PFRAME->resource = wl_resource_create(client, &hyprland_toplevel_export_frame_v1_interface, wl_resource_get_version(resource), frame);
+ PFRAME->pWindow = pWindow;
if (!PFRAME->pWindow) {
Debug::log(ERR, "Client requested sharing of window handle %x which does not exist!", PFRAME->pWindow);
@@ -202,7 +197,7 @@ void CToplevelExportProtocolManager::captureToplevel(wl_client* client, wl_resou
PFRAME->dmabufFormat = DRM_FORMAT_INVALID;
}
- PFRAME->box = { 0, 0, (int)(PFRAME->pWindow->m_vRealSize.vec().x * PMONITOR->scale), (int)(PFRAME->pWindow->m_vRealSize.vec().y * PMONITOR->scale) };
+ PFRAME->box = {0, 0, (int)(PFRAME->pWindow->m_vRealSize.vec().x * PMONITOR->scale), (int)(PFRAME->pWindow->m_vRealSize.vec().y * PMONITOR->scale)};
int ow, oh;
wlr_output_effective_resolution(PMONITOR->output, &ow, &oh);
wlr_box_transform(&PFRAME->box, &PFRAME->box, PMONITOR->transform, ow, oh);
@@ -247,9 +242,9 @@ void CToplevelExportProtocolManager::copyFrame(wl_client* client, wl_resource* r
}
wlr_dmabuf_attributes dmabufAttrs;
- void* wlrBufferAccessData;
- uint32_t wlrBufferAccessFormat;
- size_t wlrBufferAccessStride;
+ void* wlrBufferAccessData;
+ uint32_t wlrBufferAccessFormat;
+ size_t wlrBufferAccessStride;
if (wlr_buffer_get_dmabuf(PBUFFER, &dmabufAttrs)) {
PFRAME->bufferCap = WLR_BUFFER_CAP_DMABUF;
@@ -287,7 +282,7 @@ void CToplevelExportProtocolManager::onMonitorRender(CMonitor* pMonitor) {
return; // nothing to share
std::vector<SToplevelFrame*> framesToRemove;
-
+
// share frame if correct output
for (auto& f : m_vFramesAwaitingWrite) {
if (!f->pWindow) {
@@ -295,12 +290,11 @@ void CToplevelExportProtocolManager::onMonitorRender(CMonitor* pMonitor) {
continue;
}
- wlr_box geometry = { f->pWindow->m_vRealPosition.vec().x, f->pWindow->m_vRealPosition.vec().y,
- f->pWindow->m_vRealSize.vec().x, f->pWindow->m_vRealSize.vec().y };
+ wlr_box geometry = {f->pWindow->m_vRealPosition.vec().x, f->pWindow->m_vRealPosition.vec().y, f->pWindow->m_vRealSize.vec().x, f->pWindow->m_vRealSize.vec().y};
if (!wlr_output_layout_intersects(g_pCompositor->m_sWLROutputLayout, pMonitor->output, &geometry))
continue;
-
+
shareFrame(f);
framesToRemove.push_back(f);
@@ -342,14 +336,14 @@ void CToplevelExportProtocolManager::shareFrame(SToplevelFrame* frame) {
}
bool CToplevelExportProtocolManager::copyFrameShm(SToplevelFrame* frame, timespec* now) {
- void* data;
+ void* data;
uint32_t format;
- size_t stride;
+ size_t stride;
if (!wlr_buffer_begin_data_ptr_access(frame->buffer, WLR_BUFFER_DATA_PTR_ACCESS_WRITE, &data, &format, &stride))
return false;
// render the client
- const auto PMONITOR = g_pCompositor->getMonitorFromID(frame->pWindow->m_iMonitorID);
+ const auto PMONITOR = g_pCompositor->getMonitorFromID(frame->pWindow->m_iMonitorID);
pixman_region32_t fakeDamage;
pixman_region32_init_rect(&fakeDamage, 0, 0, PMONITOR->vecPixelSize.x * 10, PMONITOR->vecPixelSize.y * 10);
diff --git a/src/protocols/ToplevelExport.hpp b/src/protocols/ToplevelExport.hpp
index eee0e97d..30c2d33f 100644
--- a/src/protocols/ToplevelExport.hpp
+++ b/src/protocols/ToplevelExport.hpp
@@ -11,60 +11,60 @@ class CMonitor;
class CWindow;
struct SToplevelClient {
- int ref = 0;
+ int ref = 0;
wl_resource* resource = nullptr;
- bool operator==(const SToplevelClient& other) {
+ bool operator==(const SToplevelClient& other) {
return resource == other.resource;
}
};
struct SToplevelFrame {
- wl_resource* resource = nullptr;
- SToplevelClient* client = nullptr;
+ wl_resource* resource = nullptr;
+ SToplevelClient* client = nullptr;
- uint32_t shmFormat = 0;
- uint32_t dmabufFormat = 0;
- wlr_box box = { 0 };
- int shmStride = 0;
+ uint32_t shmFormat = 0;
+ uint32_t dmabufFormat = 0;
+ wlr_box box = {0};
+ int shmStride = 0;
- bool overlayCursor = false;
+ bool overlayCursor = false;
- wlr_buffer_cap bufferCap = WLR_BUFFER_CAP_SHM;
+ wlr_buffer_cap bufferCap = WLR_BUFFER_CAP_SHM;
- wlr_buffer* buffer = nullptr;
+ wlr_buffer* buffer = nullptr;
- CWindow* pWindow = nullptr;
+ CWindow* pWindow = nullptr;
- bool operator==(const SToplevelFrame& other) {
+ bool operator==(const SToplevelFrame& other) {
return resource == other.resource && client == other.client;
}
};
class CToplevelExportProtocolManager {
-public:
+ public:
CToplevelExportProtocolManager();
- void bindManager(wl_client* client, void* data, uint32_t version, uint32_t id);
- void captureToplevel(wl_client* client, wl_resource* resource, uint32_t frame, int32_t overlay_cursor, CWindow* handle);
- void removeClient(SToplevelClient* client, bool force = false);
- void removeFrame(SToplevelFrame* frame, bool force = false);
- void copyFrame(wl_client* client, wl_resource* resource, wl_resource* buffer, int32_t ignore_damage);
+ void bindManager(wl_client* client, void* data, uint32_t version, uint32_t id);
+ void captureToplevel(wl_client* client, wl_resource* resource, uint32_t frame, int32_t overlay_cursor, CWindow* handle);
+ void removeClient(SToplevelClient* client, bool force = false);
+ void removeFrame(SToplevelFrame* frame, bool force = false);
+ void copyFrame(wl_client* client, wl_resource* resource, wl_resource* buffer, int32_t ignore_damage);
- void onMonitorRender(CMonitor* pMonitor);
- void displayDestroy();
- void onWindowUnmap(CWindow* pWindow);
+ void onMonitorRender(CMonitor* pMonitor);
+ void displayDestroy();
+ void onWindowUnmap(CWindow* pWindow);
-private:
- wl_global* m_pGlobal = nullptr;
- std::list<SToplevelFrame> m_lFrames;
- std::list<SToplevelClient> m_lClients;
+ private:
+ wl_global* m_pGlobal = nullptr;
+ std::list<SToplevelFrame> m_lFrames;
+ std::list<SToplevelClient> m_lClients;
- wl_listener m_liDisplayDestroy;
+ wl_listener m_liDisplayDestroy;
std::vector<SToplevelFrame*> m_vFramesAwaitingWrite;
- void shareFrame(SToplevelFrame* frame);
- bool copyFrameDmabuf(SToplevelFrame* frame);
- bool copyFrameShm(SToplevelFrame* frame, timespec* now);
+ void shareFrame(SToplevelFrame* frame);
+ bool copyFrameDmabuf(SToplevelFrame* frame);
+ bool copyFrameShm(SToplevelFrame* frame, timespec* now);
}; \ No newline at end of file
diff --git a/src/render/Framebuffer.cpp b/src/render/Framebuffer.cpp
index a1b45fc8..32d2361b 100644
--- a/src/render/Framebuffer.cpp
+++ b/src/render/Framebuffer.cpp
@@ -10,7 +10,7 @@ bool CFramebuffer::alloc(int w, int h) {
glGenFramebuffers(1, &m_iFb);
}
- if (m_cTex.m_iTexID == 0) {
+ if (m_cTex.m_iTexID == 0) {
firstAlloc = true;
glGenTextures(1, &m_cTex.m_iTexID);
glBindTexture(GL_TEXTURE_2D, m_cTex.m_iTexID);
@@ -27,8 +27,8 @@ bool CFramebuffer::alloc(int w, int h) {
glBindFramebuffer(GL_FRAMEBUFFER, m_iFb);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_cTex.m_iTexID, 0);
- // TODO: Allow this with gles2
- #ifndef GLES2
+// TODO: Allow this with gles2
+#ifndef GLES2
if (m_pStencilTex) {
glBindTexture(GL_TEXTURE_2D, m_pStencilTex->m_iTexID);
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8, w, h, 0, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, 0);
@@ -37,7 +37,7 @@ bool CFramebuffer::alloc(int w, int h) {
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, m_pStencilTex->m_iTexID, 0);
}
- #endif
+#endif
auto status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
RASSERT((status == GL_FRAMEBUFFER_COMPLETE), "Framebuffer incomplete, couldn't create! (FB status: %i)", status);
@@ -54,11 +54,11 @@ bool CFramebuffer::alloc(int w, int h) {
}
void CFramebuffer::bind() {
- #ifndef GLES2
+#ifndef GLES2
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_iFb);
- #else
+#else
glBindFramebuffer(GL_FRAMEBUFFER, m_iFb);
- #endif
+#endif
glViewport(0, 0, g_pHyprOpenGL->m_RenderData.pMonitor->vecPixelSize.x, g_pHyprOpenGL->m_RenderData.pMonitor->vecPixelSize.y);
}
@@ -72,8 +72,8 @@ void CFramebuffer::release() {
}
m_cTex.m_iTexID = 0;
- m_iFb = -1;
- m_Size = Vector2D();
+ m_iFb = -1;
+ m_Size = Vector2D();
}
CFramebuffer::~CFramebuffer() {
diff --git a/src/render/Framebuffer.hpp b/src/render/Framebuffer.hpp
index 2d1e621c..9dacbce3 100644
--- a/src/render/Framebuffer.hpp
+++ b/src/render/Framebuffer.hpp
@@ -4,24 +4,23 @@
#include "Texture.hpp"
class CFramebuffer {
-public:
-
+ public:
~CFramebuffer();
- bool alloc(int w, int h);
- void bind();
- void release();
- void reset();
- bool isAllocated();
+ bool alloc(int w, int h);
+ void bind();
+ void release();
+ void reset();
+ bool isAllocated();
- Vector2D m_Position;
- Vector2D m_Size;
- float m_fScale = 1;
+ Vector2D m_Position;
+ Vector2D m_Size;
+ float m_fScale = 1;
- CTexture m_cTex;
- GLuint m_iFb = -1;
+ CTexture m_cTex;
+ GLuint m_iFb = -1;
- CTexture* m_pStencilTex = nullptr;
+ CTexture* m_pStencilTex = nullptr;
wl_output_transform m_tTransform; // for saving state
}; \ No newline at end of file
diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp
index c67f8a49..70a0aa3a 100644
--- a/src/render/OpenGL.cpp
+++ b/src/render/OpenGL.cpp
@@ -5,9 +5,10 @@
#include "Shaders.hpp"
CHyprOpenGLImpl::CHyprOpenGLImpl() {
- RASSERT(eglMakeCurrent(wlr_egl_get_display(g_pCompositor->m_sWLREGL), EGL_NO_SURFACE, EGL_NO_SURFACE, wlr_egl_get_context(g_pCompositor->m_sWLREGL)), "Couldn't unset current EGL!");
+ RASSERT(eglMakeCurrent(wlr_egl_get_display(g_pCompositor->m_sWLREGL), EGL_NO_SURFACE, EGL_NO_SURFACE, wlr_egl_get_context(g_pCompositor->m_sWLREGL)),
+ "Couldn't unset current EGL!");
- auto *const EXTENSIONS = (const char*)glGetString(GL_EXTENSIONS);
+ auto* const EXTENSIONS = (const char*)glGetString(GL_EXTENSIONS);
RASSERT(EXTENSIONS, "Couldn't retrieve openGL extensions!");
@@ -21,9 +22,9 @@ CHyprOpenGLImpl::CHyprOpenGLImpl() {
Debug::log(LOG, "Renderer: %s", glGetString(GL_RENDERER));
Debug::log(LOG, "Supported extensions size: %d", std::count(m_szExtensions.begin(), m_szExtensions.end(), ' '));
- #ifdef GLES2
+#ifdef GLES2
Debug::log(WARN, "!RENDERER: Using the legacy GLES2 renderer!");
- #endif
+#endif
pixman_region32_init(&m_rOriginalDamageRegion);
@@ -111,8 +112,8 @@ void CHyprOpenGLImpl::begin(CMonitor* pMonitor, pixman_region32_t* pDamage, bool
if (m_mMonitorRenderResources.find(pMonitor) == m_mMonitorRenderResources.end() || m_RenderData.pCurrentMonData->primaryFB.m_Size != pMonitor->vecPixelSize) {
m_RenderData.pCurrentMonData->stencilTex.allocate();
- m_RenderData.pCurrentMonData->primaryFB.m_pStencilTex = &m_RenderData.pCurrentMonData->stencilTex;
- m_RenderData.pCurrentMonData->mirrorFB.m_pStencilTex = &m_RenderData.pCurrentMonData->stencilTex;
+ m_RenderData.pCurrentMonData->primaryFB.m_pStencilTex = &m_RenderData.pCurrentMonData->stencilTex;
+ m_RenderData.pCurrentMonData->mirrorFB.m_pStencilTex = &m_RenderData.pCurrentMonData->stencilTex;
m_RenderData.pCurrentMonData->mirrorSwapFB.m_pStencilTex = &m_RenderData.pCurrentMonData->stencilTex;
m_RenderData.pCurrentMonData->primaryFB.alloc(pMonitor->vecPixelSize.x, pMonitor->vecPixelSize.y);
@@ -145,132 +146,132 @@ void CHyprOpenGLImpl::end() {
pixman_region32_copy(m_RenderData.pDamage, &m_rOriginalDamageRegion);
if (!m_RenderData.pMonitor->mirrors.empty())
- g_pHyprOpenGL->saveBufferForMirror(); // save with original damage region
+ g_pHyprOpenGL->saveBufferForMirror(); // save with original damage region
glBindFramebuffer(GL_FRAMEBUFFER, m_iWLROutputFb);
wlr_box monbox = {0, 0, m_RenderData.pMonitor->vecTransformedSize.x, m_RenderData.pMonitor->vecTransformedSize.y};
clear(CColor(11, 11, 11, 255));
- m_bEndFrame = true;
+ m_bEndFrame = true;
m_bApplyFinalShader = true;
renderTexture(m_RenderData.pCurrentMonData->primaryFB.m_cTex, &monbox, 255.f, 0);
m_bApplyFinalShader = false;
- m_bEndFrame = false;
+ m_bEndFrame = false;
}
// reset our data
m_RenderData.pMonitor = nullptr;
- m_iWLROutputFb = 0;
+ m_iWLROutputFb = 0;
}
void CHyprOpenGLImpl::initShaders() {
- GLuint prog = createProgram(QUADVERTSRC, QUADFRAGSRC);
- m_RenderData.pCurrentMonData->m_shQUAD.program = prog;
- m_RenderData.pCurrentMonData->m_shQUAD.proj = glGetUniformLocation(prog, "proj");
- m_RenderData.pCurrentMonData->m_shQUAD.color = glGetUniformLocation(prog, "color");
- m_RenderData.pCurrentMonData->m_shQUAD.posAttrib = glGetAttribLocation(prog, "pos");
- m_RenderData.pCurrentMonData->m_shQUAD.topLeft = glGetUniformLocation(prog, "topLeft");
- m_RenderData.pCurrentMonData->m_shQUAD.fullSize = glGetUniformLocation(prog, "fullSize");
- m_RenderData.pCurrentMonData->m_shQUAD.radius = glGetUniformLocation(prog, "radius");
+ GLuint prog = createProgram(QUADVERTSRC, QUADFRAGSRC);
+ m_RenderData.pCurrentMonData->m_shQUAD.program = prog;
+ m_RenderData.pCurrentMonData->m_shQUAD.proj = glGetUniformLocation(prog, "proj");
+ m_RenderData.pCurrentMonData->m_shQUAD.color = glGetUniformLocation(prog, "color");
+ m_RenderData.pCurrentMonData->m_shQUAD.posAttrib = glGetAttribLocation(prog, "pos");
+ m_RenderData.pCurrentMonData->m_shQUAD.topLeft = glGetUniformLocation(prog, "topLeft");
+ m_RenderData.pCurrentMonData->m_shQUAD.fullSize = glGetUniformLocation(prog, "fullSize");
+ m_RenderData.pCurrentMonData->m_shQUAD.radius = glGetUniformLocation(prog, "radius");
m_RenderData.pCurrentMonData->m_shQUAD.primitiveMultisample = glGetUniformLocation(prog, "primitiveMultisample");
- prog = createProgram(TEXVERTSRC, TEXFRAGSRCRGBA);
- m_RenderData.pCurrentMonData->m_shRGBA.program = prog;
- m_RenderData.pCurrentMonData->m_shRGBA.proj = glGetUniformLocation(prog, "proj");
- m_RenderData.pCurrentMonData->m_shRGBA.tex = glGetUniformLocation(prog, "tex");
- m_RenderData.pCurrentMonData->m_shRGBA.alpha = glGetUniformLocation(prog, "alpha");
- m_RenderData.pCurrentMonData->m_shRGBA.texAttrib = glGetAttribLocation(prog, "texcoord");
- m_RenderData.pCurrentMonData->m_shRGBA.posAttrib = glGetAttribLocation(prog, "pos");
- m_RenderData.pCurrentMonData->m_shRGBA.discardOpaque = glGetUniformLocation(prog, "discardOpaque");
- m_RenderData.pCurrentMonData->m_shRGBA.topLeft = glGetUniformLocation(prog, "topLeft");
- m_RenderData.pCurrentMonData->m_shRGBA.fullSize = glGetUniformLocation(prog, "fullSize");
- m_RenderData.pCurrentMonData->m_shRGBA.radius = glGetUniformLocation(prog, "radius");
+ prog = createProgram(TEXVERTSRC, TEXFRAGSRCRGBA);
+ m_RenderData.pCurrentMonData->m_shRGBA.program = prog;
+ m_RenderData.pCurrentMonData->m_shRGBA.proj = glGetUniformLocation(prog, "proj");
+ m_RenderData.pCurrentMonData->m_shRGBA.tex = glGetUniformLocation(prog, "tex");
+ m_RenderData.pCurrentMonData->m_shRGBA.alpha = glGetUniformLocation(prog, "alpha");
+ m_RenderData.pCurrentMonData->m_shRGBA.texAttrib = glGetAttribLocation(prog, "texcoord");
+ m_RenderData.pCurrentMonData->m_shRGBA.posAttrib = glGetAttribLocation(prog, "pos");
+ m_RenderData.pCurrentMonData->m_shRGBA.discardOpaque = glGetUniformLocation(prog, "discardOpaque");
+ m_RenderData.pCurrentMonData->m_shRGBA.topLeft = glGetUniformLocation(prog, "topLeft");
+ m_RenderData.pCurrentMonData->m_shRGBA.fullSize = glGetUniformLocation(prog, "fullSize");
+ m_RenderData.pCurrentMonData->m_shRGBA.radius = glGetUniformLocation(prog, "radius");
m_RenderData.pCurrentMonData->m_shRGBA.primitiveMultisample = glGetUniformLocation(prog, "primitiveMultisample");
- m_RenderData.pCurrentMonData->m_shRGBA.applyTint = glGetUniformLocation(prog, "applyTint");
- m_RenderData.pCurrentMonData->m_shRGBA.tint = glGetUniformLocation(prog, "tint");
-
- prog = createProgram(TEXVERTSRC, TEXFRAGSRCRGBX);
- m_RenderData.pCurrentMonData->m_shRGBX.program = prog;
- m_RenderData.pCurrentMonData->m_shRGBX.tex = glGetUniformLocation(prog, "tex");
- m_RenderData.pCurrentMonData->m_shRGBX.proj = glGetUniformLocation(prog, "proj");
- m_RenderData.pCurrentMonData->m_shRGBX.alpha = glGetUniformLocation(prog, "alpha");
- m_RenderData.pCurrentMonData->m_shRGBX.texAttrib = glGetAttribLocation(prog, "texcoord");
- m_RenderData.pCurrentMonData->m_shRGBX.posAttrib = glGetAttribLocation(prog, "pos");
- m_RenderData.pCurrentMonData->m_shRGBX.discardOpaque = glGetUniformLocation(prog, "discardOpaque");
- m_RenderData.pCurrentMonData->m_shRGBX.topLeft = glGetUniformLocation(prog, "topLeft");
- m_RenderData.pCurrentMonData->m_shRGBX.fullSize = glGetUniformLocation(prog, "fullSize");
- m_RenderData.pCurrentMonData->m_shRGBX.radius = glGetUniformLocation(prog, "radius");
+ m_RenderData.pCurrentMonData->m_shRGBA.applyTint = glGetUniformLocation(prog, "applyTint");
+ m_RenderData.pCurrentMonData->m_shRGBA.tint = glGetUniformLocation(prog, "tint");
+
+ prog = createProgram(TEXVERTSRC, TEXFRAGSRCRGBX);
+ m_RenderData.pCurrentMonData->m_shRGBX.program = prog;
+ m_RenderData.pCurrentMonData->m_shRGBX.tex = glGetUniformLocation(prog, "tex");
+ m_RenderData.pCurrentMonData->m_shRGBX.proj = glGetUniformLocation(prog, "proj");
+ m_RenderData.pCurrentMonData->m_shRGBX.alpha = glGetUniformLocation(prog, "alpha");
+ m_RenderData.pCurrentMonData->m_shRGBX.texAttrib = glGetAttribLocation(prog, "texcoord");
+ m_RenderData.pCurrentMonData->m_shRGBX.posAttrib = glGetAttribLocation(prog, "pos");
+ m_RenderData.pCurrentMonData->m_shRGBX.discardOpaque = glGetUniformLocation(prog, "discardOpaque");
+ m_RenderData.pCurrentMonData->m_shRGBX.topLeft = glGetUniformLocation(prog, "topLeft");
+ m_RenderData.pCurrentMonData->m_shRGBX.fullSize = glGetUniformLocation(prog, "fullSize");
+ m_RenderData.pCurrentMonData->m_shRGBX.radius = glGetUniformLocation(prog, "radius");
m_RenderData.pCurrentMonData->m_shRGBX.primitiveMultisample = glGetUniformLocation(prog, "primitiveMultisample");
- m_RenderData.pCurrentMonData->m_shRGBX.applyTint = glGetUniformLocation(prog, "applyTint");
- m_RenderData.pCurrentMonData->m_shRGBX.tint = glGetUniformLocation(prog, "tint");
-
- prog = createProgram(TEXVERTSRC, TEXFRAGSRCEXT);
- m_RenderData.pCurrentMonData->m_shEXT.program = prog;
- m_RenderData.pCurrentMonData->m_shEXT.tex = glGetUniformLocation(prog, "tex");
- m_RenderData.pCurrentMonData->m_shEXT.proj = glGetUniformLocation(prog, "proj");
- m_RenderData.pCurrentMonData->m_shEXT.alpha = glGetUniformLocation(prog, "alpha");
- m_RenderData.pCurrentMonData->m_shEXT.posAttrib = glGetAttribLocation(prog, "pos");
- m_RenderData.pCurrentMonData->m_shEXT.texAttrib = glGetAttribLocation(prog, "texcoord");
- m_RenderData.pCurrentMonData->m_shEXT.discardOpaque = glGetUniformLocation(prog, "discardOpaque");
- m_RenderData.pCurrentMonData->m_shEXT.topLeft = glGetUniformLocation(prog, "topLeft");
- m_RenderData.pCurrentMonData->m_shEXT.fullSize = glGetUniformLocation(prog, "fullSize");
- m_RenderData.pCurrentMonData->m_shEXT.radius = glGetUniformLocation(prog, "radius");
+ m_RenderData.pCurrentMonData->m_shRGBX.applyTint = glGetUniformLocation(prog, "applyTint");
+ m_RenderData.pCurrentMonData->m_shRGBX.tint = glGetUniformLocation(prog, "tint");
+
+ prog = createProgram(TEXVERTSRC, TEXFRAGSRCEXT);
+ m_RenderData.pCurrentMonData->m_shEXT.program = prog;
+ m_RenderData.pCurrentMonData->m_shEXT.tex = glGetUniformLocation(prog, "tex");
+ m_RenderData.pCurrentMonData->m_shEXT.proj = glGetUniformLocation(prog, "proj");
+ m_RenderData.pCurrentMonData->m_shEXT.alpha = glGetUniformLocation(prog, "alpha");
+ m_RenderData.pCurrentMonData->m_shEXT.posAttrib = glGetAttribLocation(prog, "pos");
+ m_RenderData.pCurrentMonData->m_shEXT.texAttrib = glGetAttribLocation(prog, "texcoord");
+ m_RenderData.pCurrentMonData->m_shEXT.discardOpaque = glGetUniformLocation(prog, "discardOpaque");
+ m_RenderData.pCurrentMonData->m_shEXT.topLeft = glGetUniformLocation(prog, "topLeft");
+ m_RenderData.pCurrentMonData->m_shEXT.fullSize = glGetUniformLocation(prog, "fullSize");
+ m_RenderData.pCurrentMonData->m_shEXT.radius = glGetUniformLocation(prog, "radius");
m_RenderData.pCurrentMonData->m_shEXT.primitiveMultisample = glGetUniformLocation(prog, "primitiveMultisample");
- m_RenderData.pCurrentMonData->m_shEXT.applyTint = glGetUniformLocation(prog, "applyTint");
- m_RenderData.pCurrentMonData->m_shEXT.tint = glGetUniformLocation(prog, "tint");
-
- prog = createProgram(TEXVERTSRC, FRAGBLUR1);
- m_RenderData.pCurrentMonData->m_shBLUR1.program = prog;
- m_RenderData.pCurrentMonData->m_shBLUR1.tex = glGetUniformLocation(prog, "tex");
- m_RenderData.pCurrentMonData->m_shBLUR1.alpha = glGetUniformLocation(prog, "alpha");
- m_RenderData.pCurrentMonData->m_shBLUR1.proj = glGetUniformLocation(prog, "proj");
+ m_RenderData.pCurrentMonData->m_shEXT.applyTint = glGetUniformLocation(prog, "applyTint");
+ m_RenderData.pCurrentMonData->m_shEXT.tint = glGetUniformLocation(prog, "tint");
+
+ prog = createProgram(TEXVERTSRC, FRAGBLUR1);
+ m_RenderData.pCurrentMonData->m_shBLUR1.program = prog;
+ m_RenderData.pCurrentMonData->m_shBLUR1.tex = glGetUniformLocation(prog, "tex");
+ m_RenderData.pCurrentMonData->m_shBLUR1.alpha = glGetUniformLocation(prog, "alpha");
+ m_RenderData.pCurrentMonData->m_shBLUR1.proj = glGetUniformLocation(prog, "proj");
m_RenderData.pCurrentMonData->m_shBLUR1.posAttrib = glGetAttribLocation(prog, "pos");
m_RenderData.pCurrentMonData->m_shBLUR1.texAttrib = glGetAttribLocation(prog, "texcoord");
- m_RenderData.pCurrentMonData->m_shBLUR1.radius = glGetUniformLocation(prog, "radius");
+ m_RenderData.pCurrentMonData->m_shBLUR1.radius = glGetUniformLocation(prog, "radius");
m_RenderData.pCurrentMonData->m_shBLUR1.halfpixel = glGetUniformLocation(prog, "halfpixel");
- prog = createProgram(TEXVERTSRC, FRAGBLUR2);
- m_RenderData.pCurrentMonData->m_shBLUR2.program = prog;
- m_RenderData.pCurrentMonData->m_shBLUR2.tex = glGetUniformLocation(prog, "tex");
- m_RenderData.pCurrentMonData->m_shBLUR2.alpha = glGetUniformLocation(prog, "alpha");
- m_RenderData.pCurrentMonData->m_shBLUR2.proj = glGetUniformLocation(prog, "proj");
+ prog = createProgram(TEXVERTSRC, FRAGBLUR2);
+ m_RenderData.pCurrentMonData->m_shBLUR2.program = prog;
+ m_RenderData.pCurrentMonData->m_shBLUR2.tex = glGetUniformLocation(prog, "tex");
+ m_RenderData.pCurrentMonData->m_shBLUR2.alpha = glGetUniformLocation(prog, "alpha");
+ m_RenderData.pCurrentMonData->m_shBLUR2.proj = glGetUniformLocation(prog, "proj");
m_RenderData.pCurrentMonData->m_shBLUR2.posAttrib = glGetAttribLocation(prog, "pos");
m_RenderData.pCurrentMonData->m_shBLUR2.texAttrib = glGetAttribLocation(prog, "texcoord");
- m_RenderData.pCurrentMonData->m_shBLUR2.radius = glGetUniformLocation(prog, "radius");
+ m_RenderData.pCurrentMonData->m_shBLUR2.radius = glGetUniformLocation(prog, "radius");
m_RenderData.pCurrentMonData->m_shBLUR2.halfpixel = glGetUniformLocation(prog, "halfpixel");
- prog = createProgram(QUADVERTSRC, FRAGSHADOW);
- m_RenderData.pCurrentMonData->m_shSHADOW.program = prog;
- m_RenderData.pCurrentMonData->m_shSHADOW.proj = glGetUniformLocation(prog, "proj");
- m_RenderData.pCurrentMonData->m_shSHADOW.posAttrib = glGetAttribLocation(prog, "pos");
- m_RenderData.pCurrentMonData->m_shSHADOW.texAttrib = glGetAttribLocation(prog, "texcoord");
- m_RenderData.pCurrentMonData->m_shSHADOW.topLeft = glGetUniformLocation(prog, "topLeft");
+ prog = createProgram(QUADVERTSRC, FRAGSHADOW);
+ m_RenderData.pCurrentMonData->m_shSHADOW.program = prog;
+ m_RenderData.pCurrentMonData->m_shSHADOW.proj = glGetUniformLocation(prog, "proj");
+ m_RenderData.pCurrentMonData->m_shSHADOW.posAttrib = glGetAttribLocation(prog, "pos");
+ m_RenderData.pCurrentMonData->m_shSHADOW.texAttrib = glGetAttribLocation(prog, "texcoord");
+ m_RenderData.pCurrentMonData->m_shSHADOW.topLeft = glGetUniformLocation(prog, "topLeft");
m_RenderData.pCurrentMonData->m_shSHADOW.bottomRight = glGetUniformLocation(prog, "bottomRight");
- m_RenderData.pCurrentMonData->m_shSHADOW.fullSize = glGetUniformLocation(prog, "fullSize");
- m_RenderData.pCurrentMonData->m_shSHADOW.radius = glGetUniformLocation(prog, "radius");
- m_RenderData.pCurrentMonData->m_shSHADOW.range = glGetUniformLocation(prog, "range");
+ m_RenderData.pCurrentMonData->m_shSHADOW.fullSize = glGetUniformLocation(prog, "fullSize");
+ m_RenderData.pCurrentMonData->m_shSHADOW.radius = glGetUniformLocation(prog, "radius");
+ m_RenderData.pCurrentMonData->m_shSHADOW.range = glGetUniformLocation(prog, "range");
m_RenderData.pCurrentMonData->m_shSHADOW.shadowPower = glGetUniformLocation(prog, "shadowPower");
- m_RenderData.pCurrentMonData->m_shSHADOW.color = glGetUniformLocation(prog, "color");
-
- prog = createProgram(QUADVERTSRC, FRAGBORDER1);
- m_RenderData.pCurrentMonData->m_shBORDER1.program = prog;
- m_RenderData.pCurrentMonData->m_shBORDER1.proj = glGetUniformLocation(prog, "proj");
- m_RenderData.pCurrentMonData->m_shBORDER1.thick = glGetUniformLocation(prog, "thick");
- m_RenderData.pCurrentMonData->m_shBORDER1.posAttrib = glGetAttribLocation(prog, "pos");
- m_RenderData.pCurrentMonData->m_shBORDER1.texAttrib = glGetAttribLocation(prog, "texcoord");
- m_RenderData.pCurrentMonData->m_shBORDER1.topLeft = glGetUniformLocation(prog, "topLeft");
- m_RenderData.pCurrentMonData->m_shBORDER1.bottomRight = glGetUniformLocation(prog, "bottomRight");
- m_RenderData.pCurrentMonData->m_shBORDER1.fullSize = glGetUniformLocation(prog, "fullSize");
+ m_RenderData.pCurrentMonData->m_shSHADOW.color = glGetUniformLocation(prog, "color");
+
+ prog = createProgram(QUADVERTSRC, FRAGBORDER1);
+ m_RenderData.pCurrentMonData->m_shBORDER1.program = prog;
+ m_RenderData.pCurrentMonData->m_shBORDER1.proj = glGetUniformLocation(prog, "proj");
+ m_RenderData.pCurrentMonData->m_shBORDER1.thick = glGetUniformLocation(prog, "thick");
+ m_RenderData.pCurrentMonData->m_shBORDER1.posAttrib = glGetAttribLocation(prog, "pos");
+ m_RenderData.pCurrentMonData->m_shBORDER1.texAttrib = glGetAttribLocation(prog, "texcoord");
+ m_RenderData.pCurrentMonData->m_shBORDER1.topLeft = glGetUniformLocation(prog, "topLeft");
+ m_RenderData.pCurrentMonData->m_shBORDER1.bottomRight = glGetUniformLocation(prog, "bottomRight");
+ m_RenderData.pCurrentMonData->m_shBORDER1.fullSize = glGetUniformLocation(prog, "fullSize");
m_RenderData.pCurrentMonData->m_shBORDER1.fullSizeUntransformed = glGetUniformLocation(prog, "fullSizeUntransformed");
- m_RenderData.pCurrentMonData->m_shBORDER1.radius = glGetUniformLocation(prog, "radius");
- m_RenderData.pCurrentMonData->m_shBORDER1.primitiveMultisample = glGetUniformLocation(prog, "primitiveMultisample");
- m_RenderData.pCurrentMonData->m_shBORDER1.gradient = glGetUniformLocation(prog, "gradient");
- m_RenderData.pCurrentMonData->m_shBORDER1.gradientLength = glGetUniformLocation(prog, "gradientLength");
- m_RenderData.pCurrentMonData->m_shBORDER1.angle = glGetUniformLocation(prog, "angle");
- m_RenderData.pCurrentMonData->m_shBORDER1.alpha = glGetUniformLocation(prog, "alpha");
+ m_RenderData.pCurrentMonData->m_shBORDER1.radius = glGetUniformLocation(prog, "radius");
+ m_RenderData.pCurrentMonData->m_shBORDER1.primitiveMultisample = glGetUniformLocation(prog, "primitiveMultisample");
+ m_RenderData.pCurrentMonData->m_shBORDER1.gradient = glGetUniformLocation(prog, "gradient");
+ m_RenderData.pCurrentMonData->m_shBORDER1.gradientLength = glGetUniformLocation(prog, "gradientLength");
+ m_RenderData.pCurrentMonData->m_shBORDER1.angle = glGetUniformLocation(prog, "angle");
+ m_RenderData.pCurrentMonData->m_shBORDER1.alpha = glGetUniformLocation(prog, "alpha");
m_RenderData.pCurrentMonData->m_bShadersInitialized = true;
@@ -294,14 +295,14 @@ void CHyprOpenGLImpl::applyScreenShader(const std::string& path) {
std::string fragmentShader((std::istreambuf_iterator<char>(infile)), (std::istreambuf_iterator<char>()));
m_sFinalScreenShader.program = createProgram(TEXVERTSRC, fragmentShader, true);
-
+
if (!m_sFinalScreenShader.program) {
g_pConfigManager->addParseError("Screen shader parser: Screen shader parse failed");
return;
}
- m_sFinalScreenShader.proj = glGetUniformLocation(m_sFinalScreenShader.program, "proj");
- m_sFinalScreenShader.tex = glGetUniformLocation(m_sFinalScreenShader.program, "tex");
+ m_sFinalScreenShader.proj = glGetUniformLocation(m_sFinalScreenShader.program, "proj");
+ m_sFinalScreenShader.tex = glGetUniformLocation(m_sFinalScreenShader.program, "tex");
m_sFinalScreenShader.texAttrib = glGetAttribLocation(m_sFinalScreenShader.program, "texcoord");
m_sFinalScreenShader.posAttrib = glGetAttribLocation(m_sFinalScreenShader.program, "pos");
}
@@ -359,13 +360,13 @@ void CHyprOpenGLImpl::scissor(const pixman_box32* pBox, bool transform) {
}
void CHyprOpenGLImpl::scissor(const int x, const int y, const int w, const int h, bool transform) {
- wlr_box box = {x,y,w,h};
+ wlr_box box = {x, y, w, h};
scissor(&box, transform);
}
void CHyprOpenGLImpl::renderRect(wlr_box* box, const CColor& col, int round) {
- if(pixman_region32_not_empty(m_RenderData.pDamage))
- renderRectWithDamage(box, col, m_RenderData.pDamage, round);
+ if (pixman_region32_not_empty(m_RenderData.pDamage))
+ renderRectWithDamage(box, col, m_RenderData.pDamage, round);
}
void CHyprOpenGLImpl::renderRectWithDamage(wlr_box* box, const CColor& col, pixman_region32_t* damage, int round) {
@@ -373,7 +374,8 @@ void CHyprOpenGLImpl::renderRectWithDamage(wlr_box* box, const CColor& col, pixm
RASSERT(m_RenderData.pMonitor, "Tried to render rect without begin()!");
float matrix[9];
- wlr_matrix_project_box(matrix, box, wlr_output_transform_invert(!m_bEndFrame ? WL_OUTPUT_TRANSFORM_NORMAL : m_RenderData.pMonitor->transform), 0, m_RenderData.pMonitor->output->transform_matrix); // TODO: write own, don't use WLR here
+ wlr_matrix_project_box(matrix, box, wlr_output_transform_invert(!m_bEndFrame ? WL_OUTPUT_TRANSFORM_NORMAL : m_RenderData.pMonitor->transform), 0,
+ m_RenderData.pMonitor->output->transform_matrix); // TODO: write own, don't use WLR here
float glMatrix[9];
wlr_matrix_multiply(glMatrix, m_RenderData.projection, matrix);
@@ -392,13 +394,13 @@ void CHyprOpenGLImpl::renderRectWithDamage(wlr_box* box, const CColor& col, pixm
glUniform4f(m_RenderData.pCurrentMonData->m_shQUAD.color, col.r / 255.f, col.g / 255.f, col.b / 255.f, col.a / 255.f);
wlr_box transformedBox;
- wlr_box_transform(&transformedBox, box, wlr_output_transform_invert(m_RenderData.pMonitor->transform),
- m_RenderData.pMonitor->vecTransformedSize.x, m_RenderData.pMonitor->vecTransformedSize.y);
+ wlr_box_transform(&transformedBox, box, wlr_output_transform_invert(m_RenderData.pMonitor->transform), m_RenderData.pMonitor->vecTransformedSize.x,
+ m_RenderData.pMonitor->vecTransformedSize.y);
- const auto TOPLEFT = Vector2D(transformedBox.x, transformedBox.y);
- const auto FULLSIZE = Vector2D(transformedBox.width, transformedBox.height);
+ const auto TOPLEFT = Vector2D(transformedBox.x, transformedBox.y);
+ const auto FULLSIZE = Vector2D(transformedBox.width, transformedBox.height);
- static auto *const PMULTISAMPLEEDGES = &g_pConfigManager->getConfigValuePtr("decoration:multisample_edges")->intValue;
+ static auto* const PMULTISAMPLEEDGES = &g_pConfigManager->getConfigValuePtr("decoration:multisample_edges")->intValue;
// Rounded corners
glUniform2f(m_RenderData.pCurrentMonData->m_shQUAD.topLeft, (float)TOPLEFT.x, (float)TOPLEFT.y);
@@ -425,13 +427,13 @@ void CHyprOpenGLImpl::renderRectWithDamage(wlr_box* box, const CColor& col, pixm
}
}
- pixman_region32_fini(&damageClip);
+ pixman_region32_fini(&damageClip);
} else {
- PIXMAN_DAMAGE_FOREACH(damage) {
- const auto RECT = RECTSARR[i];
- scissor(&RECT);
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
- }
+ PIXMAN_DAMAGE_FOREACH(damage) {
+ const auto RECT = RECTSARR[i];
+ scissor(&RECT);
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+ }
}
glDisableVertexAttribArray(m_RenderData.pCurrentMonData->m_shQUAD.posAttrib);
@@ -454,18 +456,19 @@ void CHyprOpenGLImpl::renderTexture(const CTexture& tex, wlr_box* pBox, float al
scissor((wlr_box*)nullptr);
}
-void CHyprOpenGLImpl::renderTextureInternalWithDamage(const CTexture& tex, wlr_box* pBox, float alpha, pixman_region32_t* damage, int round, bool discardOpaque, bool noAA, bool allowCustomUV, bool allowDim) {
+void CHyprOpenGLImpl::renderTextureInternalWithDamage(const CTexture& tex, wlr_box* pBox, float alpha, pixman_region32_t* damage, int round, bool discardOpaque, bool noAA,
+ bool allowCustomUV, bool allowDim) {
RASSERT(m_RenderData.pMonitor, "Tried to render texture without begin()!");
RASSERT((tex.m_iTexID > 0), "Attempted to draw NULL texture!");
if (!pixman_region32_not_empty(m_RenderData.pDamage))
- return;
+ return;
- static auto *const PDIMINACTIVE = &g_pConfigManager->getConfigValuePtr("decoration:dim_inactive")->intValue;
+ static auto* const PDIMINACTIVE = &g_pConfigManager->getConfigValuePtr("decoration:dim_inactive")->intValue;
// get transform
const auto TRANSFORM = wlr_output_transform_invert(!m_bEndFrame ? WL_OUTPUT_TRANSFORM_NORMAL : m_RenderData.pMonitor->transform);
- float matrix[9];
+ float matrix[9];
wlr_matrix_project_box(matrix, pBox, TRANSFORM, 0, m_RenderData.pMonitor->output->transform_matrix);
float glMatrix[9];
@@ -479,21 +482,14 @@ void CHyprOpenGLImpl::renderTextureInternalWithDamage(const CTexture& tex, wlr_b
bool usingFinalShader = false;
if (m_bApplyFinalShader && m_sFinalScreenShader.program) {
- shader = &m_sFinalScreenShader;
+ shader = &m_sFinalScreenShader;
usingFinalShader = true;
} else {
switch (tex.m_iType) {
- case TEXTURE_RGBA:
- shader = &m_RenderData.pCurrentMonData->m_shRGBA;
- break;
- case TEXTURE_RGBX:
- shader = &m_RenderData.pCurrentMonData->m_shRGBX;
- break;
- case TEXTURE_EXTERNAL:
- shader = &m_RenderData.pCurrentMonData->m_shEXT;
- break;
- default:
- RASSERT(false, "tex.m_iTarget unsupported!");
+ case TEXTURE_RGBA: shader = &m_RenderData.pCurrentMonData->m_shRGBA; break;
+ case TEXTURE_RGBX: shader = &m_RenderData.pCurrentMonData->m_shRGBX; break;
+ case TEXTURE_EXTERNAL: shader = &m_RenderData.pCurrentMonData->m_shEXT; break;
+ default: RASSERT(false, "tex.m_iTarget unsupported!");
}
}
@@ -517,12 +513,12 @@ void CHyprOpenGLImpl::renderTextureInternalWithDamage(const CTexture& tex, wlr_b
}
wlr_box transformedBox;
- wlr_box_transform(&transformedBox, pBox, wlr_output_transform_invert(m_RenderData.pMonitor->transform),
- m_RenderData.pMonitor->vecTransformedSize.x, m_RenderData.pMonitor->vecTransformedSize.y);
+ wlr_box_transform(&transformedBox, pBox, wlr_output_transform_invert(m_RenderData.pMonitor->transform), m_RenderData.pMonitor->vecTransformedSize.x,
+ m_RenderData.pMonitor->vecTransformedSize.y);
- const auto TOPLEFT = Vector2D(transformedBox.x, transformedBox.y);
- const auto FULLSIZE = Vector2D(transformedBox.width, transformedBox.height);
- static auto *const PMULTISAMPLEEDGES = &g_pConfigManager->getConfigValuePtr("decoration:multisample_edges")->intValue;
+ const auto TOPLEFT = Vector2D(transformedBox.x, transformedBox.y);
+ const auto FULLSIZE = Vector2D(transformedBox.width, transformedBox.height);
+ static auto* const PMULTISAMPLEEDGES = &g_pConfigManager->getConfigValuePtr("decoration:multisample_edges")->intValue;
if (!usingFinalShader) {
// Rounded corners
@@ -541,10 +537,10 @@ void CHyprOpenGLImpl::renderTextureInternalWithDamage(const CTexture& tex, wlr_b
}
const float verts[] = {
- m_RenderData.primarySurfaceUVBottomRight.x, m_RenderData.primarySurfaceUVTopLeft.y, // top right
- m_RenderData.primarySurfaceUVTopLeft.x, m_RenderData.primarySurfaceUVTopLeft.y, // top left
- m_RenderData.primarySurfaceUVBottomRight.x, m_RenderData.primarySurfaceUVBottomRight.y, // bottom right
- m_RenderData.primarySurfaceUVTopLeft.x, m_RenderData.primarySurfaceUVBottomRight.y, // bottom left
+ m_RenderData.primarySurfaceUVBottomRight.x, m_RenderData.primarySurfaceUVTopLeft.y, // top right
+ m_RenderData.primarySurfaceUVTopLeft.x, m_RenderData.primarySurfaceUVTopLeft.y, // top left
+ m_RenderData.primarySurfaceUVBottomRight.x, m_RenderData.primarySurfaceUVBottomRight.y, // bottom right
+ m_RenderData.primarySurfaceUVTopLeft.x, m_RenderData.primarySurfaceUVBottomRight.y, // bottom left
};
glVertexAttribPointer(shader->posAttrib, 2, GL_FLOAT, GL_FALSE, 0, fullVerts);
@@ -571,13 +567,13 @@ void CHyprOpenGLImpl::renderTextureInternalWithDamage(const CTexture& tex, wlr_b
}
}
- pixman_region32_fini(&damageClip);
+ pixman_region32_fini(&damageClip);
} else {
- PIXMAN_DAMAGE_FOREACH(damage) {
- const auto RECT = RECTSARR[i];
- scissor(&RECT);
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
- }
+ PIXMAN_DAMAGE_FOREACH(damage) {
+ const auto RECT = RECTSARR[i];
+ scissor(&RECT);
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+ }
}
glDisableVertexAttribArray(shader->posAttrib);
@@ -597,27 +593,28 @@ CFramebuffer* CHyprOpenGLImpl::blurMainFramebufferWithDamage(float a, wlr_box* p
// get transforms for the full monitor
const auto TRANSFORM = wlr_output_transform_invert(m_RenderData.pMonitor->transform);
- float matrix[9];
- wlr_box MONITORBOX = {0, 0, m_RenderData.pMonitor->vecTransformedSize.x, m_RenderData.pMonitor->vecTransformedSize.y};
+ float matrix[9];
+ wlr_box MONITORBOX = {0, 0, m_RenderData.pMonitor->vecTransformedSize.x, m_RenderData.pMonitor->vecTransformedSize.y};
wlr_matrix_project_box(matrix, &MONITORBOX, TRANSFORM, 0, m_RenderData.pMonitor->output->transform_matrix);
float glMatrix[9];
wlr_matrix_multiply(glMatrix, m_RenderData.projection, matrix);
// get the config settings
- static auto *const PBLURSIZE = &g_pConfigManager->getConfigValuePtr("decoration:blur_size")->intValue;
- static auto *const PBLURPASSES = &g_pConfigManager->getConfigValuePtr("decoration:blur_passes")->intValue;
+ static auto* const PBLURSIZE = &g_pConfigManager->getConfigValuePtr("decoration:blur_size")->intValue;
+ static auto* const PBLURPASSES = &g_pConfigManager->getConfigValuePtr("decoration:blur_passes")->intValue;
// prep damage
pixman_region32_t damage;
pixman_region32_init(&damage);
pixman_region32_copy(&damage, originalDamage);
- wlr_region_transform(&damage, &damage, wlr_output_transform_invert(m_RenderData.pMonitor->transform), m_RenderData.pMonitor->vecTransformedSize.x, m_RenderData.pMonitor->vecTransformedSize.y);
+ wlr_region_transform(&damage, &damage, wlr_output_transform_invert(m_RenderData.pMonitor->transform), m_RenderData.pMonitor->vecTransformedSize.x,
+ m_RenderData.pMonitor->vecTransformedSize.y);
wlr_region_expand(&damage, &damage, pow(2, *PBLURPASSES) * *PBLURSIZE);
// helper
- const auto PMIRRORFB = &m_RenderData.pCurrentMonData->mirrorFB;
- const auto PMIRRORSWAPFB = &m_RenderData.pCurrentMonData->mirrorSwapFB;
+ const auto PMIRRORFB = &m_RenderData.pCurrentMonData->mirrorFB;
+ const auto PMIRRORSWAPFB = &m_RenderData.pCurrentMonData->mirrorSwapFB;
CFramebuffer* currentRenderToFB = &m_RenderData.pCurrentMonData->primaryFB;
@@ -643,11 +640,13 @@ CFramebuffer* CHyprOpenGLImpl::blurMainFramebufferWithDamage(float a, wlr_box* p
wlr_matrix_transpose(glMatrix, glMatrix);
glUniformMatrix3fv(pShader->proj, 1, GL_FALSE, glMatrix);
#endif
- glUniform1f(pShader->radius, *PBLURSIZE * (a / 255.f)); // this makes the blursize change with a
+ glUniform1f(pShader->radius, *PBLURSIZE * (a / 255.f)); // this makes the blursize change with a
if (pShader == &m_RenderData.pCurrentMonData->m_shBLUR1)
- glUniform2f(m_RenderData.pCurrentMonData->m_shBLUR1.halfpixel, 0.5f / (m_RenderData.pMonitor->vecPixelSize.x / 2.f), 0.5f / (m_RenderData.pMonitor->vecPixelSize.y / 2.f));
+ glUniform2f(m_RenderData.pCurrentMonData->m_shBLUR1.halfpixel, 0.5f / (m_RenderData.pMonitor->vecPixelSize.x / 2.f),
+ 0.5f / (m_RenderData.pMonitor->vecPixelSize.y / 2.f));
else
- glUniform2f(m_RenderData.pCurrentMonData->m_shBLUR2.halfpixel, 0.5f / (m_RenderData.pMonitor->vecPixelSize.x * 2.f), 0.5f / (m_RenderData.pMonitor->vecPixelSize.y * 2.f));
+ glUniform2f(m_RenderData.pCurrentMonData->m_shBLUR2.halfpixel, 0.5f / (m_RenderData.pMonitor->vecPixelSize.x * 2.f),
+ 0.5f / (m_RenderData.pMonitor->vecPixelSize.y * 2.f));
glUniform1i(pShader->tex, 0);
glVertexAttribPointer(pShader->posAttrib, 2, GL_FLOAT, GL_FALSE, 0, fullVerts);
@@ -682,19 +681,19 @@ CFramebuffer* CHyprOpenGLImpl::blurMainFramebufferWithDamage(float a, wlr_box* p
// damage region will be scaled, make a temp
pixman_region32_t tempDamage;
pixman_region32_init(&tempDamage);
- wlr_region_scale(&tempDamage, &damage, 1.f / 2.f); // when DOWNscaling, we make the region twice as small because it's the TARGET
+ wlr_region_scale(&tempDamage, &damage, 1.f / 2.f); // when DOWNscaling, we make the region twice as small because it's the TARGET
drawPass(&m_RenderData.pCurrentMonData->m_shBLUR1, &tempDamage);
// and draw
for (int i = 1; i < *PBLURPASSES; ++i) {
wlr_region_scale(&tempDamage, &damage, 1.f / (1 << (i + 1)));
- drawPass(&m_RenderData.pCurrentMonData->m_shBLUR1, &tempDamage); // down
+ drawPass(&m_RenderData.pCurrentMonData->m_shBLUR1, &tempDamage); // down
}
for (int i = *PBLURPASSES - 1; i >= 0; --i) {
- wlr_region_scale(&tempDamage, &damage, 1.f / (1 << i)); // when upsampling we make the region twice as big
- drawPass(&m_RenderData.pCurrentMonData->m_shBLUR2, &tempDamage); // up
+ wlr_region_scale(&tempDamage, &damage, 1.f / (1 << i)); // when upsampling we make the region twice as big
+ drawPass(&m_RenderData.pCurrentMonData->m_shBLUR2, &tempDamage); // up
}
// finish
@@ -714,9 +713,9 @@ void CHyprOpenGLImpl::markBlurDirtyForMonitor(CMonitor* pMonitor) {
}
void CHyprOpenGLImpl::preRender(CMonitor* pMonitor) {
- static auto *const PBLURNEWOPTIMIZE = &g_pConfigManager->getConfigValuePtr("decoration:blur_new_optimizations")->intValue;
- static auto *const PBLURXRAY = &g_pConfigManager->getConfigValuePtr("decoration:blur_xray")->intValue;
- static auto *const PBLUR = &g_pConfigManager->getConfigValuePtr("decoration:blur")->intValue;
+ static auto* const PBLURNEWOPTIMIZE = &g_pConfigManager->getConfigValuePtr("decoration:blur_new_optimizations")->intValue;
+ static auto* const PBLURXRAY = &g_pConfigManager->getConfigValuePtr("decoration:blur_xray")->intValue;
+ static auto* const PBLUR = &g_pConfigManager->getConfigValuePtr("decoration:blur")->intValue;
if (!*PBLURNEWOPTIMIZE || !m_mMonitorRenderResources[pMonitor].blurFBDirty || !*PBLUR)
return;
@@ -739,14 +738,14 @@ void CHyprOpenGLImpl::preBlurForCurrentMonitor() {
// make the fake dmg
pixman_region32_t fakeDamage;
pixman_region32_init_rect(&fakeDamage, 0, 0, m_RenderData.pMonitor->vecTransformedSize.x, m_RenderData.pMonitor->vecTransformedSize.y);
- wlr_box wholeMonitor = {0, 0, m_RenderData.pMonitor->vecTransformedSize.x, m_RenderData.pMonitor->vecTransformedSize.y};
- const auto POUTFB = blurMainFramebufferWithDamage(255, &wholeMonitor, &fakeDamage);
+ wlr_box wholeMonitor = {0, 0, m_RenderData.pMonitor->vecTransformedSize.x, m_RenderData.pMonitor->vecTransformedSize.y};
+ const auto POUTFB = blurMainFramebufferWithDamage(255, &wholeMonitor, &fakeDamage);
// render onto blurFB
m_RenderData.pCurrentMonData->blurFB.alloc(m_RenderData.pMonitor->vecPixelSize.x, m_RenderData.pMonitor->vecPixelSize.y);
m_RenderData.pCurrentMonData->blurFB.bind();
- clear(CColor(0,0,0,0));
+ clear(CColor(0, 0, 0, 0));
m_bEndFrame = true; // fix transformed
renderTextureInternalWithDamage(POUTFB->m_cTex, &wholeMonitor, 255, &fakeDamage, 0, false, true, false);
@@ -760,14 +759,14 @@ void CHyprOpenGLImpl::preBlurForCurrentMonitor() {
}
void CHyprOpenGLImpl::preWindowPass() {
- static auto *const PBLURNEWOPTIMIZE = &g_pConfigManager->getConfigValuePtr("decoration:blur_new_optimizations")->intValue;
- static auto *const PBLURXRAY = &g_pConfigManager->getConfigValuePtr("decoration:blur_xray")->intValue;
- static auto *const PBLUR = &g_pConfigManager->getConfigValuePtr("decoration:blur")->intValue;
+ static auto* const PBLURNEWOPTIMIZE = &g_pConfigManager->getConfigValuePtr("decoration:blur_new_optimizations")->intValue;
+ static auto* const PBLURXRAY = &g_pConfigManager->getConfigValuePtr("decoration:blur_xray")->intValue;
+ static auto* const PBLUR = &g_pConfigManager->getConfigValuePtr("decoration:blur")->intValue;
if (!m_RenderData.pCurrentMonData->blurFBDirty || !*PBLURNEWOPTIMIZE || !*PBLUR)
return;
- auto windowShouldBeBlurred = [&] (CWindow* pWindow) -> bool {
+ auto windowShouldBeBlurred = [&](CWindow* pWindow) -> bool {
if (!pWindow)
return false;
@@ -781,8 +780,8 @@ void CHyprOpenGLImpl::preWindowPass() {
pixman_region32_t inverseOpaque;
pixman_region32_init(&inverseOpaque);
- const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(pWindow->m_iWorkspaceID);
- const float A = pWindow->m_fAlpha.fl() * pWindow->m_fActiveInactiveAlpha.fl() * PWORKSPACE->m_fAlpha.fl() / 255.f;
+ const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(pWindow->m_iWorkspaceID);
+ const float A = pWindow->m_fAlpha.fl() * pWindow->m_fActiveInactiveAlpha.fl() * PWORKSPACE->m_fAlpha.fl() / 255.f;
if (A >= 255.f) {
pixman_box32_t surfbox = {0, 0, PSURFACE->current.width, PSURFACE->current.height};
@@ -808,7 +807,7 @@ void CHyprOpenGLImpl::preWindowPass() {
// check if window is valid
if (!windowShouldBeBlurred(w.get()))
continue;
-
+
hasWindows = true;
break;
}
@@ -824,20 +823,21 @@ void CHyprOpenGLImpl::preWindowPass() {
void CHyprOpenGLImpl::renderTextureWithBlur(const CTexture& tex, wlr_box* pBox, float a, wlr_surface* pSurface, int round, bool blockBlurOptimization) {
RASSERT(m_RenderData.pMonitor, "Tried to render texture with blur without begin()!");
- static auto *const PBLURENABLED = &g_pConfigManager->getConfigValuePtr("decoration:blur")->intValue;
- static auto *const PNOBLUROVERSIZED = &g_pConfigManager->getConfigValuePtr("decoration:no_blur_on_oversized")->intValue;
- static auto *const PBLURNEWOPTIMIZE = &g_pConfigManager->getConfigValuePtr("decoration:blur_new_optimizations")->intValue;
- static auto *const PBLURXRAY = &g_pConfigManager->getConfigValuePtr("decoration:blur_xray")->intValue;
+ static auto* const PBLURENABLED = &g_pConfigManager->getConfigValuePtr("decoration:blur")->intValue;
+ static auto* const PNOBLUROVERSIZED = &g_pConfigManager->getConfigValuePtr("decoration:no_blur_on_oversized")->intValue;
+ static auto* const PBLURNEWOPTIMIZE = &g_pConfigManager->getConfigValuePtr("decoration:blur_new_optimizations")->intValue;
+ static auto* const PBLURXRAY = &g_pConfigManager->getConfigValuePtr("decoration:blur_xray")->intValue;
// make a damage region for this window
pixman_region32_t damage;
pixman_region32_init(&damage);
- pixman_region32_intersect_rect(&damage, m_RenderData.pDamage, pBox->x, pBox->y, pBox->width, pBox->height); // clip it to the box
+ pixman_region32_intersect_rect(&damage, m_RenderData.pDamage, pBox->x, pBox->y, pBox->width, pBox->height); // clip it to the box
- if(!pixman_region32_not_empty(&damage))
- return;
+ if (!pixman_region32_not_empty(&damage))
+ return;
- if (*PBLURENABLED == 0 || (*PNOBLUROVERSIZED && m_RenderData.primarySurfaceUVTopLeft != Vector2D(-1, -1)) || (m_pCurrentWindow && m_pCurrentWindow->m_sAdditionalConfigData.forceNoBlur)) {
+ if (*PBLURENABLED == 0 || (*PNOBLUROVERSIZED && m_RenderData.primarySurfaceUVTopLeft != Vector2D(-1, -1)) ||
+ (m_pCurrentWindow && m_pCurrentWindow->m_sAdditionalConfigData.forceNoBlur)) {
renderTexture(tex, pBox, a, round, false, true);
return;
}
@@ -861,7 +861,9 @@ void CHyprOpenGLImpl::renderTextureWithBlur(const CTexture& tex, wlr_box* pBox,
}
// vvv TODO: layered blur fbs?
- const bool USENEWOPTIMIZE = (*PBLURNEWOPTIMIZE && !blockBlurOptimization && ((m_pCurrentWindow && !m_pCurrentWindow->m_bIsFloating) || *PBLURXRAY) && m_RenderData.pCurrentMonData->blurFB.m_cTex.m_iTexID && (!m_pCurrentWindow || !g_pCompositor->isWorkspaceSpecial(m_pCurrentWindow->m_iWorkspaceID) ));
+ const bool USENEWOPTIMIZE =
+ (*PBLURNEWOPTIMIZE && !blockBlurOptimization && ((m_pCurrentWindow && !m_pCurrentWindow->m_bIsFloating) || *PBLURXRAY) &&
+ m_RenderData.pCurrentMonData->blurFB.m_cTex.m_iTexID && (!m_pCurrentWindow || !g_pCompositor->isWorkspaceSpecial(m_pCurrentWindow->m_iWorkspaceID)));
CFramebuffer* POUTFB = nullptr;
if (!USENEWOPTIMIZE) {
@@ -886,7 +888,7 @@ void CHyprOpenGLImpl::renderTextureWithBlur(const CTexture& tex, wlr_box* pBox,
m_RenderData.pCurrentMonData->primaryFB.bind();
// make a stencil for rounded corners to work with blur
- scissor((wlr_box*)nullptr); // allow the entire window and stencil to render
+ scissor((wlr_box*)nullptr); // allow the entire window and stencil to render
glClearStencil(0);
glClear(GL_STENCIL_BUFFER_BIT);
@@ -897,9 +899,9 @@ void CHyprOpenGLImpl::renderTextureWithBlur(const CTexture& tex, wlr_box* pBox,
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
if (USENEWOPTIMIZE)
- renderRect(pBox, CColor(0,0,0,0), round);
+ renderRect(pBox, CColor(0, 0, 0, 0), round);
else
- renderTexture(tex, pBox, a, round, true, true); // discard opaque
+ renderTexture(tex, pBox, a, round, true, true); // discard opaque
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
glStencilFunc(GL_EQUAL, 1, -1);
@@ -908,8 +910,8 @@ void CHyprOpenGLImpl::renderTextureWithBlur(const CTexture& tex, wlr_box* pBox,
// stencil done. Render everything.
wlr_box MONITORBOX = {0, 0, m_RenderData.pMonitor->vecTransformedSize.x, m_RenderData.pMonitor->vecTransformedSize.y};
// render our great blurred FB
- static auto *const PBLURIGNOREOPACITY = &g_pConfigManager->getConfigValuePtr("decoration:blur_ignore_opacity")->intValue;
- m_bEndFrame = true; // fix transformed
+ static auto* const PBLURIGNOREOPACITY = &g_pConfigManager->getConfigValuePtr("decoration:blur_ignore_opacity")->intValue;
+ m_bEndFrame = true; // fix transformed
renderTextureInternalWithDamage(POUTFB->m_cTex, &MONITORBOX, *PBLURIGNOREOPACITY ? 255.f : a, &damage, 0, false, false, false);
m_bEndFrame = false;
@@ -939,10 +941,10 @@ void CHyprOpenGLImpl::renderBorder(wlr_box* box, const CGradientValueData& grad,
RASSERT(m_RenderData.pMonitor, "Tried to render rect without begin()!");
if (!pixman_region32_not_empty(m_RenderData.pDamage) || (m_pCurrentWindow && m_pCurrentWindow->m_sAdditionalConfigData.forceNoBorder))
- return;
+ return;
- static auto *const PBORDERSIZE = &g_pConfigManager->getConfigValuePtr("general:border_size")->intValue;
- static auto *const PMULTISAMPLE = &g_pConfigManager->getConfigValuePtr("decoration:multisample_edges")->intValue;
+ static auto* const PBORDERSIZE = &g_pConfigManager->getConfigValuePtr("general:border_size")->intValue;
+ static auto* const PMULTISAMPLE = &g_pConfigManager->getConfigValuePtr("decoration:multisample_edges")->intValue;
if (*PBORDERSIZE < 1)
return;
@@ -958,7 +960,8 @@ void CHyprOpenGLImpl::renderBorder(wlr_box* box, const CGradientValueData& grad,
round += round == 0 ? 0 : scaledBorderSize;
float matrix[9];
- wlr_matrix_project_box(matrix, box, wlr_output_transform_invert(!m_bEndFrame ? WL_OUTPUT_TRANSFORM_NORMAL : m_RenderData.pMonitor->transform), 0, m_RenderData.pMonitor->output->transform_matrix); // TODO: write own, don't use WLR here
+ wlr_matrix_project_box(matrix, box, wlr_output_transform_invert(!m_bEndFrame ? WL_OUTPUT_TRANSFORM_NORMAL : m_RenderData.pMonitor->transform), 0,
+ m_RenderData.pMonitor->output->transform_matrix); // TODO: write own, don't use WLR here
float glMatrix[9];
wlr_matrix_multiply(glMatrix, m_RenderData.projection, matrix);
@@ -983,10 +986,10 @@ void CHyprOpenGLImpl::renderBorder(wlr_box* box, const CGradientValueData& grad,
glUniform1f(m_RenderData.pCurrentMonData->m_shBORDER1.alpha, a);
wlr_box transformedBox;
- wlr_box_transform(&transformedBox, box, wlr_output_transform_invert(m_RenderData.pMonitor->transform),
- m_RenderData.pMonitor->vecTransformedSize.x, m_RenderData.pMonitor->vecTransformedSize.y);
+ wlr_box_transform(&transformedBox, box, wlr_output_transform_invert(m_RenderData.pMonitor->transform), m_RenderData.pMonitor->vecTransformedSize.x,
+ m_RenderData.pMonitor->vecTransformedSize.y);
- const auto TOPLEFT = Vector2D(transformedBox.x, transformedBox.y);
+ const auto TOPLEFT = Vector2D(transformedBox.x, transformedBox.y);
const auto FULLSIZE = Vector2D(transformedBox.width, transformedBox.height);
glUniform2f(m_RenderData.pCurrentMonData->m_shBORDER1.topLeft, (float)TOPLEFT.x, (float)TOPLEFT.y);
@@ -1015,13 +1018,13 @@ void CHyprOpenGLImpl::renderBorder(wlr_box* box, const CGradientValueData& grad,
}
}
- pixman_region32_fini(&damageClip);
+ pixman_region32_fini(&damageClip);
} else {
- PIXMAN_DAMAGE_FOREACH(m_RenderData.pDamage) {
- const auto RECT = RECTSARR[i];
- scissor(&RECT);
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
- }
+ PIXMAN_DAMAGE_FOREACH(m_RenderData.pDamage) {
+ const auto RECT = RECTSARR[i];
+ scissor(&RECT);
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+ }
}
glDisableVertexAttribArray(m_RenderData.pCurrentMonData->m_shBORDER1.posAttrib);
@@ -1050,7 +1053,7 @@ void CHyprOpenGLImpl::makeRawWindowSnapshot(CWindow* pWindow, CFramebuffer* pFra
begin(PMONITOR, &fakeDamage, true);
- clear(CColor(0, 0, 0, 0)); // JIC
+ clear(CColor(0, 0, 0, 0)); // JIC
timespec now;
clock_gettime(CLOCK_MONOTONIC, &now);
@@ -1072,7 +1075,7 @@ void CHyprOpenGLImpl::makeRawWindowSnapshot(CWindow* pWindow, CFramebuffer* pFra
pFramebuffer->bind();
- clear(CColor(0, 0, 0, 0)); // JIC
+ clear(CColor(0, 0, 0, 0)); // JIC
g_pHyprRenderer->renderWindow(pWindow, PMONITOR, &now, false, RENDER_PASS_ALL, true);
@@ -1105,7 +1108,7 @@ void CHyprOpenGLImpl::makeWindowSnapshot(CWindow* pWindow) {
begin(PMONITOR, &fakeDamage, true);
- clear(CColor(0, 0, 0, 0)); // JIC
+ clear(CColor(0, 0, 0, 0)); // JIC
timespec now;
clock_gettime(CLOCK_MONOTONIC, &now);
@@ -1128,7 +1131,7 @@ void CHyprOpenGLImpl::makeWindowSnapshot(CWindow* pWindow) {
PFRAMEBUFFER->bind();
- clear(CColor(0, 0, 0, 0)); // JIC
+ clear(CColor(0, 0, 0, 0)); // JIC
g_pHyprRenderer->renderWindow(pWindow, PMONITOR, &now, !pWindow->m_bX11DoesntWantBorders, RENDER_PASS_ALL);
@@ -1169,13 +1172,13 @@ void CHyprOpenGLImpl::makeLayerSnapshot(SLayerSurface* pLayer) {
PFRAMEBUFFER->bind();
- clear(CColor(0, 0, 0, 0)); // JIC
+ clear(CColor(0, 0, 0, 0)); // JIC
timespec now;
clock_gettime(CLOCK_MONOTONIC, &now);
const auto BLURLSSTATUS = pLayer->forceBlur;
- pLayer->forceBlur = false;
+ pLayer->forceBlur = false;
// draw the layer
g_pHyprRenderer->renderLayer(pLayer, PMONITOR, &now);
@@ -1199,19 +1202,15 @@ void CHyprOpenGLImpl::makeLayerSnapshot(SLayerSurface* pLayer) {
wlr_output_rollback(PMONITOR->output);
}
-void CHyprOpenGLImpl::onWindowResizeStart(CWindow* pWindow) {
+void CHyprOpenGLImpl::onWindowResizeStart(CWindow* pWindow) {}
-}
-
-void CHyprOpenGLImpl::onWindowResizeEnd(CWindow* pWindow) {
-
-}
+void CHyprOpenGLImpl::onWindowResizeEnd(CWindow* pWindow) {}
void CHyprOpenGLImpl::renderSnapshot(CWindow** pWindow) {
RASSERT(m_RenderData.pMonitor, "Tried to render snapshot rect without begin()!");
const auto PWINDOW = *pWindow;
- auto it = m_mWindowFramebuffers.begin();
+ auto it = m_mWindowFramebuffers.begin();
for (; it != m_mWindowFramebuffers.end(); it++) {
if (it->first == PWINDOW) {
break;
@@ -1223,15 +1222,16 @@ void CHyprOpenGLImpl::renderSnapshot(CWindow** pWindow) {
const auto PMONITOR = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID);
- wlr_box windowBox;
+ wlr_box windowBox;
// some mafs to figure out the correct box
// the originalClosedPos is relative to the monitor's pos
- Vector2D scaleXY = Vector2D((PMONITOR->scale * PWINDOW->m_vRealSize.vec().x / (PWINDOW->m_vOriginalClosedSize.x * PMONITOR->scale)), (PMONITOR->scale * PWINDOW->m_vRealSize.vec().y / (PWINDOW->m_vOriginalClosedSize.y * PMONITOR->scale)));
+ Vector2D scaleXY = Vector2D((PMONITOR->scale * PWINDOW->m_vRealSize.vec().x / (PWINDOW->m_vOriginalClosedSize.x * PMONITOR->scale)),
+ (PMONITOR->scale * PWINDOW->m_vRealSize.vec().y / (PWINDOW->m_vOriginalClosedSize.y * PMONITOR->scale)));
- windowBox.width = PMONITOR->vecTransformedSize.x * scaleXY.x;
+ windowBox.width = PMONITOR->vecTransformedSize.x * scaleXY.x;
windowBox.height = PMONITOR->vecTransformedSize.y * scaleXY.y;
- windowBox.x = ((PWINDOW->m_vRealPosition.vec().x - PMONITOR->vecPosition.x) * PMONITOR->scale) - ((PWINDOW->m_vOriginalClosedPos.x * PMONITOR->scale) * scaleXY.x);
- windowBox.y = ((PWINDOW->m_vRealPosition.vec().y - PMONITOR->vecPosition.y) * PMONITOR->scale) - ((PWINDOW->m_vOriginalClosedPos.y * PMONITOR->scale) * scaleXY.y);
+ windowBox.x = ((PWINDOW->m_vRealPosition.vec().x - PMONITOR->vecPosition.x) * PMONITOR->scale) - ((PWINDOW->m_vOriginalClosedPos.x * PMONITOR->scale) * scaleXY.x);
+ windowBox.y = ((PWINDOW->m_vRealPosition.vec().y - PMONITOR->vecPosition.y) * PMONITOR->scale) - ((PWINDOW->m_vOriginalClosedPos.y * PMONITOR->scale) * scaleXY.y);
pixman_region32_t fakeDamage;
pixman_region32_init_rect(&fakeDamage, 0, 0, PMONITOR->vecTransformedSize.x, PMONITOR->vecTransformedSize.y);
@@ -1244,7 +1244,7 @@ void CHyprOpenGLImpl::renderSnapshot(CWindow** pWindow) {
pixman_region32_fini(&fakeDamage);
- static auto *const PDAMAGEMON = &g_pConfigManager->getConfigValuePtr("misc:damage_entire_on_snapshot")->intValue;
+ static auto* const PDAMAGEMON = &g_pConfigManager->getConfigValuePtr("misc:damage_entire_on_snapshot")->intValue;
if (*PDAMAGEMON)
PMONITOR->forceFullFrames += 1;
@@ -1254,7 +1254,7 @@ void CHyprOpenGLImpl::renderSnapshot(SLayerSurface** pLayer) {
RASSERT(m_RenderData.pMonitor, "Tried to render snapshot rect without begin()!");
const auto PLAYER = *pLayer;
- auto it = m_mLayerFramebuffers.begin();
+ auto it = m_mLayerFramebuffers.begin();
for (; it != m_mLayerFramebuffers.end(); it++) {
if (it->first == PLAYER) {
break;
@@ -1264,9 +1264,9 @@ void CHyprOpenGLImpl::renderSnapshot(SLayerSurface** pLayer) {
if (it == m_mLayerFramebuffers.end() || !it->second.m_cTex.m_iTexID)
return;
- const auto PMONITOR = g_pCompositor->getMonitorFromID(PLAYER->monitorID);
+ const auto PMONITOR = g_pCompositor->getMonitorFromID(PLAYER->monitorID);
- wlr_box monbox = {0, 0, PMONITOR->vecTransformedSize.x, PMONITOR->vecTransformedSize.y};
+ wlr_box monbox = {0, 0, PMONITOR->vecTransformedSize.x, PMONITOR->vecTransformedSize.y};
pixman_region32_t fakeDamage;
pixman_region32_init_rect(&fakeDamage, 0, 0, PMONITOR->vecTransformedSize.x, PMONITOR->vecTransformedSize.y);
@@ -1279,7 +1279,7 @@ void CHyprOpenGLImpl::renderSnapshot(SLayerSurface** pLayer) {
pixman_region32_fini(&fakeDamage);
- static auto *const PDAMAGEMON = &g_pConfigManager->getConfigValuePtr("misc:damage_entire_on_snapshot")->intValue;
+ static auto* const PDAMAGEMON = &g_pConfigManager->getConfigValuePtr("misc:damage_entire_on_snapshot")->intValue;
if (*PDAMAGEMON)
PMONITOR->forceFullFrames += 1;
@@ -1291,16 +1291,17 @@ void CHyprOpenGLImpl::renderRoundedShadow(wlr_box* box, int round, int range, fl
RASSERT(m_pCurrentWindow, "Tried to render shadow without a window!");
if (!pixman_region32_not_empty(m_RenderData.pDamage))
- return;
+ return;
- static auto *const PSHADOWPOWER = &g_pConfigManager->getConfigValuePtr("decoration:shadow_render_power")->intValue;
+ static auto* const PSHADOWPOWER = &g_pConfigManager->getConfigValuePtr("decoration:shadow_render_power")->intValue;
- const auto SHADOWPOWER = std::clamp((int)*PSHADOWPOWER, 1, 4);
+ const auto SHADOWPOWER = std::clamp((int)*PSHADOWPOWER, 1, 4);
- const auto col = m_pCurrentWindow->m_cRealShadowColor.col();
+ const auto col = m_pCurrentWindow->m_cRealShadowColor.col();
- float matrix[9];
- wlr_matrix_project_box(matrix, box, wlr_output_transform_invert(!m_bEndFrame ? WL_OUTPUT_TRANSFORM_NORMAL : m_RenderData.pMonitor->transform), 0, m_RenderData.pMonitor->output->transform_matrix); // TODO: write own, don't use WLR here
+ float matrix[9];
+ wlr_matrix_project_box(matrix, box, wlr_output_transform_invert(!m_bEndFrame ? WL_OUTPUT_TRANSFORM_NORMAL : m_RenderData.pMonitor->transform), 0,
+ m_RenderData.pMonitor->output->transform_matrix); // TODO: write own, don't use WLR here
float glMatrix[9];
wlr_matrix_multiply(glMatrix, m_RenderData.projection, matrix);
@@ -1318,9 +1319,9 @@ void CHyprOpenGLImpl::renderRoundedShadow(wlr_box* box, int round, int range, fl
#endif
glUniform4f(m_RenderData.pCurrentMonData->m_shSHADOW.color, col.r / 255.f, col.g / 255.f, col.b / 255.f, col.a / 255.f * a);
- const auto TOPLEFT = Vector2D(range + round, range + round);
+ const auto TOPLEFT = Vector2D(range + round, range + round);
const auto BOTTOMRIGHT = Vector2D(box->width - (range + round), box->height - (range + round));
- const auto FULLSIZE = Vector2D(box->width, box->height);
+ const auto FULLSIZE = Vector2D(box->width, box->height);
// Rounded corners
glUniform2f(m_RenderData.pCurrentMonData->m_shSHADOW.topLeft, (float)TOPLEFT.x, (float)TOPLEFT.y);
@@ -1349,13 +1350,13 @@ void CHyprOpenGLImpl::renderRoundedShadow(wlr_box* box, int round, int range, fl
}
}
- pixman_region32_fini(&damageClip);
+ pixman_region32_fini(&damageClip);
} else {
- PIXMAN_DAMAGE_FOREACH(m_RenderData.pDamage) {
- const auto RECT = RECTSARR[i];
- scissor(&RECT);
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
- }
+ PIXMAN_DAMAGE_FOREACH(m_RenderData.pDamage) {
+ const auto RECT = RECTSARR[i];
+ scissor(&RECT);
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+ }
}
glDisableVertexAttribArray(m_RenderData.pCurrentMonData->m_shSHADOW.posAttrib);
@@ -1375,7 +1376,7 @@ void CHyprOpenGLImpl::saveBufferForMirror() {
}
void CHyprOpenGLImpl::renderMirrored() {
- wlr_box monbox = {0, 0, m_RenderData.pMonitor->vecPixelSize.x, m_RenderData.pMonitor->vecPixelSize.y};
+ wlr_box monbox = {0, 0, m_RenderData.pMonitor->vecPixelSize.x, m_RenderData.pMonitor->vecPixelSize.y};
const auto PFB = &m_mMonitorRenderResources[m_RenderData.pMonitor->pMirrorOf].monitorMirrorFB;
@@ -1385,7 +1386,7 @@ void CHyprOpenGLImpl::renderMirrored() {
renderTexture(PFB->m_cTex, &monbox, 255.f, 0, false, false);
}
-void CHyprOpenGLImpl::renderSplash(cairo_t *const CAIRO, cairo_surface_t *const CAIROSURFACE, double offsetY) {
+void CHyprOpenGLImpl::renderSplash(cairo_t* const CAIRO, cairo_surface_t* const CAIROSURFACE, double offsetY) {
cairo_select_font_face(CAIRO, "Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
const auto FONTSIZE = (int)(m_RenderData.pMonitor->vecPixelSize.y / 76);
@@ -1406,7 +1407,7 @@ void CHyprOpenGLImpl::renderSplash(cairo_t *const CAIRO, cairo_surface_t *const
void CHyprOpenGLImpl::createBGTextureForMonitor(CMonitor* pMonitor) {
RASSERT(m_RenderData.pMonitor, "Tried to createBGTex without begin()!");
- static auto *const PNOSPLASH = &g_pConfigManager->getConfigValuePtr("misc:disable_splash_rendering")->intValue;
+ static auto* const PNOSPLASH = &g_pConfigManager->getConfigValuePtr("misc:disable_splash_rendering")->intValue;
// release the last tex if exists
const auto PTEX = &m_mMonitorBGTextures[pMonitor];
@@ -1425,7 +1426,7 @@ void CHyprOpenGLImpl::createBGTextureForMonitor(CMonitor* pMonitor) {
// get the adequate tex
std::string texPath = "/usr/share/hyprland/wall_";
- Vector2D textureSize;
+ Vector2D textureSize;
if (pMonitor->vecTransformedSize.x > 3850) {
textureSize = Vector2D(7680, 4320);
texPath += "8K.png";
@@ -1441,10 +1442,10 @@ void CHyprOpenGLImpl::createBGTextureForMonitor(CMonitor* pMonitor) {
// calc the target box
const double MONRATIO = m_RenderData.pMonitor->vecTransformedSize.x / m_RenderData.pMonitor->vecTransformedSize.y;
- const double WPRATIO = 1.77;
+ const double WPRATIO = 1.77;
- Vector2D origin;
- double scale;
+ Vector2D origin;
+ double scale;
if (MONRATIO > WPRATIO) {
scale = m_RenderData.pMonitor->vecTransformedSize.x / PTEX->m_vSize.x;
@@ -1462,7 +1463,7 @@ void CHyprOpenGLImpl::createBGTextureForMonitor(CMonitor* pMonitor) {
// create a new one with cairo
const auto CAIROSURFACE = cairo_image_surface_create_from_png(texPath.c_str());
- const auto CAIRO = cairo_create(CAIROSURFACE);
+ const auto CAIRO = cairo_create(CAIROSURFACE);
// scale it to fit the current monitor
cairo_scale(CAIRO, textureSize.x / pMonitor->vecTransformedSize.x, textureSize.y / pMonitor->vecTransformedSize.y);
@@ -1476,10 +1477,10 @@ void CHyprOpenGLImpl::createBGTextureForMonitor(CMonitor* pMonitor) {
glBindTexture(GL_TEXTURE_2D, PTEX->m_iTexID);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- #ifndef GLES2
+#ifndef GLES2
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_BLUE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_RED);
- #endif
+#endif
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, textureSize.x, textureSize.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, DATA);
cairo_surface_destroy(CAIROSURFACE);
@@ -1491,7 +1492,7 @@ void CHyprOpenGLImpl::createBGTextureForMonitor(CMonitor* pMonitor) {
void CHyprOpenGLImpl::clearWithTex() {
RASSERT(m_RenderData.pMonitor, "Tried to render BGtex without begin()!");
- static auto *const PRENDERTEX = &g_pConfigManager->getConfigValuePtr("misc:disable_hyprland_logo")->intValue;
+ static auto* const PRENDERTEX = &g_pConfigManager->getConfigValuePtr("misc:disable_hyprland_logo")->intValue;
if (!*PRENDERTEX) {
auto TEXIT = m_mMonitorBGTextures.find(m_RenderData.pMonitor);
diff --git a/src/render/OpenGL.hpp b/src/render/OpenGL.hpp
index 1d7e2128..d550ca0a 100644
--- a/src/render/OpenGL.hpp
+++ b/src/render/OpenGL.hpp
@@ -15,17 +15,12 @@
class CHyprRenderer;
inline const float fullVerts[] = {
- 1, 0, // top right
- 0, 0, // top left
- 1, 1, // bottom right
- 0, 1, // bottom left
-};
-inline const float fanVertsFull[] = {
- -1.0f, -1.0f,
- 1.0f, -1.0f,
- 1.0f, 1.0f,
- -1.0f, 1.0f
+ 1, 0, // top right
+ 0, 0, // top left
+ 1, 1, // bottom right
+ 0, 1, // bottom left
};
+inline const float fanVertsFull[] = {-1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f};
struct SMonitorRenderData {
CFramebuffer primaryFB;
@@ -42,118 +37,118 @@ struct SMonitorRenderData {
wlr_box backgroundTexBox;
// Shaders
- bool m_bShadersInitialized = false;
- CShader m_shQUAD;
- CShader m_shRGBA;
- CShader m_shRGBX;
- CShader m_shEXT;
- CShader m_shBLUR1;
- CShader m_shBLUR2;
- CShader m_shSHADOW;
- CShader m_shBORDER1;
+ bool m_bShadersInitialized = false;
+ CShader m_shQUAD;
+ CShader m_shRGBA;
+ CShader m_shRGBX;
+ CShader m_shEXT;
+ CShader m_shBLUR1;
+ CShader m_shBLUR2;
+ CShader m_shSHADOW;
+ CShader m_shBORDER1;
//
};
struct SCurrentRenderData {
- CMonitor* pMonitor = nullptr;
- float projection[9];
+ CMonitor* pMonitor = nullptr;
+ float projection[9];
SMonitorRenderData* pCurrentMonData = nullptr;
- pixman_region32_t* pDamage = nullptr;
+ pixman_region32_t* pDamage = nullptr;
- Vector2D primarySurfaceUVTopLeft = Vector2D(-1, -1);
- Vector2D primarySurfaceUVBottomRight = Vector2D(-1, -1);
+ Vector2D primarySurfaceUVTopLeft = Vector2D(-1, -1);
+ Vector2D primarySurfaceUVBottomRight = Vector2D(-1, -1);
- wlr_box clipBox = {};
+ wlr_box clipBox = {};
};
class CGradientValueData;
class CHyprOpenGLImpl {
-public:
-
+ public:
CHyprOpenGLImpl();
- void begin(CMonitor*, pixman_region32_t*, bool fake = false);
- void end();
+ void begin(CMonitor*, pixman_region32_t*, bool fake = false);
+ void end();
- void renderRect(wlr_box*, const CColor&, int round = 0);
- void renderRectWithDamage(wlr_box*, const CColor&, pixman_region32_t* damage, int round = 0);
- void renderTexture(wlr_texture*, wlr_box*, float a, int round = 0, bool allowCustomUV = false);
- void renderTexture(const CTexture&, wlr_box*, float a, int round = 0, bool discardOpaque = false, bool allowCustomUV = false);
- void renderTextureWithBlur(const CTexture&, wlr_box*, float a, wlr_surface* pSurface, int round = 0, bool blockBlurOptimization = false);
- void renderRoundedShadow(wlr_box*, int round, int range, float a = 1.0);
- void renderBorder(wlr_box*, const CGradientValueData&, int round, float a = 1.0);
+ void renderRect(wlr_box*, const CColor&, int round = 0);
+ void renderRectWithDamage(wlr_box*, const CColor&, pixman_region32_t* damage, int round = 0);
+ void renderTexture(wlr_texture*, wlr_box*, float a, int round = 0, bool allowCustomUV = false);
+ void renderTexture(const CTexture&, wlr_box*, float a, int round = 0, bool discardOpaque = false, bool allowCustomUV = false);
+ void renderTextureWithBlur(const CTexture&, wlr_box*, float a, wlr_surface* pSurface, int round = 0, bool blockBlurOptimization = false);
+ void renderRoundedShadow(wlr_box*, int round, int range, float a = 1.0);
+ void renderBorder(wlr_box*, const CGradientValueData&, int round, float a = 1.0);
- void makeWindowSnapshot(CWindow*);
- void makeRawWindowSnapshot(CWindow*, CFramebuffer*);
- void makeLayerSnapshot(SLayerSurface*);
- void renderSnapshot(CWindow**);
- void renderSnapshot(SLayerSurface**);
+ void makeWindowSnapshot(CWindow*);
+ void makeRawWindowSnapshot(CWindow*, CFramebuffer*);
+ void makeLayerSnapshot(SLayerSurface*);
+ void renderSnapshot(CWindow**);
+ void renderSnapshot(SLayerSurface**);
- void clear(const CColor&);
- void clearWithTex();
- void scissor(const wlr_box*, bool transform = true);
- void scissor(const pixman_box32*, bool transform = true);
- void scissor(const int x, const int y, const int w, const int h, bool transform = true);
+ void clear(const CColor&);
+ void clearWithTex();
+ void scissor(const wlr_box*, bool transform = true);
+ void scissor(const pixman_box32*, bool transform = true);
+ void scissor(const int x, const int y, const int w, const int h, bool transform = true);
- void destroyMonitorResources(CMonitor*);
+ void destroyMonitorResources(CMonitor*);
- void markBlurDirtyForMonitor(CMonitor*);
+ void markBlurDirtyForMonitor(CMonitor*);
- void preWindowPass();
- void preRender(CMonitor*);
+ void preWindowPass();
+ void preRender(CMonitor*);
- void saveBufferForMirror();
- void renderMirrored();
+ void saveBufferForMirror();
+ void renderMirrored();
- void onWindowResizeStart(CWindow*);
- void onWindowResizeEnd(CWindow*);
+ void onWindowResizeStart(CWindow*);
+ void onWindowResizeEnd(CWindow*);
- void applyScreenShader(const std::string& path);
+ void applyScreenShader(const std::string& path);
- SCurrentRenderData m_RenderData;
+ SCurrentRenderData m_RenderData;
- GLint m_iCurrentOutputFb = 0;
- GLint m_iWLROutputFb = 0;
+ GLint m_iCurrentOutputFb = 0;
+ GLint m_iWLROutputFb = 0;
- bool m_bReloadScreenShader = true; // at launch it can be set
+ bool m_bReloadScreenShader = true; // at launch it can be set
- CWindow* m_pCurrentWindow = nullptr; // hack to get the current rendered window
+ CWindow* m_pCurrentWindow = nullptr; // hack to get the current rendered window
- pixman_region32_t m_rOriginalDamageRegion; // used for storing the pre-expanded region
+ pixman_region32_t m_rOriginalDamageRegion; // used for storing the pre-expanded region
std::unordered_map<CWindow*, CFramebuffer> m_mWindowFramebuffers;
- std::unordered_map<SLayerSurface*, CFramebuffer> m_mLayerFramebuffers;
+ std::unordered_map<SLayerSurface*, CFramebuffer> m_mLayerFramebuffers;
std::unordered_map<CMonitor*, SMonitorRenderData> m_mMonitorRenderResources;
- std::unordered_map<CMonitor*, CTexture> m_mMonitorBGTextures;
+ std::unordered_map<CMonitor*, CTexture> m_mMonitorBGTextures;
-private:
- std::list<GLuint> m_lBuffers;
- std::list<GLuint> m_lTextures;
+ private:
+ std::list<GLuint> m_lBuffers;
+ std::list<GLuint> m_lTextures;
- int m_iDRMFD;
- std::string m_szExtensions;
+ int m_iDRMFD;
+ std::string m_szExtensions;
- bool m_bFakeFrame = false;
- bool m_bEndFrame = false;
- bool m_bApplyFinalShader = false;
+ bool m_bFakeFrame = false;
+ bool m_bEndFrame = false;
+ bool m_bApplyFinalShader = false;
- CShader m_sFinalScreenShader;
+ CShader m_sFinalScreenShader;
- GLuint createProgram(const std::string&, const std::string&, bool dynamic = false);
- GLuint compileShader(const GLuint&, std::string, bool dynamic = false);
- void createBGTextureForMonitor(CMonitor*);
- void initShaders();
+ GLuint createProgram(const std::string&, const std::string&, bool dynamic = false);
+ GLuint compileShader(const GLuint&, std::string, bool dynamic = false);
+ void createBGTextureForMonitor(CMonitor*);
+ void initShaders();
// returns the out FB, can be either Mirror or MirrorSwap
- CFramebuffer* blurMainFramebufferWithDamage(float a, wlr_box* pBox, pixman_region32_t* damage);
+ CFramebuffer* blurMainFramebufferWithDamage(float a, wlr_box* pBox, pixman_region32_t* damage);
- void renderTextureInternalWithDamage(const CTexture&, wlr_box* pBox, float a, pixman_region32_t* damage, int round = 0, bool discardOpaque = false, bool noAA = false, bool allowCustomUV = false, bool allowDim = false);
- void renderSplash(cairo_t *const, cairo_surface_t *const, double);
+ void renderTextureInternalWithDamage(const CTexture&, wlr_box* pBox, float a, pixman_region32_t* damage, int round = 0, bool discardOpaque = false, bool noAA = false,
+ bool allowCustomUV = false, bool allowDim = false);
+ void renderSplash(cairo_t* const, cairo_surface_t* const, double);
- void preBlurForCurrentMonitor();
+ void preBlurForCurrentMonitor();
friend class CHyprRenderer;
};
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 90dfaa71..1196f77e 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -4,7 +4,7 @@
void renderSurface(struct wlr_surface* surface, int x, int y, void* data) {
const auto TEXTURE = wlr_surface_get_texture(surface);
- const auto RDATA = (SRenderData*)data;
+ const auto RDATA = (SRenderData*)data;
if (!TEXTURE)
return;
@@ -15,7 +15,7 @@ void renderSurface(struct wlr_surface* surface, int x, int y, void* data) {
wlr_box windowBox;
if (RDATA->surface && surface == RDATA->surface)
windowBox = {(int)outputX + RDATA->x + x, (int)outputY + RDATA->y + y, RDATA->w, RDATA->h};
- else // here we clamp to 2, these might be some tiny specks
+ else // here we clamp to 2, these might be some tiny specks
windowBox = {(int)outputX + RDATA->x + x, (int)outputY + RDATA->y + y, std::max(surface->current.width, 2), std::max(surface->current.height, 2)};
if (RDATA->squishOversized) {
@@ -30,9 +30,9 @@ void renderSurface(struct wlr_surface* surface, int x, int y, void* data) {
scaleBox(&windowBox, RDATA->output->scale);
- static auto *const PROUNDING = &g_pConfigManager->getConfigValuePtr("decoration:rounding")->intValue;
+ static auto* const PROUNDING = &g_pConfigManager->getConfigValuePtr("decoration:rounding")->intValue;
- float rounding = RDATA->dontRound ? 0 : RDATA->rounding == -1 ? *PROUNDING : RDATA->rounding;
+ float rounding = RDATA->dontRound ? 0 : RDATA->rounding == -1 ? *PROUNDING : RDATA->rounding;
rounding *= RDATA->output->scale;
rounding -= 1; // to fix a border issue
@@ -46,8 +46,7 @@ void renderSurface(struct wlr_surface* surface, int x, int y, void* data) {
else
g_pHyprOpenGL->renderTexture(TEXTURE, &windowBox, RDATA->fadeAlpha * RDATA->alpha, rounding, true);
}
- }
- else {
+ } else {
g_pHyprOpenGL->renderTexture(TEXTURE, &windowBox, RDATA->fadeAlpha * RDATA->alpha, rounding, true);
}
@@ -57,7 +56,7 @@ void renderSurface(struct wlr_surface* surface, int x, int y, void* data) {
}
// reset the UV, we might've set it above
- g_pHyprOpenGL->m_RenderData.primarySurfaceUVTopLeft = Vector2D(-1, -1);
+ g_pHyprOpenGL->m_RenderData.primarySurfaceUVTopLeft = Vector2D(-1, -1);
g_pHyprOpenGL->m_RenderData.primarySurfaceUVBottomRight = Vector2D(-1, -1);
}
@@ -153,7 +152,7 @@ void CHyprRenderer::renderWorkspaceWithFullscreenWindow(CMonitor* pMonitor, CWor
for (auto& w : g_pCompositor->m_vWindows) {
const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID);
- if (w->m_iWorkspaceID != pWorkspace->m_iID || !w->m_bIsFullscreen){
+ if (w->m_iWorkspaceID != pWorkspace->m_iID || !w->m_bIsFullscreen) {
if (!(PWORKSPACE && (PWORKSPACE->m_vRenderOffset.isBeingAnimated() || PWORKSPACE->m_fAlpha.isBeingAnimated() || PWORKSPACE->m_bForceRendering)))
continue;
@@ -184,19 +183,20 @@ void CHyprRenderer::renderWorkspaceWithFullscreenWindow(CMonitor* pMonitor, CWor
}
// and then special windows
- if (pMonitor->specialWorkspaceID) for (auto& w : g_pCompositor->m_vWindows) {
- if (!g_pCompositor->windowValidMapped(w.get()) && !w->m_bFadingOut)
- continue;
+ if (pMonitor->specialWorkspaceID)
+ for (auto& w : g_pCompositor->m_vWindows) {
+ if (!g_pCompositor->windowValidMapped(w.get()) && !w->m_bFadingOut)
+ continue;
- if (w->m_iWorkspaceID != pMonitor->specialWorkspaceID)
- continue;
+ if (w->m_iWorkspaceID != pMonitor->specialWorkspaceID)
+ continue;
- if (!shouldRenderWindow(w.get(), pMonitor))
- continue;
+ if (!shouldRenderWindow(w.get(), pMonitor))
+ continue;
- // render the bad boy
- renderWindow(w.get(), pMonitor, time, true, RENDER_PASS_ALL);
- }
+ // render the bad boy
+ renderWindow(w.get(), pMonitor, time, true, RENDER_PASS_ALL);
+ }
// and the overlay layers
for (auto& ls : pMonitor->m_aLayerSurfaceLists[ZWLR_LAYER_SHELL_V1_LAYER_TOP]) {
@@ -204,7 +204,6 @@ void CHyprRenderer::renderWorkspaceWithFullscreenWindow(CMonitor* pMonitor, CWor
renderLayer(ls.get(), pMonitor, time);
}
-
for (auto& ls : pMonitor->m_aLayerSurfaceLists[ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY]) {
renderLayer(ls.get(), pMonitor, time);
}
@@ -226,11 +225,11 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, CMonitor* pMonitor, timespec*
return;
}
- const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(pWindow->m_iWorkspaceID);
- const auto REALPOS = pWindow->m_vRealPosition.vec() + (pWindow->m_bPinned ? Vector2D{} : PWORKSPACE->m_vRenderOffset.vec());
- static auto *const PNOFLOATINGBORDERS = &g_pConfigManager->getConfigValuePtr("general:no_border_on_floating")->intValue;
+ const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(pWindow->m_iWorkspaceID);
+ const auto REALPOS = pWindow->m_vRealPosition.vec() + (pWindow->m_bPinned ? Vector2D{} : PWORKSPACE->m_vRenderOffset.vec());
+ static auto* const PNOFLOATINGBORDERS = &g_pConfigManager->getConfigValuePtr("general:no_border_on_floating")->intValue;
- SRenderData renderdata = {pMonitor->output, time, REALPOS.x, REALPOS.y};
+ SRenderData renderdata = {pMonitor->output, time, REALPOS.x, REALPOS.y};
if (ignorePosition) {
renderdata.x = pMonitor->vecPosition.x;
renderdata.y = pMonitor->vecPosition.y;
@@ -239,19 +238,20 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, CMonitor* pMonitor, timespec*
if (ignoreAllGeometry)
decorate = false;
- renderdata.surface = g_pXWaylandManager->getWindowSurface(pWindow);
- renderdata.w = std::max(pWindow->m_vRealSize.vec().x, 5.0); // clamp the size to min 5,
- renderdata.h = std::max(pWindow->m_vRealSize.vec().y, 5.0); // otherwise we'll have issues later with invalid boxes
+ renderdata.surface = g_pXWaylandManager->getWindowSurface(pWindow);
+ renderdata.w = std::max(pWindow->m_vRealSize.vec().x, 5.0); // clamp the size to min 5,
+ renderdata.h = std::max(pWindow->m_vRealSize.vec().y, 5.0); // otherwise we'll have issues later with invalid boxes
renderdata.dontRound = (pWindow->m_bIsFullscreen && PWORKSPACE->m_efFullscreenMode == FULLSCREEN_FULL) || (!pWindow->m_sSpecialRenderData.rounding);
renderdata.fadeAlpha = pWindow->m_fAlpha.fl() * (pWindow->m_bPinned ? 1.f : (PWORKSPACE->m_fAlpha.fl() / 255.f));
- renderdata.alpha = pWindow->m_fActiveInactiveAlpha.fl();
- renderdata.decorate = decorate && !pWindow->m_bX11DoesntWantBorders && (pWindow->m_bIsFloating ? *PNOFLOATINGBORDERS == 0 : true) && (!pWindow->m_bIsFullscreen || PWORKSPACE->m_efFullscreenMode != FULLSCREEN_FULL);
+ renderdata.alpha = pWindow->m_fActiveInactiveAlpha.fl();
+ renderdata.decorate = decorate && !pWindow->m_bX11DoesntWantBorders && (pWindow->m_bIsFloating ? *PNOFLOATINGBORDERS == 0 : true) &&
+ (!pWindow->m_bIsFullscreen || PWORKSPACE->m_efFullscreenMode != FULLSCREEN_FULL);
renderdata.rounding = ignoreAllGeometry ? 0 : pWindow->m_sAdditionalConfigData.rounding;
- renderdata.blur = !ignoreAllGeometry; // if it shouldn't, it will be ignored later
- renderdata.pWindow = pWindow;
+ renderdata.blur = !ignoreAllGeometry; // if it shouldn't, it will be ignored later
+ renderdata.pWindow = pWindow;
if (ignoreAllGeometry) {
- renderdata.alpha = 1.f;
+ renderdata.alpha = 1.f;
renderdata.fadeAlpha = 255.f;
}
@@ -265,9 +265,9 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, CMonitor* pMonitor, timespec*
Vector2D offset;
if (!ignorePosition && pWindow->m_bIsFloating && !pWindow->m_bPinned) {
if (PWORKSPACE->m_vRenderOffset.vec().x != 0) {
- const auto PWSMON = g_pCompositor->getMonitorFromID(PWORKSPACE->m_iMonitorID);
+ const auto PWSMON = g_pCompositor->getMonitorFromID(PWORKSPACE->m_iMonitorID);
const auto PROGRESS = PWORKSPACE->m_vRenderOffset.vec().x / PWSMON->vecSize.x;
- const auto WINBB = pWindow->getFullWindowBoundingBox();
+ const auto WINBB = pWindow->getFullWindowBoundingBox();
if (WINBB.x < PWSMON->vecPosition.x) {
offset.x = (PWSMON->vecPosition.x - WINBB.x) * PROGRESS;
@@ -275,9 +275,9 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, CMonitor* pMonitor, timespec*
offset.x = (WINBB.x + WINBB.width - PWSMON->vecPosition.x - PWSMON->vecSize.x) * PROGRESS;
}
} else if (PWORKSPACE->m_vRenderOffset.vec().y) {
- const auto PWSMON = g_pCompositor->getMonitorFromID(PWORKSPACE->m_iMonitorID);
+ const auto PWSMON = g_pCompositor->getMonitorFromID(PWORKSPACE->m_iMonitorID);
const auto PROGRESS = PWORKSPACE->m_vRenderOffset.vec().y / PWSMON->vecSize.y;
- const auto WINBB = pWindow->getFullWindowBoundingBox();
+ const auto WINBB = pWindow->getFullWindowBoundingBox();
if (WINBB.y < PWSMON->vecPosition.y) {
offset.y = (PWSMON->vecPosition.y - WINBB.y) * PROGRESS;
@@ -289,25 +289,26 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, CMonitor* pMonitor, timespec*
renderdata.x += offset.x;
renderdata.y += offset.y;
}
-
+
// render window decorations first, if not fullscreen full
if (mode == RENDER_PASS_ALL || mode == RENDER_PASS_MAIN) {
- if (!pWindow->m_bIsFullscreen || PWORKSPACE->m_efFullscreenMode != FULLSCREEN_FULL) for (auto& wd : pWindow->m_dWindowDecorations)
+ if (!pWindow->m_bIsFullscreen || PWORKSPACE->m_efFullscreenMode != FULLSCREEN_FULL)
+ for (auto& wd : pWindow->m_dWindowDecorations)
wd->draw(pMonitor, renderdata.alpha * renderdata.fadeAlpha / 255.f, offset);
wlr_surface_for_each_surface(g_pXWaylandManager->getWindowSurface(pWindow), renderSurface, &renderdata);
if (renderdata.decorate && pWindow->m_sSpecialRenderData.border) {
- static auto *const PROUNDING = &g_pConfigManager->getConfigValuePtr("decoration:rounding")->intValue;
+ static auto* const PROUNDING = &g_pConfigManager->getConfigValuePtr("decoration:rounding")->intValue;
- float rounding = renderdata.dontRound ? 0 : renderdata.rounding == -1 ? *PROUNDING : renderdata.rounding;
+ float rounding = renderdata.dontRound ? 0 : renderdata.rounding == -1 ? *PROUNDING : renderdata.rounding;
rounding *= pMonitor->scale;
- auto grad = g_pHyprOpenGL->m_pCurrentWindow->m_cRealBorderColor;
+ auto grad = g_pHyprOpenGL->m_pCurrentWindow->m_cRealBorderColor;
const bool ANIMATED = g_pHyprOpenGL->m_pCurrentWindow->m_fBorderAnimationProgress.isBeingAnimated();
- float a1 = renderdata.fadeAlpha * renderdata.alpha / 255.f * (ANIMATED ? g_pHyprOpenGL->m_pCurrentWindow->m_fBorderAnimationProgress.fl() : 1.f);
+ float a1 = renderdata.fadeAlpha * renderdata.alpha / 255.f * (ANIMATED ? g_pHyprOpenGL->m_pCurrentWindow->m_fBorderAnimationProgress.fl() : 1.f);
- wlr_box windowBox = {renderdata.x - pMonitor->vecPosition.x, renderdata.y - pMonitor->vecPosition.y, renderdata.w, renderdata.h};
+ wlr_box windowBox = {renderdata.x - pMonitor->vecPosition.x, renderdata.y - pMonitor->vecPosition.y, renderdata.w, renderdata.h};
scaleBox(&windowBox, pMonitor->scale);
@@ -328,15 +329,15 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, CMonitor* pMonitor, timespec*
renderdata.x -= geom.x;
renderdata.y -= geom.y;
- renderdata.dontRound = true; // don't round popups
- renderdata.pMonitor = pMonitor;
+ renderdata.dontRound = true; // don't round popups
+ renderdata.pMonitor = pMonitor;
renderdata.squishOversized = false; // don't squish popups
wlr_xdg_surface_for_each_popup_surface(pWindow->m_uSurface.xdg, renderSurface, &renderdata);
}
}
- g_pHyprOpenGL->m_pCurrentWindow = nullptr;
- g_pHyprOpenGL->m_RenderData.clipBox = { 0, 0, 0, 0 };
+ g_pHyprOpenGL->m_pCurrentWindow = nullptr;
+ g_pHyprOpenGL->m_RenderData.clipBox = {0, 0, 0, 0};
}
void CHyprRenderer::renderLayer(SLayerSurface* pLayer, CMonitor* pMonitor, timespec* time) {
@@ -345,29 +346,29 @@ void CHyprRenderer::renderLayer(SLayerSurface* pLayer, CMonitor* pMonitor, times
return;
}
- SRenderData renderdata = {pMonitor->output, time, pLayer->geometry.x, pLayer->geometry.y};
- renderdata.fadeAlpha = pLayer->alpha.fl();
- renderdata.blur = pLayer->forceBlur;
- renderdata.surface = pLayer->layerSurface->surface;
- renderdata.decorate = false;
- renderdata.w = pLayer->layerSurface->surface->current.width;
- renderdata.h = pLayer->layerSurface->surface->current.height;
+ SRenderData renderdata = {pMonitor->output, time, pLayer->geometry.x, pLayer->geometry.y};
+ renderdata.fadeAlpha = pLayer->alpha.fl();
+ renderdata.blur = pLayer->forceBlur;
+ renderdata.surface = pLayer->layerSurface->surface;
+ renderdata.decorate = false;
+ renderdata.w = pLayer->layerSurface->surface->current.width;
+ renderdata.h = pLayer->layerSurface->surface->current.height;
renderdata.blockBlurOptimization = pLayer->layer == ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM || pLayer->layer == ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND;
wlr_surface_for_each_surface(pLayer->layerSurface->surface, renderSurface, &renderdata);
- renderdata.squishOversized = false; // don't squish popups
- renderdata.dontRound = true;
+ renderdata.squishOversized = false; // don't squish popups
+ renderdata.dontRound = true;
wlr_layer_surface_v1_for_each_popup_surface(pLayer->layerSurface, renderSurface, &renderdata);
}
void CHyprRenderer::renderIMEPopup(SIMEPopup* pPopup, CMonitor* pMonitor, timespec* time) {
SRenderData renderdata = {pMonitor->output, time, pPopup->realX, pPopup->realY};
- renderdata.blur = false;
- renderdata.surface = pPopup->pSurface->surface;
+ renderdata.blur = false;
+ renderdata.surface = pPopup->pSurface->surface;
renderdata.decorate = false;
- renderdata.w = pPopup->pSurface->surface->current.width;
- renderdata.h = pPopup->pSurface->surface->current.height;
+ renderdata.w = pPopup->pSurface->surface->current.width;
+ renderdata.h = pPopup->pSurface->surface->current.height;
wlr_surface_for_each_surface(pPopup->pSurface->surface, renderSurface, &renderdata);
}
@@ -406,14 +407,14 @@ void CHyprRenderer::renderAllClientsForMonitor(const int& ID, timespec* time) {
continue;
if (w->m_bIsFloating)
- continue; // floating are in the second pass
+ continue; // floating are in the second pass
if (g_pCompositor->isWorkspaceSpecial(w->m_iWorkspaceID))
- continue; // special are in the third pass
+ continue; // special are in the third pass
if (!shouldRenderWindow(w.get(), PMONITOR))
continue;
-
+
// render active window after all others of this pass
if (w.get() == g_pCompositor->m_pLastWindow) {
lastWindow = w.get();
@@ -433,7 +434,7 @@ void CHyprRenderer::renderAllClientsForMonitor(const int& ID, timespec* time) {
continue;
if (w->m_bIsFloating)
- continue; // floating are in the second pass
+ continue; // floating are in the second pass
if (g_pCompositor->isWorkspaceSpecial(w->m_iWorkspaceID))
continue; // special are in the third pass
@@ -500,7 +501,7 @@ void CHyprRenderer::calculateUVForWindowSurface(CWindow* pWindow, wlr_surface* p
Vector2D uvTL;
Vector2D uvBR = Vector2D(1, 1);
- wlr_box geom;
+ wlr_box geom;
wlr_xdg_surface_get_geometry(pWindow->m_uSurface.xdg, &geom);
const auto SUBSURFACE = g_pXWaylandManager->getWindowSurface(pWindow) != pSurface && main;
@@ -517,27 +518,34 @@ void CHyprRenderer::calculateUVForWindowSurface(CWindow* pWindow, wlr_surface* p
if (uvBR.x < 0.01f || uvBR.y < 0.01f) {
uvTL = Vector2D();
- uvBR = Vector2D(1,1);
+ uvBR = Vector2D(1, 1);
}
// TODO: (example: chromium) this still has a tiny "bump" at the end.
if (main) {
- uvTL = uvTL + (Vector2D((double)geom.x / ((double)pWindow->m_uSurface.xdg->surface->current.width), (double)geom.y / ((double)pWindow->m_uSurface.xdg->surface->current.height)) * (((uvBR.x - uvTL.x) * surfaceSize.x) / surfaceSize.x));
- uvBR = uvBR * Vector2D((double)(geom.width + geom.x) / ((double)pWindow->m_uSurface.xdg->surface->current.width), (double)(geom.y + geom.height) / ((double)pWindow->m_uSurface.xdg->surface->current.height));
+ uvTL = uvTL +
+ (Vector2D((double)geom.x / ((double)pWindow->m_uSurface.xdg->surface->current.width),
+ (double)geom.y / ((double)pWindow->m_uSurface.xdg->surface->current.height)) *
+ (((uvBR.x - uvTL.x) * surfaceSize.x) / surfaceSize.x));
+ uvBR = uvBR *
+ Vector2D((double)(geom.width + geom.x) / ((double)pWindow->m_uSurface.xdg->surface->current.width),
+ (double)(geom.y + geom.height) / ((double)pWindow->m_uSurface.xdg->surface->current.height));
}
} else if (main) {
// oversized windows' UV adjusting
- uvTL = Vector2D((double)geom.x / ((double)pWindow->m_uSurface.xdg->surface->current.width), (double)geom.y / ((double)pWindow->m_uSurface.xdg->surface->current.height));
- uvBR = Vector2D((double)(geom.width + geom.x) / ((double)pWindow->m_uSurface.xdg->surface->current.width), (double)(geom.y + geom.height) / ((double)pWindow->m_uSurface.xdg->surface->current.height));
+ uvTL =
+ Vector2D((double)geom.x / ((double)pWindow->m_uSurface.xdg->surface->current.width), (double)geom.y / ((double)pWindow->m_uSurface.xdg->surface->current.height));
+ uvBR = Vector2D((double)(geom.width + geom.x) / ((double)pWindow->m_uSurface.xdg->surface->current.width),
+ (double)(geom.y + geom.height) / ((double)pWindow->m_uSurface.xdg->surface->current.height));
}
// set UV
- g_pHyprOpenGL->m_RenderData.primarySurfaceUVTopLeft = uvTL;
+ g_pHyprOpenGL->m_RenderData.primarySurfaceUVTopLeft = uvTL;
g_pHyprOpenGL->m_RenderData.primarySurfaceUVBottomRight = uvBR;
if (g_pHyprOpenGL->m_RenderData.primarySurfaceUVTopLeft == Vector2D() && g_pHyprOpenGL->m_RenderData.primarySurfaceUVBottomRight == Vector2D(1, 1)) {
// No special UV mods needed
- g_pHyprOpenGL->m_RenderData.primarySurfaceUVTopLeft = Vector2D(-1, -1);
+ g_pHyprOpenGL->m_RenderData.primarySurfaceUVTopLeft = Vector2D(-1, -1);
g_pHyprOpenGL->m_RenderData.primarySurfaceUVBottomRight = Vector2D(-1, -1);
}
@@ -551,12 +559,14 @@ void CHyprRenderer::calculateUVForWindowSurface(CWindow* pWindow, wlr_surface* p
if (g_pHyprOpenGL->m_RenderData.primarySurfaceUVTopLeft == Vector2D(-1, -1))
g_pHyprOpenGL->m_RenderData.primarySurfaceUVTopLeft = Vector2D(0, 0);
- g_pHyprOpenGL->m_RenderData.primarySurfaceUVBottomRight = Vector2D(
- g_pHyprOpenGL->m_RenderData.primarySurfaceUVBottomRight.x * (pWindow->m_vRealSize.vec().x / ((double)geom.width / g_pHyprOpenGL->m_RenderData.primarySurfaceUVBottomRight.x)),
- g_pHyprOpenGL->m_RenderData.primarySurfaceUVBottomRight.y * (pWindow->m_vRealSize.vec().y / ((double)geom.height / g_pHyprOpenGL->m_RenderData.primarySurfaceUVBottomRight.y)));
+ g_pHyprOpenGL->m_RenderData.primarySurfaceUVBottomRight =
+ Vector2D(g_pHyprOpenGL->m_RenderData.primarySurfaceUVBottomRight.x *
+ (pWindow->m_vRealSize.vec().x / ((double)geom.width / g_pHyprOpenGL->m_RenderData.primarySurfaceUVBottomRight.x)),
+ g_pHyprOpenGL->m_RenderData.primarySurfaceUVBottomRight.y *
+ (pWindow->m_vRealSize.vec().y / ((double)geom.height / g_pHyprOpenGL->m_RenderData.primarySurfaceUVBottomRight.y)));
}
} else {
- g_pHyprOpenGL->m_RenderData.primarySurfaceUVTopLeft = Vector2D(-1, -1);
+ g_pHyprOpenGL->m_RenderData.primarySurfaceUVTopLeft = Vector2D(-1, -1);
g_pHyprOpenGL->m_RenderData.primarySurfaceUVBottomRight = Vector2D(-1, -1);
}
}
@@ -582,7 +592,8 @@ bool CHyprRenderer::attemptDirectScanout(CMonitor* pMonitor) {
if (PCANDIDATE->m_fAlpha.fl() != 255.f || PCANDIDATE->m_fActiveInactiveAlpha.fl() != 1.f || PWORKSPACE->m_fAlpha.fl() != 255.f)
return false;
- if (PCANDIDATE->m_vRealSize.vec() != pMonitor->vecSize || PCANDIDATE->m_vRealPosition.vec() != pMonitor->vecPosition || PCANDIDATE->m_vRealPosition.isBeingAnimated() || PCANDIDATE->m_vRealSize.isBeingAnimated())
+ if (PCANDIDATE->m_vRealSize.vec() != pMonitor->vecSize || PCANDIDATE->m_vRealPosition.vec() != pMonitor->vecPosition || PCANDIDATE->m_vRealPosition.isBeingAnimated() ||
+ PCANDIDATE->m_vRealSize.isBeingAnimated())
return false;
if (!pMonitor->m_aLayerSurfaceLists[ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY].empty())
@@ -653,7 +664,7 @@ void CHyprRenderer::setWindowScanoutMode(CWindow* pWindow) {
}
const auto RENDERERDRMFD = wlr_renderer_get_drm_fd(g_pCompositor->m_sWLRRenderer);
- const auto BACKENDDRMFD = wlr_backend_get_drm_fd(g_pCompositor->m_sWLRBackend);
+ const auto BACKENDDRMFD = wlr_backend_get_drm_fd(g_pCompositor->m_sWLRBackend);
if (RENDERERDRMFD < 0 || BACKENDDRMFD < 0)
return;
@@ -677,28 +688,17 @@ void CHyprRenderer::setWindowScanoutMode(CWindow* pWindow) {
if (!POUTPUTFORMATS)
return;
- const auto PRENDERERFORMATS = wlr_renderer_get_dmabuf_texture_formats(g_pCompositor->m_sWLRRenderer);
- wlr_drm_format_set scanoutFormats = { 0 };
+ const auto PRENDERERFORMATS = wlr_renderer_get_dmabuf_texture_formats(g_pCompositor->m_sWLRRenderer);
+ wlr_drm_format_set scanoutFormats = {0};
if (!wlr_drm_format_set_intersect(&scanoutFormats, POUTPUTFORMATS, PRENDERERFORMATS))
return;
const wlr_linux_dmabuf_feedback_v1_tranche TRANCHES[] = {
- {
- .target_device = scanoutDevice,
- .flags = ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_FLAGS_SCANOUT,
- .formats = &scanoutFormats
- }, {
- .target_device = rendererDevice,
- .formats = PRENDERERFORMATS
- }
- };
+ {.target_device = scanoutDevice, .flags = ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_FLAGS_SCANOUT, .formats = &scanoutFormats},
+ {.target_device = rendererDevice, .formats = PRENDERERFORMATS}};
- const wlr_linux_dmabuf_feedback_v1 FEEDBACK = {
- .main_device = rendererDevice,
- .tranches_len = sizeof(TRANCHES) / sizeof(TRANCHES[0]),
- .tranches = TRANCHES
- };
+ const wlr_linux_dmabuf_feedback_v1 FEEDBACK = {.main_device = rendererDevice, .tranches_len = sizeof(TRANCHES) / sizeof(TRANCHES[0]), .tranches = TRANCHES};
if (!wlr_linux_dmabuf_v1_set_surface_feedback(g_pCompositor->m_sWLRLinuxDMABuf, g_pXWaylandManager->getWindowSurface(pWindow), &FEEDBACK)) {
Debug::log(ERR, "Error in scanout mode setting: wlr_linux_dmabuf_v1_set_surface_feedback returned false.");
@@ -711,12 +711,12 @@ void CHyprRenderer::setWindowScanoutMode(CWindow* pWindow) {
void CHyprRenderer::outputMgrApplyTest(wlr_output_configuration_v1* config, bool test) {
wlr_output_configuration_head_v1* head;
- bool noError = true;
+ bool noError = true;
wl_list_for_each(head, &config->heads, link) {
std::string commandForCfg = "";
- const auto OUTPUT = head->state.output;
+ const auto OUTPUT = head->state.output;
commandForCfg += std::string(OUTPUT->name) + ",";
@@ -730,9 +730,11 @@ void CHyprRenderer::outputMgrApplyTest(wlr_output_configuration_v1* config, bool
wlr_output_enable(OUTPUT, head->state.enabled);
if (head->state.mode)
- commandForCfg += std::to_string(head->state.mode->width) + "x" + std::to_string(head->state.mode->height) + "@" + std::to_string(head->state.mode->refresh / 1000.f) + ",";
+ commandForCfg +=
+ std::to_string(head->state.mode->width) + "x" + std::to_string(head->state.mode->height) + "@" + std::to_string(head->state.mode->refresh / 1000.f) + ",";
else
- commandForCfg += std::to_string(head->state.custom_mode.width) + "x" + std::to_string(head->state.custom_mode.height) + "@" + std::to_string(head->state.custom_mode.refresh / 1000.f) + ",";
+ commandForCfg += std::to_string(head->state.custom_mode.width) + "x" + std::to_string(head->state.custom_mode.height) + "@" +
+ std::to_string(head->state.custom_mode.refresh / 1000.f) + ",";
commandForCfg += std::to_string(head->state.x) + "x" + std::to_string(head->state.y) + "," + std::to_string(head->state.scale);
@@ -741,7 +743,7 @@ void CHyprRenderer::outputMgrApplyTest(wlr_output_configuration_v1* config, bool
std::string transformStr = std::string(OUTPUT->name) + ",transform," + std::to_string((int)OUTPUT->transform);
- const auto PMONITOR = g_pCompositor->getMonitorFromName(OUTPUT->name);
+ const auto PMONITOR = g_pCompositor->getMonitorFromName(OUTPUT->name);
if (!PMONITOR || OUTPUT->transform != PMONITOR->transform)
g_pConfigManager->parseKeyword("monitor", transformStr);
@@ -754,7 +756,7 @@ void CHyprRenderer::outputMgrApplyTest(wlr_output_configuration_v1* config, bool
}
if (!test)
- g_pConfigManager->m_bWantsMonitorReload = true; // for monitor keywords
+ g_pConfigManager->m_bWantsMonitorReload = true; // for monitor keywords
if (noError)
wlr_output_configuration_v1_send_succeeded(config);
@@ -774,53 +776,41 @@ void apply_exclusive(struct wlr_box* usable_area, uint32_t anchor, int32_t exclu
struct {
uint32_t singular_anchor;
uint32_t anchor_triplet;
- int* positive_axis;
- int* negative_axis;
- int margin;
+ int* positive_axis;
+ int* negative_axis;
+ int margin;
} edges[] = {
// Top
{
.singular_anchor = ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP,
- .anchor_triplet =
- ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT |
- ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT |
- ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP,
- .positive_axis = &usable_area->y,
- .negative_axis = &usable_area->height,
- .margin = margin_top,
+ .anchor_triplet = ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT | ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT | ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP,
+ .positive_axis = &usable_area->y,
+ .negative_axis = &usable_area->height,
+ .margin = margin_top,
},
// Bottom
{
.singular_anchor = ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM,
- .anchor_triplet =
- ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT |
- ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT |
- ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM,
- .positive_axis = NULL,
- .negative_axis = &usable_area->height,
- .margin = margin_bottom,
+ .anchor_triplet = ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT | ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT | ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM,
+ .positive_axis = NULL,
+ .negative_axis = &usable_area->height,
+ .margin = margin_bottom,
},
// Left
{
.singular_anchor = ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT,
- .anchor_triplet =
- ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT |
- ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP |
- ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM,
- .positive_axis = &usable_area->x,
- .negative_axis = &usable_area->width,
- .margin = margin_left,
+ .anchor_triplet = ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT | ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP | ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM,
+ .positive_axis = &usable_area->x,
+ .negative_axis = &usable_area->width,
+ .margin = margin_left,
},
// Right
{
.singular_anchor = ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT,
- .anchor_triplet =
- ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT |
- ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP |
- ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM,
- .positive_axis = NULL,
- .negative_axis = &usable_area->width,
- .margin = margin_right,
+ .anchor_triplet = ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT | ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP | ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM,
+ .positive_axis = NULL,
+ .negative_axis = &usable_area->width,
+ .margin = margin_right,
},
};
for (size_t i = 0; i < sizeof(edges) / sizeof(edges[0]); ++i) {
@@ -856,9 +846,7 @@ void CHyprRenderer::arrangeLayerArray(CMonitor* pMonitor, const std::vector<std:
bounds = *usableArea;
}
- wlr_box box = {
- .width = PSTATE->desired_width,
- .height = PSTATE->desired_height};
+ wlr_box box = {.width = PSTATE->desired_width, .height = PSTATE->desired_height};
// Horizontal axis
const uint32_t both_horiz = ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT | ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT;
if (box.width == 0) {
@@ -888,8 +876,7 @@ void CHyprRenderer::arrangeLayerArray(CMonitor* pMonitor, const std::vector<std:
// Margin
if (box.width == 0) {
box.x += PSTATE->margin.left;
- box.width = bounds.width -
- (PSTATE->margin.left + PSTATE->margin.right);
+ box.width = bounds.width - (PSTATE->margin.left + PSTATE->margin.right);
} else if ((PSTATE->anchor & both_horiz) == both_horiz) {
// don't apply margins
} else if ((PSTATE->anchor & ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT)) {
@@ -899,8 +886,7 @@ void CHyprRenderer::arrangeLayerArray(CMonitor* pMonitor, const std::vector<std:
}
if (box.height == 0) {
box.y += PSTATE->margin.top;
- box.height = bounds.height -
- (PSTATE->margin.top + PSTATE->margin.bottom);
+ box.height = bounds.height - (PSTATE->margin.top + PSTATE->margin.bottom);
} else if ((PSTATE->anchor & both_vert) == both_vert) {
// don't apply margins
} else if ((PSTATE->anchor & ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP)) {
@@ -919,7 +905,8 @@ void CHyprRenderer::arrangeLayerArray(CMonitor* pMonitor, const std::vector<std:
wlr_layer_surface_v1_configure(ls->layerSurface, box.width, box.height);
- Debug::log(LOG, "LayerSurface %x arranged: x: %i y: %i w: %i h: %i with margins: t: %i l: %i r: %i b: %i", &ls, box.x, box.y, box.width, box.height, PSTATE->margin.top, PSTATE->margin.left, PSTATE->margin.right, PSTATE->margin.bottom);
+ Debug::log(LOG, "LayerSurface %x arranged: x: %i y: %i w: %i h: %i with margins: t: %i l: %i r: %i b: %i", &ls, box.x, box.y, box.width, box.height, PSTATE->margin.top,
+ PSTATE->margin.left, PSTATE->margin.right, PSTATE->margin.bottom);
}
}
@@ -930,8 +917,8 @@ void CHyprRenderer::arrangeLayersForMonitor(const int& monitor) {
return;
// Reset the reserved
- PMONITOR->vecReservedBottomRight = Vector2D();
- PMONITOR->vecReservedTopLeft = Vector2D();
+ PMONITOR->vecReservedBottomRight = Vector2D();
+ PMONITOR->vecReservedTopLeft = Vector2D();
wlr_box usableArea = {PMONITOR->vecPosition.x, PMONITOR->vecPosition.y, PMONITOR->vecSize.x, PMONITOR->vecSize.y};
@@ -941,16 +928,16 @@ void CHyprRenderer::arrangeLayersForMonitor(const int& monitor) {
for (auto& la : PMONITOR->m_aLayerSurfaceLists)
arrangeLayerArray(PMONITOR, la, false, &usableArea);
- PMONITOR->vecReservedTopLeft = Vector2D(usableArea.x, usableArea.y) - PMONITOR->vecPosition;
+ PMONITOR->vecReservedTopLeft = Vector2D(usableArea.x, usableArea.y) - PMONITOR->vecPosition;
PMONITOR->vecReservedBottomRight = PMONITOR->vecSize - Vector2D(usableArea.width, usableArea.height) - PMONITOR->vecReservedTopLeft;
auto ADDITIONALRESERVED = g_pConfigManager->m_mAdditionalReservedAreas.find(PMONITOR->szName);
if (ADDITIONALRESERVED == g_pConfigManager->m_mAdditionalReservedAreas.end()) {
- ADDITIONALRESERVED = g_pConfigManager->m_mAdditionalReservedAreas.find(""); // glob wildcard
+ ADDITIONALRESERVED = g_pConfigManager->m_mAdditionalReservedAreas.find(""); // glob wildcard
}
if (ADDITIONALRESERVED != g_pConfigManager->m_mAdditionalReservedAreas.end()) {
- PMONITOR->vecReservedTopLeft = PMONITOR->vecReservedTopLeft + Vector2D(ADDITIONALRESERVED->second.left, ADDITIONALRESERVED->second.top);
+ PMONITOR->vecReservedTopLeft = PMONITOR->vecReservedTopLeft + Vector2D(ADDITIONALRESERVED->second.left, ADDITIONALRESERVED->second.top);
PMONITOR->vecReservedBottomRight = PMONITOR->vecReservedBottomRight + Vector2D(ADDITIONALRESERVED->second.right, ADDITIONALRESERVED->second.bottom);
}
@@ -960,7 +947,8 @@ void CHyprRenderer::arrangeLayersForMonitor(const int& monitor) {
g_pLayoutManager->getCurrentLayout()->recalculateMonitor(monitor);
- Debug::log(LOG, "Monitor %s layers arranged: reserved: %f %f %f %f", PMONITOR->szName.c_str(), PMONITOR->vecReservedTopLeft.x, PMONITOR->vecReservedTopLeft.y, PMONITOR->vecReservedBottomRight.x, PMONITOR->vecReservedBottomRight.y);
+ Debug::log(LOG, "Monitor %s layers arranged: reserved: %f %f %f %f", PMONITOR->szName.c_str(), PMONITOR->vecReservedTopLeft.x, PMONITOR->vecReservedTopLeft.y,
+ PMONITOR->vecReservedBottomRight.x, PMONITOR->vecReservedBottomRight.y);
}
void CHyprRenderer::damageSurface(wlr_surface* pSurface, double x, double y) {
@@ -1001,10 +989,11 @@ void CHyprRenderer::damageSurface(wlr_surface* pSurface, double x, double y) {
pixman_region32_fini(&damageBoxForEach);
- static auto *const PLOGDAMAGE = &g_pConfigManager->getConfigValuePtr("debug:log_damage")->intValue;
+ static auto* const PLOGDAMAGE = &g_pConfigManager->getConfigValuePtr("debug:log_damage")->intValue;
if (*PLOGDAMAGE)
- Debug::log(LOG, "Damage: Surface (extents): xy: %d, %d wh: %d, %d", damageBox.extents.x1, damageBox.extents.y1, damageBox.extents.x2 - damageBox.extents.x1, damageBox.extents.y2 - damageBox.extents.y1);
+ Debug::log(LOG, "Damage: Surface (extents): xy: %d, %d wh: %d, %d", damageBox.extents.x1, damageBox.extents.y1, damageBox.extents.x2 - damageBox.extents.x1,
+ damageBox.extents.y2 - damageBox.extents.y1);
pixman_region32_fini(&damageBox);
}
@@ -1020,7 +1009,7 @@ void CHyprRenderer::damageWindow(CWindow* pWindow) {
m->addDamage(&fixedDamageBox);
}
- static auto *const PLOGDAMAGE = &g_pConfigManager->getConfigValuePtr("debug:log_damage")->intValue;
+ static auto* const PLOGDAMAGE = &g_pConfigManager->getConfigValuePtr("debug:log_damage")->intValue;
if (*PLOGDAMAGE)
Debug::log(LOG, "Damage: Window (%s): xy: %d, %d wh: %d, %d", pWindow->m_szTitle.c_str(), damageBox.x, damageBox.y, damageBox.width, damageBox.height);
@@ -1030,10 +1019,10 @@ void CHyprRenderer::damageMonitor(CMonitor* pMonitor) {
if (g_pCompositor->m_bUnsafeState || pMonitor->isMirror())
return;
- wlr_box damageBox = { 0, 0, INT16_MAX, INT16_MAX };
+ wlr_box damageBox = {0, 0, INT16_MAX, INT16_MAX};
pMonitor->addDamage(&damageBox);
- static auto *const PLOGDAMAGE = &g_pConfigManager->getConfigValuePtr("debug:log_damage")->intValue;
+ static auto* const PLOGDAMAGE = &g_pConfigManager->getConfigValuePtr("debug:log_damage")->intValue;
if (*PLOGDAMAGE)
Debug::log(LOG, "Damage: Monitor %s", pMonitor->szName.c_str());
@@ -1052,7 +1041,7 @@ void CHyprRenderer::damageBox(wlr_box* pBox) {
m->addDamage(&damageBox);
}
- static auto *const PLOGDAMAGE = &g_pConfigManager->getConfigValuePtr("debug:log_damage")->intValue;
+ static auto* const PLOGDAMAGE = &g_pConfigManager->getConfigValuePtr("debug:log_damage")->intValue;
if (*PLOGDAMAGE)
Debug::log(LOG, "Damage: Box: xy: %d, %d wh: %d, %d", pBox->x, pBox->y, pBox->width, pBox->height);
@@ -1072,7 +1061,7 @@ void CHyprRenderer::damageRegion(pixman_region32_t* rg) {
void CHyprRenderer::damageMirrorsWith(CMonitor* pMonitor, pixman_region32_t* pRegion) {
for (auto& mirror : pMonitor->mirrors) {
- Vector2D scale = {mirror->vecSize.x / pMonitor->vecSize.x, mirror->vecSize.y / pMonitor->vecSize.y};
+ Vector2D scale = {mirror->vecSize.x / pMonitor->vecSize.x, mirror->vecSize.y / pMonitor->vecSize.y};
pixman_region32_t rg;
pixman_region32_init(&rg);
@@ -1088,13 +1077,14 @@ void CHyprRenderer::renderDragIcon(CMonitor* pMonitor, timespec* time) {
return;
SRenderData renderdata = {pMonitor->output, time, g_pInputManager->m_sDrag.pos.x, g_pInputManager->m_sDrag.pos.y};
- renderdata.surface = g_pInputManager->m_sDrag.dragIcon->surface;
- renderdata.w = g_pInputManager->m_sDrag.dragIcon->surface->current.width;
- renderdata.h = g_pInputManager->m_sDrag.dragIcon->surface->current.height;
+ renderdata.surface = g_pInputManager->m_sDrag.dragIcon->surface;
+ renderdata.w = g_pInputManager->m_sDrag.dragIcon->surface->current.width;
+ renderdata.h = g_pInputManager->m_sDrag.dragIcon->surface->current.height;
wlr_surface_for_each_surface(g_pInputManager->m_sDrag.dragIcon->surface, renderSurface, &renderdata);
- wlr_box box = {g_pInputManager->m_sDrag.pos.x - 2, g_pInputManager->m_sDrag.pos.y - 2, g_pInputManager->m_sDrag.dragIcon->surface->current.width + 4, g_pInputManager->m_sDrag.dragIcon->surface->current.height + 4};
+ wlr_box box = {g_pInputManager->m_sDrag.pos.x - 2, g_pInputManager->m_sDrag.pos.y - 2, g_pInputManager->m_sDrag.dragIcon->surface->current.width + 4,
+ g_pInputManager->m_sDrag.dragIcon->surface->current.height + 4};
g_pHyprRenderer->damageBox(&box);
}
@@ -1128,14 +1118,11 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR
}
// Check if the rule isn't already applied
- if (!force
- && DELTALESSTHAN(pMonitor->vecPixelSize.x, pMonitorRule->resolution.x, 1)
- && DELTALESSTHAN(pMonitor->vecPixelSize.y, pMonitorRule->resolution.y, 1)
- && DELTALESSTHAN(pMonitor->refreshRate, pMonitorRule->refreshRate, 1)
- && pMonitor->scale == pMonitorRule->scale
- && ((DELTALESSTHAN(pMonitor->vecPosition.x, pMonitorRule->offset.x, 1) && DELTALESSTHAN(pMonitor->vecPosition.y, pMonitorRule->offset.y, 1)) || pMonitorRule->offset == Vector2D(-1, -1))
- && pMonitor->transform == pMonitorRule->transform
- && pMonitorRule->enable10bit == pMonitor->enabled10bit) {
+ if (!force && DELTALESSTHAN(pMonitor->vecPixelSize.x, pMonitorRule->resolution.x, 1) && DELTALESSTHAN(pMonitor->vecPixelSize.y, pMonitorRule->resolution.y, 1) &&
+ DELTALESSTHAN(pMonitor->refreshRate, pMonitorRule->refreshRate, 1) && pMonitor->scale == pMonitorRule->scale &&
+ ((DELTALESSTHAN(pMonitor->vecPosition.x, pMonitorRule->offset.x, 1) && DELTALESSTHAN(pMonitor->vecPosition.y, pMonitorRule->offset.y, 1)) ||
+ pMonitorRule->offset == Vector2D(-1, -1)) &&
+ pMonitor->transform == pMonitorRule->transform && pMonitorRule->enable10bit == pMonitor->enabled10bit) {
Debug::log(LOG, "Not applying a new rule to %s because it's already applied!", pMonitor->szName.c_str());
return true;
@@ -1154,31 +1141,30 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR
pMonitor->transform = pMonitorRule->transform;
// loop over modes and choose an appropriate one.
- if (pMonitorRule->resolution != Vector2D() && pMonitorRule->resolution != Vector2D(-1,-1) && pMonitorRule->resolution != Vector2D(-1,-2)) {
+ if (pMonitorRule->resolution != Vector2D() && pMonitorRule->resolution != Vector2D(-1, -1) && pMonitorRule->resolution != Vector2D(-1, -2)) {
if (!wl_list_empty(&pMonitor->output->modes)) {
wlr_output_mode* mode;
- bool found = false;
+ bool found = false;
wl_list_for_each(mode, &pMonitor->output->modes, link) {
// if delta of refresh rate, w and h chosen and mode is < 1 we accept it
- if (DELTALESSTHAN(mode->width, pMonitorRule->resolution.x, 1) && DELTALESSTHAN(mode->height, pMonitorRule->resolution.y, 1) && DELTALESSTHAN(mode->refresh / 1000.f, pMonitorRule->refreshRate, 1)) {
+ if (DELTALESSTHAN(mode->width, pMonitorRule->resolution.x, 1) && DELTALESSTHAN(mode->height, pMonitorRule->resolution.y, 1) &&
+ DELTALESSTHAN(mode->refresh / 1000.f, pMonitorRule->refreshRate, 1)) {
wlr_output_set_mode(pMonitor->output, mode);
if (!wlr_output_test(pMonitor->output)) {
- Debug::log(LOG, "Monitor %s: REJECTED available mode: %ix%i@%2f!",
- pMonitor->output->name, (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate,
- mode->width, mode->height, mode->refresh / 1000.f);
+ Debug::log(LOG, "Monitor %s: REJECTED available mode: %ix%i@%2f!", pMonitor->output->name, (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y,
+ (float)pMonitorRule->refreshRate, mode->width, mode->height, mode->refresh / 1000.f);
continue;
}
- Debug::log(LOG, "Monitor %s: requested %ix%i@%2f, found available mode: %ix%i@%imHz, applying.",
- pMonitor->output->name, (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate,
- mode->width, mode->height, mode->refresh);
+ Debug::log(LOG, "Monitor %s: requested %ix%i@%2f, found available mode: %ix%i@%imHz, applying.", pMonitor->output->name, (int)pMonitorRule->resolution.x,
+ (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate, mode->width, mode->height, mode->refresh);
found = true;
pMonitor->refreshRate = mode->refresh / 1000.f;
- pMonitor->vecSize = Vector2D(mode->width, mode->height);
+ pMonitor->vecSize = Vector2D(mode->width, mode->height);
break;
}
@@ -1186,7 +1172,7 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR
if (!found) {
wlr_output_set_custom_mode(pMonitor->output, (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (int)pMonitorRule->refreshRate * 1000);
- pMonitor->vecSize = pMonitorRule->resolution;
+ pMonitor->vecSize = pMonitorRule->resolution;
pMonitor->refreshRate = pMonitorRule->refreshRate;
if (!wlr_output_test(pMonitor->output)) {
@@ -1195,27 +1181,28 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR
const auto PREFERREDMODE = wlr_output_preferred_mode(pMonitor->output);
if (!PREFERREDMODE) {
- Debug::log(ERR, "Monitor %s has NO PREFERRED MODE, and an INVALID one was requested: %ix%i@%2f",
- (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate);
+ Debug::log(ERR, "Monitor %s has NO PREFERRED MODE, and an INVALID one was requested: %ix%i@%2f", (int)pMonitorRule->resolution.x,
+ (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate);
return true;
}
// Preferred is valid
wlr_output_set_mode(pMonitor->output, PREFERREDMODE);
- Debug::log(ERR, "Monitor %s got an invalid requested mode: %ix%i@%2f, using the preferred one instead: %ix%i@%2f",
- pMonitor->output->name, (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate,
- PREFERREDMODE->width, PREFERREDMODE->height, PREFERREDMODE->refresh / 1000.f);
+ Debug::log(ERR, "Monitor %s got an invalid requested mode: %ix%i@%2f, using the preferred one instead: %ix%i@%2f", pMonitor->output->name,
+ (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate, PREFERREDMODE->width, PREFERREDMODE->height,
+ PREFERREDMODE->refresh / 1000.f);
pMonitor->refreshRate = PREFERREDMODE->refresh / 1000.f;
- pMonitor->vecSize = Vector2D(PREFERREDMODE->width, PREFERREDMODE->height);
+ pMonitor->vecSize = Vector2D(PREFERREDMODE->width, PREFERREDMODE->height);
} else {
- Debug::log(LOG, "Set a custom mode %ix%i@%2f (mode not found in monitor modes)", (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate);
+ Debug::log(LOG, "Set a custom mode %ix%i@%2f (mode not found in monitor modes)", (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y,
+ (float)pMonitorRule->refreshRate);
}
}
} else {
wlr_output_set_custom_mode(pMonitor->output, (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (int)pMonitorRule->refreshRate * 1000);
- pMonitor->vecSize = pMonitorRule->resolution;
+ pMonitor->vecSize = pMonitorRule->resolution;
pMonitor->refreshRate = pMonitorRule->refreshRate;
if (!wlr_output_test(pMonitor->output)) {
@@ -1224,94 +1211,96 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR
const auto PREFERREDMODE = wlr_output_preferred_mode(pMonitor->output);
if (!PREFERREDMODE) {
- Debug::log(ERR, "Monitor %s has NO PREFERRED MODE, and an INVALID one was requested: %ix%i@%2f", (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate);
+ Debug::log(ERR, "Monitor %s has NO PREFERRED MODE, and an INVALID one was requested: %ix%i@%2f", (int)pMonitorRule->resolution.x,
+ (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate);
return true;
}
// Preferred is valid
wlr_output_set_mode(pMonitor->output, PREFERREDMODE);
- Debug::log(ERR, "Monitor %s got an invalid requested mode: %ix%i@%2f, using the preferred one instead: %ix%i@%2f", pMonitor->output->name, (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate, PREFERREDMODE->width, PREFERREDMODE->height, PREFERREDMODE->refresh / 1000.f);
+ Debug::log(ERR, "Monitor %s got an invalid requested mode: %ix%i@%2f, using the preferred one instead: %ix%i@%2f", pMonitor->output->name,
+ (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate, PREFERREDMODE->width, PREFERREDMODE->height,
+ PREFERREDMODE->refresh / 1000.f);
pMonitor->refreshRate = PREFERREDMODE->refresh / 1000.f;
- pMonitor->vecSize = Vector2D(PREFERREDMODE->width, PREFERREDMODE->height);
+ pMonitor->vecSize = Vector2D(PREFERREDMODE->width, PREFERREDMODE->height);
} else {
- Debug::log(LOG, "Set a custom mode %ix%i@%2f (mode not found in monitor modes)", (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate);
+ Debug::log(LOG, "Set a custom mode %ix%i@%2f (mode not found in monitor modes)", (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y,
+ (float)pMonitorRule->refreshRate);
}
}
} else if (pMonitorRule->resolution != Vector2D()) {
if (!wl_list_empty(&pMonitor->output->modes)) {
wlr_output_mode* mode;
- float currentWidth = 0;
- float currentHeight = 0;
- float currentRefresh = 0;
- bool success = false;
+ float currentWidth = 0;
+ float currentHeight = 0;
+ float currentRefresh = 0;
+ bool success = false;
//(-1,-1) indicates a preference to refreshrate over resolution, (-1,-2) preference to resolution
- if(pMonitorRule->resolution == Vector2D(-1,-1)) {
+ if (pMonitorRule->resolution == Vector2D(-1, -1)) {
wl_list_for_each(mode, &pMonitor->output->modes, link) {
- if( ( mode->width >= currentWidth && mode->height >= currentHeight && mode->refresh >= ( currentRefresh - 1000.f ) ) || mode->refresh > ( currentRefresh + 3000.f ) ) {
- wlr_output_set_mode(pMonitor->output, mode);
- if (wlr_output_test(pMonitor->output)) {
- currentWidth = mode->width;
- currentHeight = mode->height;
- currentRefresh = mode->refresh;
- success = true;
- }
- }
+ if ((mode->width >= currentWidth && mode->height >= currentHeight && mode->refresh >= (currentRefresh - 1000.f)) || mode->refresh > (currentRefresh + 3000.f)) {
+ wlr_output_set_mode(pMonitor->output, mode);
+ if (wlr_output_test(pMonitor->output)) {
+ currentWidth = mode->width;
+ currentHeight = mode->height;
+ currentRefresh = mode->refresh;
+ success = true;
+ }
+ }
}
} else {
wl_list_for_each(mode, &pMonitor->output->modes, link) {
- if( ( mode->width >= currentWidth && mode->height >= currentHeight && mode->refresh >= ( currentRefresh - 1000.f ) ) || ( mode->width > currentWidth && mode->height > currentHeight ) ) {
- wlr_output_set_mode(pMonitor->output, mode);
- if (wlr_output_test(pMonitor->output)) {
- currentWidth = mode->width;
- currentHeight = mode->height;
- currentRefresh = mode->refresh;
- success = true;
- }
- }
+ if ((mode->width >= currentWidth && mode->height >= currentHeight && mode->refresh >= (currentRefresh - 1000.f)) ||
+ (mode->width > currentWidth && mode->height > currentHeight)) {
+ wlr_output_set_mode(pMonitor->output, mode);
+ if (wlr_output_test(pMonitor->output)) {
+ currentWidth = mode->width;
+ currentHeight = mode->height;
+ currentRefresh = mode->refresh;
+ success = true;
+ }
+ }
}
}
if (!success) {
- Debug::log(LOG, "Monitor %s: REJECTED mode: %ix%i@%2f! Falling back to preferred.",
- pMonitor->output->name, (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate,
- mode->width, mode->height, mode->refresh / 1000.f);
+ Debug::log(LOG, "Monitor %s: REJECTED mode: %ix%i@%2f! Falling back to preferred.", pMonitor->output->name, (int)pMonitorRule->resolution.x,
+ (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate, mode->width, mode->height, mode->refresh / 1000.f);
const auto PREFERREDMODE = wlr_output_preferred_mode(pMonitor->output);
if (!PREFERREDMODE) {
- Debug::log(ERR, "Monitor %s has NO PREFERRED MODE, and an INVALID one was requested: %ix%i@%2f",
- (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate);
+ Debug::log(ERR, "Monitor %s has NO PREFERRED MODE, and an INVALID one was requested: %ix%i@%2f", (int)pMonitorRule->resolution.x,
+ (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate);
return true;
}
// Preferred is valid
wlr_output_set_mode(pMonitor->output, PREFERREDMODE);
- Debug::log(ERR, "Monitor %s got an invalid requested mode: %ix%i@%2f, using the preferred one instead: %ix%i@%2f",
- pMonitor->output->name, (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate,
- PREFERREDMODE->width, PREFERREDMODE->height, PREFERREDMODE->refresh / 1000.f);
+ Debug::log(ERR, "Monitor %s got an invalid requested mode: %ix%i@%2f, using the preferred one instead: %ix%i@%2f", pMonitor->output->name,
+ (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate, PREFERREDMODE->width, PREFERREDMODE->height,
+ PREFERREDMODE->refresh / 1000.f);
pMonitor->refreshRate = PREFERREDMODE->refresh / 1000.f;
- pMonitor->vecSize = Vector2D(PREFERREDMODE->width, PREFERREDMODE->height);
+ pMonitor->vecSize = Vector2D(PREFERREDMODE->width, PREFERREDMODE->height);
} else {
- Debug::log(LOG, "Monitor %s: Applying highest mode %ix%i@%2f.",
- pMonitor->output->name, (int)currentWidth, (int)currentHeight, (int)currentRefresh / 1000.f,
+ Debug::log(LOG, "Monitor %s: Applying highest mode %ix%i@%2f.", pMonitor->output->name, (int)currentWidth, (int)currentHeight, (int)currentRefresh / 1000.f,
mode->width, mode->height, mode->refresh / 1000.f);
pMonitor->refreshRate = currentRefresh / 1000.f;
- pMonitor->vecSize = Vector2D(currentWidth, currentHeight);
+ pMonitor->vecSize = Vector2D(currentWidth, currentHeight);
}
}
} else {
const auto PREFERREDMODE = wlr_output_preferred_mode(pMonitor->output);
if (!PREFERREDMODE) {
- Debug::log(ERR, "Monitor %s has NO PREFERRED MODE",
- (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate);
+ Debug::log(ERR, "Monitor %s has NO PREFERRED MODE", (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate);
if (!wl_list_empty(&pMonitor->output->modes)) {
wlr_output_mode* mode;
@@ -1320,18 +1309,16 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR
wlr_output_set_mode(pMonitor->output, mode);
if (!wlr_output_test(pMonitor->output)) {
- Debug::log(LOG, "Monitor %s: REJECTED available mode: %ix%i@%2f!",
- pMonitor->output->name, (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate,
- mode->width, mode->height, mode->refresh / 1000.f);
+ Debug::log(LOG, "Monitor %s: REJECTED available mode: %ix%i@%2f!", pMonitor->output->name, (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y,
+ (float)pMonitorRule->refreshRate, mode->width, mode->height, mode->refresh / 1000.f);
continue;
}
- Debug::log(LOG, "Monitor %s: requested %ix%i@%2f, found available mode: %ix%i@%imHz, applying.",
- pMonitor->output->name, (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate,
- mode->width, mode->height, mode->refresh);
+ Debug::log(LOG, "Monitor %s: requested %ix%i@%2f, found available mode: %ix%i@%imHz, applying.", pMonitor->output->name, (int)pMonitorRule->resolution.x,
+ (int)pMonitorRule->resolution.y, (float)pMonitorRule->refreshRate, mode->width, mode->height, mode->refresh);
pMonitor->refreshRate = mode->refresh / 1000.f;
- pMonitor->vecSize = Vector2D(mode->width, mode->height);
+ pMonitor->vecSize = Vector2D(mode->width, mode->height);
break;
}
@@ -1340,14 +1327,14 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR
// Preferred is valid
wlr_output_set_mode(pMonitor->output, PREFERREDMODE);
- pMonitor->vecSize = Vector2D(PREFERREDMODE->width, PREFERREDMODE->height);
+ pMonitor->vecSize = Vector2D(PREFERREDMODE->width, PREFERREDMODE->height);
pMonitor->refreshRate = PREFERREDMODE->refresh / 1000.f;
Debug::log(LOG, "Setting preferred mode for %s", pMonitor->output->name);
}
}
- pMonitor->vrrActive = pMonitor->output->pending.adaptive_sync_enabled; // disabled here, will be tested in CConfigManager::ensureVRR()
+ pMonitor->vrrActive = pMonitor->output->pending.adaptive_sync_enabled; // disabled here, will be tested in CConfigManager::ensureVRR()
pMonitor->vecPixelSize = pMonitor->vecSize;
@@ -1382,12 +1369,13 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR
int x, y;
wlr_output_transformed_resolution(pMonitor->output, &x, &y);
- pMonitor->vecSize = (Vector2D(x, y) / pMonitor->scale).floor();
- pMonitor->vecTransformedSize = Vector2D(x,y);
+ pMonitor->vecSize = (Vector2D(x, y) / pMonitor->scale).floor();
+ pMonitor->vecTransformedSize = Vector2D(x, y);
if (pMonitor->createdByUser) {
- wlr_box transformedBox = { 0, 0, (int)pMonitor->vecTransformedSize.x, (int)pMonitor->vecTransformedSize.y };
- wlr_box_transform(&transformedBox, &transformedBox, wlr_output_transform_invert(pMonitor->output->transform), (int)pMonitor->vecTransformedSize.x, (int)pMonitor->vecTransformedSize.y);
+ wlr_box transformedBox = {0, 0, (int)pMonitor->vecTransformedSize.x, (int)pMonitor->vecTransformedSize.y};
+ wlr_box_transform(&transformedBox, &transformedBox, wlr_output_transform_invert(pMonitor->output->transform), (int)pMonitor->vecTransformedSize.x,
+ (int)pMonitor->vecTransformedSize.y);
pMonitor->vecPixelSize = Vector2D(transformedBox.width, transformedBox.height);
}
@@ -1431,9 +1419,9 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR
}
void CHyprRenderer::ensureCursorRenderingMode() {
- static auto *const PCURSORTIMEOUT = &g_pConfigManager->getConfigValuePtr("general:cursor_inactive_timeout")->intValue;
+ static auto* const PCURSORTIMEOUT = &g_pConfigManager->getConfigValuePtr("general:cursor_inactive_timeout")->intValue;
- const auto PASSEDCURSORSECONDS = g_pInputManager->m_tmrLastCursorMovement.getSeconds();
+ const auto PASSEDCURSORSECONDS = g_pInputManager->m_tmrLastCursorMovement.getSeconds();
if (*PCURSORTIMEOUT > 0) {
if (*PCURSORTIMEOUT < PASSEDCURSORSECONDS && m_bHasARenderedCursor) {
@@ -1444,7 +1432,7 @@ void CHyprRenderer::ensureCursorRenderingMode() {
Debug::log(LOG, "Hiding the cursor (timeout)");
for (auto& m : g_pCompositor->m_vMonitors)
- g_pHyprRenderer->damageMonitor(m.get()); // TODO: maybe just damage the cursor area?
+ g_pHyprRenderer->damageMonitor(m.get()); // TODO: maybe just damage the cursor area?
} else if (*PCURSORTIMEOUT > PASSEDCURSORSECONDS && !m_bHasARenderedCursor) {
m_bHasARenderedCursor = true;
@@ -1454,7 +1442,7 @@ void CHyprRenderer::ensureCursorRenderingMode() {
Debug::log(LOG, "Showing the cursor (timeout)");
for (auto& m : g_pCompositor->m_vMonitors)
- g_pHyprRenderer->damageMonitor(m.get()); // TODO: maybe just damage the cursor area?
+ g_pHyprRenderer->damageMonitor(m.get()); // TODO: maybe just damage the cursor area?
}
} else {
m_bHasARenderedCursor = true;
diff --git a/src/render/Renderer.hpp b/src/render/Renderer.hpp
index 38feeb79..804b5b69 100644
--- a/src/render/Renderer.hpp
+++ b/src/render/Renderer.hpp
@@ -10,14 +10,16 @@
struct SMonitorRule;
// TODO: add fuller damage tracking for updating only parts of a window
-enum DAMAGETRACKINGMODES {
+enum DAMAGETRACKINGMODES
+{
DAMAGE_TRACKING_INVALID = -1,
- DAMAGE_TRACKING_NONE = 0,
+ DAMAGE_TRACKING_NONE = 0,
DAMAGE_TRACKING_MONITOR,
DAMAGE_TRACKING_FULL
};
-enum eRenderPassMode {
+enum eRenderPassMode
+{
RENDER_PASS_ALL = 0,
RENDER_PASS_MAIN,
RENDER_PASS_POPUP
@@ -26,8 +28,7 @@ enum eRenderPassMode {
class CToplevelExportProtocolManager;
class CHyprRenderer {
-public:
-
+ public:
void renderAllClientsForMonitor(const int&, timespec*);
void outputMgrApplyTest(wlr_output_configuration_v1*, bool);
void arrangeLayersForMonitor(const int&);
@@ -46,24 +47,23 @@ public:
void calculateUVForWindowSurface(CWindow*, wlr_surface*, bool main = false);
bool m_bWindowRequestedCursorHide = false;
- bool m_bBlockSurfaceFeedback = false;
- CWindow* m_pLastScanout = nullptr;
+ bool m_bBlockSurfaceFeedback = false;
+ CWindow* m_pLastScanout = nullptr;
DAMAGETRACKINGMODES damageTrackingModeFromStr(const std::string&);
bool attemptDirectScanout(CMonitor*);
void setWindowScanoutMode(CWindow*);
-private:
- void arrangeLayerArray(CMonitor*, const std::vector<std::unique_ptr<SLayerSurface>>&, bool, wlr_box*);
- void renderWorkspaceWithFullscreenWindow(CMonitor*, CWorkspace*, timespec*);
- void renderWindow(CWindow*, CMonitor*, timespec*, bool, eRenderPassMode, bool ignorePosition = false, bool ignoreAllGeometry = false);
- void renderLayer(SLayerSurface*, CMonitor*, timespec*);
- void renderDragIcon(CMonitor*, timespec*);
- void renderIMEPopup(SIMEPopup*, CMonitor*, timespec*);
-
- bool m_bHasARenderedCursor = true;
+ private:
+ void arrangeLayerArray(CMonitor*, const std::vector<std::unique_ptr<SLayerSurface>>&, bool, wlr_box*);
+ void renderWorkspaceWithFullscreenWindow(CMonitor*, CWorkspace*, timespec*);
+ void renderWindow(CWindow*, CMonitor*, timespec*, bool, eRenderPassMode, bool ignorePosition = false, bool ignoreAllGeometry = false);
+ void renderLayer(SLayerSurface*, CMonitor*, timespec*);
+ void renderDragIcon(CMonitor*, timespec*);
+ void renderIMEPopup(SIMEPopup*, CMonitor*, timespec*);
+ bool m_bHasARenderedCursor = true;
friend class CHyprOpenGLImpl;
friend class CToplevelExportProtocolManager;
diff --git a/src/render/Shader.hpp b/src/render/Shader.hpp
index f107bb6d..a5aa6efb 100644
--- a/src/render/Shader.hpp
+++ b/src/render/Shader.hpp
@@ -4,43 +4,43 @@
#include <unordered_map>
class CShader {
-public:
+ public:
~CShader();
GLuint program = 0;
- GLint proj;
- GLint color;
- GLint tex;
- GLint alpha;
- GLint posAttrib;
- GLint texAttrib;
- GLint discardOpaque;
+ GLint proj;
+ GLint color;
+ GLint tex;
+ GLint alpha;
+ GLint posAttrib;
+ GLint texAttrib;
+ GLint discardOpaque;
- GLint topLeft;
- GLint bottomRight;
- GLint fullSize;
- GLint fullSizeUntransformed;
- GLint radius;
- GLint primitiveMultisample;
+ GLint topLeft;
+ GLint bottomRight;
+ GLint fullSize;
+ GLint fullSizeUntransformed;
+ GLint radius;
+ GLint primitiveMultisample;
- GLint thick;
+ GLint thick;
- GLint halfpixel;
+ GLint halfpixel;
- GLint range;
- GLint shadowPower;
+ GLint range;
+ GLint shadowPower;
- GLint applyTint;
- GLint tint;
+ GLint applyTint;
+ GLint tint;
- GLint gradient;
- GLint gradientLength;
- GLint angle;
+ GLint gradient;
+ GLint gradientLength;
+ GLint angle;
- GLint getUniformLocation(const std::string&);
+ GLint getUniformLocation(const std::string&);
- void destroy();
+ void destroy();
-private:
+ private:
std::unordered_map<std::string, GLint> m_muUniforms;
}; \ No newline at end of file
diff --git a/src/render/Texture.cpp b/src/render/Texture.cpp
index 01b80145..ff466f32 100644
--- a/src/render/Texture.cpp
+++ b/src/render/Texture.cpp
@@ -10,7 +10,7 @@ CTexture::CTexture(wlr_texture* tex) {
wlr_gles2_texture_get_attribs(tex, &attrs);
m_iTarget = attrs.target;
- m_iTexID = attrs.tex;
+ m_iTexID = attrs.tex;
if (m_iTarget == GL_TEXTURE_2D) {
m_iType = attrs.has_alpha ? TEXTURE_RGBA : TEXTURE_RGBX;
diff --git a/src/render/Texture.hpp b/src/render/Texture.hpp
index f1211aec..f287089b 100644
--- a/src/render/Texture.hpp
+++ b/src/render/Texture.hpp
@@ -2,23 +2,24 @@
#include "../defines.hpp"
-enum TEXTURETYPE {
- TEXTURE_INVALID, // Invalid
- TEXTURE_RGBA, // 4 channels
- TEXTURE_RGBX, // discard A
- TEXTURE_EXTERNAL, // EGLImage
+enum TEXTURETYPE
+{
+ TEXTURE_INVALID, // Invalid
+ TEXTURE_RGBA, // 4 channels
+ TEXTURE_RGBX, // discard A
+ TEXTURE_EXTERNAL, // EGLImage
};
class CTexture {
-public:
+ public:
CTexture();
CTexture(wlr_texture*);
- void destroyTexture();
- void allocate();
+ void destroyTexture();
+ void allocate();
- TEXTURETYPE m_iType = TEXTURE_RGBA;
- GLenum m_iTarget = GL_TEXTURE_2D;
- GLuint m_iTexID = 0;
- Vector2D m_vSize;
+ TEXTURETYPE m_iType = TEXTURE_RGBA;
+ GLenum m_iTarget = GL_TEXTURE_2D;
+ GLuint m_iTexID = 0;
+ Vector2D m_vSize;
}; \ No newline at end of file
diff --git a/src/render/decorations/CHyprDropShadowDecoration.cpp b/src/render/decorations/CHyprDropShadowDecoration.cpp
index 131c7431..a46ae290 100644
--- a/src/render/decorations/CHyprDropShadowDecoration.cpp
+++ b/src/render/decorations/CHyprDropShadowDecoration.cpp
@@ -11,7 +11,7 @@ CHyprDropShadowDecoration::~CHyprDropShadowDecoration() {
}
SWindowDecorationExtents CHyprDropShadowDecoration::getWindowDecorationExtents() {
- static auto *const PSHADOWS = &g_pConfigManager->getConfigValuePtr("decoration:drop_shadow")->intValue;
+ static auto* const PSHADOWS = &g_pConfigManager->getConfigValuePtr("decoration:drop_shadow")->intValue;
if (*PSHADOWS != 1)
return {{}, {}};
@@ -24,12 +24,13 @@ eDecorationType CHyprDropShadowDecoration::getDecorationType() {
}
void CHyprDropShadowDecoration::damageEntire() {
- static auto *const PSHADOWS = &g_pConfigManager->getConfigValuePtr("decoration:drop_shadow")->intValue;
+ static auto* const PSHADOWS = &g_pConfigManager->getConfigValuePtr("decoration:drop_shadow")->intValue;
if (*PSHADOWS != 1)
return; // disabled
- wlr_box dm = {m_vLastWindowPos.x - m_seExtents.topLeft.x, m_vLastWindowPos.y - m_seExtents.topLeft.y, m_vLastWindowSize.x + m_seExtents.topLeft.x + m_seExtents.bottomRight.x, m_vLastWindowSize.y + m_seExtents.topLeft.y + m_seExtents.bottomRight.y};
+ wlr_box dm = {m_vLastWindowPos.x - m_seExtents.topLeft.x, m_vLastWindowPos.y - m_seExtents.topLeft.y, m_vLastWindowSize.x + m_seExtents.topLeft.x + m_seExtents.bottomRight.x,
+ m_vLastWindowSize.y + m_seExtents.topLeft.y + m_seExtents.bottomRight.y};
g_pHyprRenderer->damageBox(&dm);
}
@@ -41,7 +42,7 @@ void CHyprDropShadowDecoration::updateWindow(CWindow* pWindow) {
const auto WORKSPACEOFFSET = PWORKSPACE && !pWindow->m_bPinned ? PWORKSPACE->m_vRenderOffset.vec() : Vector2D();
if (pWindow->m_vRealPosition.vec() + WORKSPACEOFFSET != m_vLastWindowPos || pWindow->m_vRealSize.vec() != m_vLastWindowSize) {
- m_vLastWindowPos = pWindow->m_vRealPosition.vec() + WORKSPACEOFFSET;
+ m_vLastWindowPos = pWindow->m_vRealPosition.vec() + WORKSPACEOFFSET;
m_vLastWindowSize = pWindow->m_vRealSize.vec();
damageEntire();
@@ -62,21 +63,21 @@ void CHyprDropShadowDecoration::draw(CMonitor* pMonitor, float a, const Vector2D
if (m_pWindow->m_sAdditionalConfigData.forceNoShadow)
return;
- static auto *const PSHADOWS = &g_pConfigManager->getConfigValuePtr("decoration:drop_shadow")->intValue;
- static auto *const PSHADOWSIZE = &g_pConfigManager->getConfigValuePtr("decoration:shadow_range")->intValue;
- static auto *const PROUNDING = &g_pConfigManager->getConfigValuePtr("decoration:rounding")->intValue;
- static auto *const PSHADOWIGNOREWINDOW = &g_pConfigManager->getConfigValuePtr("decoration:shadow_ignore_window")->intValue;
- static auto *const PSHADOWSCALE = &g_pConfigManager->getConfigValuePtr("decoration:shadow_scale")->floatValue;
- static auto *const PSHADOWOFFSET = &g_pConfigManager->getConfigValuePtr("decoration:shadow_offset")->vecValue;
+ static auto* const PSHADOWS = &g_pConfigManager->getConfigValuePtr("decoration:drop_shadow")->intValue;
+ static auto* const PSHADOWSIZE = &g_pConfigManager->getConfigValuePtr("decoration:shadow_range")->intValue;
+ static auto* const PROUNDING = &g_pConfigManager->getConfigValuePtr("decoration:rounding")->intValue;
+ static auto* const PSHADOWIGNOREWINDOW = &g_pConfigManager->getConfigValuePtr("decoration:shadow_ignore_window")->intValue;
+ static auto* const PSHADOWSCALE = &g_pConfigManager->getConfigValuePtr("decoration:shadow_scale")->floatValue;
+ static auto* const PSHADOWOFFSET = &g_pConfigManager->getConfigValuePtr("decoration:shadow_offset")->vecValue;
if (*PSHADOWS != 1)
return; // disabled
- const auto ROUNDING = !m_pWindow->m_sSpecialRenderData.rounding ? 0 : (m_pWindow->m_sAdditionalConfigData.rounding == -1 ? *PROUNDING : m_pWindow->m_sAdditionalConfigData.rounding);
+ const auto ROUNDING =
+ !m_pWindow->m_sSpecialRenderData.rounding ? 0 : (m_pWindow->m_sAdditionalConfigData.rounding == -1 ? *PROUNDING : m_pWindow->m_sAdditionalConfigData.rounding);
// draw the shadow
- wlr_box fullBox = { m_vLastWindowPos.x - *PSHADOWSIZE, m_vLastWindowPos.y - *PSHADOWSIZE,
- m_vLastWindowSize.x + 2.0 * *PSHADOWSIZE, m_vLastWindowSize.y + 2.0 * *PSHADOWSIZE };
+ wlr_box fullBox = {m_vLastWindowPos.x - *PSHADOWSIZE, m_vLastWindowPos.y - *PSHADOWSIZE, m_vLastWindowSize.x + 2.0 * *PSHADOWSIZE, m_vLastWindowSize.y + 2.0 * *PSHADOWSIZE};
fullBox.x -= pMonitor->vecPosition.x;
fullBox.y -= pMonitor->vecPosition.y;
@@ -84,9 +85,9 @@ void CHyprDropShadowDecoration::draw(CMonitor* pMonitor, float a, const Vector2D
const float SHADOWSCALE = std::clamp(*PSHADOWSCALE, 0.f, 1.f);
// scale the box in relation to the center of the box
- const Vector2D NEWSIZE = Vector2D { fullBox.width, fullBox.height } * SHADOWSCALE;
- fullBox.width = NEWSIZE.x;
- fullBox.height = NEWSIZE.y;
+ const Vector2D NEWSIZE = Vector2D{fullBox.width, fullBox.height} * SHADOWSCALE;
+ fullBox.width = NEWSIZE.x;
+ fullBox.height = NEWSIZE.y;
if (PSHADOWOFFSET->x < 0) {
fullBox.x += PSHADOWOFFSET->x;
@@ -104,16 +105,15 @@ void CHyprDropShadowDecoration::draw(CMonitor* pMonitor, float a, const Vector2D
fullBox.y += ((m_vLastWindowSize.y + 2.0 * *PSHADOWSIZE) - NEWSIZE.y) / 2.0;
}
- m_seExtents = { { m_vLastWindowPos.x - fullBox.x - pMonitor->vecPosition.x + 2,
- m_vLastWindowPos.y - fullBox.y - pMonitor->vecPosition.y + 2},
- { fullBox.x + fullBox.width + pMonitor->vecPosition.x - m_vLastWindowPos.x - m_vLastWindowSize.x + 2,
- fullBox.y + fullBox.height + pMonitor->vecPosition.y - m_vLastWindowPos.y - m_vLastWindowSize.y + 2} };
+ m_seExtents = {{m_vLastWindowPos.x - fullBox.x - pMonitor->vecPosition.x + 2, m_vLastWindowPos.y - fullBox.y - pMonitor->vecPosition.y + 2},
+ {fullBox.x + fullBox.width + pMonitor->vecPosition.x - m_vLastWindowPos.x - m_vLastWindowSize.x + 2,
+ fullBox.y + fullBox.height + pMonitor->vecPosition.y - m_vLastWindowPos.y - m_vLastWindowSize.y + 2}};
fullBox.x += offset.x;
fullBox.y += offset.y;
if (fullBox.width < 1 || fullBox.height < 1)
- return; // don't draw invisible shadows
+ return; // don't draw invisible shadows
g_pHyprOpenGL->scissor((wlr_box*)nullptr);
@@ -134,7 +134,7 @@ void CHyprDropShadowDecoration::draw(CMonitor* pMonitor, float a, const Vector2D
glClearStencil(0);
glClear(GL_STENCIL_BUFFER_BIT);
glDisable(GL_STENCIL_TEST);
- return; // prevent assert failed
+ return; // prevent assert failed
}
g_pHyprOpenGL->renderRect(&windowBox, CColor(0, 0, 0, 0), ROUNDING * pMonitor->scale);
diff --git a/src/render/decorations/CHyprDropShadowDecoration.hpp b/src/render/decorations/CHyprDropShadowDecoration.hpp
index ee8c09a5..3a7ffb2b 100644
--- a/src/render/decorations/CHyprDropShadowDecoration.hpp
+++ b/src/render/decorations/CHyprDropShadowDecoration.hpp
@@ -3,25 +3,25 @@
#include "IHyprWindowDecoration.hpp"
class CHyprDropShadowDecoration : public IHyprWindowDecoration {
-public:
+ public:
CHyprDropShadowDecoration(CWindow*);
virtual ~CHyprDropShadowDecoration();
virtual SWindowDecorationExtents getWindowDecorationExtents();
- virtual void draw(CMonitor*, float a, const Vector2D& offset);
+ virtual void draw(CMonitor*, float a, const Vector2D& offset);
- virtual eDecorationType getDecorationType();
+ virtual eDecorationType getDecorationType();
- virtual void updateWindow(CWindow*);
+ virtual void updateWindow(CWindow*);
- virtual void damageEntire();
+ virtual void damageEntire();
-private:
- SWindowDecorationExtents m_seExtents;
+ private:
+ SWindowDecorationExtents m_seExtents;
- CWindow* m_pWindow = nullptr;
+ CWindow* m_pWindow = nullptr;
- Vector2D m_vLastWindowPos;
- Vector2D m_vLastWindowSize;
+ Vector2D m_vLastWindowPos;
+ Vector2D m_vLastWindowSize;
}; \ No newline at end of file
diff --git a/src/render/decorations/CHyprGroupBarDecoration.cpp b/src/render/decorations/CHyprGroupBarDecoration.cpp
index c3f9047e..b67051bb 100644
--- a/src/render/decorations/CHyprGroupBarDecoration.cpp
+++ b/src/render/decorations/CHyprGroupBarDecoration.cpp
@@ -5,9 +5,7 @@ CHyprGroupBarDecoration::CHyprGroupBarDecoration(CWindow* pWindow) {
m_pWindow = pWindow;
}
-CHyprGroupBarDecoration::~CHyprGroupBarDecoration() {
-
-}
+CHyprGroupBarDecoration::~CHyprGroupBarDecoration() {}
SWindowDecorationExtents CHyprGroupBarDecoration::getWindowDecorationExtents() {
return m_seExtents;
@@ -28,10 +26,10 @@ void CHyprGroupBarDecoration::updateWindow(CWindow* pWindow) {
// we draw 3px above the window's border with 3px
const auto PBORDERSIZE = &g_pConfigManager->getConfigValuePtr("general:border_size")->intValue;
- m_seExtents.topLeft = Vector2D(0, *PBORDERSIZE + 3 + 3);
+ m_seExtents.topLeft = Vector2D(0, *PBORDERSIZE + 3 + 3);
m_seExtents.bottomRight = Vector2D();
- m_vLastWindowPos = pWindow->m_vRealPosition.vec() + WORKSPACEOFFSET;
+ m_vLastWindowPos = pWindow->m_vRealPosition.vec() + WORKSPACEOFFSET;
m_vLastWindowSize = pWindow->m_vRealSize.vec();
}
@@ -59,7 +57,8 @@ void CHyprGroupBarDecoration::updateWindow(CWindow* pWindow) {
}
void CHyprGroupBarDecoration::damageEntire() {
- wlr_box dm = {m_vLastWindowPos.x - m_seExtents.topLeft.x, m_vLastWindowPos.y - m_seExtents.topLeft.y, m_vLastWindowSize.x + m_seExtents.topLeft.x + m_seExtents.bottomRight.x, m_seExtents.topLeft.y};
+ wlr_box dm = {m_vLastWindowPos.x - m_seExtents.topLeft.x, m_vLastWindowPos.y - m_seExtents.topLeft.y, m_vLastWindowSize.x + m_seExtents.topLeft.x + m_seExtents.bottomRight.x,
+ m_seExtents.topLeft.y};
g_pHyprRenderer->damageBox(&dm);
}
@@ -77,7 +76,7 @@ void CHyprGroupBarDecoration::draw(CMonitor* pMonitor, float a, const Vector2D&
const int BARW = (m_vLastWindowSize.x - PAD * (barsToDraw - 1)) / barsToDraw;
- int xoff = 0;
+ int xoff = 0;
for (int i = 0; i < barsToDraw; ++i) {
wlr_box rect = {m_vLastWindowPos.x + xoff - pMonitor->vecPosition.x + offset.x, m_vLastWindowPos.y - m_seExtents.topLeft.y - pMonitor->vecPosition.y + offset.y, BARW, 3};
@@ -87,10 +86,10 @@ void CHyprGroupBarDecoration::draw(CMonitor* pMonitor, float a, const Vector2D&
scaleBox(&rect, pMonitor->scale);
- static auto *const PGROUPCOLACTIVE = &g_pConfigManager->getConfigValuePtr("dwindle:col.group_border_active")->intValue;
- static auto *const PGROUPCOLINACTIVE = &g_pConfigManager->getConfigValuePtr("dwindle:col.group_border")->intValue;
+ static auto* const PGROUPCOLACTIVE = &g_pConfigManager->getConfigValuePtr("dwindle:col.group_border_active")->intValue;
+ static auto* const PGROUPCOLINACTIVE = &g_pConfigManager->getConfigValuePtr("dwindle:col.group_border")->intValue;
- CColor color = m_dwGroupMembers[i] == g_pCompositor->m_pLastWindow ? CColor(*PGROUPCOLACTIVE) : CColor(*PGROUPCOLINACTIVE);
+ CColor color = m_dwGroupMembers[i] == g_pCompositor->m_pLastWindow ? CColor(*PGROUPCOLACTIVE) : CColor(*PGROUPCOLINACTIVE);
color.a *= a;
g_pHyprOpenGL->renderRect(&rect, color);
diff --git a/src/render/decorations/CHyprGroupBarDecoration.hpp b/src/render/decorations/CHyprGroupBarDecoration.hpp
index 7addd15e..eebfe99d 100644
--- a/src/render/decorations/CHyprGroupBarDecoration.hpp
+++ b/src/render/decorations/CHyprGroupBarDecoration.hpp
@@ -4,27 +4,27 @@
#include <deque>
class CHyprGroupBarDecoration : public IHyprWindowDecoration {
-public:
+ public:
CHyprGroupBarDecoration(CWindow*);
virtual ~CHyprGroupBarDecoration();
virtual SWindowDecorationExtents getWindowDecorationExtents();
- virtual void draw(CMonitor*, float a, const Vector2D& offset);
+ virtual void draw(CMonitor*, float a, const Vector2D& offset);
- virtual eDecorationType getDecorationType();
+ virtual eDecorationType getDecorationType();
- virtual void updateWindow(CWindow*);
+ virtual void updateWindow(CWindow*);
- virtual void damageEntire();
+ virtual void damageEntire();
-private:
- SWindowDecorationExtents m_seExtents;
+ private:
+ SWindowDecorationExtents m_seExtents;
- CWindow* m_pWindow = nullptr;
+ CWindow* m_pWindow = nullptr;
- Vector2D m_vLastWindowPos;
- Vector2D m_vLastWindowSize;
+ Vector2D m_vLastWindowPos;
+ Vector2D m_vLastWindowSize;
- std::deque<CWindow*> m_dwGroupMembers;
+ std::deque<CWindow*> m_dwGroupMembers;
}; \ No newline at end of file
diff --git a/src/render/decorations/IHyprWindowDecoration.cpp b/src/render/decorations/IHyprWindowDecoration.cpp
index 5a7ccd9a..1271a712 100644
--- a/src/render/decorations/IHyprWindowDecoration.cpp
+++ b/src/render/decorations/IHyprWindowDecoration.cpp
@@ -2,6 +2,4 @@
#include "../../Window.hpp"
-IHyprWindowDecoration::~IHyprWindowDecoration() {
-
-}
+IHyprWindowDecoration::~IHyprWindowDecoration() {}
diff --git a/src/render/decorations/IHyprWindowDecoration.hpp b/src/render/decorations/IHyprWindowDecoration.hpp
index d4062c1d..093b99cf 100644
--- a/src/render/decorations/IHyprWindowDecoration.hpp
+++ b/src/render/decorations/IHyprWindowDecoration.hpp
@@ -2,7 +2,8 @@
#include "../../defines.hpp"
-enum eDecorationType {
+enum eDecorationType
+{
DECORATION_NONE = -1,
DECORATION_GROUPBAR,
DECORATION_SHADOW
@@ -17,16 +18,16 @@ class CWindow;
class CMonitor;
interface IHyprWindowDecoration {
-public:
+ public:
virtual ~IHyprWindowDecoration() = 0;
virtual SWindowDecorationExtents getWindowDecorationExtents() = 0;
- virtual void draw(CMonitor*, float a, const Vector2D& offset = Vector2D()) = 0;
+ virtual void draw(CMonitor*, float a, const Vector2D& offset = Vector2D()) = 0;
- virtual eDecorationType getDecorationType() = 0;
+ virtual eDecorationType getDecorationType() = 0;
- virtual void updateWindow(CWindow*) = 0;
+ virtual void updateWindow(CWindow*) = 0;
- virtual void damageEntire() = 0;
+ virtual void damageEntire() = 0;
}; \ No newline at end of file