North Carolina


Interested in Linux, decentralization, cryptography, golang/rust/c, and communication.

I spend most of my free time on:

  • Arbor, a tree-based, decentralizable chat platform
  • Gio, an immediate-mode UI framework for Go
  • Gio-Extras, my collection of libraries to extend Gio

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



Last active 9 months ago


Last active 2 years ago


Last active 2 years ago


Last active 3 years ago


Last active 3 years ago


Last active 3 years ago

#155 Using gio with systray 2 hours ago

on ~eliasnaur/gio

Thanks, ~whereswaldon!

#155 Using gio with systray 14 hours ago

Comment by ~whereswaldon on ~eliasnaur/gio

Fyne has restructured that systray package in a way which may be compatible with Gio. You can see their work here.

#460 Windows app show powershell console when start 14 hours ago

Comment by ~whereswaldon on ~eliasnaur/gio

I can't say why this is happening for you. The method ~inkeliz suggests above works reliably for me. I do know that writing to os.Stderr or os.Stdout can also trigger that window, does your application do that (directly or indirectly with fmt or log)?

#456 a scroll event listener would be beneficial 17 days ago

Comment by ~whereswaldon on ~eliasnaur/gio

In the future, please ask questions like this in Slack or on the mailing list. The widget.List.List.Position field is updated every frame and its fields tell you both the range of elements visible and the exact pixels of the first and last element visible.


#387 markdown example is not releasing memory even. 19 days ago

Comment by ~whereswaldon on ~eliasnaur/gio

I think this is the same problem that prompted #425. I'm going to close this in favor of that issue, as it has a little more detail.


#184 Prevent invalid/unsupported characters to appear on Editor 19 days ago

Comment by ~whereswaldon on ~eliasnaur/gio

The editor has no efficient mechanism to look up font glyph coverage, so stripping such characters isn't feasible. However, the upcoming font fallback feature should allow emoji and other such characters to be displayed if any available fonts support them, so I think this issue will be mostly addressed then.

#246 The editor does not support non English character input. 19 days ago

Comment by ~whereswaldon on ~eliasnaur/gio

I believe this is done.


#381 Proposal: AnchorOp for keeping deferred layouts visible 20 days ago

Comment by ~whereswaldon on ~eliasnaur/gio

It's less about unreliable absolute positioning and more about the fact that we support general 2D affine transformations. How do you communicate the absolute screen position when the current drawing canvas has been rotated 45 degrees? However, Elias has been thinking of exposing something along these lines with some specific caveats about transformations. I can't say more now, but we will likely solve this by exposing a way to resolve a position relative to some transform.

#401 Ambiguous imports on example/notify 25 days ago

Comment by ~whereswaldon on ~eliasnaur/gio

I've applied this same operation to gioui.org/x/{explorer,haptic,pref}, so I believe nobody should hit this anymore.

#401 Ambiguous imports on example/notify 25 days ago

Comment by ~whereswaldon on ~eliasnaur/gio

The module doesn't have any tagged versions. It just kinda exists with the wrong name.

Thanks to Dominik Honnef for pointing me to this possible solution.

Following the advice in that issue, I believe I have fixed the problem:

[I] ~ $ cd /tmp
[I] /tmp $ mkdir foo
[I] /tmp $ cd foo
[I] /t/foo $ go mod init foo.com
go: creating new go.mod: module foo.com
[I] /t/foo $ go get gioui.org/x/notify@latest
go: added gioui.org v0.0.0-20220830130127-276b7eefdd65
go: added gioui.org/cpu v0.0.0-20210817075930-8d6a761490d2
go: added gioui.org/shader v1.0.6
go: added gioui.org/x v0.0.0-20221026194128-5b5772968c5c
go: added git.wow.st/gmp/jni v0.0.0-20210610011705-34026c7e22d0
go: added github.com/benoitkugler/textlayout v0.1.3
go: added github.com/esiqveland/notify v0.11.0
go: added github.com/gioui/uax v0.2.1-0.20220819135011-cda973fac06d
go: added github.com/go-text/typesetting v0.0.0-20220411150340-35994bc27a7b
go: added github.com/go-toast/toast v0.0.0-20190211030409-01e6764cf0a4
go: added github.com/godbus/dbus/v5 v5.0.6
go: added github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d
go: added golang.org/x/exp/shiny v0.0.0-20220827204233-334a2380cb91
go: added golang.org/x/image v0.0.0-20220722155232-062f8c9fd539
go: added golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64
go: added golang.org/x/text v0.3.7
[I] /t/foo $ cat go.mod
module foo.com

go 1.19

require (
        gioui.org v0.0.0-20220830130127-276b7eefdd65 // indirect
        gioui.org/cpu v0.0.0-20210817075930-8d6a761490d2 // indirect
        gioui.org/shader v1.0.6 // indirect
        gioui.org/x v0.0.0-20221026194128-5b5772968c5c // indirect
        git.wow.st/gmp/jni v0.0.0-20210610011705-34026c7e22d0 // indirect
        github.com/benoitkugler/textlayout v0.1.3 // indirect
        github.com/esiqveland/notify v0.11.0 // indirect
        github.com/gioui/uax v0.2.1-0.20220819135011-cda973fac06d // indirect
        github.com/go-text/typesetting v0.0.0-20220411150340-35994bc27a7b // indirect
        github.com/go-toast/toast v0.0.0-20190211030409-01e6764cf0a4 // indirect
        github.com/godbus/dbus/v5 v5.0.6 // indirect
        github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d // indirect
        golang.org/x/exp/shiny v0.0.0-20220827204233-334a2380cb91 // indirect
        golang.org/x/image v0.0.0-20220722155232-062f8c9fd539 // indirect
        golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64 // indirect
        golang.org/x/text v0.3.7 // indirect