Open rbutera opened 3 months ago
post hyprctl monitors
likely that logic coordinates overlap
I should make a warning pop up in those cases
@vaxerski
post hyprctl monitors
likely that logic coordinates overlap
I should make a warning pop up in those cases
> hyprctl monitors
Monitor DP-1 (ID 0):
2560x1440@239.95799 at 0x0
description: Samsung Electric Company LC32G7xT H4ZR100979
make: Samsung Electric Company
model: LC32G7xT
serial: H4ZR100979
active workspace: 1 (1)
special workspace: 0 ()
reserved: 0 43 0 0
scale: 1.00
transform: 0
focused: yes
dpmsStatus: 1
vrr: 0
activelyTearing: false
disabled: false
currentFormat: XRGB8888
availableModes: 2560x1440@239.96Hz 2560x1440@59.95Hz 2560x1440@144.00Hz 2560x1440@120.00Hz 1920x1200@239.96Hz 1920x1080@239.76Hz 1920x1080@143.98Hz 1920x1080@120.00Hz 1920x1080@119.88Hz 1920x1080@60.00Hz 1920x1080@60.00Hz 1920x1080@59.94Hz 1920x1080@50.00Hz 1600x1200@239.96Hz 1680x1050@59.95Hz 1600x900@60.00Hz 1280x1024@75.03Hz 1280x1024@60.02Hz 1440x900@59.89Hz 1280x800@59.81Hz 1152x864@75.00Hz 1280x720@60.00Hz 1280x720@60.00Hz 1280x720@59.94Hz 1280x720@50.00Hz 1024x768@75.03Hz 1024x768@70.07Hz 1024x768@60.00Hz 832x624@74.55Hz 800x600@75.00Hz 800x600@72.19Hz 800x600@60.32Hz 800x600@56.25Hz 720x576@50.00Hz 720x480@60.00Hz 720x480@59.94Hz 640x480@75.00Hz 640x480@72.81Hz 640x480@66.67Hz 640x480@60.00Hz 640x480@59.94Hz 720x400@70.08Hz
Monitor DP-2 (ID 1):
3840x2160@59.99700 at 0x-2160
description: Samsung Electric Company U28E590 HTPK610641
make: Samsung Electric Company
model: U28E590
serial: HTPK610641
active workspace: 2 (2)
special workspace: 0 ()
reserved: 0 43 0 0
scale: 1.00
transform: 2
focused: no
dpmsStatus: 1
vrr: 0
activelyTearing: false
disabled: false
currentFormat: XRGB8888
availableModes: 3840x2160@60.00Hz 3840x2160@30.00Hz 3840x2160@29.97Hz 2560x1440@59.95Hz 1920x1200@60.00Hz 1920x1080@60.00Hz 1920x1080@60.00Hz 1920x1080@59.94Hz 1600x1200@60.00Hz 1680x1050@59.95Hz 1600x900@60.00Hz 1280x1024@75.03Hz 1280x1024@60.02Hz 1440x900@59.89Hz 1280x800@59.81Hz 1152x864@75.00Hz 1280x720@60.00Hz 1280x720@59.94Hz 1024x768@75.03Hz 1024x768@70.07Hz 1024x768@60.00Hz 832x624@74.55Hz 800x600@75.00Hz 800x600@72.19Hz 800x600@60.32Hz 800x600@56.25Hz 640x480@75.00Hz 640x480@72.81Hz 640x480@66.67Hz 640x480@60.00Hz 640x480@59.94Hz 720x400@70.08Hz
Monitor HDMI-A-1 (ID 2):
2560x2880@59.96700 at -2560x0
description: LG Electronics LG SDQHD 211NTHM6B881
make: LG Electronics
model: LG SDQHD
serial: 211NTHM6B881
active workspace: 3 (3)
special workspace: 0 ()
reserved: 0 43 0 0
scale: 1.00
transform: 0
focused: no
dpmsStatus: 1
vrr: 0
activelyTearing: false
disabled: false
currentFormat: XRGB8888
availableModes: 2560x2880@59.97Hz 3840x2160@60.00Hz 3840x2160@59.94Hz 3840x2160@50.00Hz 3840x2160@30.00Hz 3840x2160@29.97Hz 3840x2160@25.00Hz 3840x2160@24.00Hz 3840x2160@23.98Hz 2560x2880@29.99Hz 1920x1200@59.97Hz 1920x1080@60.00Hz 1920x1080@60.00Hz 1920x1080@59.94Hz 1920x1080@50.00Hz 1920x1080@30.00Hz 1920x1080@29.97Hz 1600x1200@59.97Hz 1680x1050@59.97Hz 1280x1024@59.97Hz 1440x900@59.97Hz 1280x800@59.97Hz 1280x720@60.00Hz 1280x720@59.94Hz 1280x720@50.00Hz 1024x768@60.00Hz 800x600@60.32Hz 720x576@50.00Hz 720x480@60.00Hz 720x480@59.94Hz 640x480@60.00Hz 640x480@59.94Hz 640x480@59.94Hz
Thank you for a quick reply. Unfortunately, I don't think the coordinates are overlapping - the bug doesn't happen if I unset the transform of that display. Unless the logic coordinates overlap due to the transform?
I was using this monitor configuration before and even then it had the same issue:
monitor=DP-1,2560x1440@240,0x0,1
monitor=HDMI-A-1,2560x2880@60,-2560x0,1
monitor=DP-2,3840x2160@60,0x-1440,1,transform,2
if I remove transform,2
the cursors behave as expected, except now my top monitor is upside down 😢
odd indeed, have you tried not using negative offsets?
with this i still have the issue:
monitor=DP-1,preferred,3840x2160,1
monitor=HDMI-A-1,preferred,-3840x2160,1
monitor=DP-2,preferred,0x0,1,transform,2
even with this i still have an issue. it's like DP-2's cursor logic is tied to DP-1 as soon as I apply a transform
monitor=DP-1,preferred,auto,1 monitor=HDMI-A-1,preferred,auto,1 monitor=DP-2,preferred,auto,1,transform,2
really odd... for the sake of testing, what if you put one at 0x0 another at 5000x5000 and the third at 10000x10000
doesn't work. well, it kinda fixes one problem. the two monitors no longer share cursor movement, but monitor DP-2
still thinks it's 2560x1440 for cursor (but is displaying windows that fill the whole 3840x2160)
i know nothing about the inner workings of hyprland but i'm guessing the transform logic applies the transform to the display canvas and then applies the transform to the cursor matrix (or whatever it's called) and there's a bug in the code that makes it select the cursor matrix of the primary monitor instead of the monitor that's being transformed.
at this point I wish I could just mount the monitor the right way up, but unfortunately Samsung was really silly and put the vesa mount on the top edge of that monitor rather than in the middle, so it's not physically possible
OK so this bug is new in version 42. I installed version 41 to test and I have no such bug with my cursor. I hope this can be fixed in a future update
can you bisect then
@vaxerski Thank you for the suggestion to bisect. However, I've discovered some additional information that changes the situation:
Given these points, it seems the bug is specifically related to the new renderer implementation. Since the new renderer was added all at once, a bisect between 0.41 and 0.42 won't be effective in pinpointing the exact cause of the bug.
Perhaps I could test any experimental fixes or tweaks to the new renderer code if you have suspicions about what might be causing the issue?
I'm happy to assist further in any way that would be most useful for debugging this issue.
can you just bisect with git to find the exact commit https://wiki.hyprland.org/Crashes-and-Bugs/#bisecting-an-issue
OK interesting development, turns out legacy renderer has the issue as well. I will bisect and find the problem
can you just bisect with git to find the exact commit wiki.hyprland.org/Crashes-and-Bugs#bisecting-an-issue
@vaxerski ok I found the first bad commit:
[f642fb97df5c69267a03452533de383ff8023570] core: Fix crash on opening chromium (#6932)
here's my bisect log if that helps at all
git bisect start
# status: waiting for both good and bad commits
# good: [918d8340afd652b011b937d29d5eea0be08467f5] flake.lock: update
git bisect good 918d8340afd652b011b937d29d5eea0be08467f5
# status: waiting for bad commit, 1 good commit known
# bad: [9a09eac79b85c846e3a865a9078a3f8ff65a9259] props: bump version to 0.42.0
git bisect bad 9a09eac79b85c846e3a865a9078a3f8ff65a9259
# bad: [a0be3de0e89f42b98d00bf0d87ad10af843d58d6] keybinds: handle monitor change in moveWindowIntoGroup (#7030)
git bisect bad a0be3de0e89f42b98d00bf0d87ad10af843d58d6
# good: [8e15f91c2417c8f05d69a93f1294185ccc5f8f3e] input: Emulate discrete scrolling from v120 events (#6881)
git bisect good 8e15f91c2417c8f05d69a93f1294185ccc5f8f3e
# bad: [d03fa94c2ca1a642959e31adc4fcc2447a3cc623] core: avoid locking 2 wayland sockets (#6971)
git bisect bad d03fa94c2ca1a642959e31adc4fcc2447a3cc623
# bad: [928d1dd38a6e4a791d4a4374a4a3bf02311adbb2] CMake, Meson, Nix: replace props.json with VERSION
git bisect bad 928d1dd38a6e4a791d4a4374a4a3bf02311adbb2
# bad: [cf373d315e9fb060576ed407bd5ee2dfb8a6d2e2] touch: add touch swipe invert config (#6940)
git bisect bad cf373d315e9fb060576ed407bd5ee2dfb8a6d2e2
# good: [9b0993cc49b7285a2724a87fdb72bfc90cc75cc5] [gha] build man pages
git bisect good 9b0993cc49b7285a2724a87fdb72bfc90cc75cc5
# bad: [016da234d0e852de3ef20eb2e89ac58d2a85f6e7] Core: Move to aquamarine (#6608)
git bisect bad 016da234d0e852de3ef20eb2e89ac58d2a85f6e7
that doesn't really make sense though because I believe that the line changed in that commit was reverted in a later commit... so I'm running bisect again
I just ran bisect again and it pointed to the exact same commit
dafoq
yeah dafoq! any ideas how we could resolve this? i'm using 0.41.0 for now and it's working great but I am loving hyprland and don't want to be left behind.
it's possible that the real bad commit is 016da234d0e852de3ef20eb2e89ac58d2a85f6e7?
could be, no clue tho
@vaxerski I can confirm that the issue is present in 016da23
and not in the preceding f642fb97
.
I think that this suggests that it's a bug related to either Aquamarine or how Aquamarine interfaces with Hyprland.
Do you have any idea how we could fix this?
I thought if I used legacy renderer in compilation I could use wlroots instead of Aquamarine. Am I mistaken?
I decided to conduct some experiments on 0.42.0, which might help pinpoint the issue.
I thought that the cursor boundaries were matching the primary monitor so I thought a workaround could either be to set the scaling of the buggy monitor to 1.5x to match 2560x1440.
Unfortunately, even scaled at 1.5x, the cursor boundary is much smaller than the visible screen canvas.
I tried configuring the monitor to be 2560x1440 so that both monitors were the same resolution. Unfortunately the cursor boundaries are still smaller than the visible screen area.
I tried disabling the other two monitors, (using monitor=DP-1,disabled
) in my Hyprland.conf and left only the buggy monitor enabled. Unfortunately this did not fix the issue.
I tried a different transform: this time I tried rotating the monitor 90 degrees in my Hyprland.conf. Unfortunately this did not fix the issue. Interestingly, the full vertical resolution of the monitor was available, only the width had a smaller cursor canvas.
I tried removing the transform. With transform disabled, the cursor behaves as expected.
I think the issue lies where Aquamarine handles its transforms.
I really doubt it's a problem in aq, I'd bet on some transform oopsie in hl that happened in the transition
Ahh, I tried having a look through the commit to find the relevant code for the transform but I'm a bit lost
I really doubt it's a problem in aq, I'd bet on some transform oopsie in hl that happened in the transition
Hi @vaxerski i know you've probably got a million issues to be thinking about right now but I was wondering if you had any more thoughts about this issue? I am eager to help in any way I can
no clue, this is just weird
I'm seeing the same issue with a 2-display setup. I can confirm that the problem started when I moved from 0.41 to 0.42, when aquamarine was first pulled in as a dependency.
I have one vertical display, and one horizontal display to the right of it. An interesting bit of behavior is that when I move the mouse left, to the vertical display, the "bugged" mouse on the right display snaps to the top left corner. And then when an event occurs that changes the cursor (e.g from pointer to hand), the mouse then snaps down on the right display to match the Y coordinate on the left display. The position does not change until the cursor changes.
I have this issue on Hyprland 0.43 using amdgpu driver. I did not have this issue on 0.42 with nvidia prop driver. Exact same config used for both. Will investigate the code when I have time.
Confirmed 016da234d0e852de3ef20eb2e89ac58d2a85f6e7 is first bad commit. Chonky one so this will be fun...
Found something related to the issue...
The reason why nvidia was fine was because it was using software cursor. So I tried using "env WLR_NO_HARDWARE_CURSORS=1 Hyprland" which only partially disables hardware cursors. The function CPointerManager::updateCursorBackend() still consider the cursor to be hardware.
Returns false and so the cursor->hardwareFailed is set to false. So now the cursor is a software cursor but is handled as a hardware one.
So forcing cursor->hardwareFailed = true fixes the original warping issue, obviously because it is using a full software cursor. However there are still other issues where the checks are obviously wrong. Moving the mouse back and forward between the 2 monitors results in the cursor randomly being drawn as a hardware cursor.
well yeah, something in the hw cursor xforms is wrong imo
Not sure if the variable is only for NVIDIA or something. But the wiki says WLR_NO_HARDWARE_CURSORS is deprecated, when it appears to be removed (for amdgpu at least).
Setting
cursor {
no_hardware_cursors = true
}
Works as expected and resolves the warping issue. I will look more into the actual HW cursor side later.
It does seem strange though, that the cursor when set to -1337, -420 warps to 0, 0 instead. And it is also very strange that the actual warp is caused by mousing over window decorations/entering exiting new windows. I did test and it never actually considers that the cursor has re-entered the glitching monitor. So there has to be a case where a check is updating all mice positions regardless of bounds.
well yeah, something in the hw cursor xforms is wrong imo
Is there not someway to just hide the mouse on the second monitor other than warping it off screen? No idea if that would just be a band aid for this kind of issue though.
band-aid cuz the coords would be wrong still no?
band-aid cuz the coords would be wrong still no?
Yes, I am not really sure if it would matter or not as I haven't looked into how clicks/focus and such would be affected on the glitched/non focused monitor. If clicks/focus are ignored on the non focused monitor then it wouldn't matter since when the mouse re-entered the monitor its position would be updated anyway. And if refocused via keyboard the mouse would just be warped.
The mouse can only slide along the closest edge to the currently focused monitor (so only x or y are updated on the glitched cursor not both), so I would guess it might only have some affect if a floating window was at the edge, or no margins were set? Or maybe with some random 3/4 monitor layouts where you could arrange them in a crazy wind mill formation or something.
OK, figured out what is going on.
This function is called whenever the mouse transisitions/moves over a decoration etc. That sets the mouse position for all pointers, but there is only a single pointer position so all pointers end up getting moved.
Then it checks the cursor image and sets it, again for all cursors resulting in the bonus mouse cursor getting a new look.
Since the actual position of the mouse pointer on the second monitor is never tracked you could just add a hide/show when a cursor leaves/enters and this issue would be solved.
The attemptHardwareCursor function should also probably only update positions/images of new pointers, or when some actual setting has changed like the hyprland.conf disable hardware cursors.
just add a hide/show when a cursor leaves/enters and this issue would be solved.
that's doable.
@drammelt do your findings also concern the issue where the cursor boundaries are smaller on the transformed display, or only the issue which creates multiple cursors
Regression?
No
System Info and Version
System/Version info
```sh Hyprland, built from branch at commit 9a09eac79b85c846e3a865a9078a3f8ff65a9259 (props: bump version to 0.42.0). Date: Wed Aug 7 19:17:10 2024 Tag: v0.42.0, commits: 5069 flags: (if any) System Information: System name: Linux Node name: lancelot Release: 6.10.5-2-cachyos Version: #1 SMP PREEMPT_DYNAMIC Wed, 14 Aug 2024 16:17:15 +0000 GPU information: 03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] [1002:73bf] (rev c1) (prog-if 00 [VGA controller]) os-release: NAME="CachyOS Linux" PRETTY_NAME="CachyOS" ID=cachyos ID_LIKE=arch BUILD_ID=rolling ANSI_COLOR="38;2;23;147;209" HOME_URL="https://cachyos.org/" DOCUMENTATION_URL="https://wiki.cachyos.org/" SUPPORT_URL="https://forum.cachyos.org/" BUG_REPORT_URL="https://github.com/cachyos" PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/" LOGO=cachyos plugins: ======Config-Start====== Config File: /home/rai/.config/hypr/hyprland.conf: Read Succeeded # _ _ _ _ # | | | |_ _ _ __ _ __| | __ _ _ __ __| | # | |_| | | | | '_ \| '__| |/ _` | '_ \ / _` | # | _ | |_| | |_) | | | | (_| | | | | (_| | # |_| |_|\__, | .__/|_| |_|\__,_|_| |_|\__,_| # |___/|_| # # ----------------------------------------------------- # ----------------------------------------------------- # Monitor # ----------------------------------------------------- source = ~/.config/hypr/conf/monitor.conf # ----------------------------------------------------- # Autostart # ----------------------------------------------------- source = ~/.config/hypr/conf/autostart.conf # ----------------------------------------------------- # Cursor # ----------------------------------------------------- source = ~/.config/hypr/conf/cursor.conf # ----------------------------------------------------- # Environment # ----------------------------------------------------- source = ~/.config/hypr/conf/environment.conf # ----------------------------------------------------- # Keyboard # ----------------------------------------------------- source = ~/.config/hypr/conf/keyboard.conf # ----------------------------------------------------- # Load pywal color file # ----------------------------------------------------- source = ~/.cache/wal/colors-hyprland.conf # ----------------------------------------------------- # Load configuration files # ----------------------------------------------------- source = ~/.config/hypr/conf/window.conf source = ~/.config/hypr/conf/decoration.conf source = ~/.config/hypr/conf/layout.conf source = ~/.config/hypr/conf/misc.conf source = ~/.config/hypr/conf/keybinding.conf source = ~/.config/hypr/conf/windowrule.conf # ----------------------------------------------------- # Animation # ----------------------------------------------------- source = ~/.config/hypr/conf/animation.conf # ----------------------------------------------------- # Custom # ----------------------------------------------------- source = ~/.config/hypr/conf/custom.conf # ----------------------------------------------------- # ML4W Configuration # ----------------------------------------------------- source = ~/.config/hypr/conf/ml4w.conf # ----------------------------------------------------- # Environment for xdg-desktop-portal-hyprland # ----------------------------------------------------- exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP Config File: /home/rai/.config/hypr/conf/monitor.conf: Read Succeeded source = ~/.config/hypr/conf/monitors/rai.conf Config File: /home/rai/.config/hypr/conf/monitors/rai.conf: Read Succeeded # monitor=DP-1,2560x1440@240,0x0,1 # monitor=HDMI-A-1,2560x2880@60,-2560x0,1 # monitor=DP-2,3840x2160@60,0x-1440,1,transform,2 monitor=DP-1,preferred,auto,1 monitor=HDMI-A-1,preferred,auto-left,1 monitor=DP-2,preferred,auto-up,1,transform,2 Config File: /home/rai/.config/hypr/conf/autostart.conf: Read Succeeded # ----------------------------------------------------- # Autostart # ----------------------------------------------------- # Setup XDG for screen sharing exec-once = ~/.config/hypr/scripts/xdg.sh # Start Polkit # Test Polkit pkexec --user username alacritty exec-once=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 # Load Dunst Notification Manager exec-once = dunst # Load GTK settings exec-once = ~/.config/hypr/scripts/gtk.sh # Using hypridle to start hyprlock exec-once = hypridle # Load cliphist history exec-once = wl-paste --watch cliphist store # Autostart ML4W App exec-once = ~/.config/hypr/scripts/ml4w-welcome-autostart.sh # Start ewww daemon exec-once = ags & # Initialize waypaper # exec-once = waypaper --restore exec-once = hyprpaper # Launch Waybar exec-once = ~/.config/waybar/launch.sh # Start autostart cleanup exec-once = ~/.config/hypr/scripts/cleanup.sh # Load configuration from ML4W Hyprland Settings App exec = ~/.config/ml4w-hyprland-settings/hyprctl.sh Config File: /home/rai/.config/hypr/conf/cursor.conf: Read Succeeded exec-once = hyprctl setcursor Catppuccin-Mocha-Dark-Cursors 18 Config File: /home/rai/.config/hypr/conf/environment.conf: Read Succeeded source = ~/.config/hypr/conf/environments/default.conf Config File: /home/rai/.config/hypr/conf/environments/default.conf: Read Succeeded # ----------------------------------------------------- # Environment Variables # name: "Default" # ----------------------------------------------------- # Default Settings in ml4w.conf Config File: /home/rai/.config/hypr/conf/keyboard.conf: Read Succeeded # ----------------------------------------------------- # Keyboard Layout # https://wiki.hyprland.org/Configuring/Variables/#input # ----------------------------------------------------- input { kb_layout = gb kb_variant = kb_model = kb_options = numlock_by_default = true mouse_refocus = false # For United States # kb_layout = us # kb_variant = intl # kb_model = pc105 # kb_options = follow_mouse = 1 touchpad { # for desktop natural_scroll = false # for laptop # natural_scroll = yes # middle_button_emulation = true # clickfinger_behavior = false scroll_factor = 1.0 # Touchpad scroll factor } sensitivity = 0 # Pointer speed: -1.0 - 1.0, 0 means no modification. } gestures { workspace_swipe = true } Config File: /home/rai/.cache/wal/colors-hyprland.conf: Read Succeeded $background = rgb(0a0d19) $foreground = rgb(eae2e7) $color0 = rgb(0a0d19) $color1 = rgb(4D8EC8) $color2 = rgb(65A3D7) $color3 = rgb(DBB2B4) $color4 = rgb(9EACDE) $color5 = rgb(D4B8DD) $color6 = rgb(A7CDF3) $color7 = rgb(eae2e7) $color8 = rgb(a39ea1) $color9 = rgb(4D8EC8) $color10 = rgb(65A3D7) $color11 = rgb(DBB2B4) $color12 = rgb(9EACDE) $color13 = rgb(D4B8DD) $color14 = rgb(A7CDF3) $color15 = rgb(eae2e7) Config File: /home/rai/.config/hypr/conf/window.conf: Read Succeeded source = ~/.config/hypr/conf/windows/default.conf Config File: /home/rai/.config/hypr/conf/windows/default.conf: Read Succeeded # ----------------------------------------------------- # General window layout and colors # name: "Default" # ----------------------------------------------------- general { gaps_in = 10 gaps_out = 14 border_size = 3 col.active_border = $color11 col.inactive_border = rgba(ffffffff) layout = dwindle resize_on_border = true } Config File: /home/rai/.config/hypr/conf/decoration.conf: Read Succeeded source = ~/.config/hypr/conf/decorations/default.conf Config File: /home/rai/.config/hypr/conf/decorations/default.conf: Read Succeeded # ----------------------------------------------------- # General window decoration # name: "Default" # ----------------------------------------------------- decoration { rounding = 10 blur { enabled = true size = 6 passes = 2 new_optimizations = on ignore_opacity = true xray = true # blurls = waybar } active_opacity = 1.0 inactive_opacity = 0.8 fullscreen_opacity = 1.0 drop_shadow = true shadow_range = 30 shadow_render_power = 3 col.shadow = 0x66000000 } Config File: /home/rai/.config/hypr/conf/layout.conf: Read Succeeded source = ~/.config/hypr/conf/layouts/default.conf Config File: /home/rai/.config/hypr/conf/layouts/default.conf: Read Succeeded # ----------------------------------------------------- # Layouts # ----------------------------------------------------- dwindle { pseudotile = true preserve_split = true } master { # Commented out due to compatibility reasons # new_status = master } gestures { workspace_swipe = false } Config File: /home/rai/.config/hypr/conf/misc.conf: Read Succeeded # ----------------------------------------------------- # Misc settings # ----------------------------------------------------- misc { disable_hyprland_logo = true disable_splash_rendering = true } Config File: /home/rai/.config/hypr/conf/keybinding.conf: Read Succeeded source = ~/.config/hypr/conf/keybindings/default.conf Config File: /home/rai/.config/hypr/conf/keybindings/default.conf: Read Succeeded # ----------------------------------------------------- # Key bindings # name: "Default" # ----------------------------------------------------- # SUPER KEY $mainMod = SUPER $HYPRSCRIPTS = ~/.config/hypr/scripts $SCRIPTS = ~/.config/ml4w/scripts # Applications bind = $mainMod, RETURN, exec, ~/.config/ml4w/settings/terminal.sh # Open the terminal bind = $mainMod, B, exec, ~/.config/ml4w/settings/browser.sh # Open the browser bind = $mainMod, E, exec, ~/.config/ml4w/settings/filemanager.sh # Open the filemanager bind = $mainMod CTRL, E, exec, ~/.config/ml4w/settings/emojipicker.sh # Open the emoji picker bind = $mainMod CTRL, C, exec, ~/.config/ml4w/settings/calculator.sh # Open the calculator # Windows bind = $mainMod, Q, killactive # Kill active window bind = $mainMod, F, fullscreen # Set active window to fullscreen bind = $mainMod, T, togglefloating # Toggle active windows into floating mode bind = $mainMod SHIFT, T, exec, $HYPRSCRIPTS/toggleallfloat.sh # Toggle all windows into floating mode bind = $mainMod, J, togglesplit # Toggle split bind = $mainMod, left, movefocus, l # Move focus left bind = $mainMod, right, movefocus, r # Move focus right bind = $mainMod, up, movefocus, u # Move focus up bind = $mainMod, down, movefocus, d # Move focus down bindm = $mainMod, mouse:272, movewindow # Move window with the mouse bindm = $mainMod, mouse:273, resizewindow # Resize window with the mouse bind = $mainMod SHIFT, right, resizeactive, 100 0 # Increase window width with keyboard bind = $mainMod SHIFT, left, resizeactive, -100 0 # Reduce window width with keyboard bind = $mainMod SHIFT, down, resizeactive, 0 100 # Increase window height with keyboard bind = $mainMod SHIFT, up, resizeactive, 0 -100 # Reduce window height with keyboard bind = $mainMod, G, togglegroup # Toggle window group # Actions bind = $mainMod SHIFT, A, exec, $HYPRSCRIPTS/toggle-animations.sh # Toggle animations bind = $mainMod, PRINT, exec, $HYPRSCRIPTS/screenshot.sh # Take a screenshot bind = $mainMod SHIFT, S, exec, $HYPRSCRIPTS/screenshot.sh # Take a screenshot bind = $mainMod CTRL, Q, exec, wlogout # Start wlogout bind = $mainMod SHIFT, W, exec, waypaper --random # Change the wallpaper bind = $mainMod CTRL, W, exec, waypaper # Open wallpaper selector bind = $mainMod ALT, W, exec, $HYPRSCRIPTS/wallpaper-automation.sh # Start random wallpaper script bind = $mainMod CTRL, RETURN, exec, rofi -show drun -replace -i # Open application launcher bind = $mainMod CTRL, K, exec, $HYPRSCRIPTS/keybindings.sh # Show keybindings bind = $mainMod SHIFT, B, exec, ~/.config/waybar/launch.sh # Reload waybar bind = $mainMod CTRL, B, exec, ~/.config/waybar/toggle.sh # Toggle waybar bind = $mainMod SHIFT, R, exec, $HYPRSCRIPTS/loadconfig.sh # Reload hyprland config bind = $mainMod, V, exec, $SCRIPTS/cliphist.sh # Open clipboard manager bind = $mainMod CTRL, T, exec, ~/.config/waybar/themeswitcher.sh # Open waybar theme switcher bind = $mainMod CTRL, S, exec, ~/.config/ml4w/apps/ML4W_Dotfiles_Settings-x86_64.AppImage # Open ML4W Dotfiles Settings app bind = $mainMod SHIFT, H, exec, $HYPRSCRIPTS/hyprshade.sh # Toggle screenshader bind = $mainMod ALT, G, exec, $HYPRSCRIPTS/gamemode.sh # Toggle game mode # Workspaces bind = $mainMod, 1, workspace, 1 # Open workspace 1 bind = $mainMod, 2, workspace, 2 # Open workspace 2 bind = $mainMod, 3, workspace, 3 # Open workspace 3 bind = $mainMod, 4, workspace, 4 # Open workspace 4 bind = $mainMod, 5, workspace, 5 # Open workspace 5 bind = $mainMod, 6, workspace, 6 # Open workspace 6 bind = $mainMod, 7, workspace, 7 # Open workspace 7 bind = $mainMod, 8, workspace, 8 # Open workspace 8 bind = $mainMod, 9, workspace, 9 # Open workspace 9 bind = $mainMod, 0, workspace, 10 # Open workspace 10 bind = $mainMod SHIFT, 1, movetoworkspace, 1 # Move active window to workspace 1 bind = $mainMod SHIFT, 2, movetoworkspace, 2 # Move active window to workspace 2 bind = $mainMod SHIFT, 3, movetoworkspace, 3 # Move active window to workspace 3 bind = $mainMod SHIFT, 4, movetoworkspace, 4 # Move active window to workspace 4 bind = $mainMod SHIFT, 5, movetoworkspace, 5 # Move active window to workspace 5 bind = $mainMod SHIFT, 6, movetoworkspace, 6 # Move active window to workspace 6 bind = $mainMod SHIFT, 7, movetoworkspace, 7 # Move active window to workspace 7 bind = $mainMod SHIFT, 8, movetoworkspace, 8 # Move active window to workspace 8 bind = $mainMod SHIFT, 9, movetoworkspace, 9 # Move active window to workspace 9 bind = $mainMod SHIFT, 0, movetoworkspace, 10 # Move active window to workspace 10 bind = $mainMod, Tab, workspace, m+1 # Open next workspace bind = $mainMod SHIFT, Tab, workspace, m-1 # Open previous workspace bind = $mainMod CTRL, 1, exec, $HYPRSCRIPTS/moveTo.sh 1 # Move all windows to workspace 1 bind = $mainMod CTRL, 2, exec, $HYPRSCRIPTS/moveTo.sh 2 # Move all windows to workspace 2 bind = $mainMod CTRL, 3, exec, $HYPRSCRIPTS/moveTo.sh 3 # Move all windows to workspace 3 bind = $mainMod CTRL, 4, exec, $HYPRSCRIPTS/moveTo.sh 4 # Move all windows to workspace 4 bind = $mainMod CTRL, 5, exec, $HYPRSCRIPTS/moveTo.sh 5 # Move all windows to workspace 5 bind = $mainMod CTRL, 6, exec, $HYPRSCRIPTS/moveTo.sh 6 # Move all windows to workspace 6 bind = $mainMod CTRL, 7, exec, $HYPRSCRIPTS/moveTo.sh 7 # Move all windows to workspace 7 bind = $mainMod CTRL, 8, exec, $HYPRSCRIPTS/moveTo.sh 8 # Move all windows to workspace 8 bind = $mainMod CTRL, 9, exec, $HYPRSCRIPTS/moveTo.sh 9 # Move all windows to workspace 9 bind = $mainMod CTRL, 0, exec, $HYPRSCRIPTS/moveTo.sh 10 # Move all windows to workspace 10 bind = $mainMod, mouse_down, workspace, e+1 # Open next workspace bind = $mainMod, mouse_up, workspace, e-1 # Open previous workspace bind = $mainMod CTRL, down, workspace, empty # Open the next empty workspace # Passthrough SUPER KEY to Virtual Machine bind = $mainMod, P, submap, passthru # Passthrough SUPER key to virtual machine submap = passthru bind = SUPER, Escape, submap, reset # Get SUPER key back from virtual machine submap = reset # Fn keys bind = , XF86MonBrightnessUp, exec, brightnessctl -q s +10% # Increase brightness by 10% bind = , XF86MonBrightnessDown, exec, brightnessctl -q s 10%- # Reduce brightness by 10% bind = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5% # Increase volume by 5% bind = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5% # Reduce volume by 5% bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle # Toggle mute bind = , XF86AudioPlay, exec, playerctl play-pause # Audio play pause bind = , XF86AudioPause, exec, playerctl pause # Audio pause bind = , XF86AudioNext, exec, playerctl next # Audio next bind = , XF86AudioPrev, exec, playerctl previous # Audio previous bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle # Toggle microphone bind = , XF86Calculator, exec, ~/.config/ml4w/settings/calculator.sh # Open calculator bind = , XF86Lock, exec, hyprlock # Open screenlock bind = , XF86Tools, exec, alacritty --class dotfiles-floating -e ~/.config/ml4w/apps/ML4W_Dotfiles_Settings-x86_64.AppImage # Open ML4W Dotfiles Settings app bind = , code:238, exec, brightnessctl -d smc::kbd_backlight s +10 bind = , code:237, exec, brightnessctl -d smc::kbd_backlight s 10- Config File: /home/rai/.config/hypr/conf/windowrule.conf: Read Succeeded source = ~/.config/hypr/conf/windowrules/default.conf Config File: /home/rai/.config/hypr/conf/windowrules/default.conf: Read Succeeded # ----------------------------------------------------- # Window rules # ----------------------------------------------------- windowrule = tile,^(Microsoft-edge)$ windowrule = tile,^(Brave-browser)$ windowrule = tile,^(Chromium)$ windowrule = float,^(pavucontrol)$ windowrule = float,^(blueman-manager)$ windowrule = float,^(nm-connection-editor)$ windowrule = float,^(qalculate-gtk)$ # Browser Picture in Picture windowrulev2 = float, title:^(Picture-in-Picture)$ windowrulev2 = pin, title:^(Picture-in-Picture)$ windowrulev2 = move 69.5% 4%, title:^(Picture-in-Picture)$ Config File: /home/rai/.config/hypr/conf/animation.conf: Read Succeeded source = ~/.config/hypr/conf/animations/animations-high.conf Config File: /home/rai/.config/hypr/conf/animations/animations-high.conf: Read Succeeded # ----------------------------------------------------- # Animations # name: "High" # ----------------------------------------------------- animations { enabled = true bezier = wind, 0.05, 0.9, 0.1, 1.05 bezier = winIn, 0.1, 1.1, 0.1, 1.1 bezier = winOut, 0.3, -0.3, 0, 1 bezier = liner, 1, 1, 1, 1 animation = windows, 1, 6, wind, slide animation = windowsIn, 1, 6, winIn, slide animation = windowsOut, 1, 5, winOut, slide animation = windowsMove, 1, 5, wind, slide animation = border, 1, 1, liner animation = borderangle, 1, 30, liner, loop animation = fade, 1, 10, default animation = workspaces, 1, 5, wind } Config File: /home/rai/.config/hypr/conf/custom.conf: Read Succeeded # Add your additional Hyprland configurations here # # This is an additional key binding # bind = $mainMod CTRL, up, workspace, empty # # Example for xwayland # xwayland { # force_zero_scaling = true # } # qt5ct environment variable # env = QT_QPA_PLATFORMTHEME,qt5ct # SDL version env = SDL_VIDEODRIVER,wayland # env = SDL_VIDEODRIVER,x11 Config File: /home/rai/.config/hypr/conf/ml4w.conf: Read Succeeded # ----------------------------------------------------- # ML4W configurations # ----------------------------------------------------- # Pavucontrol floating windowrulev2 = float,class:(.*org.pulseaudio.pavucontrol.*) windowrulev2 = size 700 600,class:(.*org.pulseaudio.pavucontrol.*) windowrulev2 = center,class:(.*org.pulseaudio.pavucontrol.*) windowrulev2 = pin,class:(.*org.pulseaudio.pavucontrol.*) # OpenAI ChatGPT floating windowrulev2 = float,title:(ChatGPT.*) windowrulev2 = float,title:(.*chat.openai.com.*) windowrulev2 = size 500 50%,title:(.*chat.openai.com.*) windowrulev2 = move 20 70,title:(.*chat.openai.com.*) # ML4W Welcome App floating windowrulev2 = float,class:(.*waypaper.*) windowrulev2 = size 800 700,class:(.*waypaper.*) windowrulev2 = center,class:(.*waypaper.*) windowrulev2 = pin,class:(.*waypaper.*) # ML4W Welcome App floating windowrulev2 = float,class:(com.ml4w.welcome) windowrulev2 = size 700 600,class:(com.ml4w.welcome) windowrulev2 = center,class:(com.ml4w.welcome) windowrulev2 = pin,class:(com.ml4w.welcome) windowrulev2 = float,class:(ml4w-welcome.py) windowrulev2 = size 400 500,class:(ml4w-welcome.py) windowrulev2 = center,class:(ml4w-welcome.py) windowrulev2 = pin,class:(ml4w-welcome.py) # ML4W Settings App floating windowrulev2 = float,class:(com.ml4w.dotfilessettings) windowrulev2 = size 700 600,class:(com.ml4w.dotfilessettings) windowrulev2 = move 10% 20%,class:(com.ml4w.dotfilessettings) windowrulev2 = pin,class:(com.ml4w.dotfilessettings) windowrulev2 = float,class:(ml4w-dotfiles-settings.py) windowrulev2 = size 400 500,class:(ml4w-dotfiles-settings.py) windowrulev2 = move 10% 20%,class:(ml4w-dotfiles-settings.py) windowrulev2 = pin,class:(ml4w-dotfiles-settings.py) # ML4W Hyprland App floating windowrulev2 = float,class:(com.ml4w.hyprland.settings) windowrulev2 = size 700 600,class:(com.ml4w.hyprland.settings) windowrulev2 = center,class:(com.ml4w.hyprland.settings) windowrulev2 = pin,class:(com.ml4w.hyprland.settings) windowrulev2 = float,class:(ml4w-hyprland-settings.py) windowrulev2 = size 700 600,class:(ml4w-hyprland-settings.py) windowrulev2 = center,class:(ml4w-hyprland-settings.py) windowrulev2 = pin,class:(ml4w-hyprland-settings.py) # System Mission Center windowrulev2 = float, class:(io.missioncenter.MissionCenter) windowrulev2 = pin, class:(io.missioncenter.MissionCenter) windowrulev2 = center, class:(io.missioncenter.MissionCenter) windowrulev2 = size 900 600, class:(io.missioncenter.MissionCenter) # System Mission Center Preference Window windowrulev2 = float, class:(missioncenter), title:^(Preferences)$ windowrulev2 = pin, class:(missioncenter), title:^(Preferences)$ windowrulev2 = center, class:(missioncenter), title:^(Preferences)$ # Gnome Calculator windowrulev2 = float,class:(org.gnome.Calculator) windowrulev2 = size 700 600,class:(org.gnome.Calculator) windowrulev2 = center,class:(org.gnome.Calculator) # Emoji Picker Smile windowrulev2 = float,class:(it.mijorus.smile) windowrulev2 = pin, class:(it.mijorus.smile) windowrulev2 = move 100%-w-40 90,class:(it.mijorus.smile) # Hyprland Share Picker windowrulev2 = float, class:(hyprland-share-picker) windowrulev2 = pin, class:(hyprland-share-picker) windowrulev2 = center, title:class:(hyprland-share-picker) windowrulev2 = size 600 400,class:(hyprland-share-picker) # General floating windowrulev2 = float,class:(dotfiles-floating) windowrulev2 = size 1000 700,class:(dotfiles-floating) windowrulev2 = center,class:(dotfiles-floating) windowrulev2 = pin, class:(dotfiles-floating) # XDG Desktop Portal env = XDG_CURRENT_DESKTOP,Hyprland env = XDG_SESSION_TYPE,wayland env = XDG_SESSION_DESKTOP,Hyprland # QT env = QT_QPA_PLATFORM,wayland;xcb env = QT_QPA_PLATFORMTHEME,qt6ct env = QT_QPA_PLATFORMTHEME,qt5ct env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 env = QT_AUTO_SCREEN_SCALE_FACTOR,1 # GDK env = GDK_SCALE,1 # Toolkit Backend env = GDK_BACKEND,wayland,x11,* env = CLUTTER_BACKEND,wayland # Mozilla env = MOZ_ENABLE_WAYLAND,1 # Set the cursor size for xcursor env = XCURSOR_SIZE,17 # Disable appimage launcher by default env = APPIMAGELAUNCHER_DISABLE,1 # Ozone env = OZONE_PLATFORM,wayland env = ELECTRON_OZONE_PLATFORM_HINT,wayland env = WLR_NO_HARDWARE_CURSORS,0 debug { overlay = false } ======Config-End======== ```Description
How to reproduce
have two monitors with different resolutions transform one of them to be upside down move cursor ??? profit
Crash reports, logs, images, videos
I have a video on youtube that demonstrates the issue:
https://www.youtube.com/watch?v=t_Gvd_6j1uc