summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* splashes: update splashesVaxry2026-04-301-42/+15
|
* config/workspace-rules: support modifying persistent and monitor (#14217)shezdy2026-04-306-17/+17
| | | | | * workspace rules: support modifying persistent and monitor * support modifying isDefault
* monitor: fix centered floating windows off-screen in special workspace (#14203)Zebra27112026-04-301-1/+1
| | | Signed-off-by: Zebra2711 <zebra2711t@gmail.com>
* config/actions: fix misuse of ActionResult's error type (#14221)Vaxry2026-04-302-24/+23
|
* binds: add an auto_consuming flag (#13919)MightyPlaza2026-04-306-9/+41
|
* config/lua: cannot disable animation (#14215)phanium2026-04-301-2/+2
| | | | | | | * config/lua: cannot disable animation seems regression from 9ee5ff1f7181cc5fa575f1702802ccb78c21ba12 * typing typo (auto generated by cmake)
* config/lua: expand properties in the workspace object (#14194)ImperishableSecret2026-04-295-34/+188
|
* desktop/window: refactor over fullscreen stateVaxry2026-04-2914-33/+113
|
* desktop/window: expand hidden into proper statesVaxry2026-04-2911-48/+120
|
* desktop/window: add alpha container for alpha calculationsVaxry2026-04-299-76/+323
|
* main: improve error reporting during initialization in main.cpp (#14181)Niko Savola2026-04-291-12/+15
|
* animations: add springs (#14171)Vaxry2026-04-294-49/+128
|
* config: refresh window states on border_size changes (#14201)Freevatar2026-04-291-1/+1
|
* config/lua: fix unbind behavior (#14199)Vaxry2026-04-293-16/+20
|
* workspace: remove deprecated and unused members (#14198)ImperishableSecret2026-04-282-15/+0
| | | Clean up CWorkspace by removing deprecated m_defaultFloating, m_defaultPseudo, and unused m_wlrCoordinateArr
* config/lua: add ExpressionVec2, allow using a table for vec2 rules (#14197)Vaxry2026-04-2815-81/+312
|
* desktop/rule: cleanup inheritance, use templates to avoid dupVaxry2026-04-287-88/+94
|
* desktop/rule: use Numeric for number parsingVaxry2026-04-282-30/+85
|
* desktop/layerRule: use variants for storage internallyVaxry2026-04-285-38/+124
| | | | Improves storage: less dynamic parsing, immediate config errors, faster.
* desktop/windowRule: use variants for storage internallyVaxry2026-04-288-229/+482
| | | | Improves storage: less dynamic parsing, immediate config errors, faster.
* config/errors: Report and categorize errors properly for actions (#14192)Vaxry2026-04-2828-402/+563
| | | | Makes all errors categorized, some not displayed, some displayed. All errors can be obtained after hl.dispatch()
* config/actions: remove spammy errors and make them silentVaxry2026-04-271-33/+33
| | | | those are just annoying
* seat: fix dropped wl_keyboard.enter after stale keyboardFocusResource (#14143)Psilocybin782026-04-271-25/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * seat: fix dropped wl_keyboard.enter after stale keyboardFocusResource CSeatManager::setKeyboardFocus's leave loop was gated on m_state.keyboardFocusResource (a WP<CWLSeatResource>). That weak pointer can expire between focus cycles — most reliably via the explicit `.reset()` in KeybindManager::passKeys for XWayland targets, but also in practice after certain wl_seat rebind sequences from toolkit-level churn. When the WP is expired, the leave loop's `if (m_state.keyboardFocusResource)` is false, the loop is skipped, and no wl_keyboard.leave is sent for the previous focus. The old client's CWLKeyboardResource keeps m_currentSurface pointing at its old surface. On the next focus back to that surface, CWLKeyboardResource::sendEnter's per-keyboard dedup fires (`if (m_currentSurface == surface) return;`) and the enter is silently dropped. Net result: client believes it's still focused, compositor routes keys via m_state.keyboardFocusResource which now points somewhere else, typed keystrokes silently go to a different window. A mouse drag resyncs because InputManager::processMouseDownNormal → refocus() → mouseMoveUnified(refocus=true) → rawWindowFocus(…, foundSurface) takes a different path that forces the leave/enter pair through. Reported and reproducible in discussion #14141. Fix: iterate PROTO::seat->m_keyboards (the global owning list) in the leave loop and let sendLeave()'s own m_currentSurface gate decide whether each keyboard needs the event. sendLeave() and the sendMods(0,…) that precedes it are already gated on m_currentSurface being set, so iterating every keyboard is a no-op for any keyboard that wasn't on the previous focus — identical semantics to the old code in the healthy case, correct in the broken case. Enter loop unchanged: it's driven by surf->client() which is a cached wl_client* on the surface resource, stable across cycles. Verified against the repro in #14141 (two wev instances cycled via `hyprctl dispatch focuswindow`). Before the fix both windows get stuck in a "I am focused" state after ~3 cycles. After the fix leave/enter pair each dispatch cleanly. * seat: apply same leave-loop fix to setPointerFocus Identical failure mode to the keyboard case in the previous commit: setPointerFocus's leave loop is gated on m_state.pointerFocusResource, which can expire between focus changes. When it does, the leave is skipped, the previously-focused client's wl_pointer m_currentSurface stays stuck, and the next sendEnter's per-pointer dedup silently drops the enter. sendPointerButton also early-returns on `if (!m_state.pointerFocusResource)`, so the visible symptom is "a click on a taskbar / dock / menu button doesn't register after a layer-shell Overlay surface appeared or disappeared, until the user moves the mouse." Motion re-syncs focus via InputManager::mouseMoveUnified → setPointerFocus with a fresh resource, at which point clicks work again. Fix is the same: iterate PROTO::seat->m_pointers and let sendLeave's m_currentSurface gate decide. No-op for pointers not on the old surface.
* logging: update uri of debug log in ConfigManager to reflect change in wiki ↵Michael Tennant2026-04-271-1/+1
| | | | (#14185)
* NotificationOverlay: take reserved space into account (#14184)fazzi2026-04-271-6/+12
|
* xdg-foreign-v2: Keep invalid imported objects alive (#14166)Freevatar2026-04-272-25/+52
| | | | | * xdg-foreign-v2: validate toplevel surfaces correctly before exporting or parenting * xdg-foreign-v2: Keep invalid imported objects alive
* desktop/view: fix SIGABRT in CWindow::onUnmap when monitor is expired (#14148)xxyangyoulin2026-04-271-2/+5
| | | | | | m_monitor is a WP<CMonitor> (weak_ptr). In onUnmap(), calling m_monitor->activeWorkspaceID() without .lock() causes SIGABRT when the monitor has been destroyed before the XWayland unmap event arrives, e.g. when a window on a special workspace is unmapped.
* keybindMgr: use legacy behavior for single-key binds on lua (#14176)Vaxry2026-04-271-2/+18
|
* config/lua: fix window object to selector logicVaxry2026-04-261-1/+1
|
* input: fix device configs for pointer devicesVaxry2026-04-261-1/+1
|
* config/legacy: translate default window args properlyVaxry2026-04-261-2/+2
| | | | fixes some dispatchers
* config/lua: don't pop up an error if no target was found (#14175)Vaxry2026-04-262-29/+29
|
* monitor: set format back after failing DS activation (#14168)fazzi2026-04-261-1/+10
| | | | | we do run m_lastScanout.reset(), but m_lastScanout might sometimes not be set. cache format from before attempting DS, and set back to it on activation failure.
* renderer: swizzle on shm screencopy (#14167)fazzi2026-04-261-14/+10
| | | | | | in ds format (XBGR8888) the swizzle was pretty much being ignored. It would cause screenshots taken within DS, or apps which use screencopy like hyprpicker, wayfreeze, and still, to come out with the red and blue channels flipped.
* config/legacy: default to active window for movetoworkspace dispatchers (#14170)3ventic2026-04-261-2/+2
|
* config/lua: init lua config manager, use lua if available (#13817)Vaxry2026-04-26202-6122/+14604
| | | Adds a new lua config manager, which will automatically be used if there is a lua config present.
* internal: include setByUser in CConfigManager::getConfigValue (#14155)Damien Trala2026-04-261-1/+1
|
* screenshare/frame: set m_copied after shm copy succeeds (#14165)Vaxry2026-04-251-0/+1
|
* opengl/shadow: fix shadow offset rendering (#14156)Vaxry2026-04-245-36/+74
|
* opengl: minor egl changes (#14147)Tom Englund2026-04-232-6/+10
| | | | | | | | | | | | | * opengl: explicitly set stencil mask set stencil mask to 0xFF to allow writes, when done set it back to 0x00 to become readonly, avoids potential mishaps. also at the end set the stencil op to GL_KEEP and it will certainly be read only until next time its changed. * opengl: use modern glClearBufferfv over glClear use more modern glClearBufferfv instead, and also clear the entire buffer if a clearpass has been added but no renderdamage exist.
* workspace: fix missing null access guard (#14119)ssareta2026-04-221-0/+3
|
* xwayland: handle transient read errors in selection transfer (#14135)Visal Vijay2026-04-211-0/+5
|
* keybinds: fix missing z-order update on floating toggle (#14100)Conner2026-04-201-0/+3
|
* input: implement follow_mouse_shrink (#13707)Mihail Costea2026-04-206-4/+25
| | | | | | | | | | | | | | | | | * input: implement follow_mouse_shrink Add a new config option `input:follow_mouse_shrink` (INT, 0-300, default 0) that shrinks inactive window hitboxes by the specified number of pixels for focus detection purposes. This creates a dead zone in gaps between windows where moving the cursor will not trigger a focus change. The shrink only applies to inactive (non-focused) windows and only during mouse-move focus checks (follow_mouse = 1). Click and scroll interactions are unaffected — clicking on a window in the shrunk area still works normally once the window is focused. Closes #9973 * tests: add integration test for follow_mouse_shrink
* errorOverlay: modernize, refactor, use GPU rendering (#14122)Vaxry2026-04-1914-319/+359
| | | | | | | Improves the overlay's rendering: - GPU accelerated - supports gradients - wraps - cleaner code a bit
* hyprctl: add hw cursor flagVaxry2026-04-181-4/+7
|
* renderer: simplify shadows (#14047)UjinT342026-04-188-139/+78
|
* protocols/compositor: fix presentFeedback being blockedVaxry2026-04-181-3/+0
| | | | ref #14105
* algo/scroll: add center for centering the current col (#14059)Vaxry2026-04-171-0/+11
| | | ref #14027
* debug/overlay: optimize rendering, cleanup and nicetify (#14097)Vaxry2026-04-168-333/+617
| | | | optimizes the rendering, drops direct cairo, fixes up api. Also improves the visuals etc of the overlay