# Canvas patch: we need testers

> Source: <https://monadicsheep.org/blog/call-for-canvas-patch-testers.html>
> Published: 2026-06-29 07:24:49+00:00

# Canvas patch: we need testers!

The [Canvas patch](hello.html) is almost done. Except that we need more testing,
specifically for its MS Windows port. (Though testers on other
operating systems like GNU/Linux and MacOS are also welcome.)

Since we don't have any computers running MS Windows, we are not sure if the code is actually correct.

Please follow the following instructions for testing it on MS Windows.
You can discuss the results or ask us questions at [MonadicSheep Emacs
Fork's Issue tracker](https://codeberg.org/MonadicSheep/emacs/issues), #phi-mu-lambda on Libera IRC ([open webchat in
browser](https://web.libera.chat/?nick=CanvasTester?#phi-mu-lambda)), or on the fediverse (tag the post with #emacs).

## 1. Building GNU Emacs on MS Windows

- Install
[MSYS2](https://www.msys2.org/)by following the official instructions mentioned there. - Open a MSYS2 UCRT64 session terminal.
In the bash prompt, run the following command to get the canvas patch source code.

```
git clone https://codeberg.org/MonadicSheep/emacs
```

Now, change directory to emacs source checkout, by running the following command.

```
cd emacs/
```

Now, run the following command to build Emacs.

```
make
```

This may take a while depending on your hardware.

Once that is done, you should be able to start emacs with the following command.

```
./src/emacs
```

## 2. Testing

Evaluate the following in `*scratch*`

(Using `C-c C-c`

keybinding).

```
(defun make-rect (width height pixel)
  (make-vector (* width height) pixel))

(setq rect-canvas-vec (make-rect 250 250 #xFFFF0000))
(setq rect-canvas `(image :type canvas
                          :data-width 250
                          :data-height 250
                          :data ,rect-canvas-vec))
(insert (propertize "#" 'display rect-canvas))

(defvar rect-canvas-timer nil)
(let ((i 0))
  (setq rect-canvas-timer
        (run-with-timer
         0 0.016
         (lambda ()
           (if (< i (* 20 250))
               (progn
                 (aset rect-canvas-vec (+ (* 115 250) i) #xFF0000FF)
                 (canvas-refresh rect-canvas t)
                 (setq i (1+ i)))
             (cancel-timer rect-canvas-timer))))))
```

You should be able to see something like this.
