Skip to content

Commit ec92f44

Browse files
authored
Merge pull request #616 from SergioChan/fix/replace-dlgs-with-zenity-608
fix(ui): replace dlgs dialogs with zenity
2 parents 8203c13 + 460d8ff commit ec92f44

4 files changed

Lines changed: 51 additions & 19 deletions

File tree

.golangci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ linters:
2929
- $gostd
3030
- github.com/Unpackerr/unpackerr
3131
- github.com/lestrrat-go/apache-logformat
32-
- github.com/gen2brain/dlgs
32+
- github.com/ncruces/zenity
3333
- github.com/getlantern/systray
3434
- github.com/hako/durafmt
3535
- github.com/mitchellh/go-homedir

go.mod

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,17 @@ require (
66
code.cloudfoundry.org/bytefmt v0.65.0
77
github.com/BurntSushi/toml v1.6.0
88
github.com/fsnotify/fsnotify v1.9.0
9-
github.com/gen2brain/dlgs v0.0.0-20220603100644-40c77870fa8d
109
github.com/getlantern/systray v1.2.2
1110
github.com/hako/durafmt v0.0.0-20210608085754-5c1018a4e16b
1211
github.com/julienschmidt/httprouter v1.3.0
1312
github.com/lestrrat-go/apache-logformat/v2 v2.0.6
1413
github.com/mitchellh/go-homedir v1.1.0
14+
github.com/ncruces/zenity v0.10.14
1515
github.com/prometheus/client_golang v1.23.2
1616
github.com/radovskyb/watcher v1.0.7
1717
github.com/spf13/pflag v1.0.10
1818
golang.org/x/mod v0.33.0
19+
golang.org/x/sys v0.42.0
1920
golift.io/cnfg v0.2.5
2021
golift.io/cnfgfile v0.0.0-20240713024420-a5436d84eb48
2122
golift.io/rotatorr v0.0.0-20260217050959-f6ac6fc7b38e
@@ -27,6 +28,7 @@ require (
2728

2829
require (
2930
github.com/Unpackerr/iso9660 v0.0.3 // indirect
31+
github.com/akavel/rsrc v0.10.2 // indirect
3032
github.com/andybalholm/brotli v1.2.0 // indirect
3133
github.com/beorn7/perks v1.0.1 // indirect
3234
github.com/bodgit/plumbing v1.3.0 // indirect
@@ -35,6 +37,7 @@ require (
3537
github.com/cavaliergopher/cpio v1.0.1 // indirect
3638
github.com/cavaliergopher/rpm v1.3.0 // indirect
3739
github.com/cespare/xxhash/v2 v2.3.0 // indirect
40+
github.com/dchest/jsmin v0.0.0-20220218165748-59f39799265f // indirect
3841
github.com/getlantern/context v0.0.0-20220418194847-3d5e7a086201 // indirect
3942
github.com/getlantern/errors v1.0.4 // indirect
4043
github.com/getlantern/golog v0.0.0-20230503153817-8e72de7e0a65 // indirect
@@ -44,9 +47,9 @@ require (
4447
github.com/go-logr/logr v1.4.3 // indirect
4548
github.com/go-logr/stdr v1.2.2 // indirect
4649
github.com/go-stack/stack v1.8.1 // indirect
47-
github.com/gopherjs/gopherjs v1.20.1 // indirect
4850
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
4951
github.com/icza/bitio v1.1.0 // indirect
52+
github.com/josephspurrier/goversioninfo v1.4.1 // indirect
5053
github.com/klauspost/compress v1.18.4 // indirect
5154
github.com/lestrrat-go/strftime v1.1.1 // indirect
5255
github.com/mewkiz/flac v1.0.13 // indirect
@@ -61,6 +64,7 @@ require (
6164
github.com/prometheus/client_model v0.6.2 // indirect
6265
github.com/prometheus/common v0.67.5 // indirect
6366
github.com/prometheus/procfs v0.20.1 // indirect
67+
github.com/randall77/makefat v0.0.0-20210315173500-7ddd0e42c844 // indirect
6468
github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d // indirect
6569
github.com/spf13/afero v1.15.0 // indirect
6670
github.com/sshaman1101/dcompress v0.0.0-20200109162717-50436a6332de // indirect
@@ -75,8 +79,8 @@ require (
7579
go.yaml.in/yaml/v2 v2.4.4 // indirect
7680
go4.org v0.0.0-20260112195520-a5071408f32f // indirect
7781
golang.org/x/crypto v0.48.0 // indirect
82+
golang.org/x/image v0.23.0 // indirect
7883
golang.org/x/net v0.51.0 // indirect
79-
golang.org/x/sys v0.42.0 // indirect
8084
golang.org/x/text v0.34.0 // indirect
8185
golift.io/udf v0.0.1 // indirect
8286
google.golang.org/protobuf v1.36.11 // indirect

go.sum

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1
66
github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
77
github.com/Unpackerr/iso9660 v0.0.3 h1:WXXFIcmDLhnsKhXjPg2moUmHxhoUmIX7FLxrtqHJ7yQ=
88
github.com/Unpackerr/iso9660 v0.0.3/go.mod h1:4Py6ZWQ+sUVo4BmmzZaFgOLcS3to5BMvH39TlOYNxhA=
9+
github.com/akavel/rsrc v0.10.2 h1:Zxm8V5eI1hW4gGaYsJQUhxpjkENuG91ki8B4zCrvEsw=
10+
github.com/akavel/rsrc v0.10.2/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c=
911
github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ=
1012
github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY=
1113
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
@@ -27,14 +29,14 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
2729
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
2830
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
2931
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
32+
github.com/dchest/jsmin v0.0.0-20220218165748-59f39799265f h1:OGqDDftRTwrvUoL6pOG7rYTmWsTCvyEWFsMjg+HcOaA=
33+
github.com/dchest/jsmin v0.0.0-20220218165748-59f39799265f/go.mod h1:Dv9D0NUlAsaQcGQZa5kc5mqR9ua72SmA8VXi4cd+cBw=
3034
github.com/dsnet/compress v0.0.1 h1:PlZu0n3Tuv04TzpfPbrnI0HW/YwodEXDS+oPKahKF0Q=
3135
github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5JflhBbQEHo=
3236
github.com/facebookgo/clock v0.0.0-20150410010913-600d898af40a h1:yDWHCSQ40h88yih2JAcL6Ls/kVkSE8GFACTGVnMPruw=
3337
github.com/facebookgo/clock v0.0.0-20150410010913-600d898af40a/go.mod h1:7Ga40egUymuWXxAe151lTNnCv97MddSOVsjpPPkityA=
3438
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
3539
github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
36-
github.com/gen2brain/dlgs v0.0.0-20220603100644-40c77870fa8d h1:dHYKX8CBAs1zSGXm3q3M15CLAEwPEkwrK1ed8FCo+Xo=
37-
github.com/gen2brain/dlgs v0.0.0-20220603100644-40c77870fa8d/go.mod h1:/eFcjDXaU2THSOOqLxOPETIbHETnamk8FA/hMjhg/gU=
3840
github.com/getlantern/context v0.0.0-20190109183933-c447772a6520/go.mod h1:L+mq6/vvYHKjCX2oez0CgEAJmbq1fbb/oNJIWQkBybY=
3941
github.com/getlantern/context v0.0.0-20220418194847-3d5e7a086201 h1:oEZYEpZo28Wdx+5FZo4aU7JFXu0WG/4wJWese5reQSA=
4042
github.com/getlantern/context v0.0.0-20220418194847-3d5e7a086201/go.mod h1:Y9WZUHEb+mpra02CbQ/QczLUe6f0Dezxaw5DCJlJQGo=
@@ -73,8 +75,6 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
7375
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
7476
github.com/google/pprof v0.0.0-20260302011040-a15ffb7f9dcc h1:VBbFa1lDYWEeV5FZKUiYKYT0VxCp9twUmmaq9eb8sXw=
7577
github.com/google/pprof v0.0.0-20260302011040-a15ffb7f9dcc/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI=
76-
github.com/gopherjs/gopherjs v1.20.1 h1:22uLWFvVcxhJ+j3dJ99NNfwGyHynxCmjhYsrcwqbY60=
77-
github.com/gopherjs/gopherjs v1.20.1/go.mod h1:h+FTmmLgbXMmmtuZFp9bUqXciN429Wx0sJEJuMnpyfM=
7878
github.com/hako/durafmt v0.0.0-20210608085754-5c1018a4e16b h1:wDUNC2eKiL35DbLvsDhiblTUXHxcOPwQSCzi7xpQUN4=
7979
github.com/hako/durafmt v0.0.0-20210608085754-5c1018a4e16b/go.mod h1:VzxiSdG6j1pi7rwGm/xYI5RbtpBgM8sARDXlvEvxlu0=
8080
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
@@ -83,6 +83,8 @@ github.com/icza/bitio v1.1.0 h1:ysX4vtldjdi3Ygai5m1cWy4oLkhWTAi+SyO6HC8L9T0=
8383
github.com/icza/bitio v1.1.0/go.mod h1:0jGnlLAx8MKMr9VGnn/4YrvZiprkvBelsVIbA9Jjr9A=
8484
github.com/icza/mighty v0.0.0-20180919140131-cfd07d671de6 h1:8UsGZ2rr2ksmEru6lToqnXgA8Mz1DP11X4zSJ159C3k=
8585
github.com/icza/mighty v0.0.0-20180919140131-cfd07d671de6/go.mod h1:xQig96I1VNBDIWGCdTt54nHt6EeI639SmHycLYL7FkA=
86+
github.com/josephspurrier/goversioninfo v1.4.1 h1:5LvrkP+n0tg91J9yTkoVnt/QgNnrI1t4uSsWjIonrqY=
87+
github.com/josephspurrier/goversioninfo v1.4.1/go.mod h1:JWzv5rKQr+MmW+LvM412ToT/IkYDZjaclF2pKDss8IY=
8688
github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U=
8789
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
8890
github.com/klauspost/compress v1.18.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c=
@@ -115,6 +117,8 @@ github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG
115117
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
116118
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
117119
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
120+
github.com/ncruces/zenity v0.10.14 h1:OBFl7qfXcvsdo1NUEGxTlZvAakgWMqz9nG38TuiaGLI=
121+
github.com/ncruces/zenity v0.10.14/go.mod h1:ZBW7uVe/Di3IcRYH0Br8X59pi+O6EPnNIOU66YHpOO4=
118122
github.com/nwaples/rardecode/v2 v2.2.2 h1:/5oL8dzYivRM/tqX9VcTSWfbpwcbwKG1QtSJr3b3KcU=
119123
github.com/nwaples/rardecode/v2 v2.2.2/go.mod h1:7uz379lSxPe6j9nvzxUZ+n7mnJNgjsRNb6IbvGVHRmw=
120124
github.com/onsi/ginkgo/v2 v2.28.1 h1:S4hj+HbZp40fNKuLUQOYLDgZLwNUVn19N3Atb98NCyI=
@@ -143,6 +147,8 @@ github.com/prometheus/procfs v0.20.1 h1:XwbrGOIplXW/AU3YhIhLODXMJYyC1isLFfYCsTEy
143147
github.com/prometheus/procfs v0.20.1/go.mod h1:o9EMBZGRyvDrSPH1RqdxhojkuXstoe4UlK79eF5TGGo=
144148
github.com/radovskyb/watcher v1.0.7 h1:AYePLih6dpmS32vlHfhCeli8127LzkIgwJGcwwe8tUE=
145149
github.com/radovskyb/watcher v1.0.7/go.mod h1:78okwvY5wPdzcb1UYnip1pvrZNIVEIh/Cm+ZuvsUYIg=
150+
github.com/randall77/makefat v0.0.0-20210315173500-7ddd0e42c844 h1:GranzK4hv1/pqTIhMTXt2X8MmMOuH3hMeUR0o9SP5yc=
151+
github.com/randall77/makefat v0.0.0-20210315173500-7ddd0e42c844/go.mod h1:T1TLSfyWVBRXVGzWd0o9BI4kfoO9InEgfQe4NV3mLz8=
146152
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
147153
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
148154
github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d h1:hrujxIzL1woJ7AwssoOcM/tq5JjjG2yYOc8odClEiXA=
@@ -160,6 +166,7 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE
160166
github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4=
161167
github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0=
162168
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
169+
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
163170
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
164171
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
165172
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
@@ -205,6 +212,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
205212
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
206213
golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts=
207214
golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos=
215+
golang.org/x/image v0.23.0 h1:HseQ7c2OpPKTPVzNjG5fwJsOTCiiwS4QdsYi5XU6H68=
216+
golang.org/x/image v0.23.0/go.mod h1:wJJBTdLfCCf3tiHa1fNxpZmUI4mmoZvwMCPP0ddoNKY=
208217
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
209218
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
210219
golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8=

pkg/ui/dlgs.go

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,52 +3,71 @@
33
package ui
44

55
import (
6+
"errors"
67
"fmt"
78

8-
"github.com/gen2brain/dlgs"
9+
"github.com/ncruces/zenity"
910
)
1011

11-
// Warning wraps dlgs.Warning.
12+
func dialogResult(err error) (bool, error) {
13+
if errors.Is(err, zenity.ErrCanceled) {
14+
return false, nil
15+
}
16+
17+
return err == nil, err
18+
}
19+
20+
// Warning wraps a warning dialog.
1221
func Warning(title, msg string) (bool, error) {
1322
if !HasGUI() {
1423
return true, nil
1524
}
1625

17-
return dlgs.Warning(title, msg) //nolint:wrapcheck
26+
return dialogResult(zenity.Warning(msg, zenity.Title(title)))
1827
}
1928

20-
// Error wraps dlgs.Error.
29+
// Error wraps an error dialog.
2130
func Error(title, msg string, v ...any) (bool, error) {
2231
if !HasGUI() {
2332
return true, nil
2433
}
2534

26-
return dlgs.Error(title, fmt.Sprintf(msg, v...)) //nolint:wrapcheck
35+
return dialogResult(zenity.Error(fmt.Sprintf(msg, v...), zenity.Title(title)))
2736
}
2837

29-
// Info wraps dlgs.Info.
38+
// Info wraps an info dialog.
3039
func Info(title, msg string, v ...any) (bool, error) {
3140
if !HasGUI() {
3241
return true, nil
3342
}
3443

35-
return dlgs.Info(title, fmt.Sprintf(msg, v...)) //nolint:wrapcheck
44+
return dialogResult(zenity.Info(fmt.Sprintf(msg, v...), zenity.Title(title)))
3645
}
3746

38-
// Entry wraps dlgs.Entry.
47+
// Entry wraps a text-entry dialog.
3948
func Entry(title, msg, val string) (string, bool, error) {
4049
if !HasGUI() {
4150
return val, true, nil
4251
}
4352

44-
return dlgs.Entry(title, msg, val) //nolint:wrapcheck
53+
entry, err := zenity.Entry(msg, zenity.Title(title), zenity.EntryText(val))
54+
if errors.Is(err, zenity.ErrCanceled) {
55+
return val, false, nil
56+
}
57+
58+
return entry, err == nil, err
4559
}
4660

47-
// Question wraps dlgs.Question.
61+
// Question wraps a question dialog.
4862
func Question(title string, defaultCancel bool, text string, v ...any) (bool, error) {
4963
if !HasGUI() {
5064
return true, nil
5165
}
5266

53-
return dlgs.Question(title, fmt.Sprintf(text, v...), defaultCancel) //nolint:wrapcheck
67+
opts := []zenity.Option{zenity.Title(title)}
68+
if defaultCancel {
69+
opts = append(opts, zenity.DefaultCancel())
70+
}
71+
72+
return dialogResult(zenity.Question(fmt.Sprintf(text, v...), opts...))
5473
}

0 commit comments

Comments
 (0)