wez / wezterm

A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
https://wezfurlong.org/wezterm/
Other
18.08k stars 808 forks source link

When the `Mission Control` is turned on, not smooth #5524

Open ofzo opened 5 months ago

ofzo commented 5 months ago

What Operating System(s) are you seeing this problem on?

macOS

Which Wayland compositor or X11 Window manager(s) are you using?

No response

WezTerm version

wezterm 20240203-110809-5046fc22

Did you try the latest nightly build to see if the issue is better (or worse!) than your current version?

Yes, and I updated the version box above to show the version of the nightly that I tried

Describe the bug

When wezterm is activated, opening Mission Control will not smooth, but not when iterm2 is activated look like video: https://github.com/wez/wezterm/assets/18000037/abd02ea3-1442-4234-a091-ccfa25573854

To Reproduce

No response

Configuration

-- Pull in the wezterm API local wezterm = require 'wezterm'

-- This will hold the configuration. local config = wezterm.config_builder()

-- This is where you actually apply your config choices config.font = wezterm.font_with_fallback { { family = 'Cascadia Mono', weight = 400 }, { family = "JetBrainsMono NFM", scale = 1.1 , weight = 600 }, { family = "PingFang SC" } } config.dpi = 192 config.use_cap_height_to_scale_fallback_fonts = true config.font_size = 12 config.line_height = 1.6 config.underline_position = -10 -- For example, changing the color scheme: -- config.color_scheme = 'Heetch Light (base16) '

config.default_cwd = wezterm.home_dir.."/codespace" config.initial_cols = 140 config.initial_rows = 30 config.cursor_thickness = "3px" config.default_cursor_style = "BlinkingBar"

-- config.hide_tab_bar_if_only_one_tab = true config.enable_tab_bar = false

-- config.macos_window_background_blur = 20 -- config.window_background_opacity = 1

config.front_end = "WebGpu" config.colors = { foreground = "black", background = "white", -- Overrides the cell background color when the current cell is occupied by the -- cursor and the cursor style is set to Block cursor_bg = '#52ad70', -- Overrides the text color when the current cell is occupied by the cursor cursor_fg = 'black', -- Specifies the border color of the cursor when the cursor style is set to Block, -- or the color of the vertical or horizontal bar when the cursor style is set to -- Bar or Underline. cursor_border = '#52ad70',

-- the foreground color of selected text selection_fg = 'black', -- the background color of selected text selection_bg = '#fffacd',

-- The color of the scrollbar "thumb"; the portion that represents the current viewport scrollbar_thumb = '#222222',

-- The color of the split lines between panes split = '#f5f5f5',

ansi = { 'black', -- Black '#991b1b', -- Red '#166534', -- Green '#854d0e', -- Yellow '#1d4ed8', -- Blue '#6b21a8', -- Magenta '#0369a1', -- Cyan 'white', -- White }, brights = { '#9ca3af', -- Black '#ef4444', -- Red '#16a34a', -- Green '#eab308', -- Yellow '#0ea5e9', -- Blue '#d946ef', -- Magenta '#06b6d4', -- Cyan 'white', -- White },

-- Arbitrary colors of the palette in the range from 16 to 255 -- indexed = { [136] = '#af8700' },

-- Since: 20220319-142410-0fcdea07 -- When the IME, a dead key or a leader key are being processed and are effectively -- holding input pending the result of input composition, change the cursor -- to this color to give a visual cue about the compose state. compose_cursor = 'orange',

-- Colors for copy_mode and quick_select -- available since: 20220807-113146-c2fee766 -- In copy_mode, the color of the active text is: -- 1. copy_mode_activehighlight if additional text was selected using the mouse -- 2. selection_ otherwise -- copy_mode_active_highlight_bg = { Color = '#000000' }, -- use AnsiColor to specify one of the ansi color palette values -- (index 0-15) using one of the names "Black", "Maroon", "Green", -- "Olive", "Navy", "Purple", "Teal", "Silver", "Grey", "Red", "Lime", -- "Yellow", "Blue", "Fuchsia", "Aqua" or "White". copy_mode_active_highlight_fg = { AnsiColor = 'Black' }, copy_mode_inactive_highlight_bg = { Color = '#52ad70' }, copy_mode_inactive_highlight_fg = { AnsiColor = 'White' },

quick_select_label_bg = { Color = 'peru' }, quick_select_label_fg = { Color = '#ffffff' }, quick_select_match_bg = { AnsiColor = 'Navy' }, quick_select_match_fg = { Color = '#ffffff' }, }

config.window_padding = { left = '2pt', right = '0', top = '0', bottom = '0', } config.window_frame = { inactive_titlebar_bg = '#353535', active_titlebar_bg = '#ffffff', inactive_titlebar_fg = '#cccccc', active_titlebar_fg = '#ffffff', }

config.command_palette_bg_color = "white" config.command_palette_fg_color = "#111827" config.command_palette_font_size = 10 config.command_palette_rows = 20

config.keys = { -- Turn off the default CMD-m Hide action, allowing CMD-m to -- be potentially recognized and handled by the tab { key = 'Enter', mods = 'SUPER', action = wezterm.action.ToggleFullScreen, }, { key = 'D', mods = 'SUPER|SHIFT', action = wezterm.action.SplitVertical { domain = 'CurrentPaneDomain' }, }, { key = 'd', mods = 'SUPER', action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' }, }, { key = 'k', mods = 'SUPER', action = wezterm.action.ClearScrollback 'ScrollbackAndViewport', }, { key = 'p', mods = 'SUPER', action = wezterm.action.ActivateCommandPalette, }, { key = 'LeftArrow', mods = 'ALT', action = wezterm.action.ActivatePaneDirection 'Left', }, { key = 'RightArrow', mods = 'ALT', action = wezterm.action.ActivatePaneDirection 'Right', }, { key = 'UpArrow', mods = 'ALT', action = wezterm.action.ActivatePaneDirection 'Up', }, { key = 'DownArrow', mods = 'ALT', action = wezterm.action.ActivatePaneDirection 'Down', }, }

for i = 1, 8 do -- CTRL+ALT + number to activate that tab table.insert(config.keys, { key = tostring(i), mods = 'SUPER', action = wezterm.action.ActivatePaneByIndex(i - 1), }) -- F1 through F8 to activate that tab table.insert(config.keys, { key = 'F' .. tostring(i), action = wezterm.action.ActivateTab(i - 1), }) end

config.mouse_bindings = { { event = { Up = { streak = 1, button = 'Left' } }, mods = 'CMD', action = wezterm.action.OpenLinkAtMouseCursor, } } wezterm.on('format-window-title', function(tab, pane, tabs, panes, config) return "" end) -- config.window_decorations = "INTEGRATED_BUTTONS|RESIZE" -- and finally, return the configuration to wezterm return config

Expected Behavior

No response

Logs

No response

Anything else?

No response

ArchWand commented 5 months ago

I'm not entirely sure if this is a mac issue; I was unable to reproduce (M2 Macbook Pro)

ofzo commented 5 months ago

I'm not entirely sure if this is a mac issue; I was unable to reproduce (M2 Macbook Pro)

oh, maybe my os is 12 (Macbook Pro Monterey), it's a bit old

Rotonen commented 4 months ago

I have the same symptom (noticed that Exposé is choppy when wezterm is running and otherwise normal) on the following machine:

Late 2019 16 inch MBP 8 core i9 CPU 32GB RAM 8GB AMD GPU

Sonoma 14.5

Tried playing with front_end: the same happens with Software, OpenGL and WebGpu.

Tried playing with preferred GPU on WebGpu: the same happens on both integrated Intel and discrete AMD.

Tried playing around with animation_fps in case that somehow infects some Cocoa thing system wide: no effect.

The easiest way to spot this behaviour is to slowly do Exposé with the touchpad (or to let it go fast with the keyboard shortcuts).

Anything I can do to extract more data or to debug further myself? Not immediately sure what and how to profile as the problem is probably some resource (locks? interrupts? shooting in the dark) contention on the system / hardware level.

Rotonen commented 3 months ago

As an additional piece of information, no such problems manifest themselves with an M2 Air for me. This further hints that the behaviour could be hardware specific.

jscheel commented 2 months ago

Running a 2019 intel mbp here. This stuttering is very prevalent when on the integrated gfx card, but not on the discrete one. My guess is that something is re-rendering when the window moves, and mission control is triggering it on each frame. Probably obscured by beefier GPUs.

Landaman commented 1 week ago

This happens for me on an M1, so not Intel-specific

emilmelnikov commented 1 week ago

Running a 2019 intel mbp here. This stuttering is very prevalent when on the integrated gfx card, but not on the discrete one.

Can also confirm this issue. Macbook Pro 16 (2019), macOS 15.1, empty config.

The issue is very noticeable when the integrated Intel GPU is active. However, when System Settings -> Battery -> Options... -> Automatic graphics switching is turned off and the dedicated AMD GPU is active instead, it looks like the same issue is still present, but the effect is very subtle. You can still see a very slight stuttering when manually controlling the Mission Control animation by repeatedly moving your fingers up and down on a trackpad (I wanted to record and post a video, but the stuttering is not really visible there, sorry).

emilmelnikov commented 1 week ago

Tried to play with window_background_opacity and window_decorations, as suggested in https://github.com/wez/wezterm/issues/2669, and the issue went away.

Just for the reference, here is a relevant snippet from my config:

config.front_end = "WebGpu"

-- Make sure that the Intel integrated GPU is used.
local gpu = wezterm.gui.enumerate_gpus()[2]
config.webgpu_preferred_adapter = gpu
wezterm.log_info("gpu = " .. gpu.name)
-- INFO logging > lua: gpu = Intel(R) UHD Graphics 630

-- Either of these fixes the problem.
-- config.window_background_opacity = 0.999
-- config.window_decorations = "TITLE|RESIZE|MACOS_FORCE_DISABLE_SHADOW"
Landaman commented 1 week ago

Can confirm this also fixes the issue for me