Commit graph

366 commits

Author SHA1 Message Date
sandwich
156ee09dc8 chore: remove problematic shadow impl 2025-10-12 20:21:30 +02:00
sandwich
59fd042f6e bugfix: use native border api 2025-10-12 20:21:30 +02:00
sandwich
01fa336897 bugfix: fix config signature mismatch 2025-10-12 20:21:30 +02:00
sandwich
ab24e83c3e add shadow configuration and workspace rounding 2025-10-12 20:21:30 +02:00
sandwich
46ca043fbe add kbselecti and update README 2025-10-12 20:21:30 +02:00
sandwich
faa6b41a73 bugfix: workspace ids, 10 -> 0, >10 -> alpha 2025-10-12 20:21:13 +02:00
sandwich
72cd83f8be bugfix: animate outter gaps on selection 2025-10-12 20:21:01 +02:00
sandwich
f9dc9c62ee enhancement: add ws select, numbers & respective config 2025-10-12 20:21:01 +02:00
Ralph Zhou
83dc104773 Hyprscrolling: Fix colresize breaking the centered position (#502) 2025-10-12 20:19:36 +02:00
Ralph Zhou
4d73cd8023 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-12 20:19:36 +02:00
4afd874ea9
add live previews 2025-10-12 13:47:26 +01:00
84049540a0
add default_zoom 2025-10-12 13:33:46 +01:00
12722021b2
add scroll thing 2025-10-12 13:30:44 +01:00
a129df58e4
fixes 2025-10-04 18:32:04 +01:00
47e62717ea
expo: add a scroll overview 2025-10-04 15:04:29 +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
James Satterfield
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
James Satterfield
984669ebb5
scrolling: centerOrFit with 'focus' when first or last column already focused. (#447) 2025-08-11 19:04:40 +01:00
willoh
833af8e8c6
hyprbars: remove init notification (#446) 2025-08-09 20:05:09 +01:00
James Satterfield
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
James Satterfield
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
Fridella
827a1815b8
all: chase hyprland opengl render fn changes (#437) 2025-08-01 13:53:41 +02:00
bf310cda4a
csgo-vk-fix: allow more configs 2025-07-30 18:51:27 +02:00
Malix
14f9a44479 enhance: official plugins links 2025-07-20 19:17:44 +03:00
Primvin
d4bf99e722
hyprwinwrap: add position and coordinates options (#427) 2025-07-18 23:47:19 +02:00
d723e5b153
scrolling: make movewindowto l promote on the left edge
fixes #421
2025-07-11 19:24:48 +02:00
7c4fe5ed42
scrolling: guess window's stack position on movement
ref #421
2025-07-11 19:22:28 +02:00
033fc54c3c
scrolling: keep inner gap if there are windows to the side
ref #421
2025-07-11 19:06:23 +02:00
2c93c08880
scrolling: pad first invisible window by 1px to avoid ffm grabbing it 2025-07-11 19:00:15 +02:00