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:
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 {}
}
}