Open mailto links in a new aerc instance if needed.
Aerc tries to open mailto:// links via the socket of the already running aerc instance. If no socket exists this silently errored out. This commit starts up a new aerc instance if it can't connect to the socket (which I think is the most common error) and if not sets up a new aerc instance and retries to open the compositor. This fixes https://todo.sr.ht/~sircmpwn/aerc2/295 by implementing the desired behaviour.
This commit is contained in:
parent
70c16fc346
commit
f15811a737
1 changed files with 17 additions and 2 deletions
19
aerc.go
19
aerc.go
|
@ -105,13 +105,26 @@ func main() {
|
|||
return
|
||||
}
|
||||
}
|
||||
initDone := make(chan struct{})
|
||||
args := os.Args[optind:]
|
||||
if len(args) > 1 {
|
||||
usage()
|
||||
return
|
||||
} else if len(args) == 1 {
|
||||
lib.ConnectAndExec(args[0])
|
||||
return
|
||||
arg := args[0]
|
||||
err := lib.ConnectAndExec(arg)
|
||||
if err == nil {
|
||||
return // other aerc instance takes over
|
||||
}
|
||||
fmt.Fprintf(os.Stderr, "Failed to communicate to aerc: %v", err)
|
||||
// continue with setting up a new aerc instance and retry after init
|
||||
go func(msg string) {
|
||||
<-initDone
|
||||
err := lib.ConnectAndExec(msg)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed to communicate to aerc: %v", err)
|
||||
}
|
||||
}(arg)
|
||||
}
|
||||
|
||||
var (
|
||||
|
@ -163,6 +176,8 @@ func main() {
|
|||
as.OnMailto = aerc.Mailto
|
||||
}
|
||||
|
||||
close(initDone)
|
||||
|
||||
for !ui.ShouldExit() {
|
||||
for aerc.Tick() {
|
||||
// Continue updating our internal state
|
||||
|
|
Loading…
Reference in a new issue