~whereswaldon

North Carolina

https://waldon.blog

Freelance engineer working to make portable GUIs easy and pleasant.

I'm one of Gio's two maintainers, and I focus on making the text and widget APIs great.

Some other fun projects:

  • Arbor, a tree-based, decentralizable chat platform
  • gover, an easy way to install and update Go on any *nix system

If you get value out of my work, please consider sponsoring me on Liberapay or GitHub.

I am also available for hire.

~whereswaldon/arbor-ci

Last active 2 months ago

~whereswaldon/arbor-dev

Last active 7 months ago

~whereswaldon/public-inbox

Last active 7 months ago

~whereswaldon/watt-wise-devel

Last active 8 months ago

~whereswaldon/watt-wise-announce

Last active 8 months ago

~whereswaldon/arbor-announce

Last active 3 years ago

~whereswaldon/arbor-infra

Last active 3 years ago

~whereswaldon/pointstar-devel

Last active 4 years ago

~whereswaldon/pointstar-announce

Last active 4 years ago
View more

Recent activity

Re: Mouse Cursor Position Label Example 18 hours ago

From Chris Waldon to ~eliasnaur/gio-patches

Thanks Alec for the effort to submit an example! In the future, give
https://git-send-email.io/ a look for some guidance on how to set up
the email patching. It can be a pain to do the first time, but it's
easy after that.

 Could you reply stating that you agree to the DCO (see
https://gioui.org/doc/contribute#style) and that your example is
licensed under the dual Unlicense/MIT like the rest of the examples? I
can merge your patch if we have that.

Cheers,
Chris

Re: Pointers for creating an installer on Windows a day ago

From Chris Waldon to ~eliasnaur/gio

On Tue, Sep 17, 2024 at 8:42 AM Kevin Ingwersen
<Kevin.Ingwersen@senpro.it> wrote:
>
> Hello there!

Hi!

> I have been tasked with creating an installer for our monitoring solution. Unfortunately, WiX Toolset is one hell of a burden to work with, so I want to attempt to do so with Go/Gio instead and see if that is any better.
>
> However, due to my visual impairment, my sense of layout and distance is very bad – so there are a few things that I am looking for:
>
> * Is there a grid/layout system? I did see the widgets and a link to layout - but so far have not found exactly what I am after. Basically, in webdev, we have grid layouts with flexbox and friends. Is there something similar with Gio that I could use to worry less about placement of widgets?

There's not a CSS-style grid, but we have a layout primitive similar

Re: Visualize tab Characters in editor a day ago

From Chris Waldon to ~eliasnaur/gio

On Mon, Sep 16, 2024 at 12:29 AM zhang zj <zhangzj33@gmail.com> wrote:
>
> Hi,
>
> I used a modified version of Gio editor to view code, and realized
> that it does not handle control
> characters such as tab(U+0009) as most fonts out there do not provide
> tab glyph. I tried fonts with
> tab character such as Ubuntu Mono. But I am not satisfied with the
> result, because the tab width is
> the same as space in a monospace font. So I am looking for other ways
> to solve this issue.
>
> I know that the shaper queries fontMap to find a glyph for the target

Re: Cross-Compiling for MacOS 16 days ago

From Chris Waldon to ~eliasnaur/gio

Hi Jeff,

This is a great resource. We can link to this post from the website
unless you'd prefer to put up a proper webpage for people to
reference.

Cheers,
Chris

Re: App.Decorated, related issues a month ago

From Chris Waldon to ~eliasnaur/gio

On Fri, Aug 9, 2024 at 12:53 AM zi nan <kainan20021110@gmail.com> wrote:
>
> '''func main() {
>           go func() {
>                w := new(app.Window)
>                w.Option(app.Size(unit.Dp(800), unit.Dp(600)),
> app.Decorated(false))
>                if err := loop(w); err != nil {
>                   panic(err)
>                }
>                os.Exit(0)
>                }()
> app.Main()
> }

Gio News, July 2024 2 months ago

From Chris Waldon to ~eliasnaur/gio

Hey all,

The latest newsletter detailing Gio v0.7.1 is available here:

https://gioui.org/news/2024-07

Cheers,
Chris

[PATCH gio] app: [Wayland] prevent recursive scroll event processing 2 months ago

From Chris Waldon to ~eliasnaur/gio-patches

This commit zeroes the accumulated scroll distance on the window before invoking the
event delivery code, since the event delivery code is able to call back into the scroll
processing. Prior to this change, the callback could re-processing the scroll delta
while magnifying it by a factor of 10.

Fixes: https://todo.sr.ht/~eliasnaur/gio/599
Signed-off-by: Chris Waldon <christopher.waldon.dev@gmail.com>
---
 app/os_wayland.go | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/app/os_wayland.go b/app/os_wayland.go
index 393f4c7f..24d1d874 100644
--- a/app/os_wayland.go
[message trimmed]

Re: [PATCH gio] app: ensure Invalidate can be invoked when window is closing 2 months ago

From Chris Waldon to ~eliasnaur/gio-patches

> `w.driver` would race with the `w.driver = nil` below. I've pushed
> an alternative change that resets `mayInvalidate` instead.

Thank you!

[PATCH gio] app: ensure Invalidate can be invoked when window is closing 2 months ago

From Chris Waldon to ~eliasnaur/gio-patches

This commit ensures that it is safe to invoke Invalidate() from another goroutine
while a Gio window may be in the process of closing. It can be difficult to prevent
this from happening, as window handles can easily be managed by a type that doesn't
know the exact moment of window close (it might be waiting on the window event loop
to return, but that hasn't happened yet). Without this change, the nil window
driver results in a panic in this situation.

Signed-off-by: Chris Waldon <christopher.waldon.dev@gmail.com>
---
 app/window.go | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/app/window.go b/app/window.go
index bf85099a..db1a9706 100644
[message trimmed]

[PATCH gio v2] app: add cross-platform empty view event detection 2 months ago

From Chris Waldon to ~eliasnaur/gio-patches

Custom rendering applications need to be prepared to handle empty view events,
as an empty view event is sent during window shutdown. However, the current
implementation requires applications to write a platform-specific helper
function for each supported platform in order to check whether a received
view event is empty. This commit provides a safe, convenient, cross-platform
method that applications can use to detect this special view event and respond
to it.

Signed-off-by: Chris Waldon <christopher.waldon.dev@gmail.com>
---
 app/app.go        | 4 ++++
 app/os_android.go | 3 +++
 app/os_ios.go     | 3 +++
 app/os_js.go      | 3 +++
[message trimmed]