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
19.54k stars 819 forks source link

foot's glitched scrollbar #5610

Open bvr-yr opened 4 months ago

bvr-yr commented 4 months ago

Hyprland Version

System/Version info ```sh Hyprland, built from branch main at commit 79a139c9495568f69dd995bce1ca579247a98a17 (flake.lock: update). Date: Mon Apr 15 23:57:27 2024 Tag: v0.39.0-12-g79a139c9, commits: 4456 flags: (if any) System Information: System name: Linux Node name: Arch-ASUS Release: 6.6.27-1-lts Version: #1 SMP PREEMPT_DYNAMIC Sat, 13 Apr 2024 11:50:59 +0000 GPU information: 00:02.0 VGA compatible controller [0300]: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller [8086:0416] (rev 06) (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: hyprexpo by Vaxry ver 1.0 ```

Bug or Regression?

Bug

Description

see https://github.com/hyprwm/Hyprland/discussions/4858#discussioncomment-8610673 for video

scrollbar indicator (as well as URL-labels when shown, Ctrl+o in default foot conf) seems to be treated specially. as, you won't believe, it is affected by Hyprland's rounding setting. which shouldn't happen I suppose

maybe this could help to investigate the root cause

as mentioned in discussion, force_introspection = 1 eliminates glitches for me, but it's likely a strange coincidence on my end

How to reproduce

to properly reproduce you need pad value to be greater than default 0 and probably some larger font size than default 8

try launching

foot --config=/dev/null --override=pad=8x8

and zoom with Ctrl+= or Ctrl+MouseUp

then just print some long stuff and scroll

Crash reports, logs, images, videos

No response

vaxerski commented 4 months ago

the scrollbar really shouldnt be a subsurface...

BeyondMagic commented 4 months ago

Can replicate.

bvr-yr commented 4 months ago

the scrollbar really shouldnt be a subsurface...

report upstream? I'm afraid the answer might be like "Hyprland problem, it works in sway"

1player commented 4 months ago

Good for tracking it down to the pad setting. I can replicate as well, and here's my config:

[main]
font=PragmataPro Mono:size=13
pad=4x4 center
NikkSaan commented 4 months ago

I noticed the glitch disappeared for the windows in which I set a theme with theme.sh. But that causes foot to have a slightly higher cpu usage. I don't know If this observation will help you guys debug the problem, but It might serve a temporary fix for some.


hyprland v37.1, foot v1.16.1 -pgo +ime +graphemes -assertions

VehementHam commented 3 months ago

I am experiencing glitched scrollbars, as well. +1

rtgiskard commented 3 months ago

This seems to be fixed with latest hyprland, for me, it works well:

hyprland-git: v0.40.0-146-ga54ab301 foot -v: 1.17.2 +pgo +ime +graphemes -assertions

bvr-yr commented 3 months ago

nothing changed for me on 3fd6c1b30e5397432c4640286efaf52a6891f71c foot version: 1.17.2-31-g0bf5a7e9 (May 24 2024, branch 'master') +pgo +ime +graphemes -assertions

@rtgiskard did u use extra padding and larger font?

rtgiskard commented 3 months ago

nothing changed for me on 3fd6c1b foot version: 1.17.2-31-g0bf5a7e9 (May 24 2024, branch 'master') +pgo +ime +graphemes -assertions

@rtgiskard did u use extra padding and larger font?

For me, the pad is always pad=4x2, I do have the same problem before, but not find any glitch recently, the foot version is v1.7.2 from archlinux official since 2024-04-21, and I switched to hyprland since 2024-05-01.

The glitch is there for several days, then I just get used to it, and recently find no glitch at all. Both a54ab301, dd274b72 works well for me. Test with the reproduce steps above.

my foot.ini:

[main]
title=~
initial-window-mode=windowed
initial-window-size-pixels=720x840
pad=4x2
dpi-aware=no
font=Comic Shanns Mono:size=12, LXGW WenKai Mono:size=12:weight=semibold
bold-text-in-bright=palette-based
box-drawings-uses-font-glyphs=no

[url]
uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()

[scrollback]
lines=1024
multiplier=2.0
indicator-position=relative

[cursor]
style=block
blink=yes

