Commit Graph

3965 Commits

Author SHA1 Message Date
Jan Beich 4842eb83b4
helpers: make shm_open() portable after 8bcccf9f0f (#6471)
https://pubs.opengroup.org/onlinepubs/9699919799/functions/shm_open.html
https://man.freebsd.org/shm_open/2
https://www.man7.org/linux/man-pages/man3/shm_open.3.html
2024-06-13 14:20:14 +02:00
Tom Englund e6d10539af
core: fix a few small memory leaks on exit (#6470)
* renderer: add destructor and destroy event source

add destructor and destroy the event source.
one less leak on exit of compositor reported by asan.

* compositor: cleanup eventloop on exit

destruct hyprctl to release the event sources, and properly cleanup the
event loop on exit of compositor. less leaks on exit reported by asan

* threadmgr: destroy event source on destruction

destroy the event source on destruction.

* eventloopmgr: reset eventloopmgr on exit aswell

reset the eventloopmanager on exit of compositor and free the leaking
last idle frame on monitor destroy.
2024-06-13 12:08:02 +02:00
Yang, Ying-chao a54f98c203
virtualkeyboard: check if VirtualKeyboard is valid before accessing client. (#6460)
This fixes crash when restarting fcitx (#6378)
2024-06-13 11:33:47 +02:00
Vaxry a9d7befc36 formats: fixup for legacy_renderer builds 2024-06-12 23:29:24 +02:00
Vaxry 0e18da8467 foreign-toplevel: fixup output resource finding
fixes #6457
2024-06-12 23:28:52 +02:00
Vaxry 18ee9ece9c layershell: minor fixes to re-mapping of layers
ref #2012
2024-06-12 22:57:06 +02:00
Ikalco 38132ffaf5
renderer: properly software lock cursors with zoom_factor (#6434) 2024-06-12 19:28:52 +02:00
Vaxry a99f314106 input: fallback to main surface if not found on window
fixes #6421
2024-06-12 18:39:52 +02:00
Vaxry 9d7d5ec3c8 seatmgr: fix missing nullcheck in updateActiveKeyboardData
sometimes we may set a keyboard that's about-to-be-deleted, we might as well check for that

additionally avoid setting null keyboards altogether
2024-06-12 17:03:12 +02:00
Vaxry c7e85e26f7 seat: fixup touch event handling
fixes #6353
2024-06-12 16:49:26 +02:00
Vaxry 1bae19ce85 datadevice: only send actions for ver >= 3
fixes #6444
2024-06-12 16:16:27 +02:00
Vaxry f687105eff compositor: update suspended states on moveworkspacetomonitor
fixes #6417
2024-06-12 16:02:25 +02:00
MightyPlaza 32283ed706
groupbar: fix groupbar position rounding (#6433)
modified:   src/render/decorations/CHyprGroupBarDecoration.cpp
2024-06-12 15:56:35 +02:00
Moritz G 8412ffcc42
keybinds: fix bindm (#6429)
* fixed mouse dispatcher

* no brakets

* move command up
2024-06-11 23:02:29 +02:00
MightyPlaza b6bf4afb48
layer: don't close special ws when restoring focus (#6424)
modified:   src/Compositor.cpp
modified:   src/Compositor.hpp
modified:   src/managers/input/InputManager.cpp
2024-06-11 22:56:35 +02:00
Moritz G e1b05f8eaf
binds: Add description to key binds (#6358)
---------

Co-authored-by: Yusuf Duran <firatyusuf.d@gmail.com>
2024-06-11 19:49:54 +02:00
outfoxxed 21b9e31bf4
layershell: Fix keyboard focus grabs (#4968) (#6394) 2024-06-11 19:35:30 +02:00
Maximilian Seidler 1c388e52fb
session-lock: fix refocus after unlocking (#6423) 2024-06-11 17:18:51 +02:00
Vaxry 8c64a4bad7
core: move to hyprutils for utils (#6385)
* core: move to hyprutils for utils

Nix: add hyprutils dep

* Meson: add hyprutils dep

* flake.lock: update

---------

Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
2024-06-11 17:17:45 +02:00
outfoxxed 809820921d
sessionLock: fix focus not being tied to mouse (#6414) 2024-06-11 17:11:15 +02:00
outfoxxed 90d0097716
input: fix input regions being ignored on ls-es (#6413) 2024-06-11 17:01:25 +02:00
zakk4223 b17381eb81
groupbar: Don't apply monitor scale twice to groupbar text (#6411) 2024-06-11 17:00:50 +02:00
Jan Beich 811429bfd4
wayland: consistently check mmap error after 6967a31450 (#6402)
mmap() returns MAP_FAILED on error, not nullptr.
2024-06-10 22:31:03 +02:00
zakk4223 cef6aad28f
groupbar: Fix window title rendering (#6392) 2024-06-10 12:20:18 +02:00
outfoxxed 89a3c90613
wlr-foreign-toplevel: fix fullscreen failing and add output support (#6360)
* wlr-foreign-toplevel: fix fullscreen failing and add output support

* fix for core protocol rewrite
2024-06-10 12:16:38 +02:00
memchr b16af45c4a
build: ProtocolManager missing header LIstener.hpp (#6391) 2024-06-10 12:15:25 +02:00
Vaxry 1423707dbe output: remove wl_output globals for mirrored displays
ref #6387
2024-06-10 00:06:42 +02:00
Vaxry 722b846ac5 egl: assume implicit modifiers are available for old drivers
fixes #6367
2024-06-09 21:10:46 +02:00
Vaxry 4168b8c17b seat: fix pointer frame events not being sent correctly
fixes #6384
2024-06-09 17:23:28 +02:00
Mykola Perehudov bf75723f27
helpers: fix misuse of syscalls in sd namespace (#6379) 2024-06-09 09:43:39 +02:00
Vaxry 9994b73ad0 buffer: track asynchronous buffers and don't release them until unref
synchronous buffers are read instantly and we can release them, but asynchronous ones have to be locked until they are unref'd from .current to avoid reading from a buffer after .release()
2024-06-08 17:27:56 +02:00
void0red d724556b7e
input: fix virtual devices not updating capabilities (#6366)
Signed-off-by: void0red <void0red@gmail.com>
2024-06-08 17:15:57 +02:00
memchr 7789caad39
build: include missing header: "debug/Log.hpp" in Format.cpp (#6365) 2024-06-08 16:25:01 +02:00
Vaxry 3fb079a2a3 renderer: allow custom uv for surface no-blur passes 2024-06-08 16:16:43 +02:00
Vaxry 211353dc34 core: verify surface roles on creation of objects 2024-06-08 12:03:47 +02:00
Vaxry 10e02076b1 wayland: fix invalid wl_output_mode dimensions sent 2024-06-08 11:50:44 +02:00
Vaxry 5b6d54cae0 xdg_shell: ignore outdated ack_configure events 2024-06-08 10:57:37 +02:00
Vaxry 6967a31450
wayland/core: move to new impl (#6268)
* wayland/core/dmabuf: move to new impl

it's the final countdown
2024-06-08 10:07:59 +02:00
Vaxry c31d9ef417 xdg_shell: fix nested xdg_positioner calculations
ref #6240
2024-06-07 20:24:09 +02:00
Vaxry 6b6b02c27a seat: send events to all bound seats for a client
some apps are legitimately braindead and bind wl_seat a bazillion times and expect the events to be sent to all of them

ref #6159
2024-06-07 20:24:06 +02:00
John M. Harris, Jr 40ce17bbbd
gestures: Add gestures:workspace_swipe_min_fingers option (#6342)
When gestures:workspace_swipe_min_fingers is enabled,
gestures:workspace_swipe_fingers is considered to be the minimum
number of fingers required to swipe.

This behavior is more similar to sway and macOS's default behavior.

For example, this allows you to set workspace_swipe_fingers to 3,
but swipe with 4 or more fingers instead of 3.
2024-06-07 19:54:08 +02:00
memchr 41e1147dfc
input: add cursor:persistent_warps to maintain relative position within a window (#6338)
Allows the cursor to return to its last relative position within a window when the window is refocused.

Allows the cursor to retain its relative position within a window when the window is swapped, moved, changed workspace, added to or removed from groups.

controlled with cursor:persistent_warps
2024-06-07 19:52:15 +02:00
Vaxry 9bc00897fc xdg_shell: improve xdg_positioner slide behavior
ref #6240
2024-06-07 19:46:51 +02:00
Vaxry d6337146bb xdg_shell: improve xdg_positioner resize calculations
ref #6240
2024-06-07 18:42:38 +02:00
John M. Harris, Jr 429cff340d
hookSystem: Make needsDeadCleanup volatile (#6356)
The value of needsDeadCleanup would be clobbered after longjmp,
having an undefined value.
2024-06-07 18:31:27 +02:00
Tom Englund af5f24929d
core: free more memory on destruction (#6348)
* pointermgr: add destructor to state and free buf

if the pointer has a buffer set it wont be freed upon destruction, make
asan more happy by adding a destructor and wlr_buf_unlock it on exit.

* cursormgr: free the animation timer event source

properly free the animation timer event source on destruction.

* compositor: free the critsig event source on exit

properly free the critical signal event source on exit.

* popup: clang format style

clang format.
2024-06-06 20:27:09 +02:00
giskard c95845b148
log: log with local timezone (#6331)
* log: log with local timezone

* log: backward compatability for clang 17 with libc++
2024-06-05 18:30:46 +02:00
phonetic112 82099fd1c0
hyprctl: Allow setting name for custom/headless outputs (#6319) 2024-06-05 18:26:38 +02:00
Vaxry 155fe6f165 popup: minor safety improvements 2024-06-05 16:53:49 +02:00
memchr fefa55d406
build: fix non-pch build (#6337) 2024-06-05 10:42:44 +02:00
Agent00Ming d0a224a491
seat: discrete round away from zero + high res scrolling (#6317)
* Discrete scrolling round away from zero
e.deltaDiscrete can be multiples of 30 instead of the usual 120 causing
the rounded value to be 0 when too small causing erratic scrolling.

* Send value120 alongside discrete
Fixes sensitivity issues for clients that support value120 axis events
2024-06-03 22:47:02 +02:00
Vaxry 5517cc506b xwayland: don't destroy server client
this potentially leaks, but avoids a UAF

ref #6323
2024-06-03 21:13:38 +02:00
Vaxry 0ac0f32671 toplevelexport: avoid locking software cursors during render
this may trigger a render begin/end and fuck up the pass

fixes #6277
2024-06-03 21:10:31 +02:00
Vaxry b30c7125d7 window: avoid nullptr deref on monitor in box helpers
fixes #6321
2024-06-03 21:09:18 +02:00
Vaxry 3fd6c1b30e layout: fix centering of new floating windows
ref #6154
2024-06-03 18:46:20 +02:00
Tom Englund eaecf7db14 core: fix a few asan reported issues and a coredump on exit (#6285)
* xwayland: add destructor to CXWM and free resource

the wl_event_resource was running upon destruction of the compositor
causing a null pointer segfault in onX11Event so ensure the event is
removed upon destruction, also free the memory allocated by
xcb_errors_context_new and finally call xcb_disconnect on the connection
to free the fd and its memory.

* hyprctl: dont leak the fd on destruction

add a destructor and properly free the fd on destruction

* eventloop: add destructor and free event source

properly free the wl_event_source upon destruction.
2024-06-03 18:46:20 +02:00
wouter@wouterbijlsma.nl e08195d240 Fix initial xdg-decoration toplevel decoration mode negotiation
Clients using zxdg_decoration_manager_v1::get_toplevel_decoration may
expect a receiving a zxdg_toplevel_decoration_v1::configure event to
determine the initial decoration mode, without having to go through a
zxdg_toplevel_decoration_v1::set_mode request. Hyprland was not sending
this event, resulting in unwanted decorations being drawn.

Specifically, clients using libdecor, e.g. applications using recent
GLFW, would draw GTK decorations with artefacts. This change fixes
these.
2024-06-02 23:11:55 +02:00
Vaxry 66acdfe2ad seat: don't send keymap on empty device 2024-06-02 18:38:36 +02:00
shezdy 0ebb43c1a3
renderer: fix xwayland solitary rechecks (#6295) 2024-06-01 20:45:30 +02:00
obivan df6ebe358b
pointer: Include monitor scaling in HW hotspot calculation (#6283) 2024-05-31 12:38:52 +02:00
Vaxry a60c7283e6 xwayland: verify new xsurf is valid in prop reads
fixes #6250
2024-05-29 09:34:25 +02:00
giskard ebf258788e
config: add tag dispacther and window rule (#6211) 2024-05-28 23:37:24 +02:00
Ikalco 73b133d015
hyprctl: Make setcursor better (support XCursor themes, give fail message) (#6097)
* add support for changing to X cursor themes

* use new hyprcursor abi for options

* remove unneeded struct
2024-05-28 23:35:18 +02:00
Connor Wong 722d537a91
windows: make new_window_takes_over_fullscreen use the new window's workspace (#6263)
* fix new_window_takes_over_fullscreen behavior

* missed a few things
2024-05-27 22:45:32 +02:00
AERDU 506d0c06e6
compositor: change monitor focus when no_warps is enabled (#6260)
fixes focus between monitors when moving using directions with no_warps = true
2024-05-27 22:45:14 +02:00
Flafy 546a486bab
hyprctl: add delimiter to hyprctl batch command (#6261)
adds a delimiter of 3 newlines to separate different command outputs
2024-05-27 22:31:35 +02:00
Jan Beich db5d39a66f meson: add more xcb-* dependencies after addd3e7f1a
ld: error: undefined symbol: xcb_icccm_get_wm_hints_from_reply
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::readProp(CSharedPointer<CXWaylandSurface>, unsigned int, xcb_get_property_reply_t*))

ld: error: undefined symbol: xcb_icccm_get_wm_size_hints_from_reply
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::readProp(CSharedPointer<CXWaylandSurface>, unsigned int, xcb_get_property_reply_t*))

ld: error: undefined symbol: xcb_errors_get_name_for_major_code
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::handleError(xcb_value_error_t*))

ld: error: undefined symbol: xcb_errors_get_name_for_minor_code
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::handleError(xcb_value_error_t*))

ld: error: undefined symbol: xcb_errors_get_name_for_error
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::handleError(xcb_value_error_t*))

ld: error: undefined symbol: xcb_xfixes_id
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::gatherResources())
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::gatherResources())

ld: error: undefined symbol: xcb_composite_id
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::gatherResources())

ld: error: undefined symbol: xcb_res_id
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::gatherResources())
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::gatherResources())

ld: error: undefined symbol: xcb_xfixes_query_version
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::gatherResources())

ld: error: undefined symbol: xcb_xfixes_query_version_reply
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::gatherResources())

ld: error: undefined symbol: xcb_res_query_version
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::gatherResources())

ld: error: undefined symbol: xcb_res_query_version_reply
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::gatherResources())

ld: error: undefined symbol: xcb_render_query_pict_formats
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::getRenderFormat())

ld: error: undefined symbol: xcb_render_query_pict_formats_reply
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::getRenderFormat())

ld: error: undefined symbol: xcb_render_query_pict_formats_formats_iterator
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::getRenderFormat())

ld: error: undefined symbol: xcb_render_pictforminfo_next
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::getRenderFormat())

ld: error: undefined symbol: xcb_errors_context_new
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::CXWM())

ld: error: undefined symbol: xcb_composite_redirect_subwindows
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::CXWM())

ld: error: undefined symbol: xcb_xfixes_select_selection_input
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::initSelection())

ld: error: undefined symbol: xcb_render_create_picture
>>> referenced by XWM.cpp
>>>               src/Hyprland.p/xwayland_XWM.cpp.o:(CXWM::setCursor(unsigned char*, unsigned int, Vector2D const&, Vector2D const&))

ld: error: too many errors emitted, stopping now (use --error-limit=0 to see all errors)
2024-05-27 12:24:37 +03:00
Gabriel Ford 553232a3e4
hyprctl: Add Config Flag to `hyprctl systeminfo` (#6160) 2024-05-25 22:46:07 +02:00
Vaxry addd3e7f1a
xwayland: move to hyprland impl (#6086) 2024-05-25 22:43:51 +02:00
Vaxry 90f262aada pointer: remove dividing hotspot by scale
fixes #6117
2024-05-25 20:43:38 +02:00
Can ce17961aad
keybinds: Added new dispatcher (sendshortcut) (#6174) 2024-05-24 20:58:26 +02:00
Vaxry 6d67b84469 monitor: avoid UB on undefined auto dir
ref #6217
2024-05-24 20:56:53 +02:00
thejch 0d6eae0523
pointer: add back nvidia hardware cursor quirks (#6220) 2024-05-24 20:50:22 +02:00
Vaxry 52684b7d90 window: fix invalid env buffer size in getEnv 2024-05-24 20:40:15 +02:00
Tom Englund 4e42107d25
pointermgr: ensure compositor exist on destroy (#6216)
on exit of hyprland the CMonitor destroy signal comes after the
compositor has been destructed, causing a heap use after free. add if
check to ensure compositor exist and isnt shutting down when its
triggered.
2024-05-23 21:19:14 +02:00
Alessio Molinari eea0a6a704
internal: Replace monitor rule when disabling head. (#6136)
Closes #5978
2024-05-23 21:15:31 +02:00
System64 255272ea18
debug: Add ARM GPU info (#6212)
Added a simple way to get basic info about the GPU on ARM based systems
2024-05-23 18:04:39 +02:00
Ming-Chuan df80fbf706
tablet: fix mapping when mapped region is specified (#6206)
When `region_size` is set in the config (non-empty
`boundBox`), cursor is mapped to wrong coordinate because
`CBox::translate` mutates `TAB->boundBox`, making all subsequent coordinate
calculations wrong.

This also fixes the edge case where user sets `region_position` but
not `region_size`.
2024-05-23 13:52:32 +02:00
shezdy 25b9446949
internal: save previous workspace before change (#6202) 2024-05-23 13:01:12 +02:00
Vaxry 62401d5b3f screencopy: use a simple renderer for frame passing 2024-05-23 00:42:16 +02:00
Vaxry 3775776a07 window: guard monitor in bounding box calculations
fixes #6190
2024-05-22 22:37:16 +02:00
shezdy 155ae3721c
keybinds: Add option to disable window direction monitor fallback (#6182)
* add monitor fallback option

* format
2024-05-22 21:51:46 +02:00
giskard 93fea89043
renderer: render fonts with pango, add global `font_family` config option (#6138) 2024-05-22 10:09:36 +02:00
Vaxry baef55da1d xdg-shell: fixup positioner behavior with slide and resize
if sliding and resizing, include the slide in the resize to avoid off-screen surfaces.

fixes #6150
2024-05-21 14:50:33 +02:00
Vaxry f8857e6072 input: find surface pos correctly when mouse drag is active
fixes #6144
2024-05-18 21:20:01 +01:00
Gabriel Ford c21a5a9340
layout: Fix shrinking pseudotile windows. (#6143) 2024-05-18 19:28:48 +01:00
Vaxry 2ead1fd221 virtual-keyboard: emit event before finishing keyboard
ref #6123
2024-05-17 20:07:33 +01:00
Vaxry 49485ba36a pointer: damage in software mode on cursor image changes
fixes #6126
2024-05-17 20:04:17 +01:00
Vaxry fe23d2b639 window: verify suppress flags in onUpdateState
ref #6108
2024-05-17 19:54:05 +01:00
Vaxry 9518cec833 popup: clip input region to surface size
fixes #6125
2024-05-17 19:43:56 +01:00
Vaxry 23cd4c7998 seat: update keymap/repeat info on keymap events from keebs
fixes #6114
2024-05-17 19:28:33 +01:00
Tuur Vanhoutte 0cb8fbe18e
error: Add option to change position of HyprError bar (#3241) (#6111) 2024-05-17 19:06:51 +01:00
Vaxry f21b6fe576 tablet: avoid null deref on an empty cursor set
fixes#6116
2024-05-17 14:51:06 +01:00
Vaxry abbe71d26d pointer: don't update hw cursors on disabled displays 2024-05-16 19:34:36 +01:00
Agent00Ming 3ac0e7ead1
seat: Send discrete event when axis source is scroll wheel (#6103)
modified:   src/managers/SeatManager.cpp
	modified:   src/managers/input/InputManager.cpp

Co-authored-by: Agent_00Ming <agent00ming9366@gmail.com>
2024-05-16 13:30:55 +01:00
Gabriel Ford d693c44836
keybinds: add keybind combos and add Left and Right mod distinction. (#5966) 2024-05-16 11:48:30 +01:00
zakk4223 ca0833c9ed
decoration: Stacked group tabs (#5886)
* Stacked group tabs

* Fix index when creating groupbar title textures

* Changes for stacked dnd

* formatting

* Don't remove internal horizontal padding when calculating stacked bar
width
2024-05-16 11:38:10 +01:00
Vaxry de9798fcf9 configmgr: shadow exec rules when window is unmapped
fixes #6091
2024-05-16 00:55:55 +01:00
Vaxry 7e8c0b7f30 seat: send axis_stop events after axis events
fixes #6090
2024-05-15 23:13:51 +01:00
Vaxry 9eec4cb670 sysd: add missing header
ref #6094
2024-05-15 23:01:50 +01:00
JManch a8522db683
keybinds: fix empty on monitor for new workspaces (#6089) 2024-05-15 21:03:51 +01:00
Vaxry b9c58b6e75 seat: send enter/leave events to all bound wl_seats for a client
fixes #6069

Will not send anything beyond enter/leave. If you depend on multiple seats sending you motion, button, etc, events, fix your app.
2024-05-15 19:33:42 +01:00
Vaxry 3381e2b55b datadevice: guard surface in dnd for null
fixes #6076
2024-05-15 16:26:02 +01:00
Vaxry 7fbe05a250 inputmgr: send pointer motion on ffm != 1
fixes #6077
2024-05-15 16:22:45 +01:00
Sungyoon Cho 31890026ea
wl_seat: send frame event after pointer leave (#6074) 2024-05-15 12:17:56 +01:00
Vaxry 94c20a1863 primary-selection: move to hyprland impl 2024-05-14 23:13:35 +01:00
Vaxry eed1361f39 wlr-data-device: move to hyprland impl 2024-05-14 23:13:35 +01:00
Vaxry 7eeee2c94e wl-data-device: move to hyprland impl 2024-05-14 23:13:35 +01:00
Vaxry fc72df8e58 seatmgr: Add a grab class 2024-05-14 23:13:33 +01:00
Vaxry 0cfdde3d1a xdg-shell: move to new impl 2024-05-14 23:02:24 +01:00
Vaxry 121d3a7213 wl_seat: move to hyprland impl 2024-05-14 23:02:24 +01:00
Vaxry 4cdddcfe46 cursor: minor fixes for unhiding surfaces
the surface equality check is done in CPointerManager, the one in renderer can be wrong

fixes #5975
2024-05-14 16:45:12 +01:00
Sungyoon Cho d0a4a0e0d8
input: fix modifier and leds (#6062) 2024-05-14 16:14:43 +01:00
Daniil 1584679004
xwayland: Remove delta for real position with xwayland zero scaling (#6057) 2024-05-14 13:33:20 +01:00
Vaxry ba69652193 window: set sane default pseudo size 2024-05-13 22:21:06 +01:00
Paul 064bdb06f1
hyprctl: Add locked cmd to requests (#6042)
Co-authored-by: Leftas <info@leftas.dev>
2024-05-13 14:57:06 +01:00
Vaxry fd35b35000 keybinds: fix pass
reverts #5967

fixes #6022
2024-05-12 16:01:01 +01:00
Brenno Lemos 33a7b7bb6b
core: fix on-empty workspace being called too often (#6026) 2024-05-12 00:03:32 +01:00
shezdy 15072831cf
keybinds: fix release binds in submaps (#6025) 2024-05-12 00:02:26 +01:00
Vaxry 8562d38477 screencopy: don't spam sw cursor locks 2024-05-11 22:10:42 +01:00
Vaxry 494b9415a1 layersurface: avoid restack on identical layers
ref #6014
2024-05-11 18:31:50 +01:00
Vaxry b6a7fb9e91 layersurface: fix invalid use of std::move
fixes #6014
2024-05-11 14:43:44 +01:00
Sungyoon Cho 3529fbc6d4
compositor: fix getMonitorFromVector getting wrong monitor (#6010) 2024-05-11 10:35:20 +01:00
Vaxry 19186de118 renderer: avoid locking during rendering
it can trigger pointermgr to render which fucks up our pass

fixes #5998
2024-05-10 23:38:46 +01:00
Vaxry 38911d6df4 box: fix noNegativeSize 2024-05-10 12:59:01 +01:00
underengineering 37a84c5223
socket2: fix events being reordered (#5955)
* socket2: fix events being reordered

* remove WL_EVENT_READABLE

* initialize eventSource in SClient

* add more logs

oopsie

* replace unordered_map with vector

* fix reordering when socket becomes writable before queue is flushed

* ignore EAGAIN when accepting connection

* use g_pEventManager
2024-05-10 12:32:50 +01:00
MightyPlaza c19903eaf8
windowrules add focusonactivate (#5976)
modified:   src/config/ConfigManager.cpp
modified:   src/desktop/Window.cpp
modified:   src/desktop/Window.hpp
2024-05-10 12:27:54 +01:00
Vaxry 2549f0cc97 layersurface: reset popuphead after unmap
fixes #5980
2024-05-10 12:03:38 +01:00
Vaxry 3374229118 core: remove unused includes and fix warn 2024-05-10 03:20:26 +01:00
Vaxry 2ba6bb69c4 popups: fix breadthfirst and at
fixes #5977
2024-05-10 02:38:56 +01:00
Vaxry db30ff63e6 popups: avoid infinite recursion in bf 2024-05-10 02:38:56 +01:00
Vaxry a7e23d2f1e presentation-time: move to new impl 2024-05-10 02:38:54 +01:00
Vaxry 1753059b07 pointermgr: reset entered outputs when resetting surface
fixes #5970
2024-05-09 23:08:40 +01:00
Vaxry b0861b6709 config: move various cursor-related vars to cursor: 2024-05-09 22:25:20 +01:00
sub-kek 7cf810b181
keybinds: Fix classic global keybinds(pass dispatcher) (#5967) 2024-05-09 22:05:13 +01:00
Vaxry 4f26ae70fd core: drop unused protocol impls
xdg_foreign is not used by hyprland

wlr_export_dmabuf is old, broken and unused as well
2024-05-09 22:02:19 +01:00
MightyPlaza eeebbc0e7e groupbar: fix title scaling (#5969)
modified:   src/render/decorations/CHyprGroupBarDecoration.cpp
modified:   src/render/decorations/CHyprGroupBarDecoration.hpp
2024-05-09 22:02:19 +01:00
Vaxry 635a02d83f layer-shell: move to new impl
Also bumps the hw-s dep
2024-05-09 22:02:18 +01:00
MightyPlaza 85f7f69046
decorations: fix groupbar input (#5963)
modified:   src/render/decorations/CHyprGroupBarDecoration.cpp
modified:   src/render/decorations/CHyprGroupBarDecoration.hpp
2024-05-09 19:19:32 +01:00
Vaxry fe4737fb9d pointer: don't calculate hw hotspot for missing hw cursors
ref #5964
2024-05-09 19:17:04 +01:00
Vaxry d7aed240db text-input-v3: atomically enable/disable on commit 2024-05-09 14:27:48 +01:00
Vaxry c98acaed62 virtual-keyboard: release keys before destroy 2024-05-09 14:07:21 +01:00
Ikalco 67a5377b41
core: remove wayland sockets on exit (#5959) 2024-05-09 13:39:15 +01:00
Vaxry 84e8d1810d Tablet: move to new impl
Ring and strip are not implemented. Will I implement this? God fucking knows. Nobody seems to have that anyways.
2024-05-09 13:37:39 +01:00
Vaxry ed411f53bd cursor: move to a hyprland impl
This moves wlr_cursor to a completely new impl mostly under
CPointerManager

Also adds beginSimple to OpenGL for simple render passes (e.g. cursor)
2024-05-09 13:37:39 +01:00
Vaxry e4e84064f2 xdg-activation: keep tokens after the resource is dead
fixes #5957
2024-05-08 22:17:17 +01:00
Ikalco 6a988d9276
core: cleanup environment on exit (#5941) 2024-05-08 18:11:08 +01:00
William Gray 36d32973dd
keybinds: add empty on monitor and next empty flags (#5936)
* empty on monitor

* add flag for next empty

* clang-format changes

* next also uses m_pLastMonitor
2024-05-08 13:30:20 +01:00
Vaxry 5e7925eaeb foreign-toplevel: bypass no activate focus checks
ref #5939

those are used by focus switchers so they should bypass stuff like focus_on_activate = false
2024-05-08 01:31:22 +01:00
Username404-59 57a12476de
internal: Add missing errno.h include to SdDaemon.cpp (#5938)
Fixes clang
2024-05-07 23:13:58 +01:00
Vaxry 22a86fd7a2 session-lock: don't allow events from rejected locks
fixes #5913
2024-05-07 18:43:00 +01:00
Vaxry 598bbd186b window: avoid uaf on updateWindow decos
TODO, make these pointers SP to avoid this in the future.

fixes #5909
2024-05-07 17:37:06 +01:00
Ikalco 6ccc22194c
xkb: check value correctly with xkb_state_layout_index_is_active() (#5925) 2024-05-07 16:07:50 +01:00
Vaxry ec092bd601 core: chase hyprwayland-scanner 2024-05-07 14:28:26 +01:00
Vaxry 2bcc8d303f eventloop: don't call lost timers 2024-05-07 13:30:41 +01:00
VPavliashvili 375e77e398
ipc: add togglegroup, moveintogroup and moveoutofgroup events (#5866) 2024-05-07 12:00:55 +01:00
Vaxry 96365309de deco-positioner: avoid infinite recalcs
fixes #5908
2024-05-07 11:53:29 +01:00
Vaxry 0acad88c3c foreign-toplevel-wlr: send current class and title on map
fixes #5910
2024-05-07 11:48:08 +01:00
Ikalco 57e76f91d9
keybinds: fix xkb keybind name to keysym comparison (#5917) 2024-05-07 07:20:06 +01:00
Vaxry 0c446ec5f4 memory: fix SP/WP hierarchy templates 2024-05-06 21:36:31 +01:00
Agent00Ming fa69de8ab6
pointer-constraints: Remove unnecessary cursor warps (#5895)
modified:   src/protocols/PointerConstraints.cpp

Co-authored-by: Agent_00Ming <agent00ming9366@gmail.com>
2024-05-06 17:19:26 +01:00
outfoxxed 05e4a3f1a8
windows: Revert "window: set config only when both props end anims" (#5904)
This reverts commit 7617c03dfd,
fixing a bug that caused the bottom right corner of windows to
animate oddly.
2024-05-06 15:32:01 +01:00
Vaxry a8a04c746b renderer: deny solitary during a session lock
closes #5906

fixes #5899
2024-05-06 02:24:11 +01:00
Ikalco cddeec47a1
keybinds: make the keybind manager check for session lock (#5894) 2024-05-05 19:28:14 +01:00
Vaxry 1ed1ce9506
internal: new shared_ptr and weak_ptr implementation (#5883)
moves std::shared_ptrs to a new implementation

Advantages:
- you can dereference a weak_ptr directly. This will obviously segfault on a nullptr deref if it's expired.
   - this is useful to avoid the .lock() hell where we are 100% sure the pointer _should_ be valid. (and if it isn't, it should throw.)
- weak_ptrs are still valid while the SP is being destroyed.
   - reasoning: while an object (e.g. CWindow) is being destroyed, its `weak_ptr self` should be accessible (the sp is still alive, and so is CWindow), but it's not because by stl it's already expired (to prevent resurrection)
   - this impl solves it differently. w_p is expired, but can still be dereferenced and used. Creating `s_p`s is not possible anymore, though.
   - this is useful in destructors and callbacks.
2024-05-05 17:16:00 +01:00
Sungyoon Cho 03ebad3cbf
idle-inhibit: enable idle inhibitor if no hl surface is associated (#5882) 2024-05-05 14:04:40 +01:00
outfoxxed aaf35b9f1f
protocols: add hyprland_focus_grab_v1 implementation (#5850)
* protocols: add hyprland_focus_grab_v1 implementation

* protocols/focus_grab: fix keyboard focus staying on unlisted windows

When creating a focus grab with layershell surfaces, the last active
toplevel kept keyboard focus.

* protocols/focus_grab: fix formatting

* protocols/focus_grab: try to pick surface for keyboard focus

* focus_grab: update keyboard focus to match spec

* Revert "protocols/focus_grab: try to pick surface for keyboard focus"

This reverts commit 090358d0d1.

* protocols/focus_grab: fix issues and match new spec

* kde-server-decoration: move to new impl

* protocols/focus_grab: review fixup

* Update hyprland-protocols

---------

Co-authored-by: Vaxry <vaxry@vaxry.net>
2024-05-05 03:14:35 +01:00
Vaxry 62eadad20f kde-server-decoration: move to new impl 2024-05-05 02:00:55 +01:00
Vaxry 0b215c5f24 idle-inhibit: fix and cleanup visibility logic
fixes #5878
2024-05-04 23:46:10 +01:00
Vaxry a3309b51a2 shadow: fix small pixel gaps between border
huge fix
2024-05-04 20:30:03 +01:00
Vaxry c77b60c910 keyboard: prevent UAF in destroy events 2024-05-04 16:37:26 +01:00
Vaxry c951c4f8a1 keyboard: check for wlr() validity before accessing
fixes #5873
2024-05-04 16:10:32 +01:00
Vaxry 25964e5a2b hid: don't access expired resources in virtual devices
fixes #5868
2024-05-04 12:36:02 +01:00
JManch 2d40046f24
windows: set fullscreen border size to 0 (#5865) 2024-05-04 12:07:36 +01:00
thejch 40201a760a
workspacerule: Fix monitor settings being deleted when merging ws rules (#5864)
* fix deleting monitor settings when merging rules

* use empty and workspace invalid
2024-05-04 02:18:04 +01:00
Vaxry a3b4923c42 input: ignore destroyed devices in static events
fixes #5863
2024-05-04 00:48:25 +01:00
Vaxry 1237732b97 input: Introduce basic hyprland HID classes
Implements an intermediary HID class for mice, keyboards and touch devices, removing the old structs from WLClasses.hpp

Yes, virtual ones are duplicated a bit, but will likely be de-duped once wlr_input_device is not used anymore.
2024-05-03 22:40:27 +01:00
William Gray 1d2acbe193
config: add absolute monitor workspace selectors (#5848)
* add absolute monitor workspace selectors

* implement absolute for `r`

* format code
2024-05-03 18:38:00 +01:00
Tom Englund 1c73beaf9b
inputmgr: dont double free on hotplug (#5855)
* inputmgr: dont double free on hotplug

since we are also unrefing the state on hotplugging the keyboard set the
state to nullptr so the destructor if case actually catches its been
already freed.

* keybindgmgr: dont double free on layout switching

d5bf153 added keymap unref at the end of updateXKBTranslationState to
not leak it when exiting, only it causes updateXKBTranslationState to
double free when changing layouts. since its already freed. remove the
unneeded extra xkb_keymap_unref.
2024-05-03 18:10:41 +01:00
Vaxry 8a2269272b output-management: move to new impl 2024-05-03 18:08:04 +01:00
Tom Englund d5bf15387a
internal: fix a few asan reported leaks on exit of hyprland (#5852)
* notifications: free cairo images on destruction

asan reports a leak on exit if we dont free the image we created in the
draw function. add a destructor and free images on exit.

* compositor: destroy wlroots types on exit

there are a few types not being destroyed on exit and causing a leak on
exit in wlroots reported by asan, add those.

* cursormgr: ensure we destroy cursor mgr on exit

add a destructor and call wlr_xcursor_manager_destroy on the manager on
destruction, leak reported by asan.

* keybindmgr: free state and keymap

add missing keymap_unref on creation, and add a destructor and free the
state on exit. leak reported by asan.

* skeyboard: add destructor and free state

free the state on destruction of keyboard, reported as leak by asan
2024-05-03 14:42:08 +01:00
Ikalco 387127b12a
config: added option to choose the default monitor for the cursor (#5847)
* added option to choose the default monitor that the cursor will appear in upon startup

* fix: don't set cursor to default monitor after startup

* refactor to checkDefaultCursorWarp also fix focus
2024-05-03 02:39:19 +01:00
Vaxry 41cf94faaa format: fix clang-format 2024-05-03 02:04:08 +01:00
Gabriel Ford 0623cfabc9
windowrules: Fix Floating Grouped Windows Crash and Bug. (#5826)
* Don't unhide grouped items.

* Remove head check as that wasn't always correct.

* Replace lock with expired()

* Remove set hidden from max size.
2024-05-03 02:00:58 +01:00
Vaxry 2755297670 virtual-pointer: move to new impl 2024-05-03 01:52:05 +01:00
Vaxry 7d49819b5e virtual-keyboard: destroy on vdestroy event 2024-05-03 00:54:32 +01:00
Vaxry 6aa2d123ae virtual-keyboard: move to new impl 2024-05-03 00:31:48 +01:00
Vaxry a3ca016d42 cursor-shape: use - instead of _ in shapes
ref #5824
2024-05-02 16:21:33 +01:00
Vaxry eeb78ef965 fractional: set scale before configure
fixes #5842
2024-05-02 15:13:47 +01:00
Vaxry 8427824719 cursormgr: attempt using - instead of _ for failed cursors before fallback
web uses -, and thus some themes might use - too. Attempt replacing _ with - before assuming a shape is missing.
2024-05-02 14:47:10 +01:00
thejch d0229d6e1e
layout: limit updates when mouse animate drag is enabled (#5838) 2024-05-02 14:28:51 +01:00
Vaxry 56de72f357 internal: store matched windowrules and emit event
new event for plugins, windowUpdateRules
2024-05-02 02:18:01 +01:00
Vaxry 0237e39f74 protocols: utilize hyprwayland-scanner 0.3.3 functions
stuff like ::version(), ::client(), ::error() etc
2024-05-01 19:40:35 +01:00
Vaxry 8bcccf9f0f ime-v2: move to new impl 2024-05-01 16:41:17 +01:00
Vaxry 4ed6b69b68 socket2: fix empty activewindowv2 events
fixes #5827
2024-05-01 13:57:32 +01:00
zakk4223 d2899a6c27
layout: Trigger layout recalcuation on deco position/size change (#5821)
* Trigger layout recalcuation on deco position/size change

* Remove now unneeded code

* Formatting
2024-05-01 12:59:40 +01:00
Vaxry ed58cc4c31 sessionLock: remove m_pLastFocus on destroy of surface
fixes #5822
2024-05-01 02:33:36 +01:00
Vaxry 70ebc3add3 sessionLock: call wlr_surface_map/_unmap on the surface manually
fixes unmapped subsurfaces etc

ref #5816
2024-04-30 21:59:07 +01:00
Vaxry a09103cd38 sessionLock: set locked after emitting event
ref #5816
2024-04-30 21:20:06 +01:00
Vaxry dbb8b294d6 sessionLock: fix incorrect protocol error raised
fixes #5816
2024-04-30 20:02:30 +01:00