Commit Graph

2685 Commits

Author SHA1 Message Date
vaxerski aac75ddcbf screencopy: guard region buffer values in frameDamage 2023-07-19 13:10:41 +02:00
outfoxxed 5cd5631fb2
Add bringWindowToTop function to IHyprLayout (#2747)
* Add bringWindowToTop function to IHyprLayout

* Rename `bringWindowToTop` to `requestFocusForWindow`

* Fix doc
2023-07-19 12:39:45 +02:00
vaxerski b8a7b09092 screencopy: use wlr_buffer api for shm copies 2023-07-19 12:24:41 +02:00
vaxerski 81f4a4f471 screencopy: improve shm handling 2023-07-19 00:51:38 +02:00
vaxerski 2623364dbd no_xwayland: fix redef 2023-07-19 00:33:47 +02:00
MightyPlaza 3b03597784
keybinds: movegroupwindow-improvement (#2740)
* movegroupwindow-improvement

* use std::swap
2023-07-19 00:30:10 +02:00
vaxerski ce9c5fd722 render: set refresh to 0 for both wl and x11 backends 2023-07-19 00:28:15 +02:00
vaxerski f2999e84b9 render: set refresh to 0 for wayland backend outputs 2023-07-19 00:02:57 +02:00
Aaron Blasko 7c1dacea09
only return 0 when using -h (#2738) 2023-07-18 21:00:08 +02:00
vaxerski 16fd9084ea screencopy: nullcheck for empty buffer 2023-07-18 15:52:53 +02:00
vaxerski 0ba28a46fd monitor: unplug all callbacks in ~dtor 2023-07-18 15:36:27 +02:00
Vaxry 8370a7fcc4
internal: Protocol C++ Wraps + XDGOutput impl (#2733)
move to our own xdgoutput impl instead of wlr's
2023-07-18 15:30:28 +02:00
vaxerski 629e61c7a5 monitor: disconnect bind on disconnect 2023-07-18 15:22:49 +02:00
vaxerski 2e323a5671 renderer: use correct wlr sample func 2023-07-18 12:25:48 +02:00
Jan Beich 8c9e2e1ff1
deps: update wlroots (#2734) 2023-07-18 12:13:59 +02:00
István Donkó 5c8a20be77
fix: handle window change directions in fullscreen (#2728) 2023-07-18 12:12:50 +02:00
Tuur Vanhoutte d2eb4fee76
Avoid connected monitor reusing unavailable ID (#2731) 2023-07-18 12:12:05 +02:00
vaxerski 4537860079 layout: recalculate monitor instead of window in updateDynamicRules 2023-07-18 11:49:57 +02:00
vaxerski 7f47655f60 layout: recalc window on dynamic rule update 2023-07-18 00:11:43 +02:00
vaxerski 2c7b2ad6ca windowrules: add border size rule 2023-07-18 00:11:29 +02:00
MightyPlaza ddb8c89776
Allow empty args in hyprctl dispatch (#2724) 2023-07-16 21:01:06 +02:00
MightyPlaza cacdb424a9
massive-fix (#2725) 2023-07-16 21:00:38 +02:00
vaxerski 3229862dd4 xwayland: guard monitor validity in xwayland scale overriding 2023-07-15 23:10:05 +02:00
vaxerski 06563d7034 popups: update parent pos on commit 2023-07-15 18:27:21 +02:00
vaxerski 459afcc47f idle: fix reverse flag for new idle protocol 2023-07-14 20:02:31 +02:00
Lennard Hofmann 06f5910365
Make bind modmask case-insensitive (#2714) 2023-07-14 18:39:53 +02:00
MightyPlaza b159634ef9
move/resize window (#2706) 2023-07-13 20:20:40 +02:00
MightyPlaza db2367bf33
update groub decos (#2705) 2023-07-13 20:17:14 +02:00
vaxerski f8def68e7e idle: implement new protocol 2023-07-13 18:05:34 +02:00
vaxerski 9f7382bca4 keybinds: add movegroupwindow 2023-07-13 17:55:25 +02:00
Daniel Adolfsson d3a644d81c
Dwindle: Make resize more intuitive (#2681)
* improved resize

* clang-format

* rewrite

* almost legacy behavior when using CORNER_NONE
2023-07-13 16:52:11 +02:00
vaxerski 70dae78c1b background: add mascot versions 2023-07-13 14:32:30 +02:00
zakk4223 21f64b6660
Keep new mapped layer's alpha zero if the workspace has a fullscreen window (#2686)
Co-authored-by: Zakk <zakk@rsdio.com>
2023-07-12 12:58:45 +02:00
vaxerski 7a7e3ee6d9 screencopy: don't send frames on commits w/o a buffer 2023-07-12 00:30:42 +02:00
vaxerski 9c9f56743e groupbar: fix vram leak 2023-07-11 20:57:38 +02:00
Daniel Adolfsson 64e7d5345d
Add support for smart splitting (#2676)
* Add support for smart splitting

* clang-format

* smart_split default to 0, and make smart_split behave like preserve_split
2023-07-11 13:37:25 +02:00
MightyPlaza 29d017f54b
monitor desc default workspace but working now (#2678)
* fix desc check

* fixes crashes when nulptr
2023-07-11 11:29:19 +02:00
vaxerski 26579fa962 texture: fix styling 2023-07-11 00:27:13 +02:00
vaxerski 0c61a1530f plugins: fix config value usage in init 2023-07-10 14:13:23 +02:00
vaxerski da7ea2b33d pluginapi: add configReloaded event 2023-07-10 13:54:06 +02:00
vaxerski 382af06406 render: resize subsurfaces with size resizes 2023-07-10 13:32:57 +02:00
vaxerski 515a363ecd render: move lastFrameDamage to CMonitor 2023-07-10 13:21:00 +02:00
vaxerski fe54dcb4eb screencopy: send original damage, avoid extents 2023-07-10 13:17:21 +02:00
vaxerski 42f46aeac5 config: minor path handling fixes 2023-07-10 13:10:34 +02:00
MightyPlaza 4cc0e6de90
monitor desc default workspace (#2673) 2023-07-10 07:53:03 +02:00
MightyPlaza d9f7f039e1
monitor desc support (#2670)
* monitor desc

* monitor desc
2023-07-09 23:10:35 +02:00
Tuur Vanhoutte b99ac063ea
Reuse same ID when reconnecting monitor, otherwise use minimum available ID (#2666)
Fixes #2601
2023-07-09 23:08:40 +02:00
vaxerski b33d82734f input: schedule frame on mouse move 2023-07-09 00:44:32 +02:00
Ed Younis f49af187bc
Xdg config home support (#2047)
* config: Add support for XDG_CONFIG_HOME

Contributes-to: #1040
Co-authored-by: Björn Bidar <bjorn.bidar@thaodan.de>
Signed-off-by: Björn Bidar <bjorn.bidar@thaodan.de>

* config: Log used config file

* config: Add GetConfigDir and minor fixes

* config: fixed minor nitpicks

---------

Signed-off-by: Björn Bidar <bjorn.bidar@thaodan.de>
Co-authored-by: Björn Bidar <bjorn.bidar@thaodan.de>
2023-07-07 19:19:35 +02:00
vaxerski e632bf176b config: fix reading touchpad values to non-touchpad per-device cfgs 2023-07-06 16:26:38 +02:00
Mykola Perehudov 41358c6fb5
Cleanup compositor deadcode (#2657)
* Remove dead code as it is a part of CCompositor::cleanup

* Unify sd_notify logic with Compositor lifetime
2023-07-06 15:24:49 +02:00
Mykola Perehudov bbedb065e1
eventmanager: drop obsoleted ignore events flag (#2660)
This flag became obsoleted in commit
287e6c4ede
2023-07-06 15:23:11 +02:00
Mykola Perehudov 0c974b7236
Avoid passing control unix socket descriptors to children (#2656)
Add SOCK_CLOEXEC flags to server side connection FDs to make them
closed during execve(2).
2023-07-06 11:39:02 +02:00
nexec 8407a9af0a
Close socket2 client descriptor on hangup (#2654) 2023-07-06 00:18:44 +02:00
vaxerski 86e487e003 input: remove old redundant code 2023-07-05 13:20:40 +02:00
MightyPlaza 34d845da13
typo (#2643) 2023-07-04 22:03:19 +02:00
vaxerski 07d7962c7f swipe: fix mixup of r/m 2023-07-04 12:34:22 +02:00
vaxerski 18f9fb5e0f rules: add stayfocused 2023-07-04 12:05:25 +02:00
vaxerski 6f91997f06 layout: improve time restraints in window drag 2023-07-04 11:49:24 +02:00
MightyPlaza 283a8e77aa
screenshot fix (#2640) 2023-07-04 11:40:28 +02:00
MightyPlaza 50755d26d4
lockgroups fix (#2636) 2023-07-03 15:53:04 +02:00
MightyPlaza 05047f60f4
groupbar fixes (#2630)
Fixes multiple groupbar decoration issues:

  -  togglegroup removes fullscreen to avoid to avoid weird state
 -   fixes issue where a group had multiple windows with head = true
 -   fixes issue where merging 2 groups would cause a window to have 2 groupbar decorations
  -  fixes issue where merging a group with more than 1 window into another group would make windows have no groupbar decoration
  -  fixes issue where ungrouping windows could just move them into another group on the same workspace


---------

Co-authored-by: vaxerski <43317083+vaxerski@users.noreply.github.com>
2023-07-03 12:49:56 +02:00
vaxerski 738ec900f4 config: fix floating rules with floating-by-rule windows 2023-07-02 13:02:48 +02:00
vaxerski 86ca283352 gestures: add workspace_swipe_use_r 2023-07-01 16:30:36 +02:00
vaxerski 6c28388420 layout: minor style fixes 2023-07-01 16:28:17 +02:00
vaxerski e96fcb31f0 layout: set pseudo to float size in new window 2023-06-30 11:29:06 +02:00
vaxerski 1012e2735a shader: remove useless comment 2023-06-29 23:20:10 +02:00
MightyPlaza 990ad854bd
Reloads animated decoration values set on window rules (#2594)
* Reloads dynamic window rules

* Update ConfigManager.cpp

* Update ConfigManager.cpp

* Reloads animated decoration values set on window rules

Reloads animated decoration values like border color and opacity set on window rule on config reload.
2023-06-28 11:40:16 +02:00
Vaxry d83296c7a9 renderer: damage decos on damageWindow 2023-06-27 13:23:58 +02:00
MightyPlaza 7ed66abe57
Reloads dynamic window rules (#2585)
* Reloads dynamic window rules

* Update ConfigManager.cpp

* Update ConfigManager.cpp
2023-06-26 13:03:51 +02:00
Vaxry 4294456cdc xwayland: remove spaces from output names 2023-06-25 13:52:24 +02:00
Vaxry 01f85a09a9 xwayland: send zero scaling to xwayland if enabled 2023-06-23 21:42:44 +02:00
Vaxry 69fae18e63 damage: account for popups in getFullWindowBoundingBox 2023-06-23 13:54:01 +02:00
Vaxry c241da5ea5 crashreporter: log tag 2023-06-23 13:22:38 +02:00
Vaxry 0283c498d6 xwayland: fix minor force_zero_scaling bugs 2023-06-22 21:43:31 +02:00
Vaxry fc59cef1ee keybinds: remove old todo 2023-06-21 21:20:26 +02:00
Vaxry 2f875aec79 includes: move workspace protocol header to includes 2023-06-21 21:17:05 +02:00
Vaxry cfa4086b0b configmgr: fix idiotic comparisons in device configs 2023-06-21 20:58:35 +02:00
Vaxry cbe9bf0e69 compositor: move group members properly in moveWindowToWorkspaceSafe 2023-06-21 20:51:18 +02:00
Vaxry 83ad6b9af8 groupbar: fix damage calcs 2023-06-21 13:16:10 +02:00
Vaxry cabdf38ce4 internal: minor style fixes 2023-06-20 21:35:54 +02:00
Vaxry 2295bbdd80 xwaylandmanager: fixup style 2023-06-18 18:14:52 +02:00
Shemig 74ca81cc79
Partial revert of Commit 302ec13: (#2539)
Fix crash when screen size is 0x0 (#2523)

Reason: The disable of a monitor with 0x0 size
is causing issuses with some users.

https://github.com/hyprwm/Hyprland/issues/2537

Left the defensive code to resolve the crash.
Will continue to investigate and find a solution for the
dell xps disabled monitor

Co-authored-by: giladsx <gilad@spectalix.com>
2023-06-17 18:49:37 +02:00
vaxerski 5ac625d7bd format: fix hooksystem 2023-06-16 18:45:14 +02:00
Shemig 302ec1372c
Fix crash when screen size is 0x0 (#2523)
(When booting into laptop clam mode in dell XPS)
and also ignore any screen with size 0x0 in the first place

Co-authored-by: giladsx <gilad@spectalix.com>
2023-06-15 22:07:58 +02:00
vaxerski c4dec4f796 internal: damage window on change group 2023-06-14 19:44:51 +02:00
vaxerski 0f1911a8d4 opengl: fix invalid tex references to tex-less shader 2023-06-14 13:47:57 +02:00
vaxerski e43f7fc98d shader: init uniforms to -1 2023-06-14 13:29:12 +02:00
vaxerski fbabb105c3 gamma: use wlr's new gamma manager event 2023-06-14 13:26:47 +02:00
outfoxxed f0e4f6622e
Implement pass binds (#2503)
* Implement pass binds

Pass binds run the associated dispatcher but do not prevent windows
from receiving the bind.

* Fix pass binds not working properly with release binds

* Rename `pass` to `nonConsuming`
2023-06-14 13:08:56 +02:00
JManch 9a88c19f1a
screenshader: fix uniform variable checks (#2513) 2023-06-14 13:03:20 +02:00
vaxerski 7762ac0173 toplevelexport: ignore defunct windows 2023-06-13 20:13:21 +02:00
vaxerski e8c6d0f51e compositor: don't set dim percent on disabled dim 2023-06-13 18:51:49 +02:00
vaxerski 807b52b019 animationmgr: warp on equal start and goal 2023-06-13 18:50:45 +02:00
vaxerski 0e31eaa157 shadow: drop useless damageEntire() 2023-06-13 18:50:45 +02:00
memchr 24ed9b061f
feat: add variable to customize locked group border color (#2507)
added variables:
- general:col.group_border_locked
- general:col.group_border_locked_active
2023-06-13 12:04:54 +02:00
Vaxry 6beb79f27b xwayland: add force_zero_scaling 2023-06-11 21:52:13 +02:00
Vaxry 64ce06a353 xwayland: add nearest neighbor filtering as an opt 2023-06-11 21:33:59 +02:00
end-4 e1edfde539
Allow setting alpha value for ignorezero layer rule (#2477)
* rename ignorezero to ignorealpha

* allow setting ignorealpha value

This commit allows setting a float value (0-1) for the ignorealpha layer rule.
Does not yet have error handling; invalid ignorealpha layer rule will crash Hyprland.

* add brackets i forgot to add

* prevent crash with invalid ignorealpha value

prevents hyprland from immediately crashing with invalid ignorealpha layer rule
does not log

* don't try to set ignoreAlphaValue if alpha value not specified

* add catch to try, reintroduce ignorezero

- added catch after try cuz i was an idiot
- re-add ignorezero as an alternative to ignorealpha to not introduce a breaking change

* add logging for failed ignorealpha layer rule

* fix get ignorealpha's get VALUE

* check npos and use empty()

* rename VALUE cuz no longer const

* format Shader.hpp
2023-06-11 19:30:31 +02:00
Nicola Guerrera 10fd75c833
zoom: multiply by scale only on mouseZoomUseMouse (#2495) 2023-06-10 23:00:41 +02:00
Vaxry 7932e42507 screenshader: add output uniform 2023-06-10 16:10:26 +02:00
Nicola Guerrera 003993337a
calculate zoom_center based on monitor scale (#2482) 2023-06-10 12:28:00 +02:00
memchr bca3068db2
feat: add lockactivegroup dispatcher (#2478)
* feat: add lockactivegroup dispatcher

The `lockactivewindow` dispatcher takes `lock`, `toggle` or `unlock` as arguments. When a group is locked, no window or group can be added to it, nor can it be added to another group, but the `moveintogroup` and `moveoutofgroup` dispatches are not affected.

Implementation details:

the lock is implement via `SGroupData.locked` flag (defaults to false).

The flag is only relevant to the group head, and upon the group head's succession, the flag will be passed down to the new head. Meanwhile, the old head's flag will be set to false.

The flag is set to false when a group is dismissed.

New condition checks have been added to the dwindle and master layout to check if target group is unlocked (and if the source is also a group and unlocked) before adding windows to the target group.

* refactor: `lockactivegroup dispatcher code ordering
2023-06-09 23:44:18 +02:00
Vaxry cf37922d42 input: update surface input on changeworkspace 2023-06-09 12:20:40 +02:00
eriedaberrie d123835ef5
main: fix segfault when -c is given with no other arguments (#2470) 2023-06-09 12:15:18 +02:00
Franz Berger 4afeedbd56
Fix fractional scale updates in some cases (#2447)
* fix fractional scale update in moveWorkspaceToMonitor

* fix fractional scale update in moveToWorkspace

* Revert "fix fractional scale update in moveWorkspaceToMonitor"

This reverts commit 6612197a38.

* Revert "fix fractional scale update in moveToWorkspace"

This reverts commit 75d9795a06.

* move fractional scale code to updateSurfaceOutputs

* remove duplicate check

* remove superfluous setPreferredScale()
2023-06-06 09:48:07 +02:00
Vaxry 10db5a4fdb xwayland: disconnect events on destroy
thanks Kirill Primak
2023-06-05 20:51:47 +02:00
Vaxry 1a4e6e6a4b window: recalc on deco remove 2023-06-05 09:49:21 +02:00
staz e4e6ddb075
Make movetoworkspace register previous workspace (#2436)
* Make movetoworkspace register previous workspace

* style: no braces + format with clang-format
2023-06-05 09:44:13 +02:00
Vaxry 4ef684f615 hyprctl: recalc layout on setprop 2023-06-04 21:35:23 +02:00
Vaxry 2629cfeeab layouts: make aware of borderSize prop 2023-06-04 21:35:23 +02:00
Vaxry d83e5b8409 internal: make borderSize prop overridable 2023-06-04 21:35:23 +02:00
Vaxry c5a7202cd9 noxwl: add missing stubs 2023-06-03 13:01:32 +02:00
Vaxry 147e962370 deps: update wlroots 2023-06-03 12:20:28 +02:00
Cyril Levis d7db7040d4
feat: add ipc set title window event (#2419)
* feat: add ipc set title window event

* chore: add EMIT_HOOK_EVENT and change event name
2023-06-03 11:18:49 +02:00
Vaxry 871ab24c6e internal: properly set monitor props on special windows 2023-06-02 20:14:34 +02:00
Vaxry ce0f248d20 events: remove old comment 2023-06-02 19:50:02 +02:00
Sinkerine ca3791fed8
[hyprctl] Expose the special workspace id and name of the monitor (#2392)
* [hyprctl] Expose the special workspace id of the monitor

So that we know if a special workspace is shown on a monitor

* [hyprctl] Add special workspace name to the output
2023-06-02 13:25:33 +02:00
Vaxry e76bd43f53 rules: add nodim 2023-05-31 21:11:20 +02:00
Vaxry baf81cdc5d input: force focus on movefocus 2023-05-31 20:59:38 +02:00
Vaxry 9f72d508ae groupbars: fix damage calcs 2023-05-31 19:53:58 +02:00
Vaxry fd73a7f795 gradient: fix warn 2023-05-31 15:55:54 +02:00
vaxerski a7cfbdb854 keybinds: fix tryMoveFocusToMonitor with special 2023-05-29 18:11:37 +02:00
vaxerski 1e3571eb5b layout: don't reset to floating size on drag tiled 2023-05-29 18:05:41 +02:00
vaxerski 5484411232 compositor: disallow sending pinned to special 2023-05-29 17:46:12 +02:00
Jan Beich f1ad270ff8
vector: restore cmath include after 438d063ec6 (#2394)
src/helpers/Vector2D.cpp:27:26: error: no member named 'floor' in namespace 'std'
    return Vector2D(std::floor(x), std::floor(y));
                    ~~~~~^
src/helpers/Vector2D.cpp:27:41: error: no member named 'floor' in namespace 'std'
    return Vector2D(std::floor(x), std::floor(y));
                                   ~~~~~^
src/helpers/Vector2D.cpp:37:17: error: no member named 'sqrt' in namespace 'std'
    return std::sqrt(dx * dx + dy * dy);
           ~~~~~^
2023-05-29 15:12:00 +02:00
Jeremy Huang b3a86952cf
focus: fix #1675 window not scrollable after movefocus (#2390) 2023-05-29 09:52:36 +02:00
outfoxxed 409ff027f8
Fix UAF in animation end callback if callback deletes the animation (#2389)
Removes use after free when the end callback deletes the animation as
long as `m_bRemoveEndAfterRan` is false.
2023-05-29 09:51:58 +02:00
vaxerski 438d063ec6 vector: use c++ stdlib math functions instead of cmath 2023-05-28 22:50:13 +02:00
vaxerski 078ba6daa8 groupbars: add text color opt 2023-05-27 17:46:02 +02:00
Jeremy Huang 8afc2f45c7
focus: make cursor follow movewindow (#2374) 2023-05-27 12:16:50 +02:00
vaxerski 5f4659afef xdgshell: check and conform to rigid float sizes on commit 2023-05-26 14:49:03 +02:00
vaxerski 0887e2ee6e window: reveal current from group on toplevel activate 2023-05-26 13:44:59 +02:00
vaxerski 62e3953f5b master: guard monitor in recalc 2023-05-26 13:41:52 +02:00
vaxerski 9c9b74179c pluginapi: add separate window render events 2023-05-26 13:07:45 +02:00
vaxerski a2bb95fc60 touch: fix double offset in local 2023-05-24 22:19:22 +02:00
vaxerski 12227d7b6a input: only configure newly added touch devices 2023-05-24 22:17:33 +02:00
vaxerski a4c120d608 layouts: ignore direction forces on non-map 2023-05-24 19:23:10 +02:00
eriedaberrie 53285a75ad
hyprctl: fix cut-off json outputs (#2352)
* hyprctl: fix cut-off json outputs

* Address comments
2023-05-24 17:46:56 +02:00
vaxerski f877d68f4f launchanim: fix #2291 2023-05-24 15:49:31 +02:00
vaxerski eb1f832fce decos: recalc on add 2023-05-23 14:26:38 +02:00
vaxerski 799add8659 groupbars: fix reserved area on titles 2023-05-23 14:18:26 +02:00
vaxerski 90cb5fb672 groupbars: make gradients toggleable 2023-05-22 22:07:32 +02:00
vaxerski d1ec314a03 groupbars: conserve VRAM by staticizing textures 2023-05-22 22:06:40 +02:00
vaxerski 7bcc01efb7 groupbars: fix minor alignment issues 2023-05-22 21:43:37 +02:00
vaxerski 206ac000b9 groupbars: add title and gradient rendering 2023-05-22 21:40:32 +02:00
vaxerski 1eb6cfd45c groupbar: make exclusive 2023-05-22 20:52:41 +02:00
vaxerski 088b4a68e6 moveActiveToWorkspace: update last window of old ws 2023-05-22 19:44:10 +02:00
vaxerski 086f724951 wlr_ext_workspaces: honor activate from client + format 2023-05-22 19:36:47 +02:00
Russell Greene ad244190e0
1483: fix crash on last display disconnect (#2344) 2023-05-22 12:18:07 +02:00
maqrrr 9f8c5cb63c
Fix broken pipe crash when event listener terminates (#2339) 2023-05-21 14:38:18 +02:00
Vaxry 5627b70981 input: reset cursor hide timer on tablet 2023-05-20 21:15:21 +02:00
Anthony Ruhier d7935356da
input: don't move monitor focus on wp change (#2320) 2023-05-17 13:32:59 +01:00
Anthony Ruhier 9ef7225532
don't swap workspaces if monitors are the same (#2322)
Return swapActiveWorkspaces early if MON1 and MON2 are equals, to avoid
buggy behavior.
2023-05-17 13:31:03 +01:00
outfoxxed 642030f959
Fix not finding function symbols for hooking (#2292)
Fixes no useful feedback about failing subcommand.
Fixes function hooks breaking when running under a path containing
spaces.

Replaced old usages with this function where possible.
Complex shell usages now use `execAndGetShell` which is equal to the
old function.
2023-05-16 23:39:14 +03:00
Eric_Luo b5b9af508a
bug fix (#2314)
fix float check logic

Co-authored-by: hnboy <hnywolf@gmail.ccom>
2023-05-16 17:43:04 +01:00
vaxerski d68f8ea668 internal: make CAnimatedVariable non-move non-copy 2023-05-16 12:49:59 +01:00
vaxerski 5b84b0fb44 animationmgr: allow empty avars 2023-05-15 17:11:51 +01:00
vaxerski 824813fc6a internal: remove check for negative exact vector args 2023-05-15 15:16:06 +01:00
vaxerski 7c207243e4 input: check for matrix availability in touch config 2023-05-14 13:54:55 +01:00
vaxerski b748b0734f input: don't refocus on closed window 2023-05-14 13:47:43 +01:00
vaxerski 896a78aaa0 lock: add allow_session_lock_restore 2023-05-13 12:36:36 +01:00
vaxerski cc01550aff hyprctl: recalc layout on dynamic workspace 2023-05-12 01:16:27 +01:00
vaxerski 413a36a914 workspacerules: overwrite on existing 2023-05-12 01:15:32 +01:00
vaxerski 86ef85efae layershell: don't enter on unmapped ls 2023-05-12 01:07:46 +01:00
vaxerski f2725a374a render: minor fixes to fullscreen rendering 2023-05-10 18:36:13 +01:00
vaxerski 7fde80f38e layers: fix wonky focus on multimon 2023-05-09 17:01:18 +01:00
vaxerski cc4ccfdbfd internal: use i64 for workspaces in outofbounds 2023-05-09 14:08:05 +01:00
Andrei Alexeyev 2f87e4c2f3
renderer,config: add custom DRM modeline support (#2254)
This allows specifying custom display resolutions for the DRM backend.
This is useful for display overclocking, working around broken EDIDs,
etc. To use this feature, specify a modeline instead of a resolution
in the config, for example:

    monitor = DP-1, modeline 1071.101 3840 3848 3880 3920 2160 2263 2271 2277 +hsync -vsync, 0x0, 1

This example is a custom 3840x2160@120Hz mode with tightened timings.
I use it because the standard timings don't work with my monitor and GPU
combination (M28U with RX580).

The syntax is compatible with Sway and Xorg.
2023-05-09 14:01:45 +01:00
vaxerski e7c2ea9724 layershell: focus if changed keyboard mode 2023-05-08 19:12:01 +01:00
scorpion-26 826dc61e5c
Add "next on monitor or empty" workspace parameter (#2198)
* Add "next on monitor or empty" workspace parameter

Implements the following workspace parameter:
r+x/r-x (i.e. r+1): Behaves similar to the "m" parameter, but can also
select empty workspaces and it doesn't wrap around

* Improve code comments

* Implementation V2 for 'r' workspace param

* Rebase to upstream

Should fix CI

* Always set outName

* Include named workspaces

Currently only considers open/active named workspaces
2023-05-08 14:37:59 +01:00
vaxerski a31dceb2c6 includes: remove redundant from screencopy 2023-05-07 00:11:33 +01:00
vaxerski 1ba7a09bf6 includes: use libdrm prefix for include 2023-05-07 00:11:01 +01:00
vaxerski afe8d8dfec monitors: fix some bugs with re-plug 2023-05-06 16:50:15 +01:00
dtop129 7e5ba5e824
Fixed wrong focus changes when moving background workspaces (#2258) 2023-05-06 16:13:26 +01:00
vaxerski 83cd5e2ebd workspaces: minor fixes for multi-special 2023-05-06 16:10:51 +01:00
vaxerski 7f0738bcb3 varlist: allow using s for std::isspace 2023-05-06 01:16:20 +01:00
vaxerski 583b8842e7 configmanager: fix substr offset in default ws rule 2023-05-06 01:10:05 +01:00
Dashie a8541d5f64
Add split preselection (#2240) 2023-05-06 01:02:18 +01:00
vaxerski 4ad03af544 compositor: don't focus pointer in focusWindow 2023-05-06 00:59:25 +01:00
vaxerski 0859944c9a input: add custom accel profiles 2023-05-05 16:06:13 +01:00
vaxerski c0be1e2fd8 configmanager: remove useless log from handleWorkspaceRule 2023-05-05 15:42:02 +01:00
vaxerski 7b73a332ea configmanager: deprecate bindws 2023-05-05 15:41:25 +01:00
vaxerski a5d63a0324 configmanager: store workspace rules as a deque 2023-05-05 15:33:31 +01:00
vaxerski 8435d6fc12 monitors: toggle special on changeworkspace with special 2023-05-05 15:01:31 +01:00
vaxerski bf04c83e3d config: clear layer rules on reload 2023-05-04 18:28:45 +01:00
scorpion-26 c3b9326ba1
Honor debug:enable_stdout_logs on startup (#2197)
* Honor debug:enable_stdout_logs on startup

disableStdout is set via config in CConfigManager::init(), which is
called early in CCompositor::initServer(). initServer() always disables
stdout logs at the end though, even when stdout is enabled is config. With this commit,
the config is respected.

* Don't spam stdout message
2023-05-03 16:08:01 +01:00
vaxerski fd3e6a3bfd workspaces: restore monitor on re-plug 2023-05-03 15:15:56 +01:00
vaxerski 0155b85950 rules: fix monitor rule with names 2023-05-03 14:58:51 +01:00
jacekpoz a663823af2
only ignore no_gaps_when_only when the workspace rule specifies a border (#2217)
Co-authored-by: jacekpoz <jacekpoz@cock.li>
2023-05-03 14:48:46 +01:00
vaxerski 72b118cd8f opengl: don't use new optim with xray off on special tiled 2023-05-02 21:23:53 +01:00
vaxerski 79791c9ed4 internal: fix -Wsign-compare and -Wunused-variable warnings 2023-05-02 14:53:31 +01:00
Yavor Kolev ac3edec14b
Add `activeworkspace` hyprctl command (#2202)
* Add `activeworkspace` hyprctl command

* fix format in hyprctl

* Make stuff more shared in workspace hyprctl

---------

Co-authored-by: vaxerski <43317083+vaxerski@users.noreply.github.com>
2023-05-02 14:51:52 +01:00
vaxerski cde7f79af0 xwayland: allow initial focus to dialogs 2023-05-02 14:44:21 +01:00
levnikmyskin c949173bc9
Added some workspace-specific rules (#1986)
* added some workspace-specific rules

* added some worskpace-specific rules, with windowrule like syntax

* monitor is not mandatory anymore

* pointers to config are now static

* fixed optional WorkspaceRule fields

* Windows can now specify border size

* removed CHyprOpenGLImpl::renderBorder borderSize default value

* stuff

---------

Co-authored-by: Alessio Molinari <alessiomolinari@gmail.com>
Co-authored-by: vaxerski <43317083+vaxerski@users.noreply.github.com>
2023-05-01 22:28:27 +01:00
Jan Beich 250d5cf78c
config: add missing header for libc++ after 3a631e40db (#2208)
src/config/ConfigManager.cpp:1980:27: error: implicit instantiation of undefined template 'std::basic_stringstream<char>'
        std::stringstream error;
                          ^
/usr/include/c++/v1/iosfwd:134:32: note: template is declared here
    class _LIBCPP_TEMPLATE_VIS basic_stringstream;
                               ^
2023-05-01 22:24:51 +01:00
vaxerski 45b1e6dc5e keybinds: simulate workspace switch on focusWindow to another ws 2023-05-01 15:39:08 +01:00
vaxerski d6b069458d input: don't refocus on dragging 2023-05-01 15:15:55 +01:00
outfoxxed 3a631e40db
Declarative plugin management (#2180)
* Declarative plugin management

Allow declaring `plugin` entries in the hyprland configuration.

Plugins will be loaded if an entry is added and unloaded if that entry
is removed.

* Replace pointers with copying in updateconfigPlugins

* Include which plugin was declared twice in error
2023-05-01 15:10:53 +01:00
vaxerski 11b7ce14f8 renderer: fix misused size -> transformed size 2023-05-01 02:53:43 +01:00
vaxerski ddfeebad3d Renderer: add init animation 2023-05-01 02:49:41 +01:00
vaxerski 02312cac59 renderer: more checks for background LS optimizations 2023-04-30 01:15:51 +01:00
vaxerski 6501bceb42 workspace: don't check LS-es in startAnim 2023-04-30 01:13:58 +01:00
vaxerski 3580f845e6 monitor: update fullscreen fade on workspace change 2023-04-30 01:12:20 +01:00
vaxerski b7e69be51e windows: check for fullscreen after rules 2023-04-30 01:01:47 +01:00
scorpion-26 fdb772832f
Keep fullscreen mode in moveWindowToWorkspaceSafe (#2191)
Moving a maximised window would always result in the window being
fullscreen instead of maximised
2023-04-29 23:39:09 +01:00
vaxerski 5a3e3deb33 internal: warp workspace on change only if old mon is last 2023-04-29 13:32:59 +01:00
vaxerski 2946221195 renderer: fix fadingout render on fs 2023-04-29 13:29:32 +01:00
vaxerski fbb938fcf2 internal: don't change ws on active swap 2023-04-28 21:40:44 +01:00
vaxerski dbb6d9d174 rules: add noinitialfocus 2023-04-28 15:36:08 +01:00
vaxerski 5ce76cd0b0 internal: add tag to version, send hash in release ci 2023-04-27 14:28:40 +01:00
vaxerski 1a1656ddbf Revert "internal: include headers from protocols/"
This reverts commit 550700bed0.

We can't cuz meson
2023-04-27 13:55:13 +01:00
vaxerski 550700bed0 internal: include headers from protocols/ 2023-04-27 13:40:38 +01:00
vaxerski 4a1fb3e903 keybinds: fix move to named 2023-04-26 16:58:58 +01:00
vaxerski 28ca434fb5 Revert "input: make overlay layers precede constraints"
This reverts commit 1e526411b6.

Issues with input
2023-04-25 21:50:24 +01:00
vaxerski 1e526411b6 input: make overlay layers precede constraints 2023-04-25 17:02:20 +01:00
outfoxxed 849d657595
Window resizing for pseudotiled windows (#2140)
* Window resizing for pseudotiled windows

* Use `m_vRealSize` to determine scaled window size
2023-04-25 16:53:18 +01:00
vaxerski bf27066fd7 IHyprLayout: add missing static modifiers to config vars 2023-04-25 16:53:01 +01:00
vaxerski 1f80154823 layouts: add missing static modifiers to config vars 2023-04-25 16:49:06 +01:00
outfoxxed f40272d509
Add follow mouse mode to avoid refocusing under cursor (#2135)
* Add follow mouse mode to avoid refocusing under cursor
2023-04-25 16:00:34 +01:00
vaxerski e195a51cd4 internal: update fullscreen fade on workspace move 2023-04-24 23:23:12 +01:00
vaxerski 247ff4e60d internal: improve fullscreen fade 2023-04-24 23:21:51 +01:00
vaxerski eb570c88e6 screencopy: clamp damage to framebuffer 2023-04-24 20:01:44 +01:00
Tyler Schneider 67c73ec100
Fixed a crash when waking up monitors in power-saving mode (#2139) 2023-04-23 22:28:18 +01:00
Jan Beich f7579fc923
internal: unhardcode sun_path size after a6cfe70428 (#2137)
hyprctl/main.cpp:83:5: warning: 'strncpy' size argument is too large; destination buffer has size 104, but size argument is 107 [-Wfortify-source]
    strncpy(serverAddress.sun_path, socketPath.c_str(), 107);
    ^
hyprctl/main.cpp:146:5: warning: 'strncpy' size argument is too large; destination buffer has size 104, but size argument is 107 [-Wfortify-source]
    strncpy(serverAddress.sun_path, socketPath.c_str(), 107);
    ^
src/managers/EventManager.cpp:70:9: warning: 'strncpy' size argument is too large; destination buffer has size 104, but size argument is 107 [-Wfortify-source]
        strncpy(SERVERADDRESS.sun_path, socketPath.c_str(), 107);
        ^
2023-04-23 21:20:29 +01:00
mekb fbcbe947da
Added moveCursor dispatcher (#2100)
* Added moveCursor dispatcher

* fix error message for moveCursor
2023-04-23 19:50:53 +01:00
vaxerski 97b0368765 xwayland: crude fix for qt dnds 2023-04-22 22:20:48 +01:00
vaxerski c0f4e9f52e internal: moveToWorkspace before setting ws 2023-04-22 21:13:06 +01:00
vaxerski 49fb4cd94d renderer: improvements to layer render detection 2023-04-22 12:54:57 +01:00
vaxerski 1911e4262b renderer: skip rendering bottom layers on fullscreen opaque 2023-04-22 12:36:54 +01:00
q234rty d366fc48b8
Remove wlr_output_damage.h (#2121)
This is [removed](9ef98452a3) upstream and hyprland wasn't using it anyway.

This alone will probably not fix the CI but this will allow to clean build hyprland in many configurations.
2023-04-21 18:28:51 +01:00
vaxerski 7b5b4a1049 crashReporter: log on crash 2023-04-21 16:48:36 +01:00
vaxerski d03dcc3d99 deps: update wlroots 2023-04-21 15:42:08 +01:00
outfoxxed 2df0d034bc
Fix dragging cursor being forced on fullscreen windows (#2115)
Fix two edge cases causing the dragging mouse cursor to be forced on
fullscreen windows:
- hovering over a window border and running the fullscreen dispatcher
- moving mouse focus from a monitor with the resize cursor set to a
different monitor with a fullscreen window
2023-04-21 13:36:55 +01:00
vaxerski 510db64860 hyprctl: allow spaces in cursor themes 2023-04-20 23:59:31 +01:00
vaxerski b15803510c input: improve mouse release conditions 2023-04-20 00:46:42 +01:00
vaxerski f914a5a06d input: release mouse buttons before refocuses 2023-04-19 21:36:08 +01:00
q234rty 6225591dbd
Fix apps requesting fullscreen (#2099)
Otherwise e446db02f6 breaks fullscreening of image previews for nheko/telegram-desktop/...
2023-04-19 13:26:27 +01:00
DB e446db02f6
Add windowrule fakeFullScreen (#2043)
Co-authored-by: xVermillionx <xVermillionx@notvalid>
2023-04-18 21:59:08 +01:00
vaxerski a4330fe378 misc: scan ppids in exec rules 2023-04-18 11:48:56 +01:00
vaxerski 716d713b04 pluginAPI: add note about API expansion 2023-04-17 23:49:42 +01:00
vaxerski 1c50a11688 opengl: keep current rendered workspace in renderData 2023-04-17 23:47:12 +01:00
vaxerski 385fe4e301 events: add render event for plugins 2023-04-17 23:45:03 +01:00
vaxerski 412d46ff65 monitors: set special monitor ID on open 2023-04-17 22:58:59 +01:00
vaxerski ae82c3a639 screencopy: improve consistency of share indicator 2023-04-17 22:57:24 +01:00
vaxerski b4f75525d9 pluginAPI: make symbols static 2023-04-17 18:39:40 +01:00
vaxerski 8b3d8dc792 Format: use %lx for all addresses 2023-04-17 17:35:28 +01:00
vaxerski 5cb5b628b8 crashReporter: fix invalid format string 2023-04-17 17:32:07 +01:00
vaxerski a6cfe70428 internal: avoid buffer overflows with socket paths 2023-04-17 16:38:52 +01:00
vaxerski b6a7be7663 dispatchers: fix movetoworkspace with bound ws-es 2023-04-17 16:09:46 +01:00
Vaxry 25f14294a8 formats: fix endian ifdef 2023-04-17 15:36:49 +01:00
vaxerski 7c36a3e167 internal: move workspace special check higher in changeWorkspace 2023-04-17 13:32:35 +01:00
vaxerski 785fc8d669 dispatchers: fix missing log param 2023-04-17 13:30:37 +01:00
vaxerski c62ab1bee7 internal: use setSpecialWorkspace on destroy in sanityCheck 2023-04-16 21:33:28 +01:00
vaxerski f80f4f3194 dispatchers: fix named ws-es on changeworkspace 2023-04-16 21:32:32 +01:00
vaxerski b05ff89c76 Render: add cursor_zoom 2023-04-16 14:48:38 +01:00
vaxerski 28dfe21584 blur: fixup optimization bool 2023-04-16 14:18:02 +01:00
dann-merlin c86f06caa0
Fix possible usage of clamp with lo > hi in Vector2D (#2049) 2023-04-16 01:27:14 +01:00
vaxerski afc887d941 monitor: recalc layout on switched ws 2023-04-16 01:11:57 +01:00
vaxerski edad24c257 Screencopy: unify frame and client between impls + event
Adds a new event to both hooks and ipc: screencopy
2023-04-15 23:43:41 +01:00
vaxerski 12604b7676 compositor: ignore contraints on warp in moveWorkspaceToMonitor 2023-04-15 21:27:11 +01:00
Jan Beich 63841c8aac
Disable systemctl when built without systemd support (#2066)
/bin/sh: systemctl: not found
2023-04-15 20:03:09 +01:00
vaxerski 8944db49be swallow: fix invalid regexes with empty vals 2023-04-15 19:15:59 +01:00
vaxerski 4c4fcc128b input: fix ls focus in non-input area 2023-04-15 16:53:31 +01:00
vaxerski d6c4ae71d0 damage: fix damage on moves / workspace changes 2023-04-15 16:16:33 +01:00
vaxerski a6d94eafba tick: don't tick on invalid session 2023-04-15 12:45:25 +01:00
vaxerski 29fc410a8f crashReporter: avoid segfault in deref plugin system 2023-04-15 10:58:46 +01:00
vaxerski 83f1616a65 keybinds: minor adjustments to workspace 2023-04-14 17:51:10 +01:00
vaxerski 7ec23254fd workspace: don't lose monitor with refocus on no warps 2023-04-14 17:03:12 +01:00
vaxerski c2b5dd1be6 keybinds: only warp on different monitor ws 2023-04-14 16:22:55 +01:00
vaxerski 727160f0a4 workspaces: fixup workspaces not activating on workspace switch 2023-04-14 15:28:22 +01:00
vaxerski 3f2a18a435 keybinds: remove old comment 2023-04-14 15:16:59 +01:00
vaxerski e329bc2c7b renderer: fix incorrect shouldRenderWindow calcs 2023-04-14 15:16:43 +01:00
vaxerski 8dd0c4fe74 workspaces: deactivate all on monitor switch 2023-04-14 15:08:27 +01:00
vaxerski cf7c5e4dff misc: fix a warning 2023-04-14 15:06:22 +01:00
vaxerski 287e6c4ede internal: workspace manip handling rework 2023-04-14 15:03:53 +01:00
vaxerski 011600ac6e keybinds: more intelligent fallback on silent move 2023-04-14 01:42:55 +01:00
vaxerski 70eb74c356 fractional-scale: notify all surfaces on window move 2023-04-14 01:36:07 +01:00
vaxerski 260ef788f5 internal: don't sanity check workspaces on internal ws calls 2023-04-13 22:21:11 +01:00
vaxerski 6131e0bef7 keybinds: refocus properly on silent move 2023-04-13 22:20:31 +01:00
vaxerski 41c7d896e3 internal: prevent premature destroy in moveworkspace 2023-04-13 21:09:50 +01:00
Person1873 33d06fb0e5
Add ability to split master when only 1 additional window (#2025)
* fix: enable master split less than 2 windows

added a config flag  "master:allow_small_split"
added config to minimum windows check.
TODO: check that no bug added (remove all masters?)

* IMPL:FIX: multiple master windows full width

Implemented the ability to have multiple master windows filling the full
monitor width in master mode.
this is controlled by the config option master:allow_small_split
(true/false)
this defaults to false as it was the original behaviour before this
patch

* BUGFIX: corrected issue with blanks re: addmaster

FIX 1: Treat ORIENTATION_CENTER the same as ORIENTATION_LEFT unless
there are enough STACK_WINDOWS to fill both wings.
FIX 2: enforced last window always set as master in
MasterLayout::CHyperMasterLayout::calculateWorkspace();
FIX 3: fix 2, also fixed focus issues previously noted.

* Changes requested by vaxerski

changed how we access config variables (by reference not value)
fixed a regression previously missed prior to requested changes.
I had somehow broken the very functionality i meant to add.

* added static keyword to config variables

* removed superfluous static tags

I made a mistake with making too many variables static.
this made them only evaluate once per runtime breaking things majorly.
My appologies. I haven't touched C++ in nearly 20 years.

* remove annoying comment

---------

Co-authored-by: vaxerski <43317083+vaxerski@users.noreply.github.com>
2023-04-13 15:20:58 +01:00
vaxerski 4bc3f9adbe config: ignore invalid paths in configPaths 2023-04-12 22:00:39 +01:00
vaxerski a22e1174ee screencopy: implement dmabuf 2023-04-12 21:40:51 +01:00
vaxerski 985764c8db listeners: more safety around change 2023-04-12 20:18:55 +01:00
vaxerski 5f000306f5 popups: send scale info 2023-04-12 18:00:07 +01:00
Kajetan Puchalski efee6a1cda
swallow: Add swallow_exception_regex (#2026)
Currently, if a window class is specified in the swallow_regex (e.g.
Kitty) it will swallow every other window spawned by it automatically.
Many other WMs implementing this functionality allow for defining
exceptions from this rule. For instance, we want Kitty to swallow sxiv
or zathura but we do not want Kitty to swallow something like wev.

This commit adds an additional regex - swallow_exception_regex where
these exceptions can be defined. This regex is then compared against the
title of the window about to be swallowed and if it happens to be a
match, aborts the swallowing.

This works because whenever an application that could be swallowed is
launched by a terminal, the class of the terminal remains the same while
the title changes to whatever the application's name is, thus letting it
be matched against a regex.
2023-04-12 13:38:15 +01:00
vaxerski a68feb5aa0 internal: guarantee activeWindow event type 2023-04-12 13:11:38 +01:00
vaxerski 293df75b97 renderer: workspace rendering improvements 2023-04-12 13:05:57 +01:00
vaxerski f00e11d457 renderer: fix incorrect delta calc 2023-04-12 12:50:20 +01:00
vaxerski 0fd09579a1 renderer: reset renderModif on fullscreen render 2023-04-12 12:45:16 +01:00
vaxerski 3ae33b951f renderer: add support for rendering workspaces 2023-04-12 12:41:23 +01:00
vaxerski 92fecb8ad4 internal: don't iterate special workspaces in move 2023-04-12 11:24:36 +01:00
Stanisław Zagórowski ac2cd0f0dc
plugins: Add "tick" event (#2029) 2023-04-12 11:18:33 +01:00
Max Verevkin c2f29be9ba
make ext_workspace_unstable impl more atomic (#2023) 2023-04-11 14:28:32 +01:00
vaxerski 16a034a34a keybinds: send pass with a null keymap 2023-04-10 22:42:05 +01:00
vaxerski ea77622e04 input: send null keycodes on focusSurface 2023-04-10 22:37:55 +01:00
vaxerski a38b0e736d hyprctl: don't assume output validity in hyprctl workspaces 2023-04-10 21:52:14 +01:00
Hilmar Wiegand 7b43f9f056
Implement window move (#2018) 2023-04-10 20:07:49 +01:00
vaxerski fa4aef4531 args: print help on invalid arg 2023-04-10 18:26:36 +01:00