go-nativenotify

Native notifications in Go
Log | Files | Refs | README | LICENSE

commit f909be8d4c82aa860d114648af3dd6b384ac5366
parent 96f5fd4161456fb4aa7ee77c83e71d30acad1976
Author: Jack Mordaunt <jackmordaunt.dev@gmail.com>
Date:   Fri, 17 Jan 2025 15:19:34 +0800

cmd/notify: [darwin] use Gio to install an NSApplication

This is required for receiving activation on macOS.

Diffstat:
Acmd/notify/go.mod | 25+++++++++++++++++++++++++
Acmd/notify/go.sum | 32++++++++++++++++++++++++++++++++
Mcmd/notify/main.go | 9+++++++--
3 files changed, 64 insertions(+), 2 deletions(-)

diff --git a/cmd/notify/go.mod b/cmd/notify/go.mod @@ -0,0 +1,25 @@ +module git.sr.ht/~jackmordaunt/go-nativenotify/cmd/notify + +go 1.23.4 + +replace git.sr.ht/~jackmordaunt/go-nativenotify => ../../ + +require ( + gioui.org v0.8.0 + git.sr.ht/~jackmordaunt/go-nativenotify v0.0.0-00010101000000-000000000000 +) + +require ( + gioui.org/shader v1.0.8 // indirect + git.sr.ht/~jackmordaunt/go-notify-darwin v0.0.0-20250116010207-33951df68cd5 // indirect + git.sr.ht/~jackmordaunt/go-toast/v2 v2.0.1 // indirect + git.sr.ht/~whereswaldon/shout v0.0.0-20241212204820-26acea6b0007 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect + github.com/go-text/typesetting v0.2.1 // indirect + github.com/godbus/dbus/v5 v5.1.0 // indirect + golang.org/x/exp v0.0.0-20240707233637-46b078467d37 // indirect + golang.org/x/exp/shiny v0.0.0-20240707233637-46b078467d37 // indirect + golang.org/x/image v0.23.0 // indirect + golang.org/x/sys v0.29.0 // indirect + golang.org/x/text v0.21.0 // indirect +) diff --git a/cmd/notify/go.sum b/cmd/notify/go.sum @@ -0,0 +1,32 @@ +eliasnaur.com/font v0.0.0-20230308162249-dd43949cb42d h1:ARo7NCVvN2NdhLlJE9xAbKweuI9L6UgfTbYb0YwPacY= +eliasnaur.com/font v0.0.0-20230308162249-dd43949cb42d/go.mod h1:OYVuxibdk9OSLX8vAqydtRPP87PyTFcT9uH3MlEGBQA= +gioui.org v0.8.0 h1:QV5p5JvsmSmGiIXVYOKn6d9YDliTfjtLlVf5J+BZ9Pg= +gioui.org v0.8.0/go.mod h1:vEMmpxMOd/iwJhXvGVIzWEbxMWhnMQ9aByOGQdlQ8rc= +gioui.org/cpu v0.0.0-20210808092351-bfe733dd3334/go.mod h1:A8M0Cn5o+vY5LTMlnRoK3O5kG+rH0kWfJjeKd9QpBmQ= +gioui.org/shader v1.0.8 h1:6ks0o/A+b0ne7RzEqRZK5f4Gboz2CfG+mVliciy6+qA= +gioui.org/shader v1.0.8/go.mod h1:mWdiME581d/kV7/iEhLmUgUK5iZ09XR5XpduXzbePVM= +git.sr.ht/~jackmordaunt/go-notify-darwin v0.0.0-20250116010207-33951df68cd5 h1:5QPfJV6WvB2jNezkk7U7JCgX4pq6Clv0Vt507xkiCGI= +git.sr.ht/~jackmordaunt/go-notify-darwin v0.0.0-20250116010207-33951df68cd5/go.mod h1:uwWDXYGwP2PodSVTd9KU11/P7SoDAA321SmG3IQhoSY= +git.sr.ht/~jackmordaunt/go-toast/v2 v2.0.1 h1:VPS/EEtIAgkxvYubqBUzkQqkB1Uf80twg8SthWX0VhA= +git.sr.ht/~jackmordaunt/go-toast/v2 v2.0.1/go.mod h1:QtOLZGz8olr4qH2vWK0QH0w0O4T9fEIjMuWpKUsH7nc= +git.sr.ht/~whereswaldon/shout v0.0.0-20241212204820-26acea6b0007 h1:5xMwYHPm3ym1ccRmVmUEj4hiESj5uqXMYPwG+1Ruf28= +git.sr.ht/~whereswaldon/shout v0.0.0-20241212204820-26acea6b0007/go.mod h1:VJjhIIJD+YFIyJSH6nCDqoo9ikvAEaD63tUo4uI86pA= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-text/typesetting v0.2.1 h1:x0jMOGyO3d1qFAPI0j4GSsh7M0Q3Ypjzr4+CEVg82V8= +github.com/go-text/typesetting v0.2.1/go.mod h1:mTOxEwasOFpAMBjEQDhdWRckoLLeI/+qrQeBCTGEt6M= +github.com/go-text/typesetting-utils v0.0.0-20241103174707-87a29e9e6066 h1:qCuYC+94v2xrb1PoS4NIDe7DGYtLnU2wWiQe9a1B1c0= +github.com/go-text/typesetting-utils v0.0.0-20241103174707-87a29e9e6066/go.mod h1:DDxDdQEnB70R8owOx3LVpEFvpMK9eeH1o2r0yZhFI9o= +github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= +github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +golang.org/x/exp v0.0.0-20240707233637-46b078467d37 h1:uLDX+AfeFCct3a2C7uIWBKMJIR3CJMhcgfrUAqjRK6w= +golang.org/x/exp v0.0.0-20240707233637-46b078467d37/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= +golang.org/x/exp/shiny v0.0.0-20240707233637-46b078467d37 h1:SOSg7+sueresE4IbmmGM60GmlIys+zNX63d6/J4CMtU= +golang.org/x/exp/shiny v0.0.0-20240707233637-46b078467d37/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= +golang.org/x/image v0.23.0 h1:HseQ7c2OpPKTPVzNjG5fwJsOTCiiwS4QdsYi5XU6H68= +golang.org/x/image v0.23.0/go.mod h1:wJJBTdLfCCf3tiHa1fNxpZmUI4mmoZvwMCPP0ddoNKY= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= diff --git a/cmd/notify/main.go b/cmd/notify/main.go @@ -9,10 +9,12 @@ import ( "runtime" "time" + "gioui.org/app" "git.sr.ht/~jackmordaunt/go-nativenotify" ) func main() { + slog.SetLogLoggerLevel(slog.LevelDebug) slog.SetDefault(slog.New(slog.NewTextHandler(os.Stdout, nil))) var ( @@ -85,10 +87,13 @@ func main() { } func wait() { - if runtime.GOOS == "windows" { + switch runtime.GOOS { + case "windows": // Avoid the deadlock panic on Windows. <-time.NewTimer(1<<63 - 1).C - } else { + case "darwin": + app.Main() + default: select {} } }