Commit Graph

3140 Commits

Author SHA1 Message Date
Vaxry d8b7ded18c compositor: find windows in direction on floating 2023-11-05 16:18:41 +00:00
Vaxry c4e1a9b13b box: use std::round instead of std::floor in ::round()
fixes #3761, possibly also #3511
2023-11-05 14:47:24 +00:00
Vaxry 9404972732 events: set reported size on floating map
fixes #3767
2023-11-05 14:12:55 +00:00
Vaxry 92e535025e region: include box in the header 2023-11-04 23:12:08 +00:00
Vaxry d3e5796ee1 layout: fix missed setWindowSize in no_gaps_when_only node apply
fixes #3758
2023-11-04 23:00:20 +00:00
Vaxry 56dec1c6a2 renderer: properly set currentFB on snapshot renders 2023-11-04 22:25:09 +00:00
Vaxry 931927de29 dwindle: move to CBox for expressing nodes 2023-11-04 21:45:34 +00:00
Vaxry 74cf2281dd binds: add movefocus_cycles_fullscreen
fixes #3738
2023-11-04 21:03:08 +00:00
Vaxry 2b07d54bc7 shadow: fix missed fullBox.scale 2023-11-04 20:11:22 +00:00
Vaxry 66a3719b86 renderer: allow transform enabling from outside opengl 2023-11-04 19:35:49 +00:00
Vaxry 64a084477e shadows: fix on transformed 2023-11-04 19:32:50 +00:00
Vaxry 7a09d24065 shadow: fix ignore_window false 2023-11-04 17:45:31 +00:00
Vaxry a3e20d2d5f wlsurface: fix small detection 2023-11-04 17:39:56 +00:00
Vaxry 32b3d2b456 includes: include vector2d for sharedDefs 2023-11-04 17:27:21 +00:00
Vaxry 447c173cad includes: include sharedDefs in includes.hpp 2023-11-04 17:04:10 +00:00
Vaxry 55b4f84fea
Internal: Hyprland box implementation (#3755)
* box impl

* remove unused operators

* missed applyfromwlr
2023-11-04 17:03:05 +00:00
Vaxry 73e78f05ad
Decos: Window decoration flags, shadow improvements (#3739) 2023-11-04 13:10:52 +00:00
Vaxry 54e51b7acf events: better adjust to unreported sizes for xwayland apps
fixes #3745
2023-11-04 13:09:33 +00:00
Vaxry 200cccdd3b events: set reported size on the end of mapping
fixes #3743
2023-11-03 22:47:12 +00:00
Vaxry 15b25d5850 renderer: render oversized blur with respect to fade alpha 2023-11-03 21:58:02 +00:00
Vaxry 21ba8b363e fractional-scale: fix addon existence check 2023-11-03 21:02:12 +00:00
Vaxry 9d2a5fb417 renderer: improvements to wayland surface small() detection 2023-11-03 19:12:09 +00:00
thejch ed3d5053b2
Master: fix drop_at_cursor when there are only two windows (#3734)
* make drop_at_cursor work when dragging into a one-window workspace

* fix drop_at_cursor when new_is_master is enabled
2023-11-03 17:02:59 +00:00
Vaxry 93a2ac9de4 fractional-scale: post error on taken fs objects
fixes #3735
2023-11-03 15:51:43 +00:00
pastalian 49fdffacea
renderer: fix legacy_renderer build (#3732)
In GLES2, `GL_RGB10_A2` and `GL_UNSIGNED_INT_2_10_10_10_REV` are defined as
`GL_RGB10_A2_EXT` and `GL_UNSIGNED_INT_2_10_10_10_REV_EXT` respectively.
2023-11-03 15:47:20 +00:00
Vaxry 0f6e530798 layout: better storage for no fullscreen checks var
fixes #3731
2023-11-03 12:19:23 +00:00
Vaxry 88b47dfa83 xdg: use std::ceil for sending scale to surfaces
fixes #3724
2023-11-02 23:29:47 +00:00
Vaxry ba9e7814b0 input: simulate movement only if mouse is over in open/close window
fixes #3726
2023-11-02 21:36:16 +00:00
thejch f10996b575
master: fix moving window between monitors (#3721) 2023-11-02 17:20:32 +00:00
Dashie 062f749450
xdg: send unconstrain events after a popup reposition (#3716)
* fix: Use unconstrain_from_box after reposition request

* chore: Remove unused include

* chore: remove variable specifier
2023-11-01 20:31:52 +00:00
Vaxry a4db48b46b input: simulate mouse movement to fix focus on open/close window
fixes #3679
2023-11-01 19:50:32 +00:00
MightyPlaza c44e255194
group: fixes for dragging groups onto groupbars (#3708)
* fixes for dragging groups onto groupbars

modified:   src/render/decorations/CHyprGroupBarDecoration.cpp

* use onWindowRemoved()
modified:   src/render/decorations/CHyprGroupBarDecoration.cpp
2023-11-01 19:13:39 +00:00
Vaxry 21e9313c10
Core: various unsafe state improvements (#3713)
Fixes #3637
2023-11-01 18:53:36 +00:00
Vaxry 7b32b4214d layout: avoid redundant size sets on new fullscreen 2023-11-01 01:28:43 +00:00
Vaxry ab5497a0c9 input: properly track xdg surfaces' geometry in vectorToSurfaceLocal
fixes #3703
2023-10-30 19:36:45 +00:00
Vaxry 1c9d6b94d1 renderer: fix small surface's blur region being offset by monitor coords 2023-10-30 16:20:30 +00:00
Vaxry 4b592d0819 renderer: properly pass 10-bit formats to opengl 2023-10-30 15:56:16 +00:00
MightyPlaza a1924ae435
internal: create canBeGroupedInto() (#3693)
modified:   src/Window.cpp
modified:   src/Window.hpp
modified:   src/layout/DwindleLayout.cpp
modified:   src/layout/MasterLayout.cpp
modified:   src/render/decorations/CHyprGroupBarDecoration.cpp
2023-10-30 14:54:12 +00:00
Vaxry cb6cfde6e8 window: update window reported size on damage events 2023-10-30 14:49:49 +00:00
Vaxry 8e91c038db renderer: use optional for cursor surface storing
because nullptr is a valid surface.

fixes #3692
2023-10-30 00:18:40 +00:00
Vaxry 86318ce04f input: let input-grabbing decos have prio over resize on border 2023-10-29 23:37:12 +00:00
Vaxry 59d6a12a7e config: fixup usage of plugin in handles
would filter calls to keyword plugin: and stuff
2023-10-29 22:35:26 +00:00
Vaxry 935c90915a pluginapi: fixup get_hash functions 2023-10-29 21:21:54 +00:00
Vaxry b95c0c318e renderer: fixup blend disable conditions in renderSurface
Fixes #3680
2023-10-29 20:54:14 +00:00
MightyPlaza 9abfa9efc6
input: handle mouse on decorations (#3560) 2023-10-29 20:14:47 +00:00
Vaxry 7a5234a0cc input: better cursor image infrastructure
Improves handling of cursor images/surfaces
Fixes an issue with decos and cursors
Fixes #3471
2023-10-29 18:09:05 +00:00
Vaxry af9440152e pluginapi: add a config keyword adding method 2023-10-29 16:59:50 +00:00
Vaxry 7f4b0aaadc hyprctl: add focusHistoryID to hyprctl clients
fixes #3661
2023-10-28 17:22:42 +01:00
Vaxry 4a4e13f8ac events: ignore takes_over_fullscreen for floating windows
fixes #3622. Floating windows should not respect the config option, they should be shown on top. That option is meant for tiled only
2023-10-27 12:45:17 +01:00
Antoine Dutot 1d47e2c408
input: fix force_zero_scaling for tablet and touch (#3644)
* Attempt to fix force_zero_scaling for tablet and touch for XWayland apps.

* Formated using clang-format.

* Simpler way to compute touch origin.
2023-10-27 10:15:29 +01:00
Vaxry 47256a6ed8 input: remove incorrect check in re-enter
fixes #3659
2023-10-26 22:21:13 +01:00
Vaxry 732b058489 input: send motion events on focusWindow if follows_mouse is 0 2023-10-26 22:17:49 +01:00
Vaxry 92cf1c2337 input: fix mouse down handling on unset last surface
fixes #3659
2023-10-26 18:54:19 +01:00
Tyler Schneider 07714dd5bd
input: Apply scaling to cursorPosOnActivate position (#3664) 2023-10-26 02:05:10 +01:00
Vaxry b0b88a63b6 renderer: fix missed box scale 2023-10-25 22:38:14 +01:00
Vaxry 5b0dc779ed renderer: blur properly behind small surfaces 2023-10-25 22:20:58 +01:00
Vaxry 8991be671f renderer: respect viewporter dest on base surfaces 2023-10-25 22:05:04 +01:00
Vaxry 6650e4ba85 compositor: remove old comment 2023-10-25 18:32:04 +01:00
Vaxry df00727310 deps: update wlroots 2023-10-25 00:27:16 +01:00
Vaxry 03771d3aa9 windowrules: add nearestneighbor 2023-10-24 21:29:03 +01:00
Vaxry 14a3c939ce hyprctl: log monitor id in workspaces request
fixes #3640
2023-10-24 01:03:40 +01:00
Vaxry aeb8c8fc70 internal: honor close_special_on_empty on moveToWorkspace
fixes #3602
2023-10-24 00:58:44 +01:00
Vaxry 616ff343b7 input: fix warn 2023-10-24 00:53:59 +01:00
Vaxry 2f6729f557 example: add special workspace to default config 2023-10-24 00:50:45 +01:00
Vaxry 015664eb4c compositor: do not process fullscreen events in unsafe 2023-10-23 00:53:33 +01:00
Vaxry 98059b52d7 layershell: support ON_DEMAND keyboard mode
fixes #2264
2023-10-22 23:32:55 +01:00
Brenno Lemos b135bd6cd4
workspacerules: Add new optional "default command" for auto-launching apps on new workspaces (#3559) 2023-10-22 23:11:03 +01:00
Vaxry 59f27e7f57 compositor: send preferred scale and transform events to surfaces
fixes #3635
2023-10-22 16:58:06 +01:00
Vaxry d0367d8560 renderer: use preOffset pos instead of offset
offset is not passed to transformers, so if they change pos, decos will be in the wrong place
2023-10-21 19:51:14 +01:00
Vaxry 95db9108e5 transformers: allow modifying renderdata pre-pass 2023-10-21 19:25:44 +01:00
Vaxry a61eb7694d hooksystem: add callbackinfo struct and cancellable events 2023-10-21 14:52:43 +01:00
Vaxry c6233a790f renderer: avoid drawing invisibly small surfaces in renderSurface 2023-10-21 14:20:06 +01:00
Vaxry 92311d260a renderer: add transformers 2023-10-21 14:15:56 +01:00
Roberto Previdi af72404259
hyprctl: add a query for workspace rules (#3630) 2023-10-21 02:28:34 +01:00
Vaxry 4a79718fe8 renderer: fix shimmers when manual resizing 2023-10-20 20:32:47 +01:00
Vaxry 7f35f33b4c surface/wayland: conform to small surface requirements
do not stretch small surfaces, instead center them if they fit.
2023-10-20 20:15:57 +01:00
thejch bab2f6a664
master: fix movewindow across monitors (#3628) 2023-10-20 18:01:04 +01:00
thejch bb9d0aed5b
compositor: Fix a lack of a check for workspace equality on same monitors in getInDirection (#3625)
* prevent movefocus and movewindow from going into main workspace when in special workspace

* compare workspace IDs instead

* change comparison and make code more readable
2023-10-20 10:53:37 +01:00
Vaxry 386708563c workspacerules: search for special properly
fixes #3537
2023-10-19 16:04:59 +01:00
Vaxry 6e15590e98 shaders: support changing the outer radius of borders independently 2023-10-19 14:05:02 +01:00
Vaxry a0b675ec9e binds: add ignoreMods flag 2023-10-17 20:10:07 +01:00
André Silva 784f8a88fb
input: don't reset cursor movement timer on simulateMouseMovement (#3595)
Fixes #2570
2023-10-17 17:00:39 +01:00
thejch 20e7ccd480
master: fix resizing wrong window behind in special workspace (#3591) 2023-10-17 12:06:16 +01:00
eriedaberrie 421f5fb221
events: make new windows taking over fullscreen keep the existing mode (#3588) 2023-10-17 11:41:27 +01:00
Jan Beich 93676f91a0
renderer: cast std::clamp args to be of the same type (#3589)
src/render/OpenGL.cpp:1769:41: error: no matching function for call to 'clamp'
    const auto         FORCEWALLPAPER = std::clamp(*PFORCEWALLPAPER, -1L, 2L);
                                        ^~~~~~~~~~
/usr/include/c++/v1/__algorithm/clamp.h:38:1: note: candidate template ignored: deduced conflicting types for parameter '_Tp' ('int64_t' (aka 'long long') vs. 'long')
clamp(const _Tp& __v, const _Tp& __lo, const _Tp& __hi)
^
/usr/include/c++/v1/__algorithm/clamp.h:27:1: note: candidate function template not viable: requires 4 arguments, but 3 were provided
clamp(const _Tp& __v, const _Tp& __lo, const _Tp& __hi, _Compare __comp)
^
2023-10-17 01:29:06 +01:00
memchr 54e1c2ccbd
fix(build): do not include wlr headers directly, use includes.hpp instead. (#3587) 2023-10-16 17:39:12 +01:00
Alexander Seleznev 1f582457cf
Debug: respect logging settings for wlr (#3584) 2023-10-15 19:19:07 +01:00
Philip Damianik 442209942f
cleanup: Replace find() with C++20 starts_with(), ends_with() and contains() (#3572)
* Replace find() with C++20 starts_with() and ends_with()

* Replace find() with C++20 contains()
2023-10-15 19:07:23 +01:00
memchr 43b39e0bc6
build: include version.h in PluginAPI.hpp (#3571) 2023-10-15 12:22:51 +01:00
Vaxry d5a572bd39
Plugin API: Add version query (#3545) 2023-10-14 18:47:43 +01:00
Vaxry 424c9a7e70 render: stop locking SWC on tearing 2023-10-13 22:11:21 +01:00
Michał Lewandowski 3a61350286
notifications: Schedule a frame on notification creation (#3556) 2023-10-13 00:05:05 +01:00
vaxerski e4bcd2e2da monitor: ensure vrr on workspace change 2023-10-12 17:26:35 +01:00
Vaxry 06cc42441c
build: guard execinfo.h via build systems (#3547)
* guard execinfo via cmake

* libexecinfo -> execinfo macro name

* meson: add execinfo check

* move check in cmake up

---------

Co-authored-by: Mihai Fufezan <fufexan@protonmail.com>
2023-10-11 22:27:53 +01:00
Bernhard M. Wiedemann 5dc7161b1d
meson: Sort input file list (#3550)
so that hyprland builds in a reproducible way
in spite of non-deterministic filesystem readdir order.

See https://reproducible-builds.org/ for why this is good.
This patch was done while working on reproducible builds for openSUSE.

Co-authored-by: Bernhard M. Wiedemann <bernhard+gitcommit lsmod.de>
2023-10-11 19:49:42 +01:00
memchr 34455844e9
groups: ensure consistency in dispatcher behavior with global group lock (#3531) 2023-10-11 11:13:12 +01:00
vaxerski d83357f497 internal: use pragma once in version.h 2023-10-10 21:03:07 +01:00
Vaxry 914851b91a
internal: better versioning (#3543)
* better versioning

* meson: better versioning

* nix: better versioning

---------

Co-authored-by: Mihai Fufezan <fufexan@protonmail.com>
2023-10-10 20:21:57 +01:00
MightyPlaza d537815d43
groups: create group and groupbar config sections (#3522)
* config: create group section

modified:   src/Compositor.cpp
modified:   src/config/ConfigManager.cpp
modified:   src/layout/DwindleLayout.cpp
modified:   src/layout/MasterLayout.cpp
modified:   src/managers/KeybindManager.cpp
modified:   src/managers/input/InputManager.cpp
modified:   src/render/decorations/CHyprGroupBarDecoration.cpp

* separate group border and groupbar colors

modified:   src/Compositor.cpp
modified:   src/config/ConfigManager.cpp
modified:   src/render/decorations/CHyprGroupBarDecoration.cpp

* add new line
modified:   config/ConfigManager.cpp
2023-10-10 17:42:45 +01:00
Philip Damianik ac1bd47653
dispatchers: Add option to center the cursor on the focused window when switching workspaces (#3528)
* Add option for centering on workspace when switching workspace

* Add option for centering on workspace when switching workspace

---------

Co-authored-by: vaxerski <43317083+vaxerski@users.noreply.github.com>
2023-10-10 17:34:28 +01:00
vaxerski 8abb6e1cee screencopy: enhance error logging 2023-10-09 23:51:59 +01:00
Roberto Previdi df0c8e0f7a
workspacerules: Add a persistent workspace rule (#3530)
* add persistent flag to workspace rules

* get rid of unused ws->indestructible flag
2023-10-09 20:28:22 +01:00
Michał Lewandowski 7f8e0a1318
dwindle: Avoid rounding errors in window position (#3524)
* Avoid rounding errors in window position

* Fix naming scheme

* Fix unwanted window movement
2023-10-09 12:28:58 +01:00
MightyPlaza 499df49f7b
dispatchers: fix extra monitor offset when snapping floating (#3520)
modified:   src/managers/KeybindManager.cpp
2023-10-08 13:49:15 +01:00
vaxerski 728a8bb48e config: mention force_default_wallpaper in default configs 2023-10-07 15:55:33 +01:00
DaniD3v 7d7565e7ec
renderer: add force_wallpaper instead of no_hypr_chan (#3459) 2023-10-07 14:08:38 +01:00
vaxerski 38e242953d animationmgr: damage floating windows on workspace anim
fixes #3514
2023-10-07 02:28:23 +01:00
Jeremy Huang 61d3d4dee7
master: fix drop_at_cursor on workspace 2 (#3512) 2023-10-06 22:33:11 +01:00
ItsDrike 1afb00a01b
pluginapi: remove starting newline in demangled func name (#3502) 2023-10-06 14:01:40 +01:00
vaxerski cb7dd1ac6e layershell: avoid configure on unchanged size
fixes #3496
2023-10-06 14:00:05 +01:00
vaxerski 4b3efc73c5 events: fixup empty events not being sent on unmap
Ref #3506 https://github.com/hyprwm/Hyprland/issues/3506#issuecomment-1749508111
2023-10-06 01:11:47 +01:00
vaxerski 24c04a8b7c crashreporter: avoid using empty CACHE_HOME 2023-10-05 16:57:54 +01:00
vaxerski 3d1a167960 wsrules: check for workspace ID matches on numbered workspaces
fixes #3494
2023-10-05 01:31:13 +01:00
Vaxry 322c5cc4b9 layout: add new_window_takes_over_fullscreen mode 2
fixes #3486
2023-10-04 15:00:24 +01:00
vaxerski 230356012b renderer: extract solitary check into frame handler 2023-10-04 13:48:44 +01:00
vaxerski 4531717f3e renderer: considerable fixes to repaint logic 2023-10-04 13:39:40 +01:00
vaxerski f8c18ff797 renderer: fixup solitary conditions 2023-10-04 13:30:13 +01:00
vaxerski f803be3d31 input: fixup frame schedule conditions on mouse move 2023-10-04 12:57:37 +01:00
vaxerski 2901bb0d2f renderer: add further conditions to solitary recheck 2023-10-04 09:44:07 +01:00
Jeremy Huang d61e4f9ad7
master: add option to drag and drop windows at cursor position (#3465)
* add option to drag and drop a window at cursor position

* use getWindowIdealBoundingBoxIgnoreReserved
2023-10-03 22:16:57 +01:00
vaxerski b814ba98a7 misc: add misc:new_window_takes_over_fullscreen
referenced in #3474
2023-10-02 16:27:32 +01:00
vaxerski 50fecf084d events: set new window alpha to 0 if it's tiled behind fullscreen
fixes #3474
2023-10-02 16:22:39 +01:00
vaxerski 5ffb1032e1 events: don't focus new window if spawned behind fullscreen
fixes #3473
2023-10-02 14:09:23 +01:00
vaxerski fc1d7acd9a renderer: fix missing check for surfaceCount in rechecking solitary
closes #3470
2023-10-02 14:02:19 +01:00
vaxerski 763bb2d3bc renderer: remove old debug log 2023-10-02 10:50:33 +01:00
memchr 161fee1d82
internal: include missing header (#3464) 2023-10-01 12:26:10 +01:00
vaxerski a2a29a60e5 tearing: cleanup vars and avoid rendering before drm is ready 2023-09-30 17:07:50 +01:00
vaxerski e2b72b2975 renderer: avoid spamming software cursor locks 2023-09-30 16:55:41 +01:00
Dickby 772c7d1d3c
shaders: Remove redundant clamp of smoothsteps return value. (#3456) 2023-09-30 13:12:48 +01:00
vaxerski 6a4643842d hyprctl: log activelyTearing for monitors 2023-09-30 13:12:04 +01:00
vaxerski a05076a7ee log: log wlr errors regardless of env 2023-09-30 13:12:04 +01:00
vaxerski b8f8912db2 renderer: lock software cursors while tearing 2023-09-30 13:12:01 +01:00
vaxerski 86e8ed038f includes: add missing log include to animatedvariable 2023-09-30 02:09:08 +01:00
vaxerski c298439433 renderer: nuke multisample_edges in favor of a faster algorithm 2023-09-30 01:41:05 +01:00
vaxerski 495d4f2d11 shaders: improve border rounding 2023-09-30 01:35:05 +01:00
vaxerski 7b002d609b input: fix warn 2023-09-29 20:06:20 +01:00
vaxerski 4daa515700 watchdog: don't hang on exit 2023-09-29 20:05:43 +01:00
vaxerski e07e64458e input: fix unused variable warn 2023-09-29 17:55:41 +01:00
vaxerski a44ab7748f renderer: optimize render pipeline when there is a solitary client 2023-09-29 17:51:07 +01:00
vaxerski ab11bd2085 watchdog: remove thread on destroy 2023-09-29 17:33:26 +01:00
vaxerski 27cd7ef0c9 watchdog: initialize after config 2023-09-29 17:04:20 +01:00
vaxerski 9cc614d096 internal: add a watchdog
a watchdog will abort processing a signal if a timeout specified via debug:watchdog_timeout is reached.
2023-09-29 16:38:13 +01:00
vaxerski 453128ee0e examples/readme: mention tearing 2023-09-28 22:09:14 +01:00
Vaxry 88b63a00b6
renderer: Tearing implementation (#3441) 2023-09-28 21:48:33 +01:00
vaxerski d48c11cc3f input: minor constraint fixes
Better adjust to constraints that do not set a hint. Fixes #3436
2023-09-28 20:02:00 +01:00
vaxerski 1f4eab176e layout: don't discard fullscreen on new tiling 2023-09-28 17:49:40 +01:00
Cascade aka. Isoheptane 6d7dc70f66
input: Add map to region options for tablets (#3425)
* Add region remap for tablets

* Fix code style
2023-09-27 19:49:30 +01:00
Vaxry ffacd2efd1 hyprctl: fix crash in unsafe state with activeworkspace
fixes #3419
2023-09-25 15:00:28 +01:00
vaxerski 3b657257ec layout: check for specialworkspace in floating toggle 2023-09-24 23:20:15 +01:00
Legorel 6bdc45e9ce
config: restore configCurrenPath after sourcing file (#3339) 2023-09-24 23:11:34 +01:00
Vaxry 46d66f4bcc
internal: Further unsafe state improvements (#3404)
Instead of allowing Hyprland to sit in a state where there are no monitors, which various parts of the code don't like, we create a fake headless output on all monitor disconnect, and then remove it when a monitor appears
2023-09-24 18:04:38 +01:00
vaxerski 352ceb1117 config: trim spaces in the rule field in windowrulev2 2023-09-24 13:35:36 +01:00
vaxerski 3b445ec849 input: avoid using the wrong surface in drag focus force 2023-09-23 17:20:39 +01:00
memchr 8252957392
dispatchers: support number as arg in changegroupactive (#3329) 2023-09-23 13:36:40 +01:00
Jan Beich 8637bfb1b7
build: Unbreak build without precompiled headers (#3400)
* helpers: add missing header after 2e34548aea

src/helpers/VarList.cpp: In constructor 'CVarList::CVarList(const std::string&, size_t, char, bool)':
src/helpers/VarList.cpp:19:34: error: 'removeBeginEndSpacesTabs' was not declared in this scope
   19 |             m_vArgs.emplace_back(removeBeginEndSpacesTabs(in.substr(pos)));
      |                                  ^~~~~~~~~~~~~~~~~~~~~~~~
src/helpers/VarList.cpp:23:30: error: 'removeBeginEndSpacesTabs' was not declared in this scope
   23 |         m_vArgs.emplace_back(removeBeginEndSpacesTabs(std::string_view{s}.data()));
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~

* helpers: add missing C linkage after 0dbd997003

ld.lld: error: undefined symbol: wlr_region_scale(pixman_region32*, pixman_region32 const*, float)
>>> referenced by Region.cpp
>>>               src/Hyprland.p/helpers_Region.cpp.o:(CRegion::scale(float))
>>> did you mean: extern "C" wlr_region_scale
>>> defined in: /usr/lib/libwlroots.so.12032
2023-09-23 13:31:37 +01:00
vaxerski de95089552 input: fixup mouse down refocus conditions
fixes #3402
2023-09-23 13:30:53 +01:00
vaxerski 9c00381dfc hyprctl: avoid .pop_back() on empty string 2023-09-23 13:26:35 +01:00
vaxerski fb80cbe415 input: properly track mouse focus on drag operations 2023-09-23 01:28:45 +01:00
vaxerski 3b1e09e5a1 renderer: fix missing dontRound check in renderSurface
fixes 3296
2023-09-23 00:06:48 +01:00
vaxerski 9f68aa33ea renderer: damage monitor on special workspace change
fixes #3396
2023-09-22 23:36:28 +01:00
vaxerski ea45bfb63c renderer: cleanup drm format selection 2023-09-22 20:15:12 +01:00
memchr ea5d9584da
refactor: manually resets singletons (#3395) 2023-09-22 11:06:09 +01:00
memchr 1357b66091
windowrules: add rule `group` to map windows grouped (#3279)
* windows: add rule group to map windows grouped

* group rule: use `invade` to force open a window in a locked group
2023-09-22 00:42:00 +01:00
vaxerski 2e1842b5ff screencopy: log renderer_begin_with_buffer failures 2023-09-22 00:21:07 +01:00
vaxerski b662215fad input: simplify fullscreen workspace input calculations
Fixes an issue with special workspaces not receiving focus above fullscreen windows, and cleans up the code
2023-09-21 23:58:58 +01:00
alaricljs e4ddfcfa0c
keybinds: implement pushactivetobottom dispacher (#3217)
Co-authored-by: Leeman <lstrout@enlj.com>
2023-09-21 22:18:26 +01:00
Mihai Fufezan 1925e64c21
Vector2D: fix typo in include 2023-09-20 22:26:08 +03:00
vaxerski 62efc045d7 input: lock focus to last surface on buttons held
fixes #3385
2023-09-20 19:50:46 +01:00
Vaxry 0dbd997003
input: Various constraint handling fixes (#3381)
Fixes #3204
2023-09-20 16:47:05 +01:00
memchr 3785defaf1
logging: implement std::formatter for some types (#3380) 2023-09-20 16:25:03 +01:00
memchr 6594b50e57
logging/format: use std::format_string to catch formatting string errors at compile time (#3377)
* fix(log): use constexpr format string

* deprecate getFormat
2023-09-20 08:26:20 +01:00
Dickby d8d0cd75c2
internal: Make part of CCompositor::focusWindow a bit easier to read. (#3356) 2023-09-19 11:37:30 +01:00
memchr c50072b108
varlist: cleanup unintuitive string splitting (#3369)
* refactor(varlist): replace unintuitive string splitting

* refactor(varlist): remove test asserts
2023-09-19 09:44:54 +01:00
vaxerski 60f10e6037 hyprctl: print monitor IDs as int64 2023-09-19 00:41:56 +01:00
vaxerski e4d6695375 keybinds: focus last window on workspace change to another mon 2023-09-18 11:33:19 +01:00
Dickby b0a82c04df
bezier: Remove Todo about N-Point bezier curves. (#3352) 2023-09-17 18:48:11 +01:00
vaxerski af15b15b4b input: guard constraint in unconstrainMouse 2023-09-17 16:46:04 +01:00
Mihai Fufezan f72e04d63b
misc: add disable_hypr_chan option (#3343) 2023-09-17 15:26:24 +01:00
vaxerski 2f01a18989 window: recalculate layout on swallow in map
fixes #2848
2023-09-16 18:40:57 +01:00
Dickby a53ec98b82
bezier: Optimize CBezierCurve::getYForPoint (#3321) 2023-09-16 18:32:33 +01:00
Jeremy Huang cc630c90b5
master: partially revert 0e64dd2e and fix the animation (#3327) 2023-09-15 22:13:23 +01:00
vaxerski b9b38424b0 input: fix hints not being used if committed at the beginning 2023-09-15 21:01:54 +01:00
memchr 56adec7c1a
socket2: emit lockgroups event (#3317) 2023-09-15 12:06:59 +01:00
MightyPlaza 824290c791
windowrules: fix workspace exec rule with special (#3316)
modified:   src/events/Windows.cpp
2023-09-15 12:05:21 +01:00
Jeremy Huang d3cbec2d1a
master: Add mfact dispatcher (#3298)
* add mfact dispatcher

* limit mfact to between 0.05 and 0.95

* add try catch block for stof

* change log to err
2023-09-15 12:03:05 +01:00
vaxerski 2536630049 dwindle: fix moving windows on special 2023-09-14 15:37:45 +01:00
memchr e6651334f2
refactor: flatten nesting `if`s in layout window creation method (#3294) 2023-09-14 12:27:16 +01:00
Jeremy Huang 0e64dd2ea5
master: respect the resizing animation option in master layout (#3300) 2023-09-14 12:14:10 +01:00
memchr db2b72adee
config: fix relative path resolution (#3308) 2023-09-14 12:07:31 +01:00
memchr 0dc8289b02
dwindle: fix: don't merge groups when moving window (#3302) 2023-09-14 11:56:29 +01:00
memchr 84f8f4d77d
keybinds: warp cursor to correct window in moveWindowOutOfGroup (#3290) 2023-09-13 15:02:21 +01:00
Jeremy Huang 2ad429dfe0
master: Fix the wrong resize speed in master layout center orientation (#3289)
* rebase

* change isStackVertical variable to make it more readable

* fix some code getting unnecessarily repeating in a loop
2023-09-13 11:48:19 +01:00
memchr 4f88897fc0
keybinds: avoid onWindowRemoved & onWindowCreated when group has one member (#3286)
Make moveWindowOutOfGroup behave like toggleGroup on a group with single
member, this prevents the window from moving around rabidly.
2023-09-13 11:44:02 +01:00
Vaxry 41e5f401c5 keybinds: simulate movement on empty focus after workspace change 2023-09-13 11:36:41 +01:00
Vaxry b884544ee6 input: don't refocus on switched workspace on the same monitor 2023-09-13 11:33:36 +01:00
memchr 6b1ac659e0
layout: add direction parameter to onWindowCreated and friends (#3269)
* feat(layout): add direction parameter to onWindowCreated and friends

In addition:

- Implement directional moveWindowOutOfGroup for `movewindoworgroup`
  when using dwindle layout. (augmentation of #3006)
- Replace `DWindleLayout::OneTimeFocus` with `IHyprLayout::eDirection`.
- Slight formatting change (clang-format).

* fix: nullptr dereference in dwindle window creation

* refactor: generalized eDirection

* refactor: eliminate DIRECTION_NONE

* Update IHyprLayout.hpp
2023-09-13 11:13:29 +01:00
outfoxxed b0d5e4008b
layout: Allow the layout to control how windows are raised in groups (#3275)
* Allow the layout to control how windows are raised in groups

Previously windows could only be focused if they weren't hidden or
were part of a group. This shifts the logic for picking the window out
of a group to the layout allowing for alternate group implementations
to function normally.

* Fix doc comment consistency

* Fix tabs in comments
2023-09-12 22:37:08 +01:00
Vaxry be19773aaa windowrules: fix workspace rule separation
fixes #3265
2023-09-12 16:50:10 +01:00
Vaxry 2e34548aea varlist: move to a separate header, add join 2023-09-12 16:50:10 +01:00
memchr 5cc53c14d9
config: add wildcard handling in source= (#3276) 2023-09-12 12:54:05 +01:00
alaricljs 9192b20b96
windowrules: add on-screen constraint to wrv2 'move' (#3247)
* add on-screen constraint to wrv2 'move'

* review changes

* std::clamp

* more parens

---------

Co-authored-by: Leeman <lstrout@enlj.com>
2023-09-12 09:56:20 +01:00
memchr bc41d7ec85
fix: inconsistent behaviour where last workspace was not saved (#3261) 2023-09-11 23:39:24 +01:00
memchr df51c45d7f
keybinds: unify changeworkspace dispatcher (#3250)
* refactor: changeworkspace dispatcher

* refactor: remove redundant focusWindow calls

* refactor(changeworkspace): warp cursor to middle of last focused window

* refactor: use rememberPrevWorkspace

* Fix: `CWorkspace::rememberPreWorkspace` condition is illogical
2023-09-11 15:14:43 +01:00
Vaxry 5a6d0e9963 refactor: fix missed middle() call in CKeybindManager 2023-09-11 12:19:21 +01:00
alaricljs 99fac59938
keybinds: movewindow to screen edge for floating windows (#3245)
* movewindow to screen edge for floating windows

* review changes

* constify vars

---------

Co-authored-by: Leeman <lstrout@enlj.com>
Co-authored-by: vaxerski <vaxry@vaxry.net>
2023-09-11 10:23:57 +01:00
memchr e96e0dc02d
refactor: utilize 'middle()' method for window/montior center (#3253) 2023-09-11 10:09:34 +01:00
vaxerski 3859607b6c input: do not process mouse in unsafe state 2023-09-10 23:44:47 +01:00
memchr ac2f1a9c30
feat: add a new movewindoworgroup dispatcher (#3006) 2023-09-10 23:29:10 +01:00
alaricljs 81661b49aa
windowrules: add % to resizeparams (#3246)
Co-authored-by: Leeman <lstrout@enlj.com>
2023-09-10 23:26:14 +01:00
memchr 79862c957c
layout: add missing groupbar decoration to the window (#3235)
* fix: add missing groupbar decoration to the window

Add groupbar decoration to the operand window of `CWindow::insertWindowToGroup` if it does not exist, to prevent segmentation faults when mouse events are triggered after moving the window to a group, where `getDecorationByType(DECORATION_GROUPBAR)` unexpectedly returns nullptr.

Also fixed a bug where the group bar disappeared when the moveIntoGroup dispatcher's operand window was in a group.

* Update Window.cpp
2023-09-10 22:59:10 +01:00
Jeremy Huang 19bbdeed47
master: Add smart resizing option for master layout (#3210)
* add smart resizing for master layout

* fix smart resizing workspace check

* master layout fix smart resize when at max size

* change resizing for center orientation so it doesnt use all nodes

* master layout resizing, simplify code for calculating total height and weight

* remove the redundant smart resizing check
2023-09-10 22:58:06 +01:00
vaxerski 0d53401217 xwayland: adjust coord calculation
coord exactly at the corner would be calc'd wrong
2023-09-10 20:19:09 +01:00
vaxerski d28725c678 keybinds: ignore conditions on special release
while the previous commit ignores mods, we also need to ignore other conditions to avoid dangling presses
2023-09-10 16:54:14 +01:00
vaxerski dcb909df04 keybinds: track pressed special binds
Ignore mods only if we're processing a special bind, and only if it's pressed. Otherwise we might shadow normal key releases via ignoring mods. Fixes #3240
2023-09-10 16:27:14 +01:00
Philip Damianik 6c855dd6e4
internal: Fix wlr output management (#3234) 2023-09-10 13:14:27 +01:00
vaxerski d490f198a4 keybinds: ignore mods on release of special binds
fixes #3208
2023-09-10 13:13:15 +01:00
memchr a781c152ff
fix(layout): remove `focusWindow` calls from `onWindowCreatedTiling` (#3233) 2023-09-10 12:55:18 +01:00
memchr f7f70c9e72
refactor: replace lambdas with CKeybindManager::switchToWindow (#3229)
moves `switchToWindow` lambdas to a single private method
`CKeybindManager::switchToWindow()`.

fixes #3227, as a by-product of the mouse motion simulation at the end
of `CKeybindManager::switchToWindow()`.
2023-09-10 12:51:27 +01:00
vaxerski f4e99a36a9 input: don't warp region constraints 2023-09-10 12:49:53 +01:00
Philip Damianik 1a6f961de2
hyprctl: Make device configs queryable (#3226)
* Make device configs queryable

Signed-off-by: pdamianik <39028343+pdamianik@users.noreply.github.com>

* Add set property to getoption output

---------

Signed-off-by: pdamianik <39028343+pdamianik@users.noreply.github.com>
2023-09-09 12:25:17 +01:00
shadowmax31 c061946a94
keybinds: Do not suppress pass and mouse release (#3219) 2023-09-09 10:15:24 +01:00
memchr 6648274735
fix: focusWindow on hidden workspace triggers another focusWindow. (#3216)
This commit address an issue where focusing a window on a hidden
workspace inadvertently triggered a second `focusWindow` call due to
simulated mouse movement. This behaviour led to the incorrect focus on
the window under the cursor instead of target window of method
`focusWindow()`, disrupting `focusurgentorlast` and `focuscurrentorlast`
dispatchers. Introduced a flag to the `CMonitor::changeWorkspace()`
method to prevent simulated mouse movements. This flag is set to false
by default. Changed the `focusWindow()` method accordingly to set this
flag to true when the target window is in a hidden workspace.
2023-09-08 19:17:04 +02:00
Vaxry 398e861b55 internal: fix warnings 2023-09-07 16:43:01 +02:00
vaxerski cc5852faa2 config: disable blur special by default
very expensive
2023-09-07 00:35:44 +02:00
vaxerski b2516010b7 hyprctl: fix missing comma in getopt -j
Fixes #3200
2023-09-06 23:52:25 +02:00
Philip Damianik 8c83852704
internal: Remove all `.c_str()` calls when using `std::vformat` (#3198)
Signed-off-by: pdamianik <39028343+pdamianik@users.noreply.github.com>
2023-09-06 21:45:37 +02:00
Philip Damianik 60c01dab01
config: Integrate HASCONFIG into CConfigManager::getConfigValueSafeDevice (#3195) 2023-09-06 19:16:46 +02:00
Philip Damianik a15e3e1f38
config/input: Improve fallback behavior for unset device config values (#3184)
* Fix fallback behavior for unset device config values

* Replace overload with default argument for fallback config key

* Remove default value for fallback argument in source

* Fix typos
2023-09-06 16:14:18 +02:00
vaxerski a1cc99a986 pch: add format 2023-09-06 14:59:34 +02:00
unrealhoang f90a009e93
input/config: add button scroll lock (#3189) 2023-09-06 14:54:48 +02:00
vaxerski 8b9cc9a8db animationmgr: guard monitor ptr in animationSlide 2023-09-06 13:05:37 +02:00
vaxerski 37e2311a3e config: loosen restrictions around animation keywords
Fixes #3185, makes hyprland ignore further args if an animation is disabled
2023-09-06 12:58:01 +02:00
Vaxry 61a71c65ac
internal: Formatter rework (#3186) 2023-09-06 12:51:36 +02:00
vaxerski c3a83daa1e monitor: minor adjustments 2023-09-05 22:16:14 +02:00
Dickby fa3de9b70e
renderer: Fix blur for passes set to 0. (#3181) 2023-09-05 16:33:40 +02:00
vaxerski 2d100bf57e socket2: add renameWorkspace event 2023-09-05 15:55:24 +02:00
Dickby 28f1f035b1
animationmgr: Optimize CAnimationManager::scheduleTick a bit. (#3172)
* Optimize CAnimationManager::scheduleTick a bit.

* Use integer in wl_event_source_timer_update call.
2023-09-05 15:06:39 +02:00
vaxerski db48f973fd xdgoutput: do not destroy resources on monitorRemoved 2023-09-05 13:33:08 +02:00
memchr 8e9f010ee0
build: use PCH to reduce compile time (#3095) 2023-09-04 19:56:02 +02:00
vaxerski 4eecb8bffc config: don't enable vrr 2 for maximized workspaces
fixes #3162
2023-09-04 18:24:18 +02:00
vaxerski d9937fcdba input: minor constraint fixes
fixes the confined region, warping issues, etc. Closes #3158
2023-09-04 17:34:19 +02:00
vaxerski e3c83ab2e0 xwaylandmgr: find closest output in xwayland coord translation
partially off-screen windows would be snapped to 0,0 otherwise
2023-09-04 17:30:48 +02:00
shadowmax31 b4c832a1f2
master: Add orientationcycle command on MasterLayout (#3128) 2023-09-04 16:45:58 +02:00
vaxerski 9f3a64481e dwindle: add proper movement for window move binds
ditches the "movewindow = swapwindow" mechanism. Fixes #2804
2023-09-04 15:34:13 +02:00
memchr 69439871e6
refactor: replace manual iteration of CWindow with existing methods (#3147) 2023-09-04 15:13:39 +02:00
MightyPlaza 6a0e2bbff3
socket2: added "activespecial" IPC event (#3163) 2023-09-04 15:11:51 +02:00
vaxerski 32f75ebb70 renderer: separate workspace window render logic
Makes the logic used to render stuff over the windows (special, popups, ime, lockscreen) unified by yeeting the workspace window logic (which is separate cuz fullscreen windows) into their own funcs. Fixes #2053
2023-09-04 15:07:56 +02:00
vaxerski 35df4693ea animatedvariable: don't reset timers on duplicate setters
Fixes the annoying jump when a recalc happens while a window is being animated
2023-09-04 13:11:56 +02:00
MightyPlaza 8fefb180b1
windowrules: Monitor rule fix (#3157)
* fix monitor rules
modified:   src/events/Windows.cpp

* exec on workspace as silent when special is open
modified:   src/events/Windows.cpp
2023-09-03 17:23:13 +02:00
vaxerski 5126bfab72 monitor: ignore no-op workspace changes 2023-09-03 17:21:55 +02:00
vaxerski c6c820d16d layout: always center floating xdg windows 2023-09-03 13:07:40 +02:00
vaxerski e6ca4b6eee window: check for special id matching in close_special_on_empty 2023-09-03 13:02:05 +02:00
vaxerski 5e0cf7d6a5 special: add misc:close_special_on_empty
fixes #3156
2023-09-03 13:00:06 +02:00
staz 01c6c5ae22
internal: Revert rounding of window size (#3153)
* Revert "renderer: round coords and size in renderWindow"

This reverts commit fc0c1896e0.

* Revert "xwaylandmgr: round reported sizes"

This reverts commit 2985e20e6a.
2023-09-03 12:51:48 +02:00
vaxerski 423b129b24 renderer: don't set enabled in applyMonitorRule 2023-09-03 12:43:57 +02:00
MightyPlaza 00bee91bbc
internal: workspace rule handling refactor (#3116)
modified:   src/events/Windows.cpp
2023-09-02 20:41:02 +02:00
vaxerski d4ec54d048 renderer: render IME popups in fullscreen
fixes #1353
2023-09-02 20:32:15 +02:00
memchr 69ce11a063
fix: use-after-free of CWindow* in CHyprGroupBarDecoration::draw (#3146) 2023-09-02 19:58:01 +02:00
vaxerski 204a580544 keybinds: fixup global conditions 2023-09-02 19:36:12 +02:00
vaxerski 1ecfb5e852 globalshortcuts: allow empty appid 2023-09-02 19:32:05 +02:00
vaxerski 2985e20e6a xwaylandmgr: round reported sizes
Since we round the sizes in the renderer, it's also a good idea to round the sizes reported to the apps. Fixes #3138
2023-09-02 00:04:55 +02:00
vaxerski d2a785dfe3 renderer: fixup occlusion conditions
fixes #3123 I fucking hate yall
2023-09-01 23:01:59 +02:00
vaxerski 563fe83db2 keybinds: set special monitor id before recalc
set special workspace's monitor ID before we call recalculateMonitor in toggleSpecialWorkspace. Fixes #1151
2023-09-01 22:57:23 +02:00
vaxerski f242f9447b keybinds: suppress up event if down was consumed
Fixes #3000
2023-09-01 22:14:10 +02:00
Vaxry d9292800a2
internal: Unsafe state reworks (#3114) 2023-09-01 22:03:56 +02:00
vaxerski 774a5bedf8 waylandResource: remove user data in markDefunct and not ~dtor 2023-09-01 20:03:58 +02:00
vaxerski bb0933437f wlr-ext-workspace: remove protocol impl
Various reasons: 1st, memory issues. 2nd, MR got closed (see https://gitlab.freedesktop.org/wlroots/wlr-protocols/-/merge_requests/35) 3rd, not needed anymore (waybar has its own hyprland/workspaces module)
2023-09-01 17:10:03 +02:00
q234rty 5035f5fc68
text-input-v1: Fix preedit styling in chromium (#3131) 2023-09-01 16:39:15 +02:00
memchr 1a13d44d5d
refactor: raise SIGABRT instead of write to null address (#3124) 2023-08-31 22:52:02 +02:00
vaxerski fc0c1896e0 renderer: round coords and size in renderWindow 2023-08-31 09:55:38 +02:00
vaxerski 9c4f776757 keybinds: fixup release conditions
honestly I already forgot why the m_vHeldBack vec existed. Seems useless and annoying. Fixes #3113
2023-08-30 23:23:35 +02:00
MightyPlaza b10cae3010
decos: groupbar mouse interaction (#3102)
* allow groupbar clicking
	modified:   src/Window.cpp
	modified:   src/Window.hpp
	modified:   src/managers/input/InputManager.cpp
	modified:   src/render/decorations/CHyprGroupBarDecoration.cpp
	modified:   src/render/decorations/CHyprGroupBarDecoration.hpp

* remove setting pos inside insertWindowToGroup()

modified:   src/Window.cpp
modified:   src/layout/DwindleLayout.cpp
modified:   src/layout/MasterLayout.cpp
modified:   src/managers/KeybindManager.cpp

* add group window by index and group size functions
modified:   src/Window.cpp
modified:   src/Window.hpp
modified:   src/managers/input/InputManager.cpp

* allow dragging into groupbar
modified:   src/Window.cpp
modified:   src/layout/DwindleLayout.cpp
modified:   src/layout/MasterLayout.cpp

* allow dragging from groupbar
modified:   src/managers/KeybindManager.cpp

* try groupbar clicking before border resize
modified:   src/managers/input/InputManager.cpp

* block grabbing groupbar on floating (crash)

remove later when crashing is fixed

modified:   src/managers/KeybindManager.cpp

* remove redundant { }
modified:   src/layout/DwindleLayout.cpp
modified:   src/layout/MasterLayout.cpp

* implement getWindowDecorationBox()
modified:   src/Window.cpp
modified:   src/Window.hpp
modified:   src/layout/DwindleLayout.cpp
modified:   src/layout/MasterLayout.cpp
modified:   src/managers/KeybindManager.cpp
modified:   src/managers/input/InputManager.cpp
modified:   src/render/decorations/CHyprDropShadowDecoration.cpp
modified:   src/render/decorations/CHyprGroupBarDecoration.cpp
modified:   src/render/decorations/IHyprWindowDecoration.cpp
modified:   src/render/decorations/IHyprWindowDecoration.hpp

* fix crash when moveoutofgroup in floating windows

also removes dragging from floating windows limitation

modified:   src/layout/IHyprLayout.cpp
modified:   src/managers/KeybindManager.cpp

* use CRegion in getWindowDecorationBox()
modified:   src/helpers/Region.cpp
modified:   src/helpers/Region.hpp
modified:   src/layout/DwindleLayout.cpp
modified:   src/layout/MasterLayout.cpp
modified:   src/managers/KeybindManager.cpp
modified:   src/managers/input/InputManager.cpp
modified:   src/render/decorations/IHyprWindowDecoration.cpp
modified:   src/render/decorations/IHyprWindowDecoration.hpp

* add groupbar scrolling
modified:   src/config/ConfigManager.cpp
modified:   src/managers/input/InputManager.cpp

* change name to getWindowDecorationRegion()
modified:   src/layout/DwindleLayout.cpp
modified:   src/layout/MasterLayout.cpp
modified:   src/managers/KeybindManager.cpp
modified:   src/managers/input/InputManager.cpp
modified:   src/render/decorations/IHyprWindowDecoration.cpp
modified:   src/render/decorations/IHyprWindowDecoration.hpp

* make dragging from group less hacky for floating
modified:   src/managers/KeybindManager.cpp
2023-08-30 17:39:22 +02:00
vaxerski c98a00678c input: fix xwayland constraint calcs
some minor adjustments, fixes #3028
2023-08-30 17:23:35 +02:00
vaxerski b4f123d1f2 compositor: remove wlr_scene refs
super old leftovers
2023-08-30 17:22:55 +02:00
vaxerski 28a90d6055 input: warp in unconstrainMouse
XWayland coord translation would fuck up if we did this in destroyConstraint
2023-08-30 13:42:17 +02:00
vaxerski 32f4059b37 screencopy: fix region sharing
translate before scaling if we are not dividing the coords
2023-08-30 13:17:26 +02:00
vaxerski 84c4a14dad opengl: cleanup framebuffer style 2023-08-29 23:24:35 +02:00
vaxerski 981386d2ae layout: allow changing float status of fullscreen windows 2023-08-28 22:55:52 +02:00
vaxerski b8f38dcbd3 layout: allow drag on fullscreen windows 2023-08-28 22:54:23 +02:00
vaxerski df691859fb renderer: make contrast and brightness adjustments before rendering 2023-08-28 18:29:44 +02:00
Vaxry 4a41d013a2
internal: Fix XDP multi-portal issues (#3077)
* add a hyprland portals conf

* remove portal checks

* typo

* Nix: remove portal patch

---------

Co-authored-by: Mihai Fufezan <fufexan@protonmail.com>
2023-08-26 17:12:21 +02:00
vaxerski 299d201e56 renderer: don't blur special on disabled blur 2023-08-26 11:48:04 +02:00
vaxerski 116b9a8056 xdgoutput: mark resources defunct when monitor is unplugged 2023-08-25 18:22:25 +02:00
vaxerski 9dae8ece71 layout: use full box for visibility check of floating xdg
Fixes #3069, if an xdg dialog pops up and is partially off bounds, just move it to the center.
2023-08-25 18:10:12 +02:00
vaxerski 870471dd96 internal: allow opening empty special workspaces
Fixes point 2 of #2596
2023-08-25 18:05:08 +02:00
vaxerski 23e17700a7 renderer: add decoration:blur:special
will blur behind the special ws
2023-08-25 17:44:17 +02:00
memchr f0da0b0be4
input: improved path handling; null check return value of fopen. (#3061) 2023-08-25 17:21:55 +02:00
vaxerski 3a1f30519b compositor: fix offset in auto arrangeMonitors
Fixes #3043, I am an idiot
2023-08-25 13:11:32 +02:00
vaxerski 6a5a5ed11e input: add transparent binds
adds a new flag for binds to be transparent (non-shadowable)
fixes #3058
2023-08-25 12:35:24 +02:00
vaxerski ad085666c1 input: sanitize newlines in device names
fixes #3066 by replacing newlines with dashes in device names
2023-08-25 12:17:48 +02:00
Jeremy Huang 90c03e5bd2
master: layout resize makes the wrong size changes (#3064) 2023-08-24 11:57:30 +02:00
end-4 17ea7db23a
gestures: Swipe direction lock (#3052) 2023-08-23 22:40:19 +02:00
vaxerski 9d094f655e renderer: track fade alpha for blur if ignore opacity is true
with ignore_opacity, blur would stay at 1 opacity during a fadeOut animation on layers, making it look wrong. Fixes #3051
2023-08-23 12:03:27 +02:00
vaxerski ba31518ed8 compositor: fix log types 2023-08-22 16:44:33 +02:00
MightyPlaza 41d9b6f0d7
dwindle: use smart on display borders (#2897) 2023-08-21 20:57:55 +02:00
memchr 9ad4a96d18
renderer: update alpha of layers only if active ws (#2994)
update `alpha` of ZWLR_LAYER_SHELL_V1_LAYER_TOP only when Workspaces is active on the monitor.
2023-08-21 20:55:57 +02:00
memchr cb59763d32
fix: improved focus behaviour on workspace switching for follow_mouse!=1 (#3041)
* fix: improved focus behaviour on workspace switching for follow_mouse!=1

When the 'input:follow_mouse' is not set to 1 and the target workspace
for switching does not currently have the previously focused window,
Hyprland will prioritize focusing on the top-left-most window.

* fix: #2451 call simulateMouseMovement.

* unify logic

* multimon fix

---------

Co-authored-by: vaxerski <43317083+vaxerski@users.noreply.github.com>
2023-08-21 20:54:02 +02:00
vaxerski 9977a8bfd4 compositor: log more in arrangeMonitors 2023-08-21 19:52:34 +02:00
Vaxry 37128bfd43
internal: Wayland Protocol impl improvements (#2944) 2023-08-21 19:36:09 +02:00
vaxerski 63b2189ce8 xdgshell: damage old popup coords after a reposition
fixes #3038. I updated the shell ver without properly supporting .reposition
2023-08-21 01:15:00 +02:00
vaxerski 025c023e4b xwayland: use logical pos in unmanaged geom requests
using raw xwayland coords is wrong cuz we use separate coord spaces
2023-08-21 00:39:39 +02:00
memchr 09cc96c0d5
feat(debug): add debug:suppress_errors to suppress errors. (#3032) 2023-08-20 18:17:49 +02:00
vaxerski b79dfcceb4 compositor: fix missed raw throws 2023-08-20 13:58:46 +02:00
vaxerski 7713daa86a compositor: log thrown runtime exceptions 2023-08-20 11:47:06 +02:00
vaxerski fff118fa76 xdgoutput: don't send all details in .get 2023-08-19 21:14:12 +02:00
vaxerski ebc5fed9b2 compositor: minor cleanup 2023-08-19 19:24:48 +02:00
Vaxry 942ee943f5 input: unify constraint hint logic
Unifies the constraint hint logic. Previously, ignoring the stupid conditions, unscaled hints were mistaken with scaled coordinates.
2023-08-18 22:40:23 +02:00
Vaxry 14f20a7372 xwayland: fix incorrect VECINRECT usage
Fixes #3002. VECINRECT uses x2 and y2 and not w / h.
2023-08-18 22:20:05 +02:00
Vaxry 3d9545d2e0 shaders: minor premultiplication fixes 2023-08-18 22:07:28 +02:00
end-4 37a211a2ae
animations: add slidefade and slidefadevert styles for workspaces (#3008)
* add slidefade and slidefadevert animations

* fix swiping for slidefadevert

* rename minPerc to movePerc for slidefade anim styles

* change default slidefade percentage to 100%

* remove useless comments

* findlastof + 1

* debug logging for slidefade/slidefadevert percentage
2023-08-17 22:30:20 +02:00
MightyPlaza 7155b4c266
renderer: Border improvements (#2986)
* simplify getting border size
	modified:   src/Window.cpp
	modified:   src/Window.hpp
	modified:   src/layout/DwindleLayout.cpp
	modified:   src/layout/MasterLayout.cpp
	modified:   src/render/decorations/CHyprGroupBarDecoration.cpp

* fix border damage and input box
	modified:   src/Window.cpp
	modified:   src/managers/AnimationManager.cpp

* add border size in resize_on_border box
	modified:   src/managers/input/InputManager.cpp

* simplify border (fixes possible typo)
	modified:   src/Window.cpp

* use updateSpecialRenderData()
	modified:   Window.cpp
	modified:   Window.hpp
	modified:   events/Windows.cpp
	modified:   layout/DwindleLayout.cpp
	modified:   layout/IHyprLayout.cpp
	modified:   layout/MasterLayout.cpp
	modified:   render/Renderer.cpp

* update window workspace rule data on reload
	modified:   src/config/ConfigManager.cpp

* use rounding()
	modified:   src/Window.cpp
2023-08-17 10:13:19 +02:00
Vaxry 7e8a212027 internal: allow negative monitor offsets 2023-08-16 18:16:39 +02:00
Dashie 19c4855afc
layout: Use refreshrate tick on all manual animations (#2988) 2023-08-16 10:56:48 +02:00
memchr 63b266cf65
internal: ioctl use /dev/tty instead of fd 0 for VT_GETSTATE (#2989)
* fix: ioctl use /dev/tty instead of fd 0 for VT_GETSTATE

ioctl VT_GETSTATE on stdin fails if it is not console, such as when
using GDM.  `/dev/tty` should be used instead.

- `/dev/tty` is a synonym for the controlling terminal of a process, if
there is one.

---------

Co-authored-by: Jan Beich <jbeich@FreeBSD.org>
2023-08-16 10:51:08 +02:00
Vaxry 4986d74ef2 xwayland: fix use of xwayland coords in native spaces 2023-08-15 20:10:43 +02:00
Vaxry 91e28bbe9d xwayland: use a completely separate coordinate system
Use a completely separate coordinate system for XWayland. This fixes all issues with force_zero_scaling overlaps.

Fixes #2916
2023-08-15 19:15:37 +02:00
kbtz 2b4537606f
master: fix `always_center_master` (#2961)
* master: fix always_center_master

* master: allow resizing single centered window

---------

Co-authored-by: kbtz <github@kbtz.dev>
2023-08-15 18:13:45 +02:00
Vaxry 347a1eb662 xdgoutput: separate logic for zero scaling positions
if a scaled monitor was directly to the left of another monitor, we'd change the size to have zero scaling without pushing other monitors out of the way, creating overlaps in xwayland.
2023-08-15 17:55:29 +02:00
Vaxry 7c4daee29a compositor: fix skipping iterators in arrangeMonitors 2023-08-14 19:27:33 +02:00
Vaxry b9a783229b compositor: don't apply offsets in renderer 2023-08-14 18:41:52 +02:00
Vaxry 2110dc1f03 compositor: fix auto positioning offset calcs 2023-08-14 17:31:36 +02:00
Vaxry 13886a264f internal: add a new monitor auto system 2023-08-14 14:22:10 +02:00
Vaxry 0314a727eb layers: set proper alpha to top grabbing surfaces 2023-08-13 21:52:43 +02:00
Vaxry 0220e4c1ea input: notify idle about activity on mouse move regardless of focus 2023-08-13 17:46:20 +02:00
MightyPlaza 4b568ae5f6
remove shadow no_gaps_when_only master (#2958)
* remove shadow no_gaps_when_only
	modified:   src/Window.hpp
	modified:   src/config/ConfigManager.cpp
	modified:   src/config/ConfigManager.hpp
	modified:   src/layout/DwindleLayout.cpp
	modified:   src/render/decorations/CHyprDropShadowDecoration.cpp

* add master
	modified:   src/layout/MasterLayout.cpp

* fix wrong
	modified:   src/layout/MasterLayout.cpp
2023-08-13 10:18:48 +02:00
MightyPlaza 739598717b
remove shadow no_gaps_when_only (#2956)
modified:   src/Window.hpp
	modified:   src/config/ConfigManager.cpp
	modified:   src/config/ConfigManager.hpp
	modified:   src/layout/DwindleLayout.cpp
	modified:   src/render/decorations/CHyprDropShadowDecoration.cpp
2023-08-12 23:37:55 +02:00
Vaxry 3f7f4207a6 config: add vrr per-display 2023-08-11 17:37:57 +02:00
UserSv4 8a7ce59ad4
internal: Fix grouped windows not being properly focused on activation (#2925)
* Fix grouped windows not being properly focused on activation

This bug could happen if you:
1. Open two Chromium windows in a single group
2. Open some tabs in both of the windows
3. Using tabs search (Ctrl+Shift+A) try to switch to a tab in the second window from the first one.
When this happens any window focus would be lost (hyprctl activewindow starts to output "Invalid") and also the mouse cursor would become centered relatively to the second window.

* Update Compositor.cpp
2023-08-11 17:27:09 +02:00
Vaxry 60b548296d internal: move backtrace to specific func 2023-08-11 17:22:19 +02:00
MightyPlaza 901236a535
rules: center window improvements (#2935)
* center window improvements
	modified:   src/config/ConfigManager.cpp
	modified:   src/events/Windows.cpp
	modified:   src/managers/KeybindManager.cpp

* remove redundant line
	modified:   src/events/Windows.cpp

* simplify code
	modified:   src/events/Windows.cpp
	modified:   src/managers/KeybindManager.cpp
2023-08-11 16:54:16 +02:00
Vaxry e4e8ae8f88 dwindle: disallow togglesplit on fullscreen 2023-08-10 22:01:34 +02:00
MightyPlaza c4c3b590e5
toplevel: patches group toplevel-activated (#2931)
* patches group toplevel-activated

	modified:   src/Compositor.cpp
	modified:   src/Window.cpp

* remove redundant call

	modified:   src/Compositor.cpp

* fix style
	modified:   src/Compositor.cpp
2023-08-10 20:06:39 +02:00
Vaxry 126792584f renderer: don't add workspace offset to pinned 2023-08-09 22:15:37 +02:00
Vaxry cbb899740c rules: add layer and window xray rules 2023-08-09 22:03:31 +02:00
Vaxry d7209b90bb renderer: remember extents before removing a window and use them for dt
fixes #2351
2023-08-09 14:28:04 +02:00
Vaxry 8e04a80e60 toplevelexport: minor fixes to dmabuf 2023-08-08 19:10:53 +02:00
MightyPlaza 6295cbe9cb
keybinds: Keep aspect ratio (#2907) 2023-08-08 18:52:20 +02:00
Vaxry ab73183cb2 config: adjust default background color 2023-08-08 18:04:46 +02:00
0x455241 b3393c429f
background: add background color option (#2915)
Co-authored-by: 0x455241 <>
2023-08-08 18:00:11 +02:00
Vaxry c748f36939 internal: add lock files and hyprctl instances 2023-08-08 16:16:40 +02:00
Michael ad3b8dddf9
keybinds: Only call fclose() when we have a valid file. (#2908)
Signed-off-by: Michael Pacheco <git@michaelpacheco.org>
2023-08-08 16:07:15 +02:00
Michael cebab759d5
Close keymap files. Fixes #2904 (#2905)
Signed-off-by: Michael Pacheco <git@michaelpacheco.org>
2023-08-07 19:34:15 +02:00
Vaxry deeeb33c5f macros: fix missing include 2023-08-07 18:48:08 +02:00
Vaxry 261c3307f7 internal: cleanup headers in helpers/ 2023-08-07 13:36:14 +02:00
Vaxry 6e53c47e68 renderer: fix missing premultiplication for border multisampling 2023-08-06 20:46:00 +02:00
Vaxry 6c10c38481 renderer: fully switch to premultiplied alpha 2023-08-06 20:33:36 +02:00
Vaxry a077b7a92e animationmgr: avoid redundant ticks 2023-08-05 23:29:33 +02:00
MightyPlaza b925f1b497
fix workspace change focus (#2891) 2023-08-05 20:53:13 +02:00
vaxerski ef0d97153a xdgoutput: manually destroy manager resource 2023-08-04 14:07:41 +02:00
vaxerski 2e6693fbb6 compositor: update window rules on workspace move 2023-08-03 21:59:12 +02:00