EdgeSnap 0.43 beta: better window and divider drags

On this page

EdgeSnap 0.43 beta has been available since 20 October 2026, with an immediately useful everyday change: a snapped window returns to its previous size when dragged away and released outside the edge zones. Meanwhile, edgesnap.library reaches API version 2.24, giving window managers and other clients more precise control over layout-group dividers.

EdgeSnap remains a C89 project for AmigaOS 4, MorphOS and AROS, without system-function patches. The commodity gathers input and uses public Intuition calls; the library owns geometry, state and policy. Version 0.42 extended installation to the Raspberry Pi; 0.43 works on the reverse of snapping and the boundaries between windows.

Dragging away restores the previous size

Moving a tiled window away from its edge previously left its size to deal with too. Now, dragging its title bar and releasing outside the snapping zones restores its pre-snap size. The window comes back under the pointer, retaining the pointer’s position along the title bar; it is not simply returned to its old screen location.

This applies to halves, quarters and full-screen snapping. Two exceptions matter: a window manually resized after snapping keeps the user’s chosen size, and releasing with the bypass key held retains the snapped size. The program should not erase a deliberate adjustment or prevent a free drag.

The preferences option Old size when dragged away disables this new behaviour, which is enabled by default. Its configuration-file setting is DRAGRESTORE, and the API exposes ES_OPT_DragRestore. Preferences and parser share one option definition, avoiding values offered by the GUI but unknown to the engine.

The divider preserves the gap between windows

A tiled layout may intentionally leave a gap between cells. Version 0.43 preserves that gap while its divider is dragged, rather than closing it or losing the boundary. The whole gap also lights up and can be grabbed, not merely a thin strip in its centre: an easier target without accidentally changing the layout.

A click without a drag no longer moves anything. Dividers are handled only on the front screen. These details separate an intentional gesture from an incidental effect when using multiple screens or picking up the mouse without intending to resize.

Library 2.24: a divider is more than a coordinate

The less visible changes serve developers building a tiling window manager on EdgeSnap. Three calls extend the public interface:

  • ESnap_QueryDividers lists seams between a group’s windows, giving each a token.
  • ESnap_MoveDividerT moves the seam named by that token, respecting window size limits.
  • ESnap_QueryDividerWindows returns the serials of the windows belonging to the divider.

A token identifies the windows on both sides, not merely a line on the screen. It remains valid across moves of that same seam; if its membership changes, for example because a window closes or leaves the group, it is retired and never becomes valid for another divider. An old reference therefore cannot accidentally move different windows that later occupy the same coordinate.

The contract also distinguishes a stale reference from a manually moved window: ES_ERR_STALE and ES_ERR_CHANGED mean different things. A movement call does not override a group locked for its caller. Token queries and movement have separate contracts documented in the public header.

Older calls introduced in APIs 2.2 and 2.3 now include group windows and do not offer seams of a group locked for the caller. MoveDividerAt follows the seam most recently queried by the same task, rather than a different boundary that has since appeared there. This remains an expansion of a reusable service: the commodity is one client of the library, not its only possible user.

Four archives for five targets

The release has one combined AmigaOS 4/MorphOS package and three separate AROS packages: x86_64 ABIv11, aarch64 for Raspberry Pi and i386 ABI v0. They are not interchangeable. The i386 port is not new today: it joined 0.42 separately on 15 October. From 0.43, all archives are published together.

Preferences remain native: ReAction on AmigaOS 4, MUI on MorphOS and Zune on AROS. The library remains third-party software: aiming to make it suitable for operating-system adoption is not a claim of official adoption. This release does not announce a classic AmigaOS 3 build.

What was checked

The release notes report testing on real MorphOS hardware, a Raspberry Pi 400 running AROS aarch64, and emulated AmigaOS 4.1, MorphOS, AROS One 1.3 x86_64 and AROS One x86. On the Pi and emulated systems, this included installing the package over a previous version.

For this article, the eight C89 core host-test suites were run on the Mac and all passed: zones, engine, registry, panels, configuration, gutters, off-screen handling and divider tokens. These exercise portable logic, not fresh GUI tests on Amiga systems. All four LHA archives were also checked against GitHub SHA-256 digests, the MD5 values in the release notes and 7-Zip integrity tests.

Previously documented graphics problems on some AROS drivers remain separate: passing core tests does not establish that every driver has resolved preview traces. The README still awaits confirmation for Nouveau and retains the real-hardware report of black drawer areas.

Official downloads

The official 0.43 release page identifies the four packages. At the 20 October check, the Aminet pages consulted still list 0.42: use these GitHub archives for 0.43, rather than an older package labelled as current. Aminet status for ARM64, i386 and x86_64 remains visible on the individual package pages.

Sources

AUTHOR

IT specialist, developer and systems engineer with a long history across code, Linux servers, retrocomputers and e-learning platforms. On AndroidLab he brings a technical, pragmatic eye: less brochure smoke, more attention to infrastructure, usability, privacy, updates and the real consequences of manufacturers' choices.

Leave a Comment