Commit Graph

144 Commits

Author SHA1 Message Date
Kovid Goyal
0f1362524b Store more information about axis events from Wayland 2026-01-01 13:25:30 +05:30
Kovid Goyal
2ffa8cd7c2 Apparently gamma22 gives incorrect colors or at least colors different from rendering without color management. srgb transfer function gives expected colors. 2025-07-31 19:07:28 +05:30
Kovid Goyal
caa654b6b8 Also track needed color manager features 2025-07-31 18:53:24 +05:30
Kovid Goyal
d37bd7afcf Create the sRGB colorspace description we need 2025-07-31 18:30:47 +05:30
Kovid Goyal
fe860d170f Track that the compositor supports the sRGB primary 2025-07-31 15:39:55 +05:30
Kovid Goyal
46114c251b Create the color manager object for a window surface 2025-07-31 15:24:21 +05:30
Kovid Goyal
8762576a5b Also track support for extlinear transfer function 2025-07-31 15:12:26 +05:30
Kovid Goyal
d0a862bedb Get the color manager capabilities from the compositor 2025-07-31 15:09:18 +05:30
Kovid Goyal
f04e963683 Bind the wayland color manager interface 2025-07-31 14:37:42 +05:30
Kovid Goyal
6f689f3221 Work on keyboard grabbing functionality 2025-05-18 11:37:11 +05:30
Kovid Goyal
8017945551 Wayland: Add support for the xdg-toplevel-tag protocol
Now you can use --name or its alias --os-window-tag to set the tag.
2025-05-15 09:35:42 +05:30
Kovid Goyal
88f4c829eb Improve handling of output names
Now can use panel --output-name list to list available outputs.
Also, --output-name works on macOS
2025-05-13 15:29:37 +05:30
Kovid Goyal
c1b6b4494a Implement starting kitty hidden
Fixes #3466
2025-04-23 08:50:02 +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
49092f5a94 Add new wayland top level state enum values 2025-04-09 19:23:27 +05:30
Kovid Goyal
3b8e0e209b Wayland: Allow overriding the kitty OS Window icon on compositors that implement the xdg-toplevel-icon protocol 2025-03-10 12:32:03 +05:30
Kovid Goyal
0c47f81187 Remove special casing for Hyprland
Hyprland has now been fixed to send only a single fractional scale
event, so no need for special casing it.
2025-01-22 18:53:46 +05:30
Kovid Goyal
0527db876b Wayland niri: Fix 250ms delay on startup when using scale 1
We special case Hyprland, hopefully the special casing can be removed
once https://github.com/hyprwm/Hyprland/issues/9126 is fixed.

Fixes #8236
2025-01-21 16:40:32 +05:30
Kovid Goyal
7346aca56d Function to probe for Wayland compositor name
Maybe needed to workaround #8236
2025-01-21 15:10:07 +05:30
Kovid Goyal
1ff74b86dc Wayland GNOME: Workaround bug in mutter causing double tap on titlebar to not always work
Fixes #8054
2024-11-18 08:46:17 +05:30
Kovid Goyal
627360e5ad Bind the idle inhibit protocol even though it is currently unused 2024-08-27 11:32:06 +05:30
Kovid Goyal
d7902f6b24 Wayland GNOME: Fix a small rendering artifact when docking a window at a screen edge or maximizing it
For some reason destroying the shadow surfaces causes mutter to render one of them at its old relative position. So workaround by not destroying the surfaces, modern mutter anyway seems to hide them when the window is docked.

Fixes #7701
2024-08-07 13:34: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
88aa4d1de3 Revert 72272ab4fe
Apparently NVIDIA drivers dont handle this well. Sigh.

Go back to calling wl_egl_window_resize() before resizing the
framebuffer instead of before swapping in the resized framebuffer.
Logically, these should be equivalent, but...

Wayland is such an ongoing disaster.

Fixes #7493 (I hope).
2024-06-02 19:24:00 +05:30
Kovid Goyal
8c7994c0ac Dont call wl_egl_window_resize on every swap 2024-04-24 10:04:06 +05:30
Kovid Goyal
72272ab4fe Remove need for context switching
Call wl_egl_window_resize just buffer swapping buffers at which point
the context is already correct.

Also might workaround bugs in the NVIDIA driver: https://github.com/NVIDIA/egl-wayland/issues/52
2024-04-24 09:27:02 +05:30
Kovid Goyal
8d1b0e54af Use double for wayland float calculation 2024-04-19 22:23:01 +05:30
Kovid Goyal
ac4eef7eb3 Another try at pointer frame support on Wayland
This time I think I got the wheel handling correct. At least works with
my wheel mouse.
2024-04-08 19:07:52 +05:30
Kovid Goyal
8fc96c5bd7 Make the debug logging functions consistent
They now all output the same format of:
[time since program start] msg
2024-04-08 12:53:55 +05:30
Kovid Goyal
d392aba64d Wayland CSD: Dont render window shadows for docked windows 2024-04-08 10:59:03 +05:30
Kovid Goyal
d630b3d8a7 Change the maximize icon to restore when window is maximized 2024-04-08 09:36:38 +05:30
Kovid Goyal
bf60321466 Use individual surfaces for corner and bar shadows
Simplifies a bunch of code and also gives us the option at a later date
to turn off some shadows selectively when the window is in a tiled
state.
2024-04-07 22:28:41 +05:30
Kovid Goyal
5b1fdc34eb Wire up the buttons 2024-04-06 14:58:31 +05:30
Kovid Goyal
60cb0fa650 Move CSD pointer handling code into CSD file 2024-04-06 12:49:07 +05:30
Kovid Goyal
235b8dc2e4 Assume all capabilities on compositors that dont support reporting of capabilities 2024-04-06 10:59:28 +05:30
Kovid Goyal
4f6faddbab Implement rendering of window control buttons in CSD
They still need to be wired up
2024-04-06 08:32:07 +05:30
Kovid Goyal
f51c2f08a5 DRYer 2024-04-04 19:11:21 +05:30
Kovid Goyal
b3197e4498 Wayland: Add fractional scale support to CSD 2024-04-04 11:25:17 +05:30
Kovid Goyal
b4bba99678 Use single pixel buffer protocol for more efficient temp buffer creation 2024-04-04 09:00:33 +05:30
Kovid Goyal
5a62bbdd33 Revert "Wayland: Add support for pointer frame events. Code taken with thanks from SDL"
This reverts commit 506be129e1.
Seems to have broken wheel scrolling and I lake the time/interest to
debug why. Since this commit didnt actually solve any real issue revert
it for now. Revisit in the future when I have more bandwidth.

Fix #7287
2024-03-31 20:33:58 +05:30
Kovid Goyal
506be129e1 Wayland: Add support for pointer frame events. Code taken with thanks from SDL 2024-03-28 15:32:59 +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
2edd332759 Flag to indicate that we expect scale from compositor 2024-03-26 10:41:40 +05:30
Kovid Goyal
fe5ccc144b Finish glfw side support for layer shell 2024-03-24 20:48:20 +05:30
Kovid Goyal
707e69a794 Start work on wayland layer shell support 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
83468535dd Implement support for preferred buffer scale 2024-03-21 20:53:36 +05:30
Kovid Goyal
55115058d2 Scale pointer axis events by effective scale 2024-03-21 20:53:36 +05:30
Kovid Goyal
776bfa3d7e Basic fractional scale protocol works 2024-03-21 20:53:36 +05:30