Commit graph

856 commits

Author SHA1 Message Date
Zynix
c2bed4103c
monitor: keep workspace monitor bindings on full reconnect (#13384)
When all monitors disconnect, non-active workspaces could migrate to the wrong output after reconnect. Preserve workspace ownership and re-apply assigned monitor bindings on connect.
2026-02-28 21:49:47 +00:00
Vaxry
b90c61c04f
compositor: fix focus edge detection (#13425)
fixes edge detection, making it more relaxed and intuitive
2026-02-28 18:53:26 +00:00
Vaxry
d0583e1761
compositor: fix calculating x11 work area (#13347)
in a multimon scenario, due to our positioning hacks, and due to the fact work area is a rect anyways, likely wont make sense
2026-02-25 22:44:35 +00:00
Vaxry
b88813c7ef
event: refactor HookSystem into a typed event bus (#13333)
Refactors the old HookSystem into a typed event bus with clear
separation,
discovery and types.
2026-02-22 23:30:10 +00:00
Ikalco
b4ee4674f9
protocols: implement image-capture-source-v1 and image-copy-capture-v1 (#11709)
Implements the new screencopy protocols
2026-02-22 12:30:11 +00:00
Vaxry
723870337f
layout: rethonk layouts from the ground up (#12890)
Rewrites layouts to be much smaller, and deal with much less annoying
BS. Improves the overall architecture, unifies handling of pseudotiling,
and various other improvements.
2026-02-21 21:30:39 +00:00
garypippi
e80f705d76
compositor: guard null view() in getWindowFromSurface (#13255) 2026-02-13 23:52:15 +00:00
ekhadley
95c8f8b299
input: fix edge grab resize logic for gaps_out > 0 (#13144) 2026-02-01 14:29:35 +00:00
Szwagi
cbeb6984e7
renderer: fix mouse motion in VRR (#12665) 2026-01-31 13:37:01 +00:00
William Wernert
f9fb24577a
animation: reset tick state on session activation (#13024)
After suspend/wake, the animation tick timer state (m_lastTickValid,
m_tickScheduled) could be stale, causing framerate drops when blur is
enabled. This was introduced in 2b0fd417 which changed the animation
tick timing mechanism.

Reset the tick state when the session becomes active to ensure a clean
state for the animation system.
2026-01-21 15:54:02 +00:00
UjinT34
e0cf88809d
protocols/cm: Fix image description info events (#12781)
* fix image description info events

* always send some target primaries

* set edid values as target primaries and luminances

* init monitor image description

* set default luminances for tf

* fix BT1886 luminances

* fix mastering values and overrides

* set maxCLL & maxFALL

* typo

* add FALL & CLL to preferred HDR image description

* fix ref luminances
2026-01-13 16:44:36 +01:00
Chris Naporlee
8d03fcc8d7
protocols/syncobj: fix DRM sync obj support logging (#12946) 2026-01-12 18:28:08 +01:00
UjinT34
6d3b17ee83
render/cm: various updates, remove old protocols (#12693)
* fix named primaries

* default to gamma22

* mark mastering primaries as supported

* remove xx-cm and frog support

* immutable primaries and image descriptions

* clang-format
2025-12-27 18:01:46 +01:00
Vaxry
b9bef69554
Desktop/history: Move history to desktop (#12676) 2025-12-20 22:16:13 +00:00
Vaxry
6175ecd4c4
debug: move to hyprutils' logger (#12673) 2025-12-18 17:23:24 +00:00
Vaxry
f88deb928a
compositor: warn on start via a log about start-hyprland 2025-12-17 19:26:25 +00:00
Vaxry
7098558420
desktop/layer: store aboveFs property and use that 2025-12-16 16:32:37 +00:00
Mason Davy
6b491e4d6b
core/compositor: remove a monitor reset on cleanup (#12645)
I've tested this change with different modes from the monitor default
and validated that dpms still works, at least on my machine. If there's
a good reason why this exists, feel free to correct me, but this helps
get us closer to a flicker-free experience.
2025-12-15 21:37:48 +00:00
Vaxry
09e195d1f2
compositor: fix isPointOnReservedArea 2025-12-13 13:55:49 +00:00
Vaxry
fd5e790d08
compositor: return nullptr when cursor is outside of a maximized windows' box 2025-12-13 13:55:48 +00:00
Tom Englund
69db0bcae6
compositor: early return on no monitor (#12637)
getMonitorFromVector can return nullptr on empty m_monitors, as such is
the case when the compositor is going down and a surface exist. return
early in vectorToWindowUnified if that happends.
2025-12-12 12:47:56 +00:00
Tom Englund
8dfdcfb353
compositor: dont try to focus unmapped window (#12629)
* compositor: dont try to focus unmapped window

if lastwindow is unmapped it hits getWindowInDirection and nullptr
derefs window->m_workspace. and coredumps. triggered by dual monitor and
one client on each surface with a combination of animation and
killactive / movefocus keybind.

* keybindmgr: use newly added aliveAndVisible()

use newly added aliveAndVisible() over visible()
2025-12-11 23:59:47 +00:00
Vaxry
5dd224805d
desktop/view: use aliveAndVisible for most things (#12631) 2025-12-11 16:29:26 +00:00
Vaxry
920353370b
desktop: cleanup, unify desktop elements as views (#12563) 2025-12-08 15:04:40 +00:00
Vaxry
016eb7a23d
start: init start-hyprland and safe mode (#12484) 2025-12-05 15:40:03 +00:00
Vaxry
9264436f35
desktop: rewrite reserved area handling + improve tests (#12383) 2025-12-05 14:16:22 +00:00
Vaxry
93e5e92b0a
crashReporter: cleanup code (#12534)
various code cleanups, reorders, move off of global NS
2025-12-03 16:01:45 +00:00
UjinT34
3cf0280b11
renderer: add quirks:prefer_hdr to fix HDR activation for some clients (#12436) 2025-12-03 01:30:43 +00:00
Vaxry
2cadc8abab
welcome: init welcome manager (#12409)
---------

Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
2025-12-02 22:26:43 +00:00
Nikolai Nechaev
40d8fa8491
compositor: Configurable behavior when window to be focused conflicts with fullscreen (#12033)
Renames `misc:new_window_takes_over_fullscreen` into
`misc:on_focus_under_fullscreen` and implements the following behavior:

- By default, when a tiling window is being focused on a workspace where
  a fullscreen/maximized window exists, respect
  the `misc:on_focus_under_fullscreen` config variable.
2025-11-25 22:44:26 +00:00
Vaxry
c2670e9ab9
windowrules: rewrite completely (#12269)
Reworks the window rule syntax completely

---------

Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
2025-11-17 18:34:02 +00:00
Vaxry
e616e595ae
i18n: init localization for ANR, Permissions and Notifications (#12316)
Adds localization support for en, it, pl and jp

---------

Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
Co-authored-by: Aaron Blasko <blaskoazzolaaaron@gmail.com>
2025-11-16 14:51:14 +00:00
Hiroki Tagato
43527d3634
internal: fix crash at startup on FreeBSD (#12298)
Hyprland at the latest commit crashes at starting up on FreeBSD with
SIGSEGV. Checking the validity of g_pXWayland->m_wm before calling
updateWorkArea() appears to fix the issue.
2025-11-13 22:06:34 +00:00
Vaxry
061981201d
core: qtutils -> guiutils (#12231)
* core: qtutils -> guiutils

* nix: qtutils -> guiutils

* flake.lock: update

---------

Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
2025-11-07 15:48:13 +00:00
Alvaro Parker
c757fd375c
compositor: block parent window interaction when modal dialog children window is open (#12057) 2025-11-06 00:06:31 +00:00
jmanc3
ce9787b3f4
xwayland: set _NET_WORKAREA property (#12148) 2025-10-29 11:24:34 +00:00
Vaxry
05aa4e1c54
compositor: check for monitor layout issues post rule apply
fixes #12108
2025-10-26 13:52:09 +00:00
Vaxry
ec9a72d9fb
workspaces: fix persistence with no monitor specified (#11807) 2025-09-23 21:08:30 +02:00
Vaxry
4fc95d646d
renderer: asynchronously load background tex (#11749)
Bumps required hyprgraphics to 0.1.6

---------

Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
2025-09-18 22:10:30 +02:00
Vaxry
81bf4eccba
input: Add fully configurable trackpad gestures (#11490)
Adds configurable trackpad gestures
2025-08-28 11:20:29 +02:00
Tom Englund
b329ea8e96
syncobj: use rendernode for timelines (#11087)
* syncobj: use rendernode for timelines

use rendernode for timelines instead of the drmfd, some devices dont
support to use the drmfd for this.

* opengl: use rendernode if available

use rendernode if available for CHyprOpenglImpl

* MesaDRM: use the m_drmRenderNodeFD if it exist

try use the rendernode we got from AQ if it exist.

* linuxdmabuf: use rendernode if available

use the rendernode if available already from AQ

* syncobj: prefer rendernode over displaynode

prefer the rendernode over the displaynode, and log a error if
attempting to use the protocol without explicit sync support on any of
the nodes.

* syncobj: check support on both nodes always

check support on both nodes always so it can be used later for
preferring rendernode if possible in syncobj protocol.

* syncobj: remove old var in non linux if else case

remove old m_bDrmSyncobjTimelineSupported from non linux if else case
that will fail to compile on non linux. the nodes sets support by
default to false, and if non linux it wont check for support and set it
to true.

* build: bump aq requirement

bump to 0.9.3 where rendernode support got added.

* flake.lock: update

* renderer: glfinish on software renderer

software renderers apparently bug out on implicit sync, use glfinish as
with nvidia case on implicit paths.

* flake.lock: update

---------

Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
2025-08-24 22:32:13 +02:00
UjinT34
0d45b277d6
internal: Solitary clients with single subsurface & verbose solitary/tearing/DS checks (#11228)
Adds more verbose checks for various conditional rendering mechanisms
2025-08-22 18:24:25 +01:00
vaxerski
50a242f16a config: add dim_modal
fixes #11486
2025-08-21 14:59:20 +02:00
vaxerski
e8731883a5 compositor: fix new workspace being lost in moveWorkspaceToMonitor
with the move to refcounting workspaces, createNewWorkspace would've lost the ref

fixes #11385
2025-08-17 20:33:04 +02:00
vaxerski
60d769a899 internal: unify VT getting 2025-08-14 17:13:23 +02:00
Kamikadze
beee22a95e
refactor: Use new hyprutils casts (#11377) 2025-08-14 15:44:56 +01:00
Arnaud
aa6a78f0a4
internal: Ensure unique identifiers for persistent workspaces (#11409) 2025-08-13 08:45:34 +01:00
Vaxry
66a6ef3859
core: disable esync for non-linux kernels
ref #10437, BSD doesn't support timeline fds
2025-07-29 17:55:56 +02:00
Vaxry
abe29647ae
monitor: fix crash on mutating workspace vec
fixes #11236
2025-07-28 22:08:05 +02:00
Vaxry
c63d0003a1
core: fix workspace persistence tracking (#11239) 2025-07-27 18:46:23 +02:00