[csd]
size=20
button-width=16
border-width=1
color=ff2e2e2e
button-color=ffd0d0d0

[colors]
alpha=1

foreground=00ee00
background=000000

regular0=000000
regular1=aa0000
regular2=00aa00
regular3=aa5400
regular4=0000aa
regular5=aa00aa
regular6=00aaaa
regular7=aaaaaa

bright0=545454
bright1=ff5454
bright2=54ff54
bright3=ffff54
bright4=5454ff
bright5=ff54ff
bright6=54ffff
bright7=ffffff

[key-bindings]
scrollback-up-page=Shift+Page_Up
scrollback-down-page=Shift+Page_Down
scrollback-up-line=Shift+Up
scrollback-down-line=Shift+Down

clipboard-copy=Control+Shift+c XF86Copy
clipboard-paste=Control+Shift+v XF86Paste
primary-paste=Shift+Insert

search-start=Control+slash
show-urls-launch=Control+Shift+l

font-increase=Control+plus Control+equal
font-decrease=Control+minus
font-reset=Control+0
fullscreen=F11
# prompt-prev=Control+Shift+z
# prompt-next=Control+Shift+x

[search-bindings]
find-prev=Control+p
find-next=Control+n

# vim: ft=dosini
System/Version info Hyprland, built from branch makepkg at commit dd274b7273ab404e0f71707199144ec9064f248f (log: log with local timezone). Date: Tue Jun 4 22:19:25 2024 Tag: v0.40.0-157-gdd274b72, commits: 4763 flags: (if any) System Information: System name: Linux Node name: rt Release: 6.9.1-gskd Version: #1 SMP PREEMPT_DYNAMIC Sat, 18 May 2024 12:07:02 +0000 GPU information: c7:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Phoenix1 [1002:15bf] (rev c2) (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/giskard/.config/hypr/hyprland.conf: Read Succeeded # ref: https://wiki.hyprland.org/Configuring source = hypr.d/00_core.conf source = hypr.d/01_env.conf source = hypr.d/02_exec.conf source = hypr.d/04_bind.conf source = hypr.d/07_rule.conf source = hypr.d/20_plugin.conf debug { # debug switch, may cause performance issue #overlay = true disable_logs = false disable_time = false } # vi: ts=4 syntax=hypr : Config File: /home/giskard/.config/hypr/hypr.d/00_core.conf: Read Succeeded # monitor monitor = , preferred, auto, auto monitor = DP-2, preferred, auto, 1.5 # desk monitor = DP-1, preferred, 0x0, auto monitor = HDMI-A-1, preferred, 1920x0, auto input { repeat_rate = 70 repeat_delay = 400 # focus: cursor vs keybord, click to change keybord focus follow_mouse = 2 # bug: click foot <> firefox, may not work float_switch_override_focus = 0 mouse_refocus = true touchpad { natural_scroll = true disable_while_typing = true #tap-and-drag = true #clickfinger_behavior = true } } general { gaps_in = 2 gaps_out = 7 border_size = 0 # special workspace will # border color, skipped by border_size=0 col.active_border = rgba(8000ffce) rgba(40ff00ce) 48deg col.inactive_border = rgba(404040ac) resize_on_border = true # allow resize without keyboard extend_border_grab_area = 12 # as gaps_in is only 2, .. layout = dwindle } decoration { blur { enabled = true size = 4 passes = 1 noise = 0.04 popups = true } # enable shadow: for float window with border_size=0 drop_shadow = true shadow_range = 7 shadow_offset = 0, 0 rounding = 4 } animations { enabled = true bezier = mwin, 0.07, 0.9, 0.1, 1.07 animation = windows, 1, 7, mwin animation = windowsOut, 1, 7, default, popin 80% animation = border, 1, 10, default animation = borderangle, 1, 8, default animation = fade, 1, 7, default animation = workspaces, 1, 4, default animation = specialWorkspace, 1, 4, default, fade } gestures { workspace_swipe = true workspace_swipe_fingers = 3 workspace_swipe_distance = 200 workspace_swipe_touch = true } # layout dwindle { #pseudotile = true preserve_split = true } group { groupbar { #enabled = false font_family = LXGW WenKai font_size = 8 height = 10 render_titles = false } } xwayland { force_zero_scaling = true } misc { # hyprctl reload on save config disable_autoreload = false font_family = LXGW WenKai disable_hyprland_logo = true force_default_wallpaper = -1 disable_splash_rendering = true # swallow terminal on open gui #enable_swallow = true #swallow_regex = foot #animate_mouse_windowdragging = true #focus_on_activate = true new_window_takes_over_fullscreen = 2 mouse_move_enables_dpms = true key_press_enables_dpms = true vfr = true } Config File: /home/giskard/.config/hypr/hypr.d/01_env.conf: Read Succeeded #: xdg spec env = XDG_CURRENT_DESKTOP, Hyprland env = XDG_SESSION_DESKTOP, Hyprland env = XDG_SESSION_TYPE, wayland #: toolkit backend env = GDK_BACKEND, wayland,x11,* env = QT_QPA_PLATFORM, wayland;xcb env = QT_WAYLAND_DISABLE_WINDOWDECORATION, 1 #: fcitx env = XMODIFIERS, @im=fcitx #env = GTK_IM_MODULE, fcitx env = QT_IM_MODULE, fcitx env = QT_IM_MODULES, wayland;fcitx env = GLFW_IM_MODULE, fcitx #: cursor (foot, ..) env = HYPRCURSOR_THEME, Bibata-Modern-Classic env = HYPRCURSOR_SIZE, 22 env = XCURSOR_THEME, Bibata-Modern-Classic env = XCURSOR_SIZE, 22 env = GTK_THEME, Adwaita-dark #: i18n env = LANG, zh_CN.UTF-8 env = LC_MESSAGES, zh_CN.UTF-8 #: firefox: wayland, touch gesture env = MOZ_ENABLE_WAYLAND, 1 env = MOZ_USE_XINPUT2, 1 #: disable xwayland #env = WLR_XWAYLAND, /dev/null Config File: /home/giskard/.config/hypr/hypr.d/02_exec.conf: Read Succeeded # https://wiki.hyprland.org/Configuring/Advanced-config/ # # exec-once: execute only on launch # exec: execute on each reload # init env exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 # component exec-once = hypridle exec-once = hyprpaper exec-once = waybar exec-once = fcitx5 -d exec-once = systemctl restart --user foot-server.socket # deadbeef cleanup exec-once = rm -f $HOME/.config/deadbeef/running Config File: /home/giskard/.config/hypr/hypr.d/04_bind.conf: Read Succeeded $mod = SUPER # generic bind = $mod, T, exec, footclient bind = $mod, N, exec, xdg-open ~ bind = $mod, L, exec, loginctl lock-session bind = $mod, R, exec, $(pidof -q wofi) && pkill wofi || wofi bind = $mod, Q, killactive, bind = $mod Ctrl, M, exit, # screenshot bind = , Print, exec, ~/.config/hypr/script/utils.sh shot monitor bind = Ctrl, Print, exec, ~/.config/hypr/script/utils.sh shot -a monitor bind = $mod, Print, exec, ~/.config/hypr/script/utils.sh shot display bind = Ctrl $mod, Print, exec, ~/.config/hypr/script/utils.sh shot -a display bind = Alt, Print, exec, ~/.config/hypr/script/utils.sh shot window bind = Ctrl Alt, Print, exec, ~/.config/hypr/script/utils.sh shot -a window bind = Shift, Print, exec, ~/.config/hypr/script/utils.sh shot region bind = Ctrl Shift, Print, exec, ~/.config/hypr/script/utils.sh shot -a region # layout: dwindle bind = $mod, P, pseudo bind = $mod, J, togglesplit bind = $mod, Space, togglefloating, bind = $mod, Space, centerwindow, # workspace: special bind = $mod, S, togglespecialworkspace, magic bind = $mod Shift, S, movetoworkspace, special:magic bind = $mod, H, movetoworkspacesilent, special:hide bind = $mod Ctrl, H, togglespecialworkspace, hide # tag for tag rules bind = $mod Ctrl, 1, tagwindow, hide # window fullscreen toggle bind = $mod, Up, fullscreen, 1 bind = $mod Shift, Up, fullscreen, 0 # workspace/window move bind = $mod, Left, workspace, -1 bind = $mod, Right, workspace, +1 bind = $mod Shift, Left, movetoworkspace, -1 bind = $mod Shift, Right, movetoworkspace, +1 bind = $mod Shift, Down, movetoworkspace, +0 # window resize bind = $mod Ctrl, Left, resizeactive, -20 0 bind = $mod Ctrl, Right, resizeactive, 20 0 bind = $mod Ctrl, Up, resizeactive, 0 20 bind = $mod Ctrl, Down, resizeactive, 0 -20 # window switch bind = Ctrl, Tab, swapnext, bind = Alt, Tab, cyclenext, # mouse: workspace switch bind = $mod, mouse_down, workspace, e+1 bind = $mod, mouse_up, workspace, e-1 # mouse: window resize bindm = $mod, mouse:272, movewindow bindm = $mod, mouse:273, resizewindow # monitor brightness bind = , XF86MonBrightnessDown, exec, ddcutil setvcp 0x10 - 5 bind = , XF86MonBrightnessUp, exec, ddcutil setvcp 0x10 + 5 # volume bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle bind = , XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle bind = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 7%+ bind = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 7%- # player bind = , XF86AudioPlay, exec, playerctl play-pause bind = , XF86AudioNext, exec, playerctl next bind = , XF86AudioPrev, exec, playerctl previous bind = , XF86audiostop, exec, playerctl stop Config File: /home/giskard/.config/hypr/hypr.d/07_rule.conf: Read Succeeded # layers: launchers, bars, wallpapers, .. layerrule = blur, wofi layerrule = blur, waybar layerrule = blur, ironbar # blur sway notifications layerrule = blur, swaync-control-center layerrule = blur, swaync-notification-window layerrule = ignorezero, swaync-control-center layerrule = ignorezero, swaync-notification-window # special workspace: override border workspace = special:magic, border:true, bordersize:2 workspace = special:hide, border:true, bordersize:2 # bind a named workspace to the monitor workspace = name:ex, monitor:HDMI-A-1, default:true # auto float windows windowrule = float, ^(com.gabm.satty)$ windowrule = float, ^(org.pipewire.Helvum)$ windowrule = float, ^(com.github.wwmm.easyeffects)$ windowrule = float, ^(io.github.celluloid_player.Celluloid)$ windowrule = float, ^(blueman-manager)$ windowrule = float, ^(deadbeef)$ windowrule = float, ^(gthumb)$ windowrule = float, ^(org.remmina.Remmina)$ # with tags windowrulev2 = opacity 0.1, tag:hide Config File: /home/giskard/.config/hypr/hypr.d/20_plugin.conf: Read Succeeded #bind = $mod, x, hyprexpo:expo, toggle plugin { hyprexpo { columns = 4 gap_size = 20 bg_col = rgb(111111) workspace_method = center current # [center/first] [workspace] e.g. first 1 or center m+1 enable_gesture = true # laptop touchpad, 4 fingers gesture_distance = 300 # how far is the "max" gesture_positive = true # positive = swipe down. Negative = swipe up. } hyprbars { # example config bar_height = 20 bar_color = rgba(000000cc) bar_title_enabled = false bar_part_of_window = true bar_button_padding = 5 # example buttons (R -> L) # hyprbars-button = color, size, on-click hyprbars-button = rgba(ff404088), 20, 󰖭, hyprctl dispatch killactive hyprbars-button = rgba(eeee1188), 20, , hyprctl dispatch fullscreen 1 } } ======Config-End========
rtgiskard commented 3 months ago

Well, it's still there, but only for scroll cursor moved passive:

. open a foot window, run tail -f /run/user/1000/hypr/*/hyprland.log, then scroll up with mouse so that the scroll cursor is displayed . open another window, move your mouse around (to generate more logs output for the above tail), you will see the scroll cursor get moved up with some lightly glitch (but much better) . if just scroll in current foot window, I can't reproduce any glitch like what it was.

bvr-yr commented 2 months ago

some progress on 8412ffcc42012888757cd00a004871e8bc353cf2

now I can observe glitches only on tiled windows