Skip to content

Commit 63c8de7

Browse files
committed
fix console output on windows
Windows is stupid. When starting a GUI program, STDOUT and STDERR are not attached to the parent shell. This works around it. Now windows users should have better debugging abilities.
1 parent 1ac2758 commit 63c8de7

File tree

4 files changed

+19
-8
lines changed

4 files changed

+19
-8
lines changed

src/go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ toolchain go1.24.1
66

77
require (
88
fyne.io/fyne/v2 v2.5.5
9+
github.com/apenwarr/fixconsole v0.0.0-20191012055117-5a9f6489cc29
910
github.com/jeandeaual/go-locale v0.0.0-20241217141322-fcc2cadd6f08
1011
github.com/mitchellh/go-homedir v1.1.0
1112
github.com/nicksnyder/go-i18n/v2 v2.6.0
@@ -18,6 +19,7 @@ require (
1819
require (
1920
fyne.io/systray v1.11.0 // indirect
2021
github.com/BurntSushi/toml v1.5.0 // indirect
22+
github.com/apenwarr/w32 v0.0.0-20190407065021-aa00fece76ab // indirect
2123
github.com/davecgh/go-spew v1.1.1 // indirect
2224
github.com/fredbi/uri v1.1.0 // indirect
2325
github.com/fsnotify/fsnotify v1.9.0 // indirect

src/go.sum

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ fyne.io/systray v1.11.0 h1:D9HISlxSkx+jHSniMBR6fCFOUjk1x/OOOJLa9lJYAKg=
44
fyne.io/systray v1.11.0/go.mod h1:RVwqP9nYMo7h5zViCBHri2FgjXF7H2cub7MAq4NSoLs=
55
github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg=
66
github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
7+
github.com/apenwarr/fixconsole v0.0.0-20191012055117-5a9f6489cc29 h1:muXWUcay7DDy1/hEQWrYlBy+g0EuwT70sBHg65SeUc4=
8+
github.com/apenwarr/fixconsole v0.0.0-20191012055117-5a9f6489cc29/go.mod h1:JYWahgHer+Z2xbsgHPtaDYVWzeHDminu+YIBWkxpCAY=
9+
github.com/apenwarr/w32 v0.0.0-20190407065021-aa00fece76ab h1:CMGzRRCjnD50RjUFSArBLuCxiDvdp7b8YPAcikBEQ+k=
10+
github.com/apenwarr/w32 v0.0.0-20190407065021-aa00fece76ab/go.mod h1:nfFtvHn2Hgs9G1u0/J6LHQv//EksNC+7G8vXmd1VTJ8=
711
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
812
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
913
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -68,6 +72,7 @@ golang.org/x/mobile v0.0.0-20250408133729-978277e7eaf7 h1:8MGTx39304caZ/OMsjPfux
6872
golang.org/x/mobile v0.0.0-20250408133729-978277e7eaf7/go.mod h1:ftACcHgQ7vaOnQbHOHvXt9Y6bEPHrs5Ovk67ClwrPJA=
6973
golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY=
7074
golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E=
75+
golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
7176
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
7277
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
7378
golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0=

src/golocal.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"fyne.io/fyne/v2/dialog"
1010
"fyne.io/fyne/v2/layout"
1111
"fyne.io/fyne/v2/widget"
12+
"github.com/apenwarr/fixconsole"
1213
"github.com/cosmocode/golocal/i18n"
1314
setup "github.com/cosmocode/golocal/setup"
1415
"log"
@@ -19,22 +20,22 @@ import (
1920
)
2021

2122
func main() {
23+
_ = fixconsole.FixConsoleIfNeeded()
24+
log.SetOutput(os.Stdout)
25+
fmt.Println()
26+
2227
flag.Usage = usage
2328
flagInstall := flag.Bool("install", false, "Install the protocol handler")
2429
flagUninstall := flag.Bool("uninstall", false, "Uninstall the protocol handler")
25-
30+
2631
// Parse flags and check for errors
2732
if err := flag.CommandLine.Parse(os.Args[1:]); err != nil {
28-
fmt.Fprintf(os.Stderr, "Error: %s\n", err)
29-
usage()
30-
os.Exit(1)
33+
log.Fatalf("Error: %s", err)
3134
}
32-
35+
3336
// Check for unknown flags
3437
if flag.NArg() > 0 && strings.HasPrefix(flag.Arg(0), "-") {
35-
fmt.Fprintf(os.Stderr, "Error: unknown flag: %s\n", flag.Arg(0))
36-
usage()
37-
os.Exit(1)
38+
log.Fatalf("Error: unknown flag: %s", flag.Arg(0))
3839
}
3940

4041
i18n.Initialize()
@@ -54,6 +55,7 @@ func main() {
5455
// start the main loop
5556
window.ShowAndRun()
5657
}
58+
log.Println("done")
5759
}
5860

5961
func guiInit() (fyne.App, fyne.Window) {

src/setup/windows.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package setup
66
import (
77
"fmt"
88
"golang.org/x/sys/windows/registry"
9+
"log"
910
"os"
1011
"os/exec"
1112
"strings"
@@ -21,6 +22,7 @@ func Install() error {
2122

2223
keyRoot, _, err = registry.CreateKey(registry.CLASSES_ROOT, PROTOCOL, registry.ALL_ACCESS)
2324
if err != nil {
25+
log.Print("Failed to create system wide key. Trying user key.")
2426
// if system wide install fails, use current user's registry
2527
keypath := fmt.Sprintf("Software\\Classes\\%s", PROTOCOL)
2628
keyRoot, _, err = registry.CreateKey(registry.CURRENT_USER, keypath, registry.ALL_ACCESS)

0 commit comments

Comments
 (0)