hypoland.org

Hypoland

Hypoland: Hyprland for GPUs that stop at OpenGL ES 2.0.

Hypoland is a fork of the Hyprland tiling Wayland compositor with a renderer rewritten for GLES 2.0. It runs a complete desktop on a 2008 ThinkPad X200 at 60 fps, and your Hyprland config, hyprctl and scripts keep working.

tty1: Hyprland and Hypoland on a ThinkPad X200

Omarchy 7.2.5-4-omarchy (tty1)

$ Hyprland
eglCreateContext failed with both GLES 3.2 and GLES 3.0
Hyprland received signal 6(ABRT)
Have you tried asking Hyprland politely
not to crash?

$ hypoland
Using: OpenGL ES 2.0 Mesa 26.2.3
# bar, wallpaper, notifications, windows,
# Xwayland. At 60 fps.

why: Hyprland needs OpenGL ES 3.0

Hyprland needs OpenGL ES 3.0. Plenty of laptops that still work fine top out at GLES 2.0, and on them Hyprland does not start at all.

Hypoland keeps the compositor and replaces what the GPU can't do: the renderer and all shaders are GLES 2.0 / GLSL ES 1.00, and the GPU-heavy extras are either gone or off by default. aquamarine, Hyprland's rendering backend library, is modified the same way so that it runs on GLES 2.0, and ships built into Hypoland.

The name: hypo- means "under". The O in the logo is a potato, hanging below the line.

btop: performance on a ThinkPad X200, Core 2 Duo, GMA 4500MHD, 1280x800

0.1%compositor CPU on an idle desktop
60 fpsGPU client, compositor at 3–9% CPU
58–60fps with 4 windows, blur, shadows, rounding and animations on
46 MiBcompositor PSS on an idle Omarchy desktop
127glmark2-es2-wayland score
Compositor on the X200HypolandHyprland 0.56.2
CPU, GPU client at 60 fps2.9%4.0%−27%
CPU, terminal scrolling fast10.1%16.5%−39%
CPU, Chromium in a full window10.6%27.6%−61%
CPU, workspace switching with animations3.8%9.7%−61%
Memory (PSS), 60 s after the start46 MiB115 MiB−60%
Frames on the screen, a GTK 3 window scrolling56 fps30 fps+85%
Frames on the screen, dragging a window split60 fps30 fps+99%

Measured on the test machine running the full Omarchy session (Quickshell bar, wallpaper, notifications). Stock Hyprland 0.56.2 aborts at startup on the same machine; for the comparison above it ran with Omarchy's GLES 3 override (omarchy#14764), medians of 37 to 41 fresh sessions of each, alternating through the night of 2026-10-27, the frames counted as the compositor's own page flips. On the seven other machines of the lab, from a Bay Trail Chromebook to a Snapdragon X Elite laptop, the compositor costs less in nearly every workload (workspace switching about half, shm windows a half to a third) and 43–45 MiB against 112–117 (raw data and scripts). Hypoland's own optimizations for this hardware include drawing straight into the scanout buffer, clearing only damaged areas, showing terminals and Qt windows from their own buffers without a copy, and drawing panels only where they have pixels; the last two came after these measurements.

lspci: supported GPUs and laptops

  • Intel GMA 4500MHD / GM45 (Gen4.5), the tested target: ThinkPad X200, X200s, X301, T400 and T500
  • Intel GMA X3100 / 965GM (Gen4): ThinkPad X61, X300 and T61 with Intel graphics
  • Desktops with Intel G41, G43, G45 or Q45 chipset graphics (GMA 4500 / X4500), the same generation
  • Other GPUs that stop at OpenGL ES 2.0 under Mesa should work, but are untested

Developed on a ThinkPad X200 with Mesa's crocus driver. Also tested on GPUs with GLES 3, which run the same GLES 2 renderer: Intel Bay Trail, HD Graphics 5000, HD 5500, HD 520 and UHD 620 (crocus and iris, from a Dell Chromebook 11 to a ThinkPad T490), AMD Radeon HD 6470M and HD 8570D (r600) and Qualcomm Adreno X1-85 (freedreno, aarch64).

removed: GPU-heavy features

  • Color management and HDR
  • Motion blur
  • Blur variants other than dual Kawase
  • Plugins and hyprpm
  • Logo background and default wallpapers
  • Hyprland's welcome app, update news and donation popup

Their config options stay registered and are ignored, so your config loads without errors.

changed

  • Blur, shadows, animations and the splash text are off, turn them on if you like
  • XCursor themes instead of hyprcursor
  • quirks:skip_non_kms_dmabuf_formats is off, so transparent clients work on Gen4
  • Windows at 98% opacity or more and the wallpaper are drawn opaque, which saves fill rate
  • Xwayland starts when the first X11 program connects

