390 Commits

Author SHA1 Message Date
fef398ed5e all: update Makefiles to allow CXX, CXXFLAGS, LDFLAGS env vars (#584) 2026-01-06 19:11:41 +01:00
0b356053fa scrolling: don't leave configuredWidths empty. (#585) 2026-01-05 20:10:50 +01:00
a084d66d7d hyprscrolling: Allow follow_focus to honour fit_method (#571)
This requries a debounce to prevent subsequent events triggering very
quickly, resulting in scrolling right to the beginning or end of the
row.
2026-01-03 21:54:28 +01:00
eeb8d6c534 hyprscrolling: remove notification on successfull load (#582)
Generating notification on failure only.
2026-01-03 21:12:05 +01:00
7f94d2c09f hyprpm: add pin for 0.53.1 2026-01-02 22:26:53 +01:00
7a85211123 hyprpm: add a 0.53.0 pin 2026-01-01 22:54:24 +01:00
c2fe049150 expo: Chase new gesture param disableInhibit (#581)
* chore: update flake.lock

* fix: handle disableInhibit param for gesture

* style: apply clang-format
2026-01-01 15:58:26 +01:00
64b7c2dff7 scrolling: fix outer gaps 2025-12-30 13:58:24 +01:00
d7b67e8f4b trails: chase hyprland v0.53.0 2025-12-29 16:03:28 +01:00
3e29d68d5a expo: fix a few crash points
fixes #494
2025-12-20 19:13:54 +00:00
9b2b156197 all: chase hyprland 2025-12-19 16:24:43 +00:00
e058ea23b8 all: chase hyprland 2025-12-08 15:22:46 +00:00
fc76c5674a scrolling: chase hyprland 2025-12-06 11:23:55 +00:00
4ccb444d94 bars: fix readme 2025-12-04 22:53:55 +00:00
391818ec83 hyprpm: add pin for 0.52.2 2025-12-03 23:02:35 +00:00
8f796f7cec hyprbars: update readme 2025-12-02 00:49:49 +00:00
be3fac629c hyprscrolling: fix layoutmsg move -col (#558) 2025-12-01 16:47:05 +00:00
84659a2502 all: chase hyprland for 40d8fa8 (#549)
* hyprexpo: Fixes for 40d8fa8

* csgo-vulkan-fix: Fixes for 40d8fa8

* hyprbars: Fixes for 40d8fa8

I am not entirely sure whether I was supposed to use fullWindowFocus()
or rawWindowFocus() in hyprbars/barDeco.cpp at line 220

* xtra-dispatchers: Fixes for 40d8fa8

I am not entirely sure whether I was supposed to use fullWindowFocus()
or rawWindowFocus() in xtra-dispatchers/main.cpp at lines 47 and 106

* hyprscrolling: Fixes for 40d8fa8

A lot of repeated code can be removed if it's safe to store
`Desktop::focusState()`, `Desktop::focusState()->monitor()` and
`Desktop::focusState()->window()` at the top of the
`CScrollingLayout::findBestNeighbor` function.
This change requires further review as I don't know if any of those
change during this function so I didn't wanna introduce any unexpected
issues.
I am not entirely sure whether I was supposed to use fullWindowFocus()
or rawWindowFocus() in xtra-dispatchers/main.cpp at lines 786, 789 and
1344
2025-11-26 22:10:33 +00:00
7ffc0b314e hyprscrolling: fixed moveWindowTo behavior (#546)
* fixed incorrect index

* fixed broken conditional

* undoing idxForHeight change
2025-11-23 00:07:34 +00:00
57961d69ad hyprbars: fix bar_color and title_color rules (#545) 2025-11-21 13:43:38 +00:00
a70775789c scrolling: fixed +conf and -conf logic in colresize (#542) 2025-11-20 14:09:52 +00:00
a75241d5e4 hyprpm: add pins for 0.52.0
fixes https://github.com/hyprwm/hyprland-plugins/issues/544
2025-11-20 14:03:04 +00:00
793d24e6b5 all: Window rules V3 Fixes (#541) 2025-11-19 19:07:46 +00:00
1bc5b0253f hyprbars: fix windowrules 2025-11-18 16:50:09 +00:00
a2bf2df934 hyprbars: restrict keyword to cat 2025-11-16 00:52:13 +00:00
8c1212e96b hyprfocus: add only_on_monitor_change option (#538) 2025-11-15 19:13:23 +00:00
befb267080 hyprfocus: fix fullscreen windows not restoring original state (#537) 2025-11-12 23:13:28 +00:00
be3cbf60b4 CMakeLists.txt: remove version option (#535) 2025-11-11 20:41:24 +00:00
bbb8d2cb0e hyprexpo: Chase Hyprland (#529)
* chore: update flake.lock

* hyprexpo: chase hyprland cursor refactor
v0.52.0
2025-11-02 20:31:25 +00:00
7a07883c4d CMakeLists.txt: add global/root CMakeLists (#524) 2025-10-30 13:34:27 +02:00
e689220b17 xtra-dispatchers: chase hyprland 2025-10-28 12:15:10 +00:00
81f6d14265 all: chase hyprland 2025-10-23 20:54:45 +01:00
f1b4524442 hyprpm: add 0.51 pins 2025-10-23 20:51:58 +01:00
a5a6f93d72 scrolling: implement swapWindow
fixes #511
2025-10-17 00:56:45 +01:00
bff3b23ad1 hyprexpo: correct workspace wrap logic in center picker for named workspaces (#509)
Ensure the center workspace picker correctly wraps and displays contiguous workspaces when using named or negative workspace IDs. The previous condition if (i > 0 && currentID <= firstID) prevented wrapping, so when the selected workspace was at the high end users saw empty slots after the center instead of the next active workspaces. Replace the condition with if (i > 0 && currentID == firstID) so the picker continues filling the visible slots with the next available workspaces and preserves screen real estate.

Behavioral notes
- Named workspaces that use negative IDs (for example -1337 and below) no longer break the picker layout.
- The picker now shows as many contiguous active workspaces as possible around the selected workspace instead of leaving trailing empty cards.
- The change is local to the center picker loop logic and preserves existing ordering and selection rules.
2025-10-15 14:43:01 +02:00
25a5d1327e hyprbars: fix touch handling (#505) 2025-10-13 12:44:31 +01:00
f6dd103dfb scrolling: Remove redundant workspace check (#506) 2025-10-11 02:39:56 +02:00
5cf12b0fa1 Hyprscrolling: Fix colresize breaking the centered position (#502) 2025-10-07 23:00:02 +02:00
7be897d6ae Hyprscrolling: (feat) Add togglefit command (#498)
* Hyprscrolling: (feat) Add `togglefit` command

* fix multi-workspaces bugs and focus change bug.

* fix center to fitcol bug

* remove "fullyvisible" logic to simplify the logic
2025-10-06 12:00:49 +01:00
4d940a10af Hyprscrolling: fix window size disturbance on focus change (#492) 2025-09-26 15:58:09 +02:00
1a4a2dce90 hyprscrolling: add config example in README (#491) 2025-09-26 09:16:25 +03:00
d0d8e8dd5b all: fix build with clang (#489)
Fixes #279
2025-09-25 17:17:00 +02:00
6913b8d506 Hyprscrolling: feat: improve focus stability with last-focused memory (#484)
* Hyprscrolling: feat: improve focus stability

* style and functions choose change

1. replace `std::find` and `std::min_element` with `ranges`
2. replace `push_back` with `emplace_back`
3. add `{}` for nested `if`

* flake.lock: Update

* chore: chase nixpkgs

---------

Co-authored-by: Amadej Kastelic <amadejkastelic7@gmail.com>
2025-09-25 15:31:05 +02:00
1e3fa62428 Hyprscrolling: fix layoutmsg fit visible incorrectly include window at the border (#487) 2025-09-23 20:00:29 +02:00
1cfcc6fe6a chore: chase nixpkgs 2025-09-22 12:18:57 +03:00
4717ecd3c4 flake.lock: Update 2025-09-22 12:18:57 +03:00
c8b2be3502 Hyprscrolling: feat: Add column movement commands (swapcol, movecoltoworkspace) (#481)
* hyprscrolling: feat(layout) Add `swapcol` command for cyclic column swapping

This commit introduces a new layout message, `swapcol`, to allow users
to efficiently reorder entire columns within the scrolling layout like
niri.

The `swapcol` command accepts two arguments:
- `l`: Swaps the current column with the one to its left.
- `r`: Swaps the current column with the one to its right.

A key feature of this implementation is its cyclic (wrap-around)
behavior. When the leftmost column is swapped left, it moves to the end
of the list. Similarly, swapping the rightmost column right moves it to
the beginning. This provides a fluid and powerful way to rearrange the
workspace without getting stuck at the edges.

The README has also been updated to document this new functionality.

Example usage in `hyprland.conf`:
# Swap current column with the one to the left
bind = $mainMod, H, layoutmsg, swapcol l
# Swap current column with the one to the right
bind = $mainMod, L, layoutmsg, swapcol r

* Hyprscrolling: feat(layout) feat(layout): Add `movecoltoworkspace` command

This commit introduces the `movecoltoworkspace` layout message, enabling
users to move an entire column of windows to another workspace with a
single command.

This feature preserves the internal layout, window arrangement, and
relative sizes within the column upon moving. It robustly handles moving
to any workspace, including empty ones, by ensuring the target workspace
is set to the 'scrolling' layout before the move.

This addresses a key aspect of the feature request in issue #431,
specifically the need for commands to move columns between workspaces.

The README has been updated to document this new command.

Example usage:
# Move current column to workspace 2
bind = $mainMod, SHIFT, 2, layoutmsg, movecoltoworkspace 2
# Move current column to the next workspace
bind = $mainMod, SHIFT, L, layoutmsg, movecoltoworkspace +1

* Hyprscrolling: fix: remove `{}` from short `if, for`s

* Hyprscrolling: style: remove `{}` for short `if`. Add it back from `for`.

* Hyprscrolling: clang-format
2025-09-20 17:33:04 +02:00
ebb4040cac Hyprscrolling: focus left/right moves to the best vertical neighbour (#482)
* Hyprscrolling: feat: focus left/right moves to the best vertical neighbour (closes #473)

When moving focus horizontally between columns we now pick the window
whose vertical span overlaps the current window the most.
If no overlap exists we fall back to the top-most window of the target
column.
This makes `layoutmsg focus l/r` behave intuitively in multi-column
setups: from the bottom-left terminal you land on the bottom-left
terminal of the neighbouring column instead of always jumping to the
top.

* Hyprscrolling: fix: remove `{}` from short ifs in `findBestNeighbor()`

* Hyprscrolling: fix: Simplify nested ifs
2025-09-19 00:04:18 +02:00
5ff379f4e5 hyprscrolling: Ensure maximized state is restored from full-screen (#479)
When a window is in full-screen mode (mode 2), dispatching `fullscreen
1` (maximized mode) fails to resize the window correctly, leaving it at
full-screen dimensions.

This occurs because the `applyNodeDataToWindow` function contains an
early `return` when it detects the window is in a fullscreen state. This
check does not account for the `ignoreFullscreenChecks` flag, which is
specifically set in `fullscreenRequestForWindow` to handle this exact
transition.

The condition is updated to `if (PWINDOW->isFullscreen() &&
!data->ignoreFullscreenChecks)`, allowing the function to proceed and
apply the correct maximized geometry when toggling from a full-screen
state.
v0.51.0
2025-09-13 16:37:08 +02:00
27e1ad9042 expo: improve closing gesture 2025-09-13 00:59:41 +01:00