MCPcopy Index your code
hub / github.com/EVV1E/waylandcraft

github.com/EVV1E/waylandcraft @v2.0.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.0.3 ↗ · + Follow
974 symbols 2,214 edges 85 files 19 documented · 2%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

waylandcraft banner

Wayland Compositor in Minecraft

Demo video

Now available on Modrinth!

System dependencies

  • OS: Linux
  • Minecraft 26.1.2
  • Fabric mod loader
  • xkbcommon library 1.11.0
  • xkbcommon tools (xkbcli)
  • xwayland-satellite (for Xwayland support)

Additionally recommended: - Prism Launcher - Sodium

Important notes for installing / using!!!

  1. Do not use a Minecraft launcher packaged as a flatpak! You won't be able to use your apps.
  2. For nvidia: Set the __GL_THREADED_OPTIMIZATIONS environment variable to 0 in your launcher.
  3. The Zink OpenGL driver has been known to cause issues. Use native OpenGL instead.

Frequently Asked Questions

How do I use this thing?

Download the mod from the releases section, install Minecraft Fabric for 26.1.2 and drag the jar file in your mods folder. Look at your keybind settings. By default V opens the app launcher, G enables keyboard capture allowing you to type in the windows, B opens the window manager screen.

How can I press Escape in the windows?

Instead of using G to capture the keyboard, use ALT+Q instead. The only way to turn it off is to press ALT-Q again, so the ESC key is forwarded to the application.

How do I run X11 apps?

Since v2.0.0 waylandcraft has integrated support for xwayland-satellite. If you have the binary installed on your system, it should automatically be started.

How to do the relative mouse movement thing for 3D games?

Move your mouse over the window, then activate the hard keyboard capture mode. (ALT-Q) Exiting the hard keyboard capture mode releases the mouse.

Will there be multiplayer support?

Multiplayer support would require video streaming, a bunch of networking code and a rewrite of input handling, so it's not really planned right now.

But can I use it on a server though?

You can, but because it's a client-side mod, other players won't see your windows or be able to interact with them. Servers can opt to install the mod, which will allow players to use the window items for themselves. If the server doesn't support it, you can spawn a window in the world by going into the wm screen (default bind B) and then pressing and holding the "Grab" button.

Does this work in VR?

Depending on your VR mod, you can probably get the windows to display fine but you probably won't be able to interact with the windows using your controller. Soooo, kinda.

Does this work with shaders?

Since v2.0.2 Iris shaders are supported.

There are a couple of downsides though: The windows might have large borders and text in windows will be harder to read from a distance (because window anti-aliasing doesn't work)

This is because for the shader support windows are rendered with the same pipeline as entities because otherwise the shaders would ignore them.

For some shaders you might need to disable features like Temporal Anti Aliasing (TAA).

Building and Running

You need a Rust development environment and a Java 25 SDK.

./build.sh #all arguments are passed to cargo build

The final jar file will be in build/libs, or run ./gradlew runClient for a development environment

Images

screenshot

Disclaimer

This compositor still has lots of issues and bugs. Use it at your own risk or whatever.

Contribution Policy

All contributions have to be made an accordance with the GPLv3 license (see LICENSE). Waylandcraft has some important policy around LLMs and generative AI, mostly because of code and contribution quality as well as some ethical and copyright concerns. Mergeable contributions made to the repository in the form of pull requests need to be made without major usage of LLMs.

If you feel as though you have something worthwhile to contribute which was made using LLMs please disclose it and file it as a draft pull request instead. It will probably have to be more closely examined or even entirely rewritten by a human programmer, which can then be (re-)submitted as a normal pull request.

Extension points exported contracts — how you extend this code

WindowItemInteractionProvider (Interface)
(no doc) [2 implementers]
src/main/java/dev/evvie/waylandcraft/item/WindowItemInteractionProvider.java
IMyServerPlayer (Interface)
(no doc) [2 implementers]
src/main/java/dev/evvie/waylandcraft/utils/IMyServerPlayer.java
IMyItemFrameRenderState (Interface)
(no doc) [2 implementers]
src/main/java/dev/evvie/waylandcraft/render/IMyItemFrameRenderState.java
FramebufferRenderable (Interface)
(no doc) [2 implementers]
src/main/java/dev/evvie/waylandcraft/displays/FramebufferRenderable.java
ISettingResponder (Interface)
(no doc)
src/main/java/dev/evvie/waylandcraft/settings/ISettingResponder.java

Core symbols most depended-on inside this repo

add
called by 81
src/main/java/dev/evvie/waylandcraft/grabs/PointerGrabMap.java
width
called by 30
src/main/java/dev/evvie/waylandcraft/bridge/WLCSurface.java
contains
called by 30
src/main/java/dev/evvie/waylandcraft/grabs/PointerGrabMap.java
getHandle
called by 25
src/main/java/dev/evvie/waylandcraft/bridge/WLCSurface.java
get
called by 24
src/main/java/dev/evvie/waylandcraft/render/model/WindowStateProperty.java
size
called by 24
native/src/output.rs
height
called by 21
src/main/java/dev/evvie/waylandcraft/bridge/WLCSurface.java
getY
called by 19
src/main/java/dev/evvie/waylandcraft/gui/SettingsWidget.java

Shape

Method 724
Class 126
Function 106
Enum 9
Interface 9

Languages

Java77%
Rust23%

Modules by API surface

src/main/java/dev/evvie/waylandcraft/bridge/WaylandCraftBridge.java127 symbols
native/src/bridge.rs84 symbols
src/main/java/dev/evvie/waylandcraft/gui/SettingsWidget.java61 symbols
native/src/seat.rs42 symbols
src/main/java/dev/evvie/waylandcraft/gui/WindowManagerScreen.java35 symbols
src/main/java/dev/evvie/waylandcraft/WaylandCraft.java32 symbols
native/src/lib.rs29 symbols
src/main/java/dev/evvie/waylandcraft/render/WindowFramebuffer.java27 symbols
src/main/java/dev/evvie/waylandcraft/grabs/PointerGrabMap.java25 symbols
src/main/java/dev/evvie/waylandcraft/bridge/WLCSurface.java25 symbols
native/src/ddm.rs24 symbols
src/main/java/dev/evvie/waylandcraft/render/BufferTexture.java22 symbols

For agents

$ claude mcp add waylandcraft \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page