compat: a drop-in replacement for Hyprland

WhatIn Hypoland
Config~/.config/hypr/hyprland.lua, same optionssame
IPChyprctl, sockets, command names, JSON output, eventssame
Desktop nameXDG_CURRENT_DESKTOP=Hyprland, so the portal and apps detect itsame
ProtocolsThe Hyprland Wayland protocols (Quickshell, portals, global shortcuts)same
Binaryhypoland and start-hypoland, there is no Hyprland commandrenamed
Screen shadersMust be GLSL ES 1.00, Hyprland's GLSL ES 3.00 shaders do not compilediffers
PluginsNot supported, hl.plugin.load() warns and does nothing. Omarchy's titlebars are built in after 0.2.0removed

foot: build from source

# same dependencies as Hyprland, but aquamarine
# is embedded, udis86, glaze and glslang are
# not needed
$ git clone https://github.com/hegjon/hypoland
$ cd hypoland
$ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
$ cmake --build build -j$(nproc)

# or, on Arch: a package that replaces hyprland
$ cd packaging/arch && makepkg -f

README: build notes

See the Hyprland wiki for the dependency list. Hypoland builds aquamarine from its own tree, patched for GLES 2.0, and never uses the system one.

Rather not build? Every release has an Arch package for x86-64 on the releases page, and the changelog says what changed.

Build on a fast machine and copy the result over? Target baseline x86-64. Do not use -march=native, your desktop CPU knows instructions a Core 2 Duo doesn't. The Arch package also builds on aarch64; build it on the machine itself.

The Arch package provides and conflicts with hyprland, and ships its own hyprctl so the versions match.

man hypoland: frequently asked questions

Will it run on my GPU?

If Hyprland dies with eglCreateContext failed and eglinfo shows OpenGL ES 2.0 but no 3.0, Hypoland is meant for you. Of those GPUs, Gen4 Intel is tested; the others are untested, and reports are welcome. Newer GPUs work too: Hypoland is also tested on Intel GPUs from Bay Trail to Whiskey Lake, AMD Radeon (r600) and Qualcomm Adreno.

My GPU has GLES 3. Should I use it?

On a modern machine, use Hyprland: it has color management, HDR, plugins and more effects. On older hardware that runs Hyprland, or with little memory, Hypoland can still be the better fit, because it does less. On a 2015 ThinkPad T550 (Intel HD 5500) with the same Omarchy desktop it used 10–55% less CPU than stock Hyprland, 44 instead of 115 MiB of memory (PSS) and 97 instead of 171 MiB of GPU buffers, which integrated graphics take from system memory too.

Does Omarchy work?

Yes. Omarchy 4 is what the test machines run: the Quickshell bar, notifications, wallpaper, windows and Xwayland all work. Chromium runs, but on GLES 2 hardware it falls back to software rendering because it wants GLES 3 itself. Titlebars on floating workspaces are built in after 0.2.0: Omarchy draws them with a Hyprland plugin, which Hypoland implements itself. 0.2.0 does not have them yet.

Does screen recording work?

Yes, with wf-recorder installed. Omarchy records with gpu-screen-recorder, which does not start on GLES 2 hardware, and falls back to wf-recorder. It encodes on the CPU: the X200 records its 1280x800 screen at about 34 fps.

Can I keep blur?

Yes, dual Kawase blur is kept and costs about 1% CPU on the X200. It is off by default, turn it on in your config. The same goes for shadows, rounding and animations.

Do Hyprland plugins work?

No, and they will not come back. The plugin system was removed on purpose: a plugin has to be built against the exact Hyprland source it loads into, and most plugins draw with GLES 3 renderer code that Hypoland no longer has. hl.plugin.load() warns and does nothing, so configs that load plugins still start. The one exception is Omarchy's titlebar plugin: after 0.2.0 Hypoland has it built in, with the plugin's options, and loading it is accepted without a warning. Tools that inject input can use the Wayland protocols instead, zwlr_virtual_pointer_manager_v1 and zwp_virtual_keyboard_manager_v1 are supported (issue #1).

Is this an official Hyprland project?

No. Hypoland is an independent fork, not affiliated with or endorsed by Hyprland or its developers. All credit for the compositor goes to Hyprland and its contributors.

Why aren't these changes part of Hyprland?

The OpenGL ES 2.0 support was offered to Hyprland, and its maintainer declined it: he maintains the code base and does not want it there (discussion). That is his call to make, so the support lives on in this fork instead.