143 Commits

Author SHA1 Message Date
Kovid Goyal
e36f6ac1b8 Use most recently focused OS Window when available to guess the monitor to use for fractional scale
Slight improvement in odds of guessing right for subsequent OS Windows.
2026-07-21 13:02:23 +05:30
Kovid Goyal
6ed833e163 Wayland: get initial window size in cells working in most cases on hyprland/sway with fractional scaling by using the fractional scale of the primary monitor 2026-07-21 10:03:40 +05:30
Dan Egnor
db14d7c220 Wayland: map first window at correct size with fractional scaling
The first OS window on Wayland is created at scale 1 because the
compositor only sends the fractional scale after the surface exists.
The initial size in cells is therefore computed with scale-1 cell
metrics and the window is mapped a few cells too small. The existing
post-map recompute calls glfwSetWindowSize(), but on Wayland that loses
to the compositor's authoritative configure, which re-asserts the size
it recorded at map time. So a window that receives focus (the normal
interactive case) stays too small; a background window that never gets
an activated configure happens to keep the resized value, which is why
it can look fixed.

Correct the size while the window is still unmapped instead. GLFW gains
a hook (glfwWaylandSetInitialWindowSizeCallback) that it invokes when
the fractional scale is applied during creation -- mutter, kwin and niri
send the scale before the first configure -- letting the embedder
recompute the cell-based logical size for the real scale before the
window is mapped. The compositor then records the correct size and its
activation configure agrees, so there is nothing to race.

The existing post-map recompute is kept as a fallback for compositors
that only send the scale after the first configure (sway, Hyprland).

Also add glfwCocoaSetWindowLevel to the glfw.py wrapper generator list:
it was present in the committed glfw-wrapper but missing from the
generator, so regenerating the wrapper (required to add the hook above)
would otherwise drop it and break the macOS build.
2026-07-18 20:48:11 -07:00
zhaolei
b16221a1d3 macos: explicitly enable modern window corners on macOS 26
Use an explicit runtime check to apply the newer corner styling on macOS 26 while leaving behavior unchanged on older macOS versions for compatibility.

Also add the required QuartzCore framework for linking the corner curve API.
2026-04-18 20:41:38 +08:00
Kovid Goyal
5cc510dea4 Merge branch 'titlebar-only-wayland' of https://github.com/antoinecellerier/kitty 2026-02-23 19:19:30 +05:30
Kovid Goyal
1f5b11be0b Merge branch 'fix-sleep-macos' of https://github.com/jorgemmsilva/kitty 2026-02-23 07:27:58 +05:30
Kovid Goyal
dea3ad5eed API for registering MIME types for drag enter 2026-02-21 17:25:25 +05:30
Jorge Silva
adc97bc117 fix blank screen on macOS resume from sleep 2026-02-17 17:56:14 +00:00
Antoine Cellerier
ef4574ae97 Support hide_window_decorations titlebar-only on Wayland
Hide the CSD titlebar subsurface while keeping shadow borders for
resizing. On SSD compositors (GNOME), forces CSD mode to draw
kitty's own shadows without a titlebar.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-08 19:49:44 +01:00
Kovid Goyal
2ab0fcb373 Make Wayland momentum scrolling configurable 2026-01-09 13:46:49 +05:30
Kovid Goyal
81f429d52b Move the code to cycle through OS Windows into glfw 2025-11-12 12:02:38 +05:30
Kovid Goyal
9ed6be9272 Quick access terminal: Allow toggling the window to full screen and map using the standard kitty toggle_fullscreen shortcut
Fixes #8626
2025-05-12 15:20:48 +05:30
Kovid Goyal
f04fc251bf Start work on full panel support in X11 2025-05-01 15:44:08 +05:30
Kovid Goyal
189d78283c Get the quake terminal working on macOS 2025-04-25 20:27:26 +05:30
Kovid Goyal
5e2d44ce15 Make passing layer shell config to glfw not use a global variable 2025-04-22 10:45:28 +05:30
Kovid Goyal
a8693e45ef Nicer error message when running panel kitten on a compositor that does not support layer shell 2025-04-21 13:39:16 +05:30
Kovid Goyal
64b5d2d187 More precise error on resize panel attempt 2025-04-21 12:32:20 +05:30
Kovid Goyal
5d2e258c35 Wayland: When the compositor supports the xdg-system-bell protocol use it to play the default bell sound 2025-04-16 15:48:51 +05:30
Kovid Goyal
3c57cc02f7 Wayland: panel kitten: Fix incorrect initial font size on compositors such as Hyprland that set scale late in the window creation process
Fixes #8496
2025-03-30 16:19:52 +05:30
Kovid Goyal
c18098d872 Cleanup DBUS send notification API 2024-07-26 23:57:36 +05:30
Kovid Goyal
d68e49fe64 Start work on refactoring notifications handling
Makes the code cleaner and easily mockable for testing.
Also, add code to handle closing notifications on Linux.
2024-07-25 06:45:10 +05:30
Kovid Goyal
190566be8e Wayland: Fix specifying the output name for the panel kitten not working
Fixes #7573
2024-06-25 12:53:37 +05:30
Kovid Goyal
adc457ff0f Dynload libsystemd 2024-05-16 21:13:09 +05:30
Kovid Goyal
32f3d43aa0 Support setting urgency for DBUS notifications 2024-05-16 20:10:26 +05:30
Kovid Goyal
f979c24add Move some defines to only the source files where they are needed 2024-05-16 17:38:26 +05:30
Kovid Goyal
ecee7086a8 Report compositor missing capabilities in debug output 2024-04-04 16:56:13 +05:30
Kovid Goyal
a40a36d191 Wayland: Remove the 120ms penalty from waiting for window creation
When showing the window we loop in the wayland backend using a
temporary buffer of blank pixels to force the compositor to finish
setting up the top level surface pronto.

TODO: Set the color of the temmporary buffer to the background color
2024-03-26 15:40:13 +05:30
Kovid Goyal
adf5917325 Wayland: Only launch child after OS Window achieves its final size
Avoids a bunch of SIGIWNCH during child startup as not all programs
handle these correctly. Sadly adds about 0.1 seconds of latency to
startup. Will have to look into reducing that. The Wayland protocol is
*so badly* designed.
2024-03-26 12:48:45 +05:30
Kovid Goyal
83fcd472bb Debug output: Show name and version of Wayland compositor 2024-03-26 09:54:38 +05:30
Kovid Goyal
fe5ccc144b Finish glfw side support for layer shell 2024-03-24 20:48:20 +05:30
Kovid Goyal
0641ec2d89 GLFW API for configuring a window as a layer shell 2024-03-24 20:48:20 +05:30
Kovid Goyal
1c9f9a74e8 Wayland KDE: Add support for background_blur under kwin using a kwin private Wayland protocol 2024-03-22 13:41:44 +05:30
Kovid Goyal
baa3ec0a62 Explicitly detect compiler types gcc vs clang 2024-03-14 12:02:01 +05:30
Kovid Goyal
478fc766b6 ... 2024-03-14 11:53:44 +05:30
Kovid Goyal
6c49066cde Fix undefined function pointer usage found by clang sanitizer 2024-03-14 11:47:56 +05:30
Kovid Goyal
3950632517 Switch to detecting clang rather than gcc
gcc makes it impossible to detect that it is gcc via --version
so instead detect clang and assume gcc if not clang.

Fixes #7218
2024-03-14 10:48:27 +05:30
Kovid Goyal
99af9739b2 ... 2024-02-25 19:46:18 +05:30
Kovid Goyal
9ce366fa7b Fix #7154 2024-02-25 15:22:43 +05:30
Kovid Goyal
ac984d05f2 Fix gcc detection 2024-02-25 09:57:43 +05:30
Kovid Goyal
f16c2a0d67 Move checking for compiler brand into Env 2024-02-25 09:57:43 +05:30
Kovid Goyal
8dd6f9b07c Get universal builds working again
Now we use lipo and build individually so we can pass the correct
compiler flags per arch
2024-02-25 09:57:38 +05:30
Kovid Goyal
7e77a196e6 Build only the SIMD code with SIMD compiler flags 2024-02-25 09:57:38 +05:30
Kovid Goyal
c76db4bfb4 Wayland: Redraw titlebar title on font size change
Fixes #6945
2023-12-25 17:20:52 +05:30
Kovid Goyal
77292a16d6 Make shebangs consistent
Follow PEP 0394 and use /usr/bin/env python so that the python in the
users venv is respected. Not that the kitty python files are meant to be
executed standalone anyway, but, whatever.

Fixes #6810
2023-11-11 08:32:05 +05:30
Kovid Goyal
b00c2d644e macOS: Render OS windows during windowDidResize for even smoother live resize rendering 2023-07-11 17:22:35 +05:30
Kovid Goyal
d3f14ffbf4 macOS: Fix window shadows not being drawn for transparent windows
Re-organize the whole infrastructure for setting window chrome, doing it
in a single function that has access to all settings.

Fixes #2827
Fixes #6416
2023-07-04 11:59:50 +05:30
Kovid Goyal
7c6d40fa0c Implement background blur for KDE on X11 as well 2023-06-27 14:56:35 +05:30
Kovid Goyal
7a1bdb4ff1 macOS: Implement background blurring
Uses a private API that allows us to control the amount of blurring.
While using a private API is obviously not ideal, it is used by both
iTerm.app and Apple's own Terminal.app, so hopefully it should stick
around. Fixes #6135
2023-06-27 08:48:16 +05:30
Kovid Goyal
cd8bb462c3 Add KITTY_VCS_REV for release builds as well 2023-02-28 19:41:28 +05:30
Kovid Goyal
935a36f5a8 Allow specifying VCS revision on the build command line 2023-02-28 13:05:43 +05:30