From 019696209e6967a194c8eb1b9d29cdfdc2ddc704 Mon Sep 17 00:00:00 2001 From: Karl Theodor Ruby Date: Fri, 28 Aug 2026 11:49:31 +0200 Subject: [PATCH 1/2] Add mojo-window package --- recipes/mojo-window/recipe.yaml | 45 +++++++++++++++++++++++++ recipes/mojo-window/test.mojo | 59 +++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 recipes/mojo-window/recipe.yaml create mode 100644 recipes/mojo-window/test.mojo diff --git a/recipes/mojo-window/recipe.yaml b/recipes/mojo-window/recipe.yaml new file mode 100644 index 00000000..61d33650 --- /dev/null +++ b/recipes/mojo-window/recipe.yaml @@ -0,0 +1,45 @@ +context: + version: "0.1.1" + +package: + name: mojo-window + version: ${{ version }} + +source: + - git: https://github.com/Maelkiz/mojo-window.git + rev: a23dd5d1c7dbfc54a474e6687cb5fc549b7eec65 + +build: + number: 0 + script: + - mojo precompile src/window -o ${{ PREFIX }}/lib/mojo/window.mojoc + +requirements: + build: + - mojo-compiler =1.0.0 + host: + - mojo-compiler =1.0.0 + - sdl3 >=3.4,<4 + run: + - ${{ pin_compatible('mojo-compiler') }} + - sdl3 >=3.4,<4 + +tests: + - script: + - if: unix + then: + - mojo run test.mojo + files: + recipe: + - test.mojo + +about: + homepage: https://github.com/Maelkiz/mojo-window + repository: https://github.com/Maelkiz/mojo-window + license: MIT + license_file: LICENSE + summary: SDL3-based windowing library for Mojo + +extra: + maintainers: + - Maelkiz diff --git a/recipes/mojo-window/test.mojo b/recipes/mojo-window/test.mojo new file mode 100644 index 00000000..1a5807a0 --- /dev/null +++ b/recipes/mojo-window/test.mojo @@ -0,0 +1,59 @@ +"""Smoke tests for the mojo-window package. Runs headless via SDL dummy driver.""" + +from std.os import setenv +from std.testing import TestSuite, assert_true, assert_false, assert_equal, assert_raises +from window import ( + Window, + GLWindow, + Event, + Quit, + Resized, + KeyDown, + KeyUp, + MouseMoved, + MouseButtonDown, + MouseButtonUp, + MouseWheel, +) + + +def test_window_open_and_close() raises -> None: + var w = Window("t", 100, 100) + assert_true(w.is_open()) + w.close() + assert_false(w.is_open()) + + +def test_window_poll_returns_no_events() raises -> None: + var w = Window("t", 64, 64) + var events = w.events() + assert_true(len(events) == 0) + + +def test_gl_window_fails_cleanly_under_dummy_driver() raises -> None: + with assert_raises(contains="SDL_CreateWindow failed"): + var w = GLWindow("t", 64, 64) + + +def test_event_variants() raises -> None: + assert_true((Event(Quit())).isa[Quit]()) + var r: Event = Resized(800, 600) + assert_equal(r[Resized].width, 800) + assert_equal(r[Resized].height, 600) + var kd: Event = KeyDown(42) + assert_equal(kd[KeyDown].keycode, 42) + var ku: Event = KeyUp(7) + assert_equal(ku[KeyUp].keycode, 7) + var mm: Event = MouseMoved(12, 34) + assert_equal(mm[MouseMoved].x, 12) + var mbd: Event = MouseButtonDown(1, 5, 6) + assert_equal(mbd[MouseButtonDown].button, 1) + var mbu: Event = MouseButtonUp(2, 9, 10) + assert_equal(mbu[MouseButtonUp].button, 2) + var mw: Event = MouseWheel(0, -1) + assert_equal(mw[MouseWheel].y, -1) + + +def main() raises: + _ = setenv("SDL_VIDEODRIVER", "dummy", True) + TestSuite.discover_tests[__functions_in_module()]().run() From 1ecdbb2f42239b01fec5753e62667c60183dfdb1 Mon Sep 17 00:00:00 2001 From: Karl Theodor Ruby Date: Wed, 2 Sep 2026 15:13:20 +0200 Subject: [PATCH 2/2] Bump mojo-window to v0.1.2, fixing macOS build v0.1.2 fixes a dlopen failure on macOS: the SDL3 bindings hardcoded libSDL3.so, which only resolves on Linux, so every SDL call raised at runtime on macOS. mojo-window now branches on CompilationTarget.is_macos() to load libSDL3.dylib there. Co-Authored-By: Claude Sonnet 5 --- recipes/mojo-window/recipe.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/mojo-window/recipe.yaml b/recipes/mojo-window/recipe.yaml index 61d33650..18948bb2 100644 --- a/recipes/mojo-window/recipe.yaml +++ b/recipes/mojo-window/recipe.yaml @@ -1,5 +1,5 @@ context: - version: "0.1.1" + version: "0.1.2" package: name: mojo-window @@ -7,7 +7,7 @@ package: source: - git: https://github.com/Maelkiz/mojo-window.git - rev: a23dd5d1c7dbfc54a474e6687cb5fc549b7eec65 + rev: 6cadecebd26ec65204c8adc21da0a17783f303e6 build: number: 0