Commit graph

381 commits

Author SHA1 Message Date
53f9568ac9
stuff 2025-12-08 15:36:07 +00:00
7ea302b877
expo: add a scroll overview 2025-12-08 15:24:40 +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
mwahstache
be3fac629c
hyprscrolling: fix layoutmsg move -col (#558) 2025-12-01 16:47:05 +00:00
nnra
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
mwahstache
7ffc0b314e
hyprscrolling: fixed moveWindowTo behavior (#546)
* fixed incorrect index

* fixed broken conditional

* undoing idxForHeight change
2025-11-23 00:07:34 +00:00
Khalid
57961d69ad
hyprbars: fix bar_color and title_color rules (#545) 2025-11-21 13:43:38 +00:00
mwahstache
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
nnra
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
Eleonora
8c1212e96b
hyprfocus: add only_on_monitor_change option (#538) 2025-11-15 19:13:23 +00:00
Eleonora
befb267080
hyprfocus: fix fullscreen windows not restoring original state (#537) 2025-11-12 23:13:28 +00:00
carlo711
be3cbf60b4
CMakeLists.txt: remove version option (#535) 2025-11-11 20:41:24 +00:00
Mathis H.
bbb8d2cb0e
hyprexpo: Chase Hyprland (#529)
* chore: update flake.lock

* hyprexpo: chase hyprland cursor refactor
2025-11-02 20:31:25 +00:00
carlo711
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
João P. Santos
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
Zach DeCook
25a5d1327e
hyprbars: fix touch handling (#505) 2025-10-13 12:44:31 +01:00
Liam Hanrahan
f6dd103dfb
scrolling: Remove redundant workspace check (#506) 2025-10-11 02:39:56 +02:00
Ralph Zhou
5cf12b0fa1
Hyprscrolling: Fix colresize breaking the centered position (#502) 2025-10-07 23:00:02 +02:00
Ralph Zhou
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
Ralph Zhou
4d940a10af
Hyprscrolling: fix window size disturbance on focus change (#492) 2025-09-26 15:58:09 +02:00
Sunong2008
1a4a2dce90
hyprscrolling: add config example in README (#491) 2025-09-26 09:16:25 +03:00
VuaTech
d0d8e8dd5b
all: fix build with clang (#489)
Fixes #279
2025-09-25 17:17:00 +02:00
Ralph Zhou
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
Ralph Zhou
1e3fa62428
Hyprscrolling: fix layoutmsg fit visible incorrectly include window at the border (#487) 2025-09-23 20:00:29 +02:00
Amadej Kastelic
1cfcc6fe6a chore: chase nixpkgs 2025-09-22 12:18:57 +03:00
Amadej Kastelic
4717ecd3c4 flake.lock: Update 2025-09-22 12:18:57 +03:00
Ralph Zhou
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
Ralph Zhou
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
Ralph Zhou
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.
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
James Satterfield
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
Stephen Haberman
2ced5d8ea7
README: Explain hyprpm version pinning (#468)
Clarify installation instructions for hyprland-plugins.
2025-09-01 21:52:15 +02:00
skrmc
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
James Satterfield
bf843fc6ad
scrolling: Add warpCursorTo for all layout move/focus operations (#461) 2025-08-27 22:05:58 +02:00