hyprwm / Hyprland

Hyprland is an independent, highly customizable, dynamic tiling Wayland compositor that doesn't sacrifice on its looks.
https://hyprland.org
BSD 3-Clause "New" or "Revised" License
21.46k stars 898 forks source link

GTK2 / Eclipse-based apps flicker in Wayland native mode #6844

Open lufjo opened 3 months ago

lufjo commented 3 months ago

Regression?

No

System Info and Version

System/Version info ```sh Hyprland, built from branch at commit 918d8340afd652b011b937d29d5eea0be08467f5 (flake.lock: update). Date: Tue Jun 25 12:06:02 2024 Tag: v0.41.2, commits: 4886 flags: (if any) System Information: System name: Linux Node name: arch Release: 6.9.8-arch1-1 Version: #1 SMP PREEMPT_DYNAMIC Fri, 05 Jul 2024 22:11:24 +0000 GPU information: 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU117M [GeForce GTX 1650 Ti Mobile] [10de:1f95] (rev a1) (prog-if 00 [VGA controller]) 05:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Renoir [Radeon Vega Series / Radeon Vega Mobile Series] [1002:1636] (rev c6) (prog-if 00 [VGA controller]) os-release: NAME="Arch Linux" PRETTY_NAME="Arch Linux" ID=arch BUILD_ID=rolling ANSI_COLOR="38;2;23;147;209" HOME_URL="https://archlinux.org/" DOCUMENTATION_URL="https://wiki.archlinux.org/" SUPPORT_URL="https://bbs.archlinux.org/" BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues" PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/" LOGO=archlinux-logo plugins: ======Config-Start====== Config File: /home/lufjo/.config/hypr/hyprland.conf: Read Succeeded # # Please note not all available settings / options are set here. # For a full list,see the wiki # source=~/.config/hypr/conf/basic.conf source=~/.config/hypr/conf/rules.conf source=~/.config/hypr/conf/env.conf source=~/.config/hypr/conf/binds.conf exec-once=fcitx5 -d # exec-once=wl-paste --type text --watch cliphist store exec-once=copyq --start-server exec-once=~/.config/hypr/scripts/boot.sh Config File: /home/lufjo/.config/hypr/conf/basic.conf: Read Succeeded monitor=,preferred,auto,1 # for pluggin in random monitors workspace=special:grave,gapsout:60,rounding:false,bordersize:0,on-created-empty:kitty workspace=special:a,gapsout:60,rounding:false,bordersize:0 workspace=special:s,gapsout:60,rounding:false,bordersize:0 workspace=special:d,gapsout:60,rounding:false,bordersize:0 input { kb_layout=us kb_variant= kb_model= kb_options=caps:swapescape,ctrl:menu_rctrl # See /usr/share/X11/xkb/rules/base.lst kb_rules= follow_mouse=1 repeat_delay=200 repeat_rate=40 touchpad { natural_scroll=no } sensitivity=0 # -1.0 - 1.0,0 means no modification. } general { gaps_in=8 gaps_out=0 border_size=2 col.active_border=0xfff5c2e7 col.inactive_border=0xff45475a #col.active_border=rgba(33ccffee) rgba(00ff99ee) 45deg #col.inactive_border=rgba(595959aa) no_focus_fallback=false layout=dwindle } decoration { rounding=5 blur { size=1 passes=2 } drop_shadow=yes shadow_range=40 shadow_render_power=3 col.shadow=0x55000000 col.shadow_inactive=0x55000000 dim_inactive=no dim_strength=0.1 } animations { enabled=yes bezier=overshot,0.05,0.9,0.1,1.05 # bezier=overshot,0.13,0.99,0.29,1.10 animation=windows,1,5,overshot animation=border,1,10,default animation=fade,1,10,default animation=workspaces,1,4,default,slide animation=specialWorkspace,0,4,default,fade } dwindle { pseudotile=yes # master switch for pseudotiling preserve_split=yes # you probably want this } master { } gestures { workspace_swipe=off } misc { disable_hyprland_logo=true disable_autoreload=false # whether to disable configuration reload } binds { allow_workspace_cycles=true } Config File: /home/lufjo/.config/hypr/conf/rules.conf: Read Succeeded # Jetbrains products windowrulev2 = forceinput,class:^(jetbrains-.*)$ windowrulev2 = windowdance,class:^(jetbrains-.*)$ # wps # windowrulev2 = forceinput,class:^et$ # windowrulev2 = windowdance,class:^et$ windowrulev2 = float,class:^Bitwarden$ windowrulev2 = float,class:^org.telegram.desktop$ windowrulev2 = size 90% 90%,class:^org.telegram.desktop$ windowrulev2 = center,class:^org.telegram.desktop$ windowrulev2 = workspace special:d,class:^Joplin$ windowrulev2 = float,class:^com.github.hluk.copyq$ windowrulev2 = size 800 1000,class:^com.github.hluk.copyq$ # windowrulev2 = move 100%-1000 20,class:^com.github.hluk.copyq$ windowrulev2 = center,class:^com.github.hluk.copyq$ windowrulev2 = noborder,class:^Emby Theater$ windowrulev2 = rounding 0,class:^Emby Theater$ windowrulev2 = noborder,class:^mpv$ windowrulev2 = rounding 0,class:^mpv$ Config File: /home/lufjo/.config/hypr/conf/env.conf: Read Succeeded env=XCURSOR_SIZE,35 env=GDK_BACKEND,wayland,x11 env=QT_QPA_PLATFORM,wayland;xcb env=YDOTOOL_SOCKET,/tmp/.ydotool_socket env=PRIAMARY_MONITOR_FACTOR,1 env=PIPENV_VENV_IN_PROJECT,1 Config File: /home/lufjo/.config/hypr/conf/binds.conf: Read Succeeded # basic bind=SUPER,Q,killactive, bind=SUPER_SHIFT,Q,exit, bind=SUPER,SPACE,exec,rofi -replace -show drun bind=SUPER,F,togglefloating, bind=SUPER,comma,togglesplit, bind=SUPER,C,centerwindow bind=SUPER_CTRL,P,pin, bind=SUPER_CTRL,U,bringactivetotop bind=SUPER_CTRL,F,fullscreen,1 # windows ### # focus bind=SUPER,H,movefocus,l bind=SUPER,L,movefocus,r bind=SUPER,K,movefocus,u bind=SUPER,J,movefocus,d bind=SUPER,W,focusurgentorlast # move binde=SUPER_SHIFT,H,movewindow,l binde=SUPER_SHIFT,L,movewindow,r binde=SUPER_SHIFT,K,movewindow,u binde=SUPER_SHIFT,J,movewindow,d # resize binde=SUPER_CTRL,H,resizeactive,-50 0 binde=SUPER_CTRL,L,resizeactive,50 0 binde=SUPER_CTRL,K,resizeactive,0 -50 binde=SUPER_CTRL,J,resizeactive,0 50 # move floating binde=SUPER_ALT,H,moveactive,-50 0 binde=SUPER_ALT,L,moveactive,50 0 binde=SUPER_ALT,K,moveactive,0 -50 binde=SUPER_ALT,J,moveactive,0 50 # move&resize with mouse bind=SUPER,mouse_down,workspace, e+1 bind=SUPER,mouse_up,workspace, e-1 bindm=SUPER,mouse:272,movewindow bindm=SUPER,mouse:273,resizewindow # group bind=SUPER,G,changegroupactive,f bind=SUPER_CTRL,G,togglegroup # workspaces ### # switch workspaces bind=SUPER,1,workspace,1 bind=SUPER,2,workspace,2 bind=SUPER,3,workspace,3 bind=SUPER,4,workspace,4 bind=SUPER,5,workspace,5 bind=SUPER,6,workspace,6 bind=SUPER,7,workspace,7 bind=SUPER,8,workspace,8 bind=SUPER,9,workspace,9 bind=SUPER,0,workspace,10 # cricle previous and current bind=SUPER,TAB,workspace,previous # move active window to a specific workspace bind=SUPER_SHIFT,1,movetoworkspace,1 bind=SUPER_SHIFT,2,movetoworkspace,2 bind=SUPER_SHIFT,3,movetoworkspace,3 bind=SUPER_SHIFT,4,movetoworkspace,4 bind=SUPER_SHIFT,5,movetoworkspace,5 bind=SUPER_SHIFT,6,movetoworkspace,6 bind=SUPER_SHIFT,7,movetoworkspace,7 bind=SUPER_SHIFT,8,movetoworkspace,8 bind=SUPER_SHIFT,9,movetoworkspace,9 bind=SUPER_SHIFT,0,movetoworkspace,10 # special workspaces bind=SUPER_SHIFT,grave,movetoworkspace,special:grave bind=SUPER,grave,togglespecialworkspace,grave bind=SUPER_SHIFT,A,movetoworkspace,special:a bind=SUPER,A,togglespecialworkspace,a bind=SUPER_SHIFT,S,movetoworkspace,special:s bind=SUPER,S,togglespecialworkspace,s bind=SUPER_SHIFT,D,movetoworkspace,special:d bind=SUPER,D,togglespecialworkspace,d ======Config-End======== ```

Description

And after using dbeaver for a while, it sometimes causes a crash.

https://github.com/hyprwm/Hyprland/assets/156897222/26cb6dee-5fab-4794-8c43-7c703c3a91ed

# hyprctl clients
Window 5ee7917ea6a0 -> DBeaver 24.1.1 :
    mapped: 1
    hidden: 0
    at: 60,60
    size: 1852,2040
    workspace: -98 (special:grave)
    floating: 0
    pseudo: 0
    monitor: 1
    class: DBeaver
    title: DBeaver 24.1.1 
    initialClass: DBeaver
    initialTitle: DBeaver 24.1.1 
    pid: 117077
    xwayland: 0
    pinned: 0
    fullscreen: 0
    fullscreenmode: 0
    fakefullscreen: 0
    grouped: 0
    tags: 
    swallowing: 0
    focusHistoryID: 1

How to reproduce

Just follow the video

Crash reports, logs, images, videos

No response

MightyPlaza commented 3 months ago

does it work fine on sway?

lufjo commented 3 months ago

does it work fine on sway?

yes, all good on sway

MightyPlaza commented 3 months ago

what about an older version of hyprland like v0.39.0? can you send a video with damage_blink enabled

lufjo commented 3 months ago

what about an older version of hyprland like v0.39.0? can you send a video with damage_blink enabled

On older versions there was no this issue, I forget what version this issue is from, likely from v0.40. And now build or downgrade that old version is more or less difficult. With damage_blink enabled:

https://github.com/user-attachments/assets/b3187bd1-c036-49d9-8a7e-4a6aec1cb241

UjinT34 commented 3 months ago

Regression since 6967a31450441fc5605c05db6f65505dace4b263

vaxerski commented 3 months ago

it's because of a hack that I made to prevent qt flickers. Fuck my life. Removing it fixes this, but makes qt flicker again.

lufjo commented 2 months ago

@vaxerski Seems this issue is back on 0.42 release.

vaxerski commented 2 months ago

-git too? Can you bisect?

lufjo commented 2 months ago

-git too? Can you bisect?

@vaxerski yes, git too. Regression: b0a70f63e

vaxerski commented 2 months ago

I hate my life :)

romanstingler commented 2 months ago

can you try the latest DBeaver Version 24.2.0.202409011810 and yay -S aquamarine-git hyprlang-git hyprcursor-git hyprutils-git hyprland-git --overwrite="*"

I use DBeaver on a daily basis, and haven't seen it for a long time

UjinT34 commented 2 months ago

Flickers with dbeaver 24.2.0.202409011755 and 9b54342baa27d8de0460e1103ec4c3cc65592ed8. Less severe than it was before the previous fix. Dbeaver itself doesn't crash for me but it makes hl leak memory until it runs oom and crashes. About 50-300mb every time dbeaver renders something new. Seems to depend on dbeaver's window size. Memory isn't really leaked, it is released back as soon as dbeaver is closed.

brisk84 commented 1 month ago

Can confirm. I have this issue on DBeaver 24.2.1.202409072322 and Hyprland 0.43.0. My config is 12450H with iGPU.

kareemAbd0 commented 1 month ago

I thought this was a 43 milestone, had to download plasma to continue work.

Any progress so far?

vaxerski commented 1 month ago

I'll remove the milestone - not working on this atm (I've spent a few hours a while back and couldn't find what was wrong)

Feel free to revert that one faulty commit, but it does break some other things (e.g. hyprpicker)

LorenzoBettini commented 1 month ago

As in the linked issue, this problem affects any Eclipse-based applications, like DBeaver and the Eclipse IDE itself.

I'd suggest @lufjo change the title of the issue to mention "Eclipse" or "Eclipse-based", so that the issue can be easily found.

rizqicy commented 1 month ago

FYI this workaround make it less pain to work with dbeaver at the moment (tested on my side and it works).

asgmojtaba commented 1 month ago

the most annoying thing it's not flickers but memory leakage that grows continuously (on hyprland process not dbeaver) while working with dbeaver. changing theme reduce flickers but don't do anything about memory issue.

My dirty workaround is forcing dbeaver to use X11 by changing Exec segment of it's desktop file to following:

...
Exec=env GDK_BACKEND=x11 dbeaver
...

Yes u lose all fancy feature of wayland (in my case HiDPI support!)

hope somebody fix this soon. (I have no idea about hyprland itself 😟)

LorenzoBettini commented 1 month ago

Yes u lose all fancy feature of wayland (in my case HiDPI support!)

@asgmojtaba for scaling in X11, I blogged about a few tricks here https://www.lorenzobettini.it/2024/09/eclipse-in-hyprland-0-43/

Vaisakhkm2625 commented 2 weeks ago

Yes u lose all fancy feature of wayland (in my case HiDPI support!)

@asgmojtaba for scaling in X11, I blogged about a few tricks here https://www.lorenzobettini.it/2024/09/eclipse-in-hyprland-0-43/

XD thanks.. and i came here from blog... guess it's xwayland then..