Gio News, July 2020

Message ID
DKIM signature
Download raw message
Community call recording

The recording for the June community call is published on
YouTube: https://youtu.be/iD1ckwkqMuI. It includes a presentation
by Anthony Stark covering his giocanvas work with lots of examples,
and Gregory Pomerantz presents his work to make integration with
Android native APIs easier. Gregory's demo shows off the use of
hardware sensors to control a bouncing disc.

See Anthony's giocanvas repository here:


It includes a rich set of examples.

Gregory's extensive Android work and examples are hosted here:


You may be interested in his package for using JNI from Go:


Affine transformations

Gio has been in development for years, yet until recently only
supported offset transformations. Offsets are enough for layouts,
but quite inadequate for more interesting animations and effects.

Thanks to the considerate effort of Viktor Ogeman, the Gio GPU
renderer finally has support for affine transforms which means
that you can rotate, shear, and scale other operations while keeping
pointer input working as expected.

If you're cusious, one of the kitchen example checkboxes shows off
this feature by rotating and scaling the entire UI, while keeping
pointer working as expected.

Multiple windows

Gio issue #19, multiple top-level windows, was filed by Larry Clapp 10
months ago. That's finally been closed, and app.NewWindow can now be
called more than once on Linux, macOS, Windows.

The "windows" example demonstrates multiple windows along with another
new window feature, app.Window.Close, for programmatic access to
closing windows.

Note that app.Main no longer returns after closing (the last) window,
to support programs that mix a command-line and graphical interface.
You must explicitly call os.Exit to exit your program.

As a bonus, the app.MaxSize and app.MinSize options for app.NewWindow
can be used to contrain user resizes.

Slider widget

There's a new widget, Slider, for presenting a continuous setting to
the user. See the kitchen example for use and visual style.

Editor mask

Another long-standing request was the ability to use the Editor for
entering sensitive content such as passwords. The new Editor.Mask field,
when set, is used instead of the actual runes when displaying the Editor

Roboto font

The work on the Tailscale Android app required the Google Roboto font
instead of the Gio's default Go font. Similarly to the Go font, the
eliasnaur.com/font package contains the Roboto variants as Go


See the Tailscale source code for an example of how to use the fonts:


Gio tutorial in Spanish

Erik Czumadewski kindly published a Gio tutorial in Spanish. Watch it


Arbor chat system

Chris Waldon has been busy working on Arbor, a chat collaboration
system with a Gio user interface:


Chris did a presentation about Arbor here


You also find his niotify package for cross-platform notifications


or his Gio colorpicker:


New sponsors

Erik Czumadewski and @matildatech are now sponsoring my work on Gio.
Thanks to both of you!

If you also find my work worthwhile, please consider sponsoring me
on GitHub:

Reply to thread Export thread (mbox)