Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
47e6271
expo: add a scroll overview
vaxerski Oct 4, 2025
a129df5
fixes
vaxerski Oct 4, 2025
1272202
add scroll thing
vaxerski Oct 12, 2025
8404954
add default_zoom
vaxerski Oct 12, 2025
4afd874
add live previews
vaxerski Oct 12, 2025
4d73cd8
Hyprscrolling: (feat) Add `togglefit` command (#498)
awerty-noob Oct 6, 2025
83dc104
Hyprscrolling: Fix colresize breaking the centered position (#502)
awerty-noob Oct 7, 2025
f9dc9c6
enhancement: add ws select, numbers & respective config
dskvr Oct 9, 2025
72cd83f
bugfix: animate outter gaps on selection
dskvr Oct 10, 2025
faa6b41
bugfix: workspace ids, 10 -> 0, >10 -> alpha
dskvr Oct 10, 2025
46ca043
add kbselecti and update README
dskvr Oct 10, 2025
ab24e83
add shadow configuration and workspace rounding
dskvr Oct 10, 2025
01fa336
bugfix: fix config signature mismatch
dskvr Oct 10, 2025
59fd042
bugfix: use native border api
dskvr Oct 10, 2025
156ee09
chore: remove problematic shadow impl
dskvr Oct 10, 2025
32f309c
enhance: more readable README
dskvr Oct 11, 2025
774e2c4
enhance: Conslidate README.md and consistent formatting
dskvr Oct 11, 2025
dcc929b
feature: mouse hover support, more flexible/simple border config with…
dskvr Oct 12, 2025
51e3495
bugfix: using single workspace_method config and standardize config c…
dskvr Oct 12, 2025
63cd656
docs: update README.md with updated/new configs
dskvr Oct 12, 2025
ee9d204
feature: multi-monitor support
dskvr Oct 12, 2025
e53ec75
bugfix: workspace_method parser
dskvr Oct 12, 2025
7f0fa3e
bugfix: multimonitor support requires a global named variable that ov…
dskvr Oct 12, 2025
731f766
hotfix: hyprexpo_workspace_method -> workspace_method (global)
dskvr Oct 12, 2025
ea8966a
rebase to upstream
dskvr Oct 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion hyprexpo/ExpoGesture.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ void CExpoGesture::begin(const ITrackpadGesture::STrackpadGestureBegin& e) {
m_firstUpdate = true;

if (!g_pOverview)
g_pOverview = std::make_unique<COverview>(g_pCompositor->m_lastMonitor->m_activeWorkspace);
g_pOverview = makeShared<COverview>(g_pCompositor->m_lastMonitor->m_activeWorkspace);
else {
g_pOverview->selectHoveredWorkspace();
g_pOverview->setClosing(true);
Expand Down
38 changes: 38 additions & 0 deletions hyprexpo/IOverview.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#pragma once
#include <hyprland/src/helpers/memory/Memory.hpp>

class IOverview {
public:
IOverview() = default;
virtual ~IOverview() = default;

virtual void render() = 0;
virtual void damage() = 0;
virtual void onDamageReported() = 0;
virtual void onPreRender() = 0;

virtual void setClosing(bool closing) = 0;

virtual void resetSwipe() = 0;
virtual void onSwipeUpdate(double delta) = 0;
virtual void onSwipeEnd() = 0;

virtual void close() = 0;
virtual void selectHoveredWorkspace() = 0;

virtual void fullRender() = 0;

// Keyboard navigation interface (grid-specific, may be no-op in scroll)
virtual void onKbMoveFocus(const std::string& dir) = 0;
virtual void onKbConfirm() = 0;
virtual void onKbSelectNumber(int num) = 0;
virtual void onKbSelectToken(int visibleIdx) = 0;

bool blockOverviewRendering = false;
bool blockDamageReporting = false;

PHLMONITORREF pMonitor;
bool m_isSwiping = false;
};

inline SP<IOverview> g_pOverview;
18 changes: 15 additions & 3 deletions hyprexpo/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,19 @@ else
EXTRA_FLAGS =
endif

all:
$(CXX) -shared -fPIC $(EXTRA_FLAGS) main.cpp overview.cpp ExpoGesture.cpp OverviewPassElement.cpp -o hyprexpo.so -g `pkg-config --cflags pixman-1 libdrm hyprland pangocairo libinput libudev wayland-server xkbcommon` -std=c++2b -Wno-narrowing
CXXFLAGS = -shared -fPIC -g -std=c++2b -Wno-c++11-narrowing -Wno-narrowing
INCLUDES = `pkg-config --cflags pixman-1 libdrm hyprland pangocairo libinput libudev wayland-server xkbcommon`
LIBS = `pkg-config --libs pangocairo`

SRC = main.cpp overview.cpp ExpoGesture.cpp OverviewPassElement.cpp scrollOverview.cpp
TARGET = hyprexpo.so

all: $(TARGET)

$(TARGET): $(SRC)
$(CXX) $(CXXFLAGS) $(EXTRA_FLAGS) $(INCLUDES) $^ -o $@ $(LIBS)

clean:
rm ./hyprexpo.so
rm -f ./$(TARGET)

.PHONY: all clean
Loading