~eliasnaur/gio

Gio News, December 2020

Details
Message ID
<CAFcc3FT9ckTfnMF4hjKim7o_q2u8-f_ZatmKyWO7+BUgpaTf4A@mail.gmail.com>
DKIM signature
pass
Download raw message
Hello everyone!

It's been another exciting month of gio development, and we have a lot
to celebrate.

========
core gio
========

Elias has built support for rendering Gio's operations using the new
compute shader backend, and has squashed some graphics corruption bugs
in the result. We're only days -- perhaps hours -- away from the
results arriving in the main branch. Now the only remaining work is
SRGB support and intelligently selecting when to use the new backend.
Keep your eyes on the repo. Elias thinks this will be in main *this
year* (2020).

To better facilitate contributors accustomed to the GitHub contribution
model, Elias and I created a GitHub mirror of gio core available at
github.com/gioui/gio. You can make pull requests against that repo in
lieu of sending patches to the mailing list. Our CI pipeline will still
run against your code, and you can receive code reviews there.

Other notable changes include:

- The examples directory has moved to a new repository. More on that
below.
- A PR from Larry Clapp to add text selection support to the editor
widget:
    - https://github.com/gioui/gio/pull/3
    - Check out this demo video of all of the features it adds to the
editor:
    - https://youtu.be/M2lY94WdcIs
- The public API for gio now uses color.NRGBA instead of color.RGBA.
This more closely resembles the color API that CSS uses, where the RBG
components are not expected to be premultiplied to be less than the
alpha. Thanks Egon Elbre for doing the legwork to switch us over!
- Egon also made many small improvements to widgets and layout code
across core.
- Lucas Rodrigues submitted many bugfixes, documentation improvements,
and optimizations. These are too numerous to list, but a few highlights:
    - separated the operation to gain keyboard focus from the operation
that triggers a soft keyboard.
    - created operations and events for working with the system
clipboard so that widgets can now handle clipboard interaction without
needing to talk to the global event loop. This included adding
copy/paste support to the editor widget.
    - a gogio target called "windows" that will package application
icons into windows executables.
    - ongoing work to optimize the WASM performance of gio applications.
- Pierre Curto added several features (in addition to many bugfixes):
    - windows/linux support for horizontal scrolling
    - the ability to request named system cursors instead of always
using the default pointer
- I contributed a change that manages the material widget colors in
Palettes. The theme type now has a palette that it pulls colors from,
and that you can swap during layout to change from the "primary" colors
to the "secondary" colors. I think there's more work coming to make
this feel more ergonomic.
- Sebastien Binet added outline and stroke builder types to make it
easier to draw paths, as well as support for dashed stroked paths.
- As always, Elias also fixed some bugs and refactored backend code in
preparation for the compute backend.

===========
gio-example
===========

We moved the gioui.org/example module into its own repository. It is
available here:

https://git.sr.ht/~eliasnaur/gio-example

It has its own GitHub mirror available at github.com/gioui/gio-example.

I'm also happy to announce that I am co-maintaining this repository
with Elias, so you may get patch reviews and merges from me when making
updates here. You can continue to use the normal mailing list for these
patches, though please prefix them with [PATCH gio-example] instead of
[PATCH gio].

We also added *many* examples in the last month:

- Egon Elbre has been working though the 7gui examples described here:
    - https://eugenkiss.github.io/7guis/tasks/
    - You can find his implementations in the 7gui folder.
- Egon also added the classic Conway's Game of Life, which you can find
in the life folder.
- I have moved the examples from across gio-extras into this repo to
make them more discoverable. They are all available in the gio-extras
folder.

==========
gio-extras
==========

The packages in gio-extras had some updates as well:

- events now makes it easier to combine multiple event queues
- materials now accepts a new material.Theme each frame like the
widgets in the material core package. This makes it easier to swap
themes/palettes to achieve effects like dark mode in your application.
- outlay gained support for grid and table layouts thanks to Pierre
Curto.

======
random
======

During the holidays, I took some time to play with some physics
simulation, and I built a gio-based visualization for a simulation of
1000 stars interacting. The simulation logic itself is from the gonum
package (I didn't write it; I'm not that cool). I'm a little biased,
but I think it's fun to play with. You can grab the source here:

https://git.sr.ht/~whereswaldon/galaxy-gio

I've also been working on a module for dumping gio frame profiling data
into a CSV file. If you're curious, you can check that out here:

https://git.sr.ht/~whereswaldon/gioprofiler

===========
sponsorship
===========

Elias and I would like to thank Decred for their continued support of
Gio! Additionally, I would like to thank Elias for opting to share some
of that sponsorship with me.

If Gio provides value to you, please consider sponsoring one or more of
its developers/maintainers!

Elias Naur:
https://github.com/sponsors/eliasnaur

Chris Waldon:
https://github.com/sponsors/whereswaldon
https://liberapay.com/whereswaldon

======================
call for presentations
======================

If you'd like to present any of your gio-related work during the
January Gio community call, please reach out to me.

=======
the end
=======

Thanks for reading! Contact me if you'd like your work included
in future newsletters.

Cheers,
Chris Waldon
Reply to thread Export thread (mbox)