Intermittent grey horizontal artefact near top of window
bug
**Describe the bug**
On a VMware Fusion Linux guest using the VMware SVGA3D virtual GPU, kitty
intermittently shows what looks like a stale rendering fragment near the **top
of the window**: a thin (~few px tall), roughly ~300px wide, light-grey
horizontal segment that appears at varying horizontal positions. It seems to
show up during rapid redraws (e.g. scrolling in neovim with `j`/`k`, or a TUI
spinner animation), and I have seen it in more than one kitty window. It is
intermittent and I have not found a reliable trigger.
I have not found anything that reliably clears it. A focus change or a window
resize *sometimes* seems to make it go away, but not reliably. Neovim's own full
redraw (`Ctrl-L`) does not appear to clear it.
With `kitty --config NONE` it is easier to see. With no config the background is
black and there appears to be a margin at the top of the window (I believe from
the default placement leaving leftover space there), and the grey segment is
clearly visible rendering within that top margin region — i.e. in an area that
the running program does not itself draw into.
(Disclaimer: much of the framing below — about *where* in kitty's rendering this
might originate — is my best hypothesis from investigation, not something I can
independently confirm. I have tried to mark those as questions/hypotheses rather
than assert them.)
**To Reproduce**
Steps to reproduce the behavior:
1. Run kitty in a VMware Fusion Linux guest using the VMware SVGA3D GPU (Mesa, X11). `kitty --config NONE` seems to give the clearest view (the segment shows against the black top margin).
2. Run a TUI that does frequent redraws, e.g. open a long file in `nvim` and scroll continuously with `j`/`k` (a spinner/progress animation also seems to trigger it).
3. Watch the top of the window.
4. Intermittently, a light-grey horizontal segment appears near the top at varying horizontal positions.
(It is intermittent, so it may take some scrolling/redrawing before it appears.)
**Screenshots**
Screen recording attached, showing the grey segment near the top of the window
appearing at different horizontal positions across frames.
https://github.com/user-attachments/assets/6f9b5691-5cee-49d6-845b-148f1f09cd17
**Environment details**
```
kitty 0.47.0 created by Kovid Goyal
Linux debian 7.0.10+deb14-arm64 #1 SMP PREEMPT Debian 7.0.10-1 (2026-05-27) aarch64
Debian GNU/Linux forky/sid debian /dev/tty
Running under: X11
OpenGL: '4.3 (Core Profile) Mesa 26.0.6-1' Detected version: 4.3
Frozen: False
Fonts:
medium: GoMono: /home/myitcv/.local/share/fonts/gofont/ttfs/Go-Mono.ttf:0
Features: ()
bold: GoMono-Bold: /home/myitcv/.local/share/fonts/gofont/ttfs/Go-Mono-Bold.ttf:0
Features: ()
italic: GoMono-Italic: /home/myitcv/.local/share/fonts/gofont/ttfs/Go-Mono-Italic.ttf:0
Features: ()
bi: GoMono-BoldItalic: /home/myitcv/.local/share/fonts/gofont/ttfs/Go-Mono-Bold-Italic.ttf:0
Features: ()
Paths:
kitty: /usr/bin/kitty
base dir: /usr/lib/kitty
extensions dir: /usr/lib/kitty/kitty
system shell: /bin/bash
System color scheme: no_preference. Applied color theme type: none
Loaded config files:
/home/myitcv/.config/kitty/kitty.conf
Config options different from defaults:
allow_remote_control yes
confirm_os_window_close (0, False)
copy_on_select clipboard
cursor_blink_interval (0.0, kitty.options.utils.EasingFunction(), kitty.options.utils.EasingFunction())
cursor_text_color None
detect_urls False
enable_audio_bell False
font_family Go Mono
font_size 8.0
linux_display_server x11
listen_on unix:/tmp/kitty-myitcv
placement_strategy top-left
scrollback_lines 65535
select_by_word_characters !#%&*+-./:=?@_~
shell_integration frozenset({'no-cursor'})
strip_trailing_spaces smart
symbol_map:
U+23ea - U+23ff → Noto Color Emoji
U+2600 - U+27bf → Noto Color Emoji
U+2934 - U+2935 → Noto Color Emoji
U+2b05 - U+2b07 → Noto Color Emoji
U+2b1b - U+2b1c → Noto Color Emoji
U+3030 - U+3030 → Noto Color Emoji
U+303d - U+303d → Noto Color Emoji
U+3297 - U+3297 → Noto Color Emoji
U+3299 - U+3299 → Noto Color Emoji
U+fe00 - U+fe0f → Noto Color Emoji
U+1f000 - U+1faff → Noto Color Emoji
term xterm-256color
url_style 0
window_padding_width FloatEdges(left=1.0, top=1.0, right=0, bottom=0)
Added shortcuts:
alt+p → launch --stdin-source=@screen_scrollback --type=background sh -c 'cat > "$(mktemp --tmpdir kitty-screenshot.$(date +%Y%m%d%H%M%S_%N)_XXXXXXXXXX)"'
alt+v → paste_from_clipboard
ctrl+- → change_font_size all -1.0
ctrl+0 → change_font_size all 0
ctrl+= → change_font_size all +1.0
shift+page_down → scroll_page_down
shift+page_up → scroll_page_up
Colors:
background #f9f5d8
color0 #1d2021
color1 #9d0006
color10 #79740e
color11 #b57614
color12 #076678
color13 #8f3f71
color14 #427b58
color15 #f9f5d7
color2 #79740e
color3 #b57614
color4 #076678
color5 #8f3f71
color6 #427b58
color7 #f9f5d7
color8 #1d2021
color9 #9d0006
cursor #444444
foreground #1d2021
selection_background #1d2021
selection_foreground #f9f5d8
Important environment variables seen by the kitty process:
PATH (hidden as sensitive names included)
LANG en_GB.UTF-8
VISUAL nvim
EDITOR nvim
SHELL /bin/bash
DISPLAY :0
USER myitcv
XDG_SEAT seat0
XDG_SESSION_TYPE tty
XDG_SESSION_CLASS user
XDG_VTNR 1
XDG_SESSION_ID 12
XDG_RUNTIME_DIR /run/user/1000
XDG_DATA_DIRS /usr/local/share:/usr/share:/home/myitcv/.nix-profile/share:/nix/var/nix/profiles/default/share
```
Key facts for quick reference (full debug output above):
- kitty 0.47.0 (latest), built from source
- Debian, Linux 7.0.10+deb14 aarch64 — guest in VMware Fusion on an Apple Silicon macOS host
- OpenGL renderer string: `SVGA3D; build: RELEASE; LLVM;`
- OpenGL vendor string: `VMware, Inc.`
- OpenGL version string: `4.3 (Compatibility Profile) Mesa 26.0.6-1`
- X11; WM: awesome; compositor: picom/compton
**Additional context**
Things I have observed while trying to narrow it down:
- It still reproduces with `kitty --config NONE`, so it does not seem to be caused by any of my config options.
- I tried `sync_to_monitor no`, `window_padding_width 0`, and `term xterm-256color` vs the native `xterm-kitty` terminfo; none of these appeared to make a difference.
- It still reproduces with `LIBGL_ALWAYS_SOFTWARE=1` (llvmpipe).
- alacritty, run on the same machine, has not shown this artefact for me.
Open questions / hypotheses (not confirmed — would appreciate guidance):
- Since it appears to render in the top margin region (where the program does not draw), could this point to kitty's painting/clearing of the top edge of the window rather than the cell contents?
- Since it persists with `LIBGL_ALWAYS_SOFTWARE=1`, does that make the GL rasterizer backend an unlikely cause?
- Since alacritty on the same host/X server has not shown it for me, does that make the X server / vmwgfx layer a less likely cause, and is this more likely something in kitty's rendering path on this SVGA3D setup? (I'm not certain — alacritty may simply redraw differently.)
I'm happy to gather any further diagnostics that would help.
关闭于 2026-06-11 1 条评论