ddmetz
62a8d0be5c
keybinds: check for null last monitor in changeworkspace ( #4077 )
2023-12-07 00:09:25 +00:00
François Conzelmann
5513eed64d
managers: fix debug log using printf format ( #4007 )
...
Some debug messages where using printf format style to print variable
content instead of std::format format.
2023-11-30 15:20:08 +00:00
François Conzelmann
1fc1e4e9cb
monitor: remove comma from monitor description ( #3996 )
...
this allows for monitor specific rules to work on monitor with comma on
their description
fixes #2457
2023-11-30 01:48:10 +00:00
thejch
258c83f3bb
exec: remove redundant environment variables from spawn ( #3923 )
2023-11-24 12:42:20 +00:00
Vaxry
8b57a1973e
internal: Allow floating windows on special ( #3872 )
...
* allow floating on special
* fix mistake
* fix clipbox
2023-11-18 17:00:24 +00:00
thejch
9e3dccca76
keybinds: Close special workspace after moving windows out of it ( #3649 )
...
* use old monitor
* use pMonitor for for special workspace
2023-11-15 12:32:02 +00:00
65efde32c9
internal: make getPlusMinusKeywordResult return optional
2023-11-12 13:40:02 +00:00
69e314207d
internal: replace INT_MAX with WORKSPACE_INVALID
2023-11-12 13:34:54 +00:00
Vaxry
9be6fbf5ea
decorations: Decoration Positioner ( #3800 )
2023-11-11 14:37:17 +00:00
74cf2281dd
binds: add movefocus_cycles_fullscreen
...
fixes #3738
2023-11-04 21:03:08 +00:00
Vaxry
73e78f05ad
Decos: Window decoration flags, shadow improvements ( #3739 )
2023-11-04 13:10:52 +00:00
MightyPlaza
9abfa9efc6
input: handle mouse on decorations ( #3560 )
2023-10-29 20:14:47 +00: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
a61eb7694d
hooksystem: add callbackinfo struct and cancellable events
2023-10-21 14:52:43 +01:00
a0b675ec9e
binds: add ignoreMods flag
2023-10-17 20:10: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
34455844e9
groups: ensure consistency in dispatcher behavior with global group lock ( #3531 )
2023-10-11 11:13:12 +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
MightyPlaza
499df49f7b
dispatchers: fix extra monitor offset when snapping floating ( #3520 )
...
modified: src/managers/KeybindManager.cpp
2023-10-08 13:49:15 +01:00
memchr
8252957392
dispatchers: support number as arg in changegroupactive ( #3329 )
2023-09-23 13:36:40 +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
alaricljs
e4ddfcfa0c
keybinds: implement pushactivetobottom dispacher ( #3217 )
...
Co-authored-by: Leeman <lstrout@enlj.com>
2023-09-21 22:18:26 +01:00
memchr
3785defaf1
logging: implement std::formatter for some types ( #3380 )
2023-09-20 16:25:03 +01:00
vaxerski
e4d6695375
keybinds: focus last window on workspace change to another mon
2023-09-18 11:33:19 +01:00
memchr
56adec7c1a
socket2: emit lockgroups event ( #3317 )
2023-09-15 12:06:59 +01:00
memchr
84f8f4d77d
keybinds: warp cursor to correct window in moveWindowOutOfGroup ( #3290 )
2023-09-13 15:02:21 +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
41e5f401c5
keybinds: simulate movement on empty focus after workspace change
2023-09-13 11:36:41 +01:00
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
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
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
memchr
ac2f1a9c30
feat: add a new movewindoworgroup dispatcher ( #3006 )
2023-09-10 23:29:10 +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
vaxerski
d490f198a4
keybinds: ignore mods on release of special binds
...
fixes #3208
2023-09-10 13:13:15 +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
shadowmax31
c061946a94
keybinds: Do not suppress pass and mouse release ( #3219 )
2023-09-09 10:15:24 +01: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
Vaxry
61a71c65ac
internal: Formatter rework ( #3186 )
2023-09-06 12:51:36 +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
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
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
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
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
870471dd96
internal: allow opening empty special workspaces
...
Fixes point 2 of #2596
2023-08-25 18:05:08 +02:00
memchr
f0da0b0be4
input: improved path handling; null check return value of fopen. ( #3061 )
2023-08-25 17:21:55 +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
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
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
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
MightyPlaza
6295cbe9cb
keybinds: Keep aspect ratio ( #2907 )
2023-08-08 18:52:20 +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
vaxerski
08651736ad
keybinds: add toggle to dpms
2023-07-30 16:46:37 +02:00
memchr
76c6e09e39
keybinds: Make moveintogroup locking check configurable ( #2796 )
...
* groups: revert to the old moveintogroup behaviour, ignore m_sGroupData.locked
* groups: Make moveintogroup locking check configurable
2023-07-24 18:25:10 +02:00
MightyPlaza
ca54ceff6f
groups: add use_current_group_pos ( #2759 )
2023-07-20 19:48:32 +02:00
MightyPlaza
3b03597784
keybinds: movegroupwindow-improvement ( #2740 )
...
* movegroupwindow-improvement
* use std::swap
2023-07-19 00:30:10 +02:00
István Donkó
5c8a20be77
fix: handle window change directions in fullscreen ( #2728 )
2023-07-18 12:12:50 +02:00
Lennard Hofmann
06f5910365
Make bind modmask case-insensitive ( #2714 )
2023-07-14 18:39:53 +02:00
MightyPlaza
db2367bf33
update groub decos ( #2705 )
2023-07-13 20:17:14 +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
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
fc59cef1ee
keybinds: remove old todo
2023-06-21 21:20:26 +02:00
cabdf38ce4
internal: minor style fixes
2023-06-20 21:35:54 +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
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
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
cf37922d42
input: update surface input on changeworkspace
2023-06-09 12:20:40 +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
baf81cdc5d
input: force focus on movefocus
2023-05-31 20:59:38 +02:00
vaxerski
a7cfbdb854
keybinds: fix tryMoveFocusToMonitor with special
2023-05-29 18:11:37 +02:00
Jeremy Huang
b3a86952cf
focus: fix #1675 window not scrollable after movefocus ( #2390 )
2023-05-29 09:52:36 +02:00
Jeremy Huang
8afc2f45c7
focus: make cursor follow movewindow ( #2374 )
2023-05-27 12:16:50 +02:00
vaxerski
eb1f832fce
decos: recalc on add
2023-05-23 14:26:38 +02:00
vaxerski
088b4a68e6
moveActiveToWorkspace: update last window of old ws
2023-05-22 19:44:10 +02: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
vaxerski
824813fc6a
internal: remove check for negative exact vector args
2023-05-15 15:16:06 +01:00
vaxerski
79791c9ed4
internal: fix -Wsign-compare and -Wunused-variable warnings
2023-05-02 14:53:31 +01:00
vaxerski
45b1e6dc5e
keybinds: simulate workspace switch on focusWindow to another ws
2023-05-01 15:39:08 +01:00
vaxerski
4a1fb3e903
keybinds: fix move to named
2023-04-26 16:58:58 +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
b15803510c
input: improve mouse release conditions
2023-04-20 00:46:42 +01:00
vaxerski
b6a7be7663
dispatchers: fix movetoworkspace with bound ws-es
2023-04-17 16:09:46 +01:00
vaxerski
785fc8d669
dispatchers: fix missing log param
2023-04-17 13:30:37 +01:00
vaxerski
f80f4f3194
dispatchers: fix named ws-es on changeworkspace
2023-04-16 21:32:32 +01:00
vaxerski
d6c4ae71d0
damage: fix damage on moves / workspace changes
2023-04-15 16:16:33 +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