diff --git a/cmd/gtkmenu/gui.go b/cmd/gtkmenu/gui.go index 3572f2f..83c456d 100644 --- a/cmd/gtkmenu/gui.go +++ b/cmd/gtkmenu/gui.go @@ -4,33 +4,23 @@ import ( "log" "os" - "github.com/gotk3/gotk3/gdk" - "github.com/gotk3/gotk3/gtk" + "github.com/diamondburned/gotk4/pkg/gdk/v4" + "github.com/diamondburned/gotk4/pkg/gtk/v4" ) -func initWindow(application *gtk.Application) *gtk.ApplicationWindow { - w, err := gtk.ApplicationWindowNew(application) - if err != nil { - log.Fatal("failed to create window:", err) - } +func initWindow(app *gtk.Application) *gtk.ApplicationWindow { + w := gtk.NewApplicationWindow(app) - w.Connect("key-press-event", handleKeybinding) - - w.Connect("destroy", func() { + w.ConnectDestroy(func() { os.Exit(0) }) w.SetTitle("gmenu") w.SetDecorated(false) - w.SetBorderWidth(0) - w.Stick() - w.SetKeepAbove(true) - w.SetTypeHint(gdk.WINDOW_TYPE_HINT_UTILITY) if !config.Fullscreen { w.SetResizable(config.Resizable) - w.SetSizeRequest(config.Width, config.Height) - w.SetPosition(gtk.WIN_POS_CENTER) + w.SetDefaultSize(config.Width, config.Height) } else { w.Fullscreen() } @@ -38,22 +28,21 @@ func initWindow(application *gtk.Application) *gtk.ApplicationWindow { return w } -func handleKeybinding(_ *gtk.ApplicationWindow, ev *gdk.Event) bool { - keyEvent := &gdk.EventKey{ev} - switch keyEvent.KeyVal() { +func handleKeybinding(keyval, keycode uint, state gdk.ModifierType) bool { + switch keyval { case gdk.KEY_Up, gdk.KEY_Down: offset := -1 - if keyEvent.KeyVal() == gdk.KEY_Down { + if keyval == gdk.KEY_Down { offset = 1 } index := 0 - row := listBox.GetSelectedRow() + row := listBox.SelectedRow() if row != nil { - index = row.GetIndex() + index = row.Index() } - row = listBox.GetRowAtIndex(index + offset) + row = listBox.RowAtIndex(index + offset) if row != nil { listBox.SelectRow(row) row.GrabFocus() @@ -62,7 +51,7 @@ func handleKeybinding(_ *gtk.ApplicationWindow, ev *gdk.Event) bool { return true case gdk.KEY_Return, gdk.KEY_KP_Enter, gdk.KEY_ISO_Enter, gdk.KEY_3270_Enter: - runInTerminal := keyEvent.State()&uint(gdk.MOD1_MASK) > 0 + runInTerminal := state&gdk.MODIFIER_MASK > 0 err := listSelect(inputView, runInTerminal) if err != nil { diff --git a/cmd/gtkmenu/gui_icon.go b/cmd/gtkmenu/gui_icon.go index 3c7d51d..24bdee8 100644 --- a/cmd/gtkmenu/gui_icon.go +++ b/cmd/gtkmenu/gui_icon.go @@ -1,6 +1,7 @@ package main import ( + "context" "crypto/md5" "fmt" "log" @@ -9,8 +10,9 @@ import ( "code.rocketnine.space/tslocum/desktop" "code.rocketnine.space/tslocum/gmenu/pkg/gmenu" - "github.com/gotk3/gotk3/gdk" - "github.com/gotk3/gotk3/gtk" + "github.com/diamondburned/gotk4/pkg/gdkpixbuf/v2" + "github.com/diamondburned/gotk4/pkg/gio/v2" + "github.com/diamondburned/gotk4/pkg/gtk/v4" ) const cachedIconCompressionLevel = 3 @@ -20,29 +22,64 @@ var ( iconCacheDir string ) -func loadIcon(icon string) (*gdk.Pixbuf, error) { +func loadPNG(data []byte) (*gdkpixbuf.Pixbuf, error) { + l, err := gdkpixbuf.NewPixbufLoaderWithType("png") + if err != nil { + return nil, fmt.Errorf("failed to initialize png loader: %s", err) + } + defer l.Close() + + if err = l.Write(data); err != nil { + return nil, fmt.Errorf("failed to load png data: %s", err) + } + + return l.Pixbuf(), nil +} + +func loadIcon(icon string) (*gdkpixbuf.Pixbuf, error) { cachedIcon := path.Join(iconCacheDir, fmt.Sprintf("%x.png", md5.Sum([]byte(icon)))) var ( - pbuf *gdk.Pixbuf + pbuf *gdkpixbuf.Pixbuf + img *gtk.Image err error ) if _, statErr := os.Stat(cachedIcon); !os.IsNotExist(statErr) { - pbuf, err = gdk.PixbufNewFromFileAtSize(cachedIcon, iconSize, iconSize) + var bytes []byte + bytes, err = os.ReadFile(cachedIcon) + if err != nil { + return nil, err + } + pbuf, err = loadPNG(bytes) } if pbuf == nil || err != nil { if path.IsAbs(icon) { - pbuf, err = gdk.PixbufNewFromFileAtSize(icon, iconSize, iconSize) + var bytes []byte + bytes, err = os.ReadFile(icon) + if err != nil { + return nil, err + } + pbuf, err = loadPNG(bytes) } else { - pbuf, err = iconTheme.LoadIcon(icon, iconSize, gtk.ICON_LOOKUP_USE_BUILTIN) + iconPaintable := iconTheme.LookupIcon(icon, nil, iconSize, 1, gtk.TextDirLTR, gtk.IconLookupPreload) + var bytes []byte + bytes, err = os.ReadFile(iconPaintable.File().Path()) + if err != nil { + return nil, err + } + pbuf, err = loadPNG(bytes) } } if err != nil { return nil, err } - if pbuf.GetWidth() != iconSize || pbuf.GetHeight() != iconSize { - pbuf, _ = pbuf.ScaleSimple(iconSize, iconSize, gdk.INTERP_BILINEAR) + if pbuf != nil && img == nil { + img = gtk.NewImageFromPixbuf(pbuf) + } + + if pbuf.Width() != iconSize || pbuf.Height() != iconSize { + pbuf = pbuf.ScaleSimple(iconSize, iconSize, gdkpixbuf.InterpBilinear) } go cacheIcon(cachedIcon, pbuf) @@ -50,14 +87,15 @@ func loadIcon(icon string) (*gdk.Pixbuf, error) { return pbuf, nil } -func cacheIcon(cachedIcon string, pbuf *gdk.Pixbuf) { - f, err := os.OpenFile(cachedIcon, os.O_CREATE|os.O_RDWR, 0644) +func cacheIcon(cachedIcon string, pbuf *gdkpixbuf.Pixbuf) { + saveFile := gio.NewFileForPath(cachedIcon) + saveFileStream, err := saveFile.Replace(context.Background(), "", false, gio.FileCreatePrivate) if err != nil { - log.Println(err) + log.Printf("Failed to cache entry icon %s: %s", cachedIcon, err) return } - - pbuf.SavePNG(f.Name(), cachedIconCompressionLevel) + pbuf.SaveToStreamv(context.Background(), saveFileStream, "png", nil, nil) + saveFileStream.Close(context.Background()) } func fallbackIcon(entry *gmenu.ListEntry) string { @@ -72,7 +110,7 @@ func fallbackIcon(entry *gmenu.ListEntry) string { func loadIconImage(img *gtk.Image, entry *gmenu.ListEntry) { var ( - pbuf *gdk.Pixbuf + pbuf *gdkpixbuf.Pixbuf err error ) if entry.Entry != nil && entry.Icon != "" { diff --git a/cmd/gtkmenu/gui_list.go b/cmd/gtkmenu/gui_list.go index 7ba7835..b574f8d 100644 --- a/cmd/gtkmenu/gui_list.go +++ b/cmd/gtkmenu/gui_list.go @@ -12,9 +12,9 @@ import ( "code.rocketnine.space/tslocum/desktop" "code.rocketnine.space/tslocum/gmenu/pkg/gmenu" - "github.com/gotk3/gotk3/glib" - "github.com/gotk3/gotk3/gtk" - "github.com/gotk3/gotk3/pango" + "github.com/diamondburned/gotk4/pkg/core/glib" + "github.com/diamondburned/gotk4/pkg/gtk/v4" + "github.com/diamondburned/gotk4/pkg/pango" "github.com/kballard/go-shellquote" ) @@ -29,54 +29,42 @@ const ( var execLabel *gtk.Label func initList(container *gtk.Box) { - inputView = newTextView() + inputView = gtk.NewTextView() setNoExpand(&inputView.Widget) - inputView.SetProperty("accepts-tab", false) - inputView.SetProperty("wrap-mode", gtk.WRAP_CHAR) - inputView.SetProperty("cursor-visible", false) - inputView.SetProperty("left-margin", 2) - inputView.SetProperty("right-margin", 2) + inputView.SetObjectProperty("accepts-tab", false) + inputView.SetObjectProperty("wrap-mode", gtk.WrapChar) + inputView.SetObjectProperty("cursor-visible", false) + inputView.SetObjectProperty("left-margin", 2) + inputView.SetObjectProperty("right-margin", 2) - buffer, err := inputView.GetBuffer() - if err != nil { - log.Fatal("failed to create input buffer:", err) - } + keyController := gtk.NewEventControllerKey() + keyController.ConnectKeyPressed(handleKeybinding) + inputView.AddController(keyController) - buffer.Connect("changed", func(tb *gtk.TextBuffer) bool { + buffer := inputView.Buffer() + buffer.ConnectChanged(func() { gmenu.SetInput(strings.TrimSpace(textViewText(inputView))) - - return false }) - if err != nil { - log.Fatal("failed to connect to changed event of input buffer:", err) - } - container.Add(inputView) + container.Append(inputView) - listScroll, err := gtk.ScrolledWindowNew(nil, nil) - if err != nil { - log.Fatal("failed to create ScrolledWindow:", err) - } + listScroll := gtk.NewScrolledWindow() listScroll.SetHExpand(true) listScroll.SetVExpand(false) - listBox, err = gtk.ListBoxNew() - if err != nil { - log.Fatal("failed to create ListBox:", err) - } - listBox.SetSelectionMode(gtk.SELECTION_BROWSE) + listBox = gtk.NewListBox() + listBox.SetSelectionMode(gtk.SelectionBrowse) listBox.SetHExpand(false) listBox.SetFocusOnClick(false) - listScroll.Add(listBox) - container.PackEnd(listScroll, true, true, 0) + listScroll.SetPolicy(gtk.PolicyNever, gtk.PolicyAutomatic) + listScroll.SetChild(listBox) + listScroll.SetVExpand(true) + container.Append(listScroll) if !config.HideAppIcons { - s, _ := container.GetScreen() - iconTheme, err = gtk.IconThemeGetForScreen(*s) - if err != nil { - log.Fatal("failed to get icon theme:", err) - } + d := container.Display() + iconTheme = gtk.IconThemeGetForDisplay(d) } lastEntry := len(gmenu.FilteredEntries) - 1 @@ -98,30 +86,27 @@ func initList(container *gtk.Box) { wg.Wait() glib.IdleAdd(func() { - listBox.Connect("row-activated", func(_ *gtk.ListBox, _ *gtk.ListBoxRow) { + listBox.ConnectRowActivated(func(_ *gtk.ListBoxRow) { err := listSelect(inputView, false) if err != nil { log.Fatal(err) } }) - if err != nil { - log.Fatal("failed to connect to row-activated event of ListBox:", err) - } }) }() } func initRow(container *gtk.Box, entry *gmenu.ListEntry, i int, lastEntry int) { if !config.HideAppIcons { - img, _ := gtk.ImageNew() + img := gtk.NewImage() img.SetSizeRequest(iconSize, iconSize) - container.PackStart(img, false, false, 0) + container.Append(img) glib.IdleAdd(func() { loadIconImage(img, entry) }) } - labelContainer := newBox(gtk.ORIENTATION_VERTICAL) + labelContainer := gtk.NewBox(gtk.OrientationVertical, 0) labelContainer.SetMarginStart(labelMarginStart) labelText := "Shell command" @@ -129,10 +114,7 @@ func initRow(container *gtk.Box, entry *gmenu.ListEntry, i int, lastEntry int) { labelText = entry.Label } - l, err := gtk.LabelNew(fmt.Sprintf("%s", html.EscapeString(labelText))) - if err != nil { - log.Fatal("failed to create Label:", err) - } + l := gtk.NewLabel(fmt.Sprintf("%s", html.EscapeString(labelText))) l.SetUseMarkup(true) setNoExpand(&l.Widget) @@ -142,11 +124,7 @@ func initRow(container *gtk.Box, entry *gmenu.ListEntry, i int, lastEntry int) { l.SetMarginTop(labelMarginTop) } - if !config.HideAppDetails { - labelContainer.PackStart(l, false, false, 0) - } else { - labelContainer.PackStart(l, true, true, 0) - } + labelContainer.Append(l) if config.HideAppDetails { if i == lastEntry { @@ -157,11 +135,7 @@ func initRow(container *gtk.Box, entry *gmenu.ListEntry, i int, lastEntry int) { if entry.Entry != nil { comment = entry.Comment } - l, err := gtk.LabelNew(comment) - if err != nil { - log.Fatal("failed to create Label:", err) - } - + l := gtk.NewLabel(comment) setNoExpand(&l.Widget) initLabel(l) @@ -169,7 +143,7 @@ func initRow(container *gtk.Box, entry *gmenu.ListEntry, i int, lastEntry int) { l.SetMarginTop(labelMarginTopComment) } - labelContainer.Add(l) + labelContainer.Append(l) if i == lastEntry { execLabel = l @@ -177,16 +151,16 @@ func initRow(container *gtk.Box, entry *gmenu.ListEntry, i int, lastEntry int) { } setNoExpand(&labelContainer.Widget) - container.Add(labelContainer) + container.Append(labelContainer) setNoExpand(&container.Widget) } func initLabel(l *gtk.Label) { - l.SetHAlign(gtk.ALIGN_START) - l.SetLineWrap(false) + l.SetHAlign(gtk.AlignStart) + l.SetWrap(false) l.SetSingleLineMode(true) - l.SetEllipsize(pango.ELLIPSIZE_END) + l.SetEllipsize(pango.EllipsizeEnd) } func updateList(input string) { @@ -195,42 +169,14 @@ func updateList(input string) { listBox.InvalidateFilter() listBox.InvalidateSort() - listBox.SelectRow(listBox.GetRowAtIndex(0)) -} - -func newBox(orient gtk.Orientation) *gtk.Box { - box, err := gtk.BoxNew(orient, 0) - if err != nil { - log.Fatal("Unable to create box:", err) - } - return box -} - -func newTextView() *gtk.TextView { - tv, err := gtk.TextViewNew() - if err != nil { - log.Fatal("Unable to create TextView:", err) - } - return tv -} - -func textViewBuffer(tv *gtk.TextView) *gtk.TextBuffer { - buffer, err := tv.GetBuffer() - if err != nil { - log.Fatal("Unable to get TextView buffer:", err) - } - return buffer + listBox.SelectRow(listBox.RowAtIndex(0)) } func textViewText(tv *gtk.TextView) string { - buffer := textViewBuffer(tv) - start, end := buffer.GetBounds() + buffer := tv.Buffer() + start, end := buffer.Bounds() - text, err := buffer.GetText(start, end, true) - if err != nil { - log.Fatal("Unable to get TextView text:", err) - } - return text + return buffer.Text(start, end, true) } func setNoExpand(v *gtk.Widget) { @@ -243,8 +189,8 @@ func rowID(row *gtk.ListBoxRow) int { return -1 } - name, err := row.GetName() - if err != nil || len(name) < 2 || name[0] != '#' { + name := row.Name() + if len(name) < 2 || name[0] != '#' { return -1 } @@ -261,7 +207,7 @@ func selectedIndex() int { return -1 } - return rowID(listBox.GetSelectedRow()) + return rowID(listBox.SelectedRow()) } func selectedEntry() *desktop.Entry { @@ -339,10 +285,7 @@ func listFilter(row *gtk.ListBoxRow) bool { func rowInitFunc(i int, label string, entry *gmenu.ListEntry, lastEntry int, wg *sync.WaitGroup) func() { return func() { - row, err := gtk.ListBoxRowNew() - if err != nil { - log.Fatal("failed to create ListBoxRow:", err) - } + row := gtk.NewListBoxRow() if i == lastEntry { entry = &gmenu.ListEntry{Entry: nil, Label: ""} @@ -352,7 +295,7 @@ func rowInitFunc(i int, label string, entry *gmenu.ListEntry, lastEntry int, wg entry = &gmenu.ListEntry{Entry: gmenu.Entries[i], Label: label} } - container := newBox(gtk.ORIENTATION_HORIZONTAL) + container := gtk.NewBox(gtk.OrientationHorizontal, 0) container.SetMarginStart(rowMargin) container.SetMarginTop(rowMargin) container.SetMarginBottom(rowMargin) @@ -360,11 +303,11 @@ func rowInitFunc(i int, label string, entry *gmenu.ListEntry, lastEntry int, wg initRow(container, entry, i, lastEntry) - row.Add(container) - listBox.Add(row) + row.SetChild(container) + listBox.Append(row) - listBox.SelectRow(listBox.GetRowAtIndex(0)) - row.ShowAll() + listBox.SelectRow(listBox.RowAtIndex(0)) + row.Show() wg.Done() } diff --git a/cmd/gtkmenu/main.go b/cmd/gtkmenu/main.go index 32d9cd3..cc19815 100644 --- a/cmd/gtkmenu/main.go +++ b/cmd/gtkmenu/main.go @@ -10,8 +10,8 @@ import ( "sync" "code.rocketnine.space/tslocum/gmenu/pkg/gmenu" - "github.com/gotk3/gotk3/glib" - "github.com/gotk3/gotk3/gtk" + "github.com/diamondburned/gotk4/pkg/core/glib" + "github.com/diamondburned/gotk4/pkg/gtk/v4" ) // Config stores configuration variables. @@ -83,21 +83,22 @@ func load() { f := func() { updateList(input) } - glib.IdleAddPriority(glib.PRIORITY_HIGH_IDLE, f) + glib.IdleAddPriority(glib.PriorityHighIdle, f) }) loaded <- true } -func onActivate(application *gtk.Application) { +func activate(app *gtk.Application) { once.Do(func() { - w := initWindow(application) - container = newBox(gtk.ORIENTATION_VERTICAL) - w.Add(container) + w := initWindow(app) + container = gtk.NewBox(gtk.OrientationVertical, 0) + + w.SetChild(container) <-loaded initList(container) - w.ShowAll() + w.Show() if config.CPUProfile != "" { pprof.StopCPUProfile() @@ -125,11 +126,8 @@ func main() { go load() - application, err := gtk.ApplicationNew(appID, glib.APPLICATION_FLAGS_NONE) - if err != nil { - log.Fatal("failed to create application:", err) - } - application.Connect("activate", func() { onActivate(application) }) + app := gtk.NewApplication(appID, 0) + app.ConnectActivate(func() { activate(app) }) - os.Exit(application.Run(flag.Args())) + os.Exit(app.Run(flag.Args())) } diff --git a/go.mod b/go.mod index 1760b79..863cd7b 100644 --- a/go.mod +++ b/go.mod @@ -3,11 +3,15 @@ module code.rocketnine.space/tslocum/gmenu go 1.12 require ( - code.rocketnine.space/tslocum/cview v1.5.6 + code.rocketnine.space/tslocum/cview v1.5.7 code.rocketnine.space/tslocum/desktop v0.1.6-0.20210710150012-8bd74b40a298 - github.com/gdamore/tcell/v2 v2.3.11 - github.com/gotk3/gotk3 v0.6.1-0.20210626103219-b183dad2e774 + github.com/diamondburned/gotk4/pkg v0.0.0-20220305042118-cfb7981704dc + github.com/gdamore/tcell/v2 v2.4.1-0.20220305021509-8b074c48d649 github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 - github.com/lithammer/fuzzysearch v1.1.2 - github.com/mattn/go-isatty v0.0.13 + github.com/lithammer/fuzzysearch v1.1.3 + github.com/mattn/go-isatty v0.0.14 + github.com/mattn/go-runewidth v0.0.14-0.20220218133654-a014e9691005 // indirect + go4.org/unsafe/assume-no-moving-gc v0.0.0-20211027215541-db492cf91b37 // indirect + golang.org/x/sys v0.0.0-20220307203707-22a9840ba4d7 // indirect + golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect ) diff --git a/go.sum b/go.sum index 76cfbdb..3ed384d 100644 --- a/go.sum +++ b/go.sum @@ -1,43 +1,55 @@ code.rocketnine.space/tslocum/cbind v0.1.5 h1:i6NkeLLNPNMS4NWNi3302Ay3zSU6MrqOT+yJskiodxE= code.rocketnine.space/tslocum/cbind v0.1.5/go.mod h1:LtfqJTzM7qhg88nAvNhx+VnTjZ0SXBJtxBObbfBWo/M= -code.rocketnine.space/tslocum/cview v1.5.6 h1:W0HJFIIgly3LzYoTitZIIaYDDqW0u/qmA0B6jWzw6R0= -code.rocketnine.space/tslocum/cview v1.5.6/go.mod h1:RogJMObbKuGiP8+9WsFsHpPeQQqgkCXgvTLxh7IH5eE= +code.rocketnine.space/tslocum/cview v1.5.7 h1:dUL6jyNp/ubUfeds7G7zq8R3sZY+He+sPGxu3Qn21tY= +code.rocketnine.space/tslocum/cview v1.5.7/go.mod h1:4Wx6exftTIbeRai3s0VVjzVaSNyHlXTg9eHd3s89v9Q= code.rocketnine.space/tslocum/desktop v0.1.6-0.20210710150012-8bd74b40a298 h1:tuG22JOMMVlMl+ofRGIJFCTwzs+CclO/XZh7qEPXnzk= code.rocketnine.space/tslocum/desktop v0.1.6-0.20210710150012-8bd74b40a298/go.mod h1:6IwP59rJ44vga/frr123meFdpWU0xMZlTq8gcOhVKGI= +github.com/diamondburned/gotk4/pkg v0.0.0-20220305042118-cfb7981704dc h1:huKiZ5uLa7CSX7zrpT+pXwQ7dHzyv3qHNqgvnsg1yNQ= +github.com/diamondburned/gotk4/pkg v0.0.0-20220305042118-cfb7981704dc/go.mod h1:dJ2gfR0gvBsGg4IteP8aMBq/U5Q9boDw0DP7kAjXTwM= github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko= github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= github.com/gdamore/tcell/v2 v2.2.0/go.mod h1:cTTuF84Dlj/RqmaCIV5p4w8uG1zWdk0SF6oBpwHp4fU= -github.com/gdamore/tcell/v2 v2.3.11 h1:ECO6WqHGbKZ3HrSL7bG/zArMCmLaNr5vcjjMVnLHpzc= -github.com/gdamore/tcell/v2 v2.3.11/go.mod h1:cTTuF84Dlj/RqmaCIV5p4w8uG1zWdk0SF6oBpwHp4fU= -github.com/gotk3/gotk3 v0.6.1-0.20210626103219-b183dad2e774 h1:IJZW/ruK8Z0nDlpJ4Qj4Ekm2mR39OR0/eFY1pVRaDbM= -github.com/gotk3/gotk3 v0.6.1-0.20210626103219-b183dad2e774/go.mod h1:/hqFpkNa9T3JgNAE2fLvCdov7c5bw//FHNZrZ3Uv9/Q= +github.com/gdamore/tcell/v2 v2.4.1-0.20210828201608-73703f7ed490/go.mod h1:Az6Jt+M5idSED2YPGtwnfJV0kXohgdCBPmHGSYc1r04= +github.com/gdamore/tcell/v2 v2.4.1-0.20220305021509-8b074c48d649 h1:JKXRFto1J+XqBGFex8v2nwF5JoLc9gGiwlTL2qrsj/M= +github.com/gdamore/tcell/v2 v2.4.1-0.20220305021509-8b074c48d649/go.mod h1:I8YJFI9gzgl4dHi9UlRDZosCW+jYkDA37AXmXvL51w4= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= -github.com/lithammer/fuzzysearch v1.1.2 h1:ePUtm14xKxbpCxozcFbIDRtvANxnVnE+RKpJUqkr2gA= -github.com/lithammer/fuzzysearch v1.1.2/go.mod h1:v6tYW/9kpfV6LNcweXdSjQsfCku/1M/oObmSox1fzP8= +github.com/lithammer/fuzzysearch v1.1.3 h1:+t5SevHLfi3IHcTx7LT3S+od4OcUmjzxD1xmnvtgG38= +github.com/lithammer/fuzzysearch v1.1.3/go.mod h1:1R1LRNk7yKid1BaQkmuLQaHruxcC4HmAH30Dh61Ih1Q= github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= -github.com/mattn/go-isatty v0.0.13 h1:qdl+GuBjcsKKDco5BsxPJlId98mSWNKqYA+Co0SC1yA= -github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= -github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.14-0.20210830053702-dc8fe66265af/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.14-0.20220218133654-a014e9691005 h1:m+o2nloTlmyKnsfIhjIEoNUAO2ABn7k1wINTWdx2wL4= +github.com/mattn/go-runewidth v0.0.14-0.20220218133654-a014e9691005/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20201222180813-1025295fd063/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20211027215541-db492cf91b37 h1:Tx9kY6yUkLge/pFG7IEMwDZy6CS2ajFc9TvQdPCW0uA= +go4.org/unsafe/assume-no-moving-gc v0.0.0-20211027215541-db492cf91b37/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210309040221-94ec62e08169/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211113001501-0c823b97ae02/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220307203707-22a9840ba4d7 h1:8IVLkfbr2cLhv0a/vKq4UFUcJym8RmDoDboxCFWEjYE= +golang.org/x/sys v0.0.0-20220307203707-22a9840ba4d7/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b h1:9zKuko04nR4gjZ4+DNjHqRlAJqbJETHwiNKDqTfOjfE= golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/pkg/gmenu/run_windows.go b/pkg/gmenu/run_windows.go deleted file mode 100644 index af01db6..0000000 --- a/pkg/gmenu/run_windows.go +++ /dev/null @@ -1,8 +0,0 @@ -// +build windows - -package gmenu - -func run(config *Config, runScript string, path string, waitUntilFinished, runInTerminal bool) error { - // TODO - return nil -}