373 Commits

Author SHA1 Message Date
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
c1d5db968c expo: skip first update for smoother gesture 2025-09-13 00:35:11 +01:00
8ba54e332c expo: fix crash in dispatcher
fixes #475
2025-09-13 00:34:02 +01:00
51b8f80183 expo: fix gesture crash 2025-09-11 21:27:43 +01:00
44343bf690 expo: unload gesture on exit 2025-09-11 21:17:56 +01:00
5086bd28f4 expo: add new gesture 2025-09-11 21:13:16 +01:00
b8d6d36961 hyprscrolling: respect focus_fit_method when moving windows and fix left column centering (#460)
* scrolling: add SWorkspaceData::centerOrFitCol and use it in CScrollingLayout::moveWindowTo. Remove clamp on leftOffset in SWorkspateData::recalculate to fix left column centering.

* Omit this-> for member functions

* rerun checks
2025-09-02 11:47:59 +02:00
2ced5d8ea7 README: Explain hyprpm version pinning (#468)
Clarify installation instructions for hyprland-plugins.
2025-09-01 21:52:15 +02:00
376d08bbbd all: chase hyprland (#462)
* hyprexpo: update workspace animation calls

* fix: update include path of animation manager
2025-08-29 11:58:09 +02:00
bf843fc6ad scrolling: Add warpCursorTo for all layout move/focus operations (#461) 2025-08-27 22:05:58 +02:00
ee66b49fda scrolling: SCollumnData::up/down Break out of the loop after the first swap (#457) 2025-08-27 18:25:38 +02:00
c1ddebb423 scrolling: add note about layout 2025-08-14 16:58:41 +02:00
984669ebb5 scrolling: centerOrFit with 'focus' when first or last column already focused. (#447) 2025-08-11 19:04:40 +01:00
833af8e8c6 hyprbars: remove init notification (#446) 2025-08-09 20:05:09 +01:00
c8dc6f3d54 Hyprscrolling: Respect general:no_focus_fallback config when using layoutmsg focus (#443)
* Respect general:no_focus_fallback config when using layoutmsg focus

* Remove braces from short ifs
2025-08-06 23:58:46 +02:00
bdd56d2c56 Hyprscrolling: Make resizeactive keyboard binds work for vertical window resizing (#442)
* Get resizeactive keyboard binds working. Set corner based on window having previous or next neighbors in the column. Negate delta.y when not the top window.

* Rename mod_delta modDelta. Remove braces on short ifs.
2025-08-06 23:58:40 +02:00
ba1823c787 hyprpm: add pins for 0.50.x
fixes #439
2025-08-01 19:16:34 +02:00
827a1815b8 all: chase hyprland opengl render fn changes (#437) 2025-08-01 13:53:41 +02:00