Hyprland
Hyprland copied to clipboard
foot's glitched scrollbar
Hyprland Version
System/Version info
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
the scrollbar really shouldnt be a subsurface...
Can replicate.
the scrollbar really shouldnt be a subsurface...
report upstream? I'm afraid the answer might be like "Hyprland problem, it works in sway"
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
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
I am experiencing glitched scrollbars, as well. +1
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
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?
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: 4763flags: (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========
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.
some progress on 8412ffcc42012888757cd00a004871e8bc353cf2
now I can observe glitches only on tiled windows
I used to be affected from this bug but everything has been working fine for a while (if I had to guess since 0.42).
closing then
Can confirm this issue does still happen for me. I'll open a new discussion.