ZIm/crates
Smit Barmase 7812985d3c
linux: Fix blurry rendering on Wayland when using fractional scaling (#33087)
Closes #25195

In Wayland, To create buffer size (`renderer.update_drawable_size`), we
convert logical pixels to device pixels by taking the scale factor into
account. Later, we also let the compositor know the logical pixels we
want to use for our app (`viewport.set_destination`). Then, the
compositor takes our buffer and tries to scale it to fit the viewport
size we provided. If this is accurate, we see perfect rendering. If our
buffer size is not accurate (off by 1px in this case), the compositor
scales our buffer to fit the viewport size. This causes blur.

To make sure we set correct buffer size for renderer as same as what
compositor is going to use, we needs to use rounding instead of truncate
when converting logical pixels to device pixels. It's not super clear
from docs, what exact algorithm it uses but it says it uses rounding and
seems to fix issue for me if we follow that for our buffer.

From https://wayland.app/protocols/fractional-scale-v1:
> If a surface has a surface-local size of 100 px by 50 px and wishes to
submit buffers with a scale of 1.5, then a buffer of 150px by 75 px
should be used and the wp_viewport destination rectangle should be 100
px by 50 px.
>
> For toplevel surfaces, the size is **rounded halfway away from zero**.
The rounding algorithm for subsurface position and size is not defined.

Tested on:
- [x] Gnome
- [x] KDE
- [ ] ~Sway~ (Need to investigate this more for Sway)

Release Notes:

- Fixed blurry rendering on Wayland when using fractional scaling for
Gnome and KDE.

Co-authored-by: Julia Ryan p1n3appl3@users.noreply.github.com
Co-authored-by: Antonio Scandurra me@as-cii.com
2025-06-20 21:22:08 +05:30
..
activity_indicator Move r-a status into the activity indicator (#32726) 2025-06-13 22:33:02 +00:00
agent agent: Do not send stale files notifications (#32974) 2025-06-20 16:56:49 +03:00
agent_settings language_models: Add images support to LMStudio provider (#32741) 2025-06-17 12:14:44 +02:00
anthropic Standardize on u64 for token counts (#32869) 2025-06-17 10:43:07 -04:00
askpass supermaven_api: Ensure downloaded Supermaven binary has executable permissions set (#32576) 2025-06-17 14:39:45 +00:00
assets Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
assistant_context_editor editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
assistant_slash_command chore: Make terminal_view own the TerminalSlashCommand (#31070) 2025-05-21 09:27:54 +00:00
assistant_slash_commands editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
assistant_tool agent: Less disruptive changed file notification (#31693) 2025-06-16 18:45:24 +03:00
assistant_tools assistant_tools: Enable diff-fenced edit parser for all Gemini models (#32812) 2025-06-16 22:01:55 +03:00
audio agent: Add sound notification when done generating (#31472) 2025-05-26 21:20:41 -03:00
auto_update Silence failed auto update checks (#32696) 2025-06-13 13:11:02 -04:00
auto_update_helper Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
auto_update_ui Fix release notes appearing in project search (#32898) 2025-06-17 20:56:41 +00:00
aws_http_client Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
bedrock Standardize on u64 for token counts (#32869) 2025-06-17 10:43:07 -04:00
breadcrumbs breadcrumbs: Stylize filename in breadcrumbs when tab-bar is off and file is dirty (#30507) 2025-05-30 08:32:54 -07:00
buffer_diff Diff view (#32922) 2025-06-18 14:43:23 +00:00
call Use read-only access methods for read-only entity operations (#31479) 2025-05-26 23:04:31 -04:00
channel Use git config --global user.email for email address in automatic Co-authored-by (#32624) 2025-06-12 19:39:08 +00:00
cli Diff view (#32922) 2025-06-18 14:43:23 +00:00
client Revert "client: Fix an issue where non-IP proxy URLs didn’t resolve c… (#33013) 2025-06-19 08:56:00 +00:00
clock Add the ability to follow the agent as it makes edits (#29839) 2025-05-04 08:28:39 +00:00
collab Make pull diagnostics remote test more robust (#33057) 2025-06-19 19:27:47 +00:00
collab_ui editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
collections Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
command_palette editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
command_palette_hooks Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
component Fix typo (#32160) 2025-06-05 12:59:22 +00:00
context_server context_server: Make notifications type safe (#32396) 2025-06-09 15:11:01 +00:00
copilot copilot: Remove PromptTokensDetails from Usage struct (#33029) 2025-06-19 17:37:58 +03:00
credentials_provider Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
dap debugger: Add comment-preserving debug.json editing (#32896) 2025-06-17 15:51:05 -07:00
dap_adapters Wait for source maps when setting TypeScript breakpoints (#32954) 2025-06-18 11:12:16 -06:00
db Misc nitpicks, changes too small / unrelated to be in other PRs (#32768) 2025-06-15 19:51:04 +00:00
debug_adapter_extension extensions: Yet another PR for debugger touchups (#32822) 2025-06-17 07:34:55 +00:00
debugger_tools debugger: Improve logging of debug sessions (#32718) 2025-06-13 20:56:23 +00:00
debugger_ui debugger: Move breakpoint management to the pane strip (#33062) 2025-06-19 22:29:15 +02:00
deepseek Standardize on u64 for token counts (#32869) 2025-06-17 10:43:07 -04:00
diagnostics Show inline previews for LSP document colors (#32816) 2025-06-17 13:46:21 +00:00
docs_preprocessor Validate actions in docs (#31073) 2025-06-04 19:18:12 +00:00
editor editor: Scale minimap width to editor width (#32317) 2025-06-19 14:24:06 +03:00
eval agent: Less disruptive changed file notification (#31693) 2025-06-16 18:45:24 +03:00
extension Ensure compiled extensions work with older Zed versions (#33051) 2025-06-19 22:35:19 +02:00
extension_api zed_extension_api: Release v0.6.0 (#32945) 2025-06-18 14:05:29 +00:00
extension_cli extensions: Add "Debug Adapters" category to the extension store (#32845) 2025-06-17 12:09:08 +02:00
extension_host agent: Improve the UX around interacting with MCP servers (#32622) 2025-06-18 22:52:40 +00:00
extensions_ui agent: Improve the UX around interacting with MCP servers (#32622) 2025-06-18 22:52:40 +00:00
feature_flags debugger: Remove feature flag (#32877) 2025-06-17 13:56:19 -06:00
feedback Add (flatpak) and (snap) suffixes to Zed version in system info (#32903) 2025-06-17 20:39:35 +00:00
file_finder editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
file_icons Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
fs Don't autosave unmodified buffers (#32626) 2025-06-12 22:12:14 +00:00
fsevent Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
fuzzy editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
git Use git config --global user.email for email address in automatic Co-authored-by (#32624) 2025-06-12 19:39:08 +00:00
git_hosting_providers Allow configuring custom git hosting providers in project settings (#31929) 2025-06-03 12:23:01 -04:00
git_ui Diff view (#32922) 2025-06-18 14:43:23 +00:00
go_to_line go_to_line: Show position relative to current excerpt in a multi-buffer (#31947) 2025-06-03 09:41:45 +02:00
google_ai Update Gemini Models (#32902) 2025-06-17 20:26:27 +00:00
gpui linux: Fix blurry rendering on Wayland when using fractional scaling (#33087) 2025-06-20 21:22:08 +05:30
gpui_macros Add a live Rust style editor to inspector to edit a sequence of no-argument style modifiers (#31443) 2025-05-26 17:43:57 +00:00
gpui_tokio Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
html_to_markdown Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
http_client Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
http_client_tls Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
icons agent: Improve the UX around interacting with MCP servers (#32622) 2025-06-18 22:52:40 +00:00
image_viewer Option to auto-close deleted files with no unsaved edits (#31920) 2025-06-03 13:18:29 +02:00
indexed_docs editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
inline_completion Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
inline_completion_button inline_completion_button: Fix links to account page (#31558) 2025-05-27 21:52:42 +00:00
inspector_ui Fix anchor biases for completion replacement ranges (esp slash commands) (#32262) 2025-06-06 20:54:00 +00:00
install_cli Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
jj Add a picker for jj bookmark list (#30883) 2025-05-17 16:42:45 +00:00
jj_ui editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
journal VSCode Settings import (#29018) 2025-04-23 20:54:09 +00:00
language Diff view (#32922) 2025-06-18 14:43:23 +00:00
language_extension supermaven_api: Ensure downloaded Supermaven binary has executable permissions set (#32576) 2025-06-17 14:39:45 +00:00
language_model Standardize on u64 for token counts (#32869) 2025-06-17 10:43:07 -04:00
language_models agent: Fix text wrapping in the provider set up list items (#33063) 2025-06-19 18:17:56 -03:00
language_selector editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
language_tools debugger: Parse and highlight text with ANSI escape sequences (#32915) 2025-06-17 23:39:31 -04:00
languages debugger: Fix issues with debugging scripts from package.json (#32995) 2025-06-19 14:33:24 +00:00
livekit_api Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
livekit_client Use upstream cpal (#32571) 2025-06-11 22:44:20 +03:00
lmstudio Standardize on u64 for token counts (#32869) 2025-06-17 10:43:07 -04:00
lsp Show inline previews for LSP document colors (#32816) 2025-06-17 13:46:21 +00:00
markdown chore: Fix warnings for Rust 1.89 (#32378) 2025-06-09 13:11:57 +02:00
markdown_preview chore: Fix warnings for Rust 1.89 (#32378) 2025-06-09 13:11:57 +02:00
media Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
menu agent: Add new panel navigation dropdown (#29539) 2025-04-29 21:58:45 -03:00
migrator Fix MCP settings migration continually adding the same key (#32848) 2025-06-17 09:32:08 +00:00
mistral Standardize on u64 for token counts (#32869) 2025-06-17 10:43:07 -04:00
multi_buffer Improve code for unsaved tab titles (#32770) 2025-06-15 21:18:09 +00:00
node_runtime Replace async-watch with a custom watch (#32245) 2025-06-06 16:00:09 +00:00
notifications Move workspace::toast_layer::RunAction to zed_actions::toast::RunAction (#32222) 2025-06-06 06:23:09 +00:00
ollama Standardize on u64 for token counts (#32869) 2025-06-17 10:43:07 -04:00
open_ai open_ai: Fix issues with OpenAI compatible APIs (#32982) 2025-06-18 21:51:51 +00:00
open_router Standardize on u64 for token counts (#32869) 2025-06-17 10:43:07 -04:00
outline Use read-only access methods for read-only entity operations (#31479) 2025-05-26 23:04:31 -04:00
outline_panel Omit outlines from the outline panel, not related to the buffer's main language (#32987) 2025-06-18 22:36:00 +00:00
panel Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
paths Improve logic for finding VSCode / Cursor settings files (#32721) 2025-06-14 21:39:54 -06:00
picker gpui: Simplify uniform list API by removing entity param (#32480) 2025-06-10 18:50:57 +00:00
prettier Improve logging of prettier errors (#32665) 2025-06-13 07:26:06 +00:00
project debugger: Refresh variable list on set variable value response (#33078) 2025-06-20 07:53:32 +00:00
project_panel project_panel: Allow collapse all from workspace context (#32660) 2025-06-13 12:26:29 +05:30
project_symbols editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
prompt_store editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
proto Show inline previews for LSP document colors (#32816) 2025-06-17 13:46:21 +00:00
recent_projects editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
refineable Add a live Rust style editor to inspector to edit a sequence of no-argument style modifiers (#31443) 2025-05-26 17:43:57 +00:00
release_channel Use shortened SHA when displaying version to install (#31281) 2025-05-23 14:53:53 +00:00
remote Make it possible to use cargo-zigbuild for ZED_BUILD_REMOTE_SERVER (#31467) 2025-05-27 16:56:27 +00:00
remote_server Fix diff indicators not restored when reopening remote project (#31384) 2025-06-17 10:07:51 -04:00
repl Fix clicking in to agent message editor and tighten up vertical spacing (#32765) 2025-06-15 18:45:44 +00:00
reqwest_client Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
rich_text Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
rope chore: Fix warnings for Rust 1.89 (#32378) 2025-06-09 13:11:57 +02:00
rpc extensions: Add "Debug Adapters" category to the extension store (#32845) 2025-06-17 12:09:08 +02:00
rules_library linux: Add title bar for rules library (#33025) 2025-06-19 18:23:09 +05:30
schema_generator Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
search debugger: Parse and highlight text with ANSI escape sequences (#32915) 2025-06-17 23:39:31 -04:00
semantic_index Remove separator! macro and make path! handle relative paths (#32527) 2025-06-13 06:32:29 +00:00
semantic_version Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
session Avoid unnecessary DB writes (#29417) 2025-04-25 17:41:49 +03:00
settings agent: Improve the UX around interacting with MCP servers (#32622) 2025-06-18 22:52:40 +00:00
settings_ui Improve logic for finding VSCode / Cursor settings files (#32721) 2025-06-14 21:39:54 -06:00
snippet Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
snippet_provider Use read-only access methods for read-only entity operations (#31479) 2025-05-26 23:04:31 -04:00
snippets_ui editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
sqlez Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
sqlez_macros Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
story gpui: Add a standard text example (#30747) 2025-05-16 17:35:44 +02:00
storybook editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
streaming_diff Introduce a new StreamingEditFileTool (#29733) 2025-05-01 17:37:43 +02:00
sum_tree chore: Fix warnings for Rust 1.89 (#32378) 2025-06-09 13:11:57 +02:00
supermaven Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
supermaven_api supermaven_api: Ensure downloaded Supermaven binary has executable permissions set (#32576) 2025-06-17 14:39:45 +00:00
tab_switcher editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
task Silence another backtrace-full log (#32990) 2025-06-18 22:47:48 +00:00
tasks_ui debugger: Refine session modal design (#33004) 2025-06-19 02:27:34 -03:00
telemetry Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
telemetry_events Add new action to run agent eval (#29158) 2025-04-21 21:30:21 -07:00
terminal terminal: Fix file paths links with URL escapes not being clickable (#31830) 2025-06-15 19:20:01 +00:00
terminal_view Revert "Bail and signal error when the cwd of a resolved task doesn't exist" (#32866) 2025-06-17 14:01:16 +00:00
text chore: Fix warnings for Rust 1.89 (#32378) 2025-06-09 13:11:57 +02:00
theme Refine styling of merge conflicts (#31012) 2025-06-09 19:03:19 +00:00
theme_extension Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
theme_importer theme: Add colors for minimap thumb and border (#30785) 2025-05-26 18:23:41 +00:00
theme_selector editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
time_format agent: Add date separators to Thread History (#29961) 2025-05-06 10:18:48 +00:00
title_bar linux: Add title bar for rules library (#33025) 2025-06-19 18:23:09 +05:30
toolchain_selector editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
ui debugger: Add onboarding modal (#32961) 2025-06-18 18:44:02 +00:00
ui_input agent: Add ability to change the API base URL for OpenAI via the UI (#32979) 2025-06-18 18:47:43 -03:00
ui_macros Update syn crate from 1.0.109 to 2.0.101 (#31301) 2025-05-23 19:31:25 +00:00
ui_prompt gpui: Improve window.prompt to support ESC with non-English cancel text on macOS (#29538) 2025-05-30 15:26:27 +00:00
util supermaven_api: Ensure downloaded Supermaven binary has executable permissions set (#32576) 2025-06-17 14:39:45 +00:00
util_macros Remove separator! macro and make path! handle relative paths (#32527) 2025-06-13 06:32:29 +00:00
vim vim: Fix escape key switching back to default mode instead of normal mode (#31843) 2025-06-18 21:26:12 +00:00
vim_mode_setting vim: Fix escape key switching back to default mode instead of normal mode (#31843) 2025-06-18 21:26:12 +00:00
watch chore: Fix warnings for Rust 1.89 (#32378) 2025-06-09 13:11:57 +02:00
web_search agent: Expose web search tool to beta users (#29273) 2025-04-23 15:30:20 +00:00
web_search_providers Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
welcome editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
workspace Revert "Bail and signal error when the cwd of a resolved task doesn't exist" (#32866) 2025-06-17 14:01:16 +00:00
worktree chore: Fix warnings for Rust 1.89 (#32378) 2025-06-09 13:11:57 +02:00
zed Fix handling of --diff flag (#33094) 2025-06-20 13:02:28 +01:00
zed_actions debugger: Add onboarding modal (#32961) 2025-06-18 18:44:02 +00:00
zeta Misc nitpicks, changes too small / unrelated to be in other PRs (#32768) 2025-06-15 19:51:04 +00:00
zlog Initialize zlog default filters on init rather than waiting for settings load (#32209) 2025-06-06 00:49:30 -06:00
zlog_settings VSCode Settings import (#29018) 2025-04-23 20:54:09 +00:00