This fork is maintained for building and testing Wayland support enhancements for GLFW. The CI/CD pipeline has been customized to build GLFW targeting Linux x64 with Wayland support enabled using GitHub Actions, without external cloud services or AWS dependencies.
GLFW is an Open Source, multi-platform library for OpenGL, OpenGL ES and Vulkan application development. It provides a simple, platform-independent API for creating windows, contexts and surfaces, reading input, handling events, etc.
GLFW is written primarily in C99, with parts of macOS support being written in Objective-C.
On Linux, GLFW supports both Wayland and X11 backends. This fork emphasizes Wayland support for modern display server environments.
GLFW is licensed under the zlib/libpng license.
For the official GLFW project, visit glfw.org.
- Added
GLFW_UNLIMITED_MOUSE_BUTTONSinput mode that allows mouse buttons beyond the limit of the mouse button tokens to be reported (#2423) - Added
glfwGetEGLConfigfunction to query theEGLConfigof a window (#2045) - Added
glfwGetGLXFBConfigfunction to query theGLXFBConfigof a window (#1925) - Updated minimum CMake version to 3.16 (#2541)
- Removed support for building with original MinGW (#2540)
- [Win32] Removed support for Windows XP and Vista (#2505)
- [Cocoa] Added
QuartzCoreframework as link-time dependency - [Cocoa] Removed support for OS X 10.10 Yosemite and earlier (#2506)
- [Wayland] Added window icon support via
glfwSetWindowIcon(#2686) - [Wayland] Bugfix: The fractional scaling related objects were not destroyed
- [Wayland] Bugfix:
glfwInitwould segfault on compositor with no seat (#2517) - [Wayland] Bugfix: A drag entering a non-GLFW surface could cause a segfault
- [Wayland] Bugfix: Ignore key repeat events when no window has keyboard focus (#2727)
- [Wayland] Bugfix: Reset key repeat timer when window destroyed (#2741), (#2727)
- [Wayland] Bugfix: Memory would leak if reading a data offer failed midway
- [Wayland] Bugfix: Retrieved cursor position would be incorrect when hovering over fallback decorations
- [Wayland] Bugfix: Fallback decorations would report scroll events
- [Wayland] Bugfix: Keyboard repeat events halted when any key is released (#2568)
- [Wayland] Bugfix: Fallback decorations would show menu at wrong position
- [Wayland] Bugfix: The cursor was not updated when clicking through from a modal to a fallback decoration
- [Wayland] Bugfix: The cursor position was not updated when clicking through from a modal to the content area
- [Wayland] Bugfix: free modules at end of terminate function to resolve potential segmentation fault (#2744)
- [Wayland] Bugfix: Confining or disabling the cursor could segfault on
compositors without
pointer-constraints-unstable-v1 - [X11] Bugfix: Running without a WM could trigger an assert (#2593), (#2601), (#2631)
- [X11] Bugfix: Occasional crash when an idle display awakes (#2766)
- [X11] Bugfix: Prevent BadWindow when creating small windows with a content scale less than 1 (#2754)
- [X11] Bugfix: Clamp width and height to >= 1 to prevent BadValue error and app exit
- [X11] Bugfix: Floating windows silently became non-floating when hidden (#2276)
- [Linux] Bugfix: The header for
ioctlwas only implicitly included (#2778) - [Null] Added Vulkan 'window' surface creation via
VK_EXT_headless_surface - [Null] Added EGL context creation on Mesa via
EGL_MESA_platform_surfaceless - [EGL] Allowed native access on Wayland with
GLFW_CONTEXT_CREATION_APIset toGLFW_NATIVE_CONTEXT_API(#2518)
This repository is configured to automatically build GLFW for Linux x64 with full Wayland support whenever code is pushed to the master branch. The build artifacts are available as GitHub Actions artifacts.
Build outputs:
libglfw.so- The compiled GLFW shared library- Available in the GitHub Actions "Artifacts" section for 30 days
To build GLFW locally with Wayland support on Arch Linux, install the required dependencies:
sudo pacman -S cmake gcc libxrandr libxinerama libxcursor libxi libxext libxkbcommon wayland wayland-protocolsThen configure and build:
cmake -B build -DGLFW_BUILD_WAYLAND=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallelThe GitHub Actions CI verifies that the following dependencies are available:
- cmake - Build system
- gcc, g++ - C/C++ compiler
- libxrandr-dev - X11 RandR library
- libxinerama-dev - X11 Xinerama library
- libxcursor-dev - X11 Cursor library
- libxi-dev - X11 Input library
- libxext-dev - X11 Extensions library
- libxkbcommon-dev - XKB keyboard handling
- libwayland-dev - Wayland client libraries
- wayland-protocols - Wayland protocol definitions
These correspond to the standard GLFW Wayland/X11 build requirements documented in the official compilation guide.
- Parent fork: LWJGL-CI/glfw - LWJGL project's curated GLFW build
- Original upstream: glfw/glfw - Official GLFW repository
For general GLFW usage, documentation, and API reference, visit the official GLFW documentation.
This is a specialized fork. For general GLFW development and feature requests, please contribute to the official GLFW repository.
For issues specific to this Wayland-focused build or CI/CD configuration, feel free to open an issue in this repository.
The master branch is the stable integration branch and should always compile
and run on all supported platforms. Details of a newly added feature,
including the public API, may change until it has been included in a release.
The latest branch is equivalent to the highest numbered
release, although it may not always point to the same commit as the tag for that
release.
The ci branch is used to trigger continuous integration jobs for code under
testing and should never be relied on for any purpose.
Bugs are reported to our issue tracker. Please check the contribution guide for information on what to include when reporting a bug.
On glfw.org you can find the latest version of GLFW, as well as news, documentation and other information about the project.
If you have questions related to the use of GLFW, we have a forum.
If you have a bug to report, a patch to submit or a feature you'd like to request, please file it in the issue tracker on GitHub.
Finally, if you're interested in helping out with the development of GLFW or porting it to your favorite platform, join us on the forum or GitHub.