GTK2 / Eclipse-based apps flicker in Wayland native mode
Regression?
No
System Info and Version
System/Version info
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
does it work fine on sway?
does it work fine on sway?
yes, all good on sway
what about an older version of hyprland like v0.39.0?
can you send a video with damage_blink enabled
what about an older version of hyprland like v0.39.0? can you send a video with
damage_blinkenabled
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
Regression since 6967a31450441fc5605c05db6f65505dace4b263
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.
@vaxerski Seems this issue is back on 0.42 release.
-git too? Can you bisect?
-git too? Can you bisect?
@vaxerski yes, git too. Regression: b0a70f63e
I hate my life :)
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
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.
Can confirm. I have this issue on DBeaver 24.2.1.202409072322 and Hyprland 0.43.0. My config is 12450H with iGPU.
I thought this was a 43 milestone, had to download plasma to continue work.
Any progress so far?
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)
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.
FYI this workaround make it less pain to work with dbeaver at the moment (tested on my side and it works).
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 😟)
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/
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..
Why dropCurrentBuffer(); inside commitPendingState? https://github.com/hyprwm/Hyprland/blob/bb160cfe377da2d2b2e4431a3399fa60114f3911/src/protocols/core/Compositor.cpp#L451
With this drop old buffer is (always?) empty https://github.com/hyprwm/Hyprland/blob/bb160cfe377da2d2b2e4431a3399fa60114f3911/src/protocols/core/Compositor.cpp#L88 and dbeaver has this flickering issue which causes HL to "leak" memory (probably video memory only, easier to test with integrated gpu without dedicated ram). Removing that drop solves this issue and doesn't seem to cause any other issues.
launch hyprpicker after you remove that drop and it won't render
hyprpicker works for me without that drop...
How do signals and listeners work? Can something passed to registerListener be called without emit? IHLBuffer::hlEvents are never emitted.
How do signals and listeners work? Can something passed to registerListener be called without emit?
nope
IHLBuffer::hlEvents are never emitted.
they are in aq
hyprpicker works for me without that drop...
ah, maybe that one does, this part is very finnicky and like every line has been through 4 revisions because random things would break. Fun.
Perhaps this one was there to fix the xwayland leaks xd
I have to make a comment so github will notify me any progress, I'm facing the same problem.
@vincentaxhe theres a subscribe button to the right on any issue/pr
I have to make a comment so github will notify me any progress, I'm facing the same problem.
Try render:allow_early_buffer_release = 0
Facing the same issue aswell.
if on nvidia i would blame gtk2 for not supporting syncobj protocol. and what happends if you use something else then nvidia but explicitly enable explicit_sync does the issue show on other cards too?