Comments (10)
Does not reproduce for me. You didnt post the debug output under 0.35 so I cant tell what Wayland compositor you are running, but make sure it is up to date. As for m and w being cut off its because the font you are using has an italic face that is not metric compatible with the regular face at this pixel size. Use modify_font in kitty.conf to increase the cell width or switch to a font that has metric compatible bold anf italic faces.
from kitty.
I'm using GNOME 46 on fedora atomic 40.
The italic font is metric compatible, as cutting off wasn't a problem on 0.33.1, which can be seen in the screenshot I posted.
from kitty.
Yes because the font is not rendered at the same size in 33 and 35, which is why I said that it is not metric compatible at this size.
from kitty.
Well, the main point of the issue is that the fonts are now blurry after upgrading, and the blurriness persists even using the static build from github releases, so it's probably not a packaging issue. Also, my font size hasn't changed.
from kitty.
Your font size might not have changed, but the font size is in POINTS. The actual PIXEL size at which it is rendered has changed. Because now it is rendered at 1.25 scale instead of 2 scale and then resized in the compositor. Indeed support for fractional scaling makes fonts LESS blurry in general since they are not longer resized by the compositor.
I need some way to reproduce to be able to help you. At a minimum port the debug output with 0.35.1 and also the output of running with --debug-rendering.
from kitty.
Linux fedora-desktop 6.8.11-300.fc40.x86_64 #1 SMP PREEMPT_DYNAMIC Mon May 27 14:53:33 UTC 2024 x86_64
S
Kernel 6.8.11-300.fc40.x86_64 on an x86_64 (/dev/tty)
Running under: Wayland (GNOME Shell 46.2) missing: layer_shell
OpenGL: '4.6 (Core Profile) Mesa 24.0.8' Detected version: 4.6
Frozen: True
Paths:
kitty: /var/home/b/Downloads/kitty-0.35.1-x86_64/bin/kitty
base dir: /var/home/b/Downloads/kitty-0.35.1-x86_64/lib/kitty
extensions dir: /var/home/b/Downloads/kitty-0.35.1-x86_64/lib/kitty-extensions
system shell: /bin/bash
Loaded config files:
/var/home/b/.config/kitty/kitty.conf
Config options different from defaults:
bold_font Comic Code Bold
bold_italic_font Comic Code Bold Italic
font_family Comic Code
font_size 10.0
italic_font Comic Code Italic
shell fish
tab_bar_edge 1
tab_bar_style separator
wayland_titlebar_color 4076007938
Colors:
active_border_color #c0bfbc
active_tab_background #b0afac
active_tab_foreground #504e55
background #fcfcfc
bell_border_color #ed333b
color0 #fcfcfc
color1 #ed333b
color10 #8ff0a4
color11 #ffa348
color12 #99c1f1
color13 #dc8add
color14 #93ddc2
color15 #f6f5f4
color2 #57e389
color3 #ff7800
color4 #62a0ea
color5 #9141ac
color6 #5bc8af
color7 #deddda
color8 #9a9996
color9 #f66151
cursor #504e55
cursor_text_color #fcfcfc
foreground #504e55
inactive_border_color #f6f5f4
inactive_tab_background #deddda
inactive_tab_foreground #5e5c64
selection_background #deddda
selection_foreground #5e5c64
url_color #1a5fb4
Important environment variables seen by the kitty process:
PATH /var/home/b/Downloads/kitty-0.35.1-x86_64/bin:/var/home/b/.local/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/var/home/b/.local/lib/node_modules/bin:/var/home/b/.local/lib/cargo/bin
LANG en_US.UTF-8
VISUAL nvim
EDITOR nvim
SHELL /bin/bash
DISPLAY :0
WAYLAND_DISPLAY wayland-0
USER b
XDG_MENU_PREFIX gnome-
XDG_DATA_HOME /var/home/b/.local/share
XDG_CONFIG_HOME /var/home/b/.config
XDG_SESSION_DESKTOP gnome
XDG_SESSION_TYPE wayland
XDG_CURRENT_DESKTOP GNOME
XDG_CACHE_HOME /var/home/b/.cache
XDG_SESSION_CLASS user
XDG_STATE_HOME /var/home/b/.local/state
XDG_RUNTIME_DIR /run/user/1000
XDG_DATA_DIRS /var/home/b/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/
[0.043] Compositor missing capabilities: layer_shell
[0.060] Creating window 1 at size: 840x610 and scale 1
[0.087] GL version string: '4.6 (Core Profile) Mesa 24.0.8' Detected version: 4.6
[0.087] CSD: old.size: 0x0 new.size: 840x610 needs_update: 1 shadow_changed: 1 size_changed: 1 state_changed: 0 buffer_destroyed: 0
[0.087] Created decoration buffers at scale: 1.000000
[0.097] Fractional scale requested: 150/120 = 1.25 for window 1
[0.097] Resizing framebuffer of window: 1 to: 1050x763 window size: 840x610 at scale: 1.250
[0.097] Waiting for swap to commit Wayland surface for window: 1
[0.097] CSD: old.size: 840x610 new.size: 840x610 needs_update: 1 shadow_changed: 0 size_changed: 1 state_changed: 0 buffer_destroyed: 0
[0.098] Created decoration buffers at scale: 1.250000
[0.098] Preferred integer buffer scale changed to: 2 for window 1
[0.098] Compositor set top-level bounds of: 2048x2272 for window 1
[0.098] Compositor top-level capabilities: maximize=1 minimize=1 window_menu=1 fullscreen=1
[0.098] XDG top-level configure event for window 1: size: 0x0 states:
[0.098] XDG surface configure event received and acknowledged for window 1
[0.098] Waiting for swap to commit Wayland surface for window: 1
[0.098] CSD: old.size: 840x610 new.size: 840x610 needs_update: 0 shadow_changed: 0 size_changed: 0 state_changed: 0 buffer_destroyed: 0
[0.098] Final window 1 content size: 840x610 resized: 0
[0.098] Setting window 1 "visible area" geometry in configure event: x=0 y=-24 840x634 viewport: 840x610
[0.098] Fractional scale requested: 120/120 = 1.00 for window 1
[0.098] Resizing framebuffer of window: 1 to: 840x610 window size: 840x610 at scale: 1.000
[0.098] Waiting for swap to commit Wayland surface for window: 1
[0.098] CSD: old.size: 840x610 new.size: 840x610 needs_update: 1 shadow_changed: 0 size_changed: 1 state_changed: 0 buffer_destroyed: 0
[0.099] Created decoration buffers at scale: 1.000000
[0.099] Preferred integer buffer scale changed to: 1 for window 1
[0.119] CSD: old.size: 840x610 new.size: 840x610 needs_update: 0 shadow_changed: 0 size_changed: 0 state_changed: 0 buffer_destroyed: 0
[0.121] OS Window created
[0.135] Child launched
[0.152] CSD: old.size: 840x610 new.size: 840x610 needs_update: 0 shadow_changed: 0 size_changed: 0 state_changed: 0 buffer_destroyed: 0
[0.158] Window 1 swapped committing surface
[0.162] Calling wl_pointer_set_cursor in setCursorImage with surface: 0x55fd23fca8d0 and serial: 0
[0.166] Fractional scale requested: 150/120 = 1.25 for window 1
[0.166] Resizing framebuffer of window: 1 to: 1050x763 window size: 840x610 at scale: 1.250
[0.166] Waiting for swap to commit Wayland surface for window: 1
[0.166] CSD: old.size: 840x610 new.size: 840x610 needs_update: 1 shadow_changed: 0 size_changed: 1 state_changed: 0 buffer_destroyed: 1
[0.168] Created decoration buffers at scale: 1.250000
[0.168] Preferred integer buffer scale changed to: 2 for window 1
[0.168] Compositor set top-level bounds of: 2048x2272 for window 1
[0.168] XDG top-level configure event for window 1: size: 840x634 states: TOPLEVEL_STATE_ACTIVATED
[0.168] XDG surface configure event received and acknowledged for window 1
[0.168] CSD: old.size: 840x610 new.size: 840x610 needs_update: 1 shadow_changed: 0 size_changed: 0 state_changed: 1 buffer_destroyed: 0
[0.168] Final window 1 content size: 840x610 resized: 0
[0.168] Setting window 1 "visible area" geometry in configure event: x=0 y=-24 840x634 viewport: 840x610
[0.168] Window 1 swapped committing surface
[0.216] Calling wl_pointer_set_cursor in setCursorImage with surface: 0x55fd23fca8d0 and serial: 111915
[0.266] Calling wl_pointer_set_cursor in setCursorImage with surface: 0x55fd23fca8d0 and serial: 111915
[0.271] CSD: old.size: 840x610 new.size: 840x610 needs_update: 1 shadow_changed: 0 size_changed: 0 state_changed: 0 buffer_destroyed: 1
[0.273] Created decoration buffers at scale: 1.250000
[0.273] SIGWINCH sent to child in window: 1 with size: (38, 105, 1050, 760)
[0.577] CSD: old.size: 840x610 new.size: 840x610 needs_update: 1 shadow_changed: 0 size_changed: 0 state_changed: 0 buffer_destroyed: 1
[0.578] Created decoration buffers at scale: 1.250000
[3.216] Calling wl_pointer_set_cursor in _glfwPlatformSetCursor with surface: (nil) and serial: 111915
[3.334] Child launched
[3.335] CSD: old.size: 840x610 new.size: 840x610 needs_update: 1 shadow_changed: 0 size_changed: 0 state_changed: 0 buffer_destroyed: 1
[3.337] Created decoration buffers at scale: 1.250000
[3.342165] No render frame received in 0.25 seconds[3.352226] No render frame received in 0.25 seconds[3.837] Calling wl_pointer_set_cursor in setCursorImage with surface: 0x55fd23fca8d0 and serial: 111915
[3.887] Calling wl_pointer_set_cursor in setCursorImage with surface: 0x55fd23fca8d0 and serial: 111915
[5.478742] No render frame received in 0.25 seconds[8.196] Calling wl_pointer_set_cursor in set_cursor with surface: 0x55fd23fca8d0
[8.263] Calling wl_pointer_set_cursor in set_cursor with surface: 0x55fd23fca8d0
[8.849] Calling wl_pointer_set_cursor in set_cursor with surface: 0x55fd23fca8d0
[10.574] Calling wl_pointer_set_cursor in set_cursor with surface: 0x55fd23fca8d0
[15.162] Compositor set top-level bounds of: 2048x2272 for window 1
[15.162] XDG top-level configure event for window 1: size: 840x634 states:
[15.162] XDG surface configure event received and acknowledged for window 1
[15.162] CSD: old.size: 840x610 new.size: 840x610 needs_update: 1 shadow_changed: 0 size_changed: 0 state_changed: 1 buffer_destroyed: 1
[15.164] Created decoration buffers at scale: 1.250000
[15.164] Final window 1 content size: 840x610 resized: 0
[15.164] Setting window 1 "visible area" geometry in configure event: x=0 y=-24 840x634 viewport: 840x610
[16.033] Calling wl_pointer_set_cursor in _glfwPlatformSetCursor with surface: (nil) and serial: 111954
[16.033] Calling wl_pointer_set_cursor in setCursorImage with surface: 0x55fd23fca8d0 and serial: 111954
[16.084] Calling wl_pointer_set_cursor in setCursorImage with surface: 0x55fd23fca8d0 and serial: 111954
[16.252] Calling wl_pointer_set_cursor in setCursorImage with surface: 0x55fd23fca8d0 and serial: 111954
[16.252] Compositor set top-level bounds of: 2048x2272 for window 1
[16.252] XDG top-level configure event for window 1: size: 840x634 states: TOPLEVEL_STATE_ACTIVATED
[16.252] XDG surface configure event received and acknowledged for window 1
[16.252] Calling wl_pointer_set_cursor in setCursorImage with surface: 0x55fd23fca8d0 and serial: 111954
[16.252] CSD: old.size: 840x610 new.size: 840x610 needs_update: 1 shadow_changed: 0 size_changed: 0 state_changed: 1 buffer_destroyed: 1
[16.254] Created decoration buffers at scale: 1.250000
[16.255] Final window 1 content size: 840x610 resized: 0
[16.255] Setting window 1 "visible area" geometry in configure event: x=0 y=-24 840x634 viewport: 840x610
[16.302] Calling wl_pointer_set_cursor in setCursorImage with surface: 0x55fd23fca8d0 and serial: 111954
[17.049] CSD: old.size: 840x610 new.size: 840x610 needs_update: 1 shadow_changed: 0 size_changed: 0 state_changed: 0 buffer_destroyed: 1
[17.050] Created decoration buffers at scale: 1.250000
[17.055152] No render frame received in 0.25 seconds[18.433] Calling wl_pointer_set_cursor in setCursorImage with surface: 0x55fd23fca8d0 and serial: 111954
Is this sufficient or is there other debug output you need?
from kitty.
Lots of weird shit going on in that log. Why is your compositor first requesting a fractional scale of 1 and then 1.25? In any case as far as I can see, kitty is sizing things correctly as evidenced by the line
Resizing framebuffer of window: 1 to: 1050x763 window size: 840x610 at scale: 1.250
I would guess the issue comes from GNOME thinking 610 * 1.25 is 762 not 763 i.e. it is rounding 762.5 to 762. Easily confirmed by testing with a window size that results in a integer when multiplied by 1.25.
I will note that the wayland spec states: For toplevel surfaces, the size is rounded halfway away from zero. Therefore if this is the cause you should report the bug to GNOME.
from kitty.
Is there a workaround I could use in the meantime to go back to the old scaling behavior? It worked perfectly before
from kitty.
GNOME bug report: https://gitlab.gnome.org/GNOME/mutter/-/issues/3514
from kitty.
Not that I know of, short of ensuring your window size is such that
multiplying it with the scale yields something that is not x.5. Or
switch to another Wayland compositor, one that follows the "fractional
scaling spec", such as it is.
from kitty.
Related Issues (20)
- Workaround for launching with `--copy-env` from binding? HOT 3
- Why can't I set the background image in kitty.cfg for Kitty on MacOS and have it take effect? HOT 1
- Update glfw to 3.5. ver. 3.5 has bug fixes and better performance compared to 3.4 HOT 1
- Fractional scaling not working. HOT 11
- kitten clipboard: Segfault
- Add Yazi terminal file manager to the list of software implementing kitty's graphics protocol HOT 1
- Kitty 0.35.X dropping windows intermittently HOT 2
- 0.35.x maximize and fullscreen not working properly HOT 1
- Drawing cell border HOT 1
- `symbol_map` and `narrow_symbols` should be font-family-aware HOT 1
- `kitty +kitten ssh -V` does not print version info HOT 1
- Kitty is submitting trashed / uninitialized buffers via linux-dmabuf when resizing HOT 29
- After installing NVIDIA drivers, kitty won't start from taskbar. HOT 3
- Kitty shows a desktop notification every time a directory is entered HOT 6
- Letters cut HOT 1
- kitty diff jump to next file HOT 1
- Mac OS: Font fallback fails for Fira Code with the hyphen symbol `‐` (U+2010) HOT 4
- Mouse wheel scrolls too fast when using nvim HOT 1
- dot command file fails to execute HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kitty.