parent
ca559957f1
commit
e15f4e1a7c
|
@ -1,3 +1,6 @@
|
|||
0.2.3:
|
||||
- gmenu: Resolve search not always updating app list
|
||||
|
||||
0.2.2:
|
||||
- Resolve search not being case-insensitive
|
||||
- gmenu: Use library tview for terminal interface
|
||||
|
|
10
README.md
10
README.md
|
@ -5,6 +5,16 @@
|
|||
|
||||
Desktop application launcher
|
||||
|
||||
## Screenshots
|
||||
|
||||
### Console
|
||||
|
||||
 
|
||||
|
||||
### GUI
|
||||
|
||||
 
|
||||
|
||||
## Download
|
||||
|
||||
[**Download gmenu**](https://gmenu.rocketnine.space/download/?sort=name&order=desc) (Linux binaries are available)
|
||||
|
|
|
@ -31,7 +31,7 @@ func NewOptionsList(options []string) *OptionsList {
|
|||
options: options,
|
||||
}
|
||||
|
||||
opts.TextView = opts.SetDynamicColors(true).SetWordWrap(false)
|
||||
opts.TextView = opts.SetDynamicColors(true).SetWrap(true).SetWordWrap(false)
|
||||
|
||||
return &opts
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ func (r *OptionsList) Draw(screen tcell.Screen) {
|
|||
r.shown++
|
||||
}
|
||||
|
||||
r.TextView.SetText(b.String()).Highlight("gmenu").Draw(screen)
|
||||
r.TextView.SetText(b.String()).Highlight("gmenu").ScrollToBeginning().Draw(screen)
|
||||
}
|
||||
|
||||
func initGUI() (*tview.Application, error) {
|
||||
|
@ -98,6 +98,8 @@ func initGUI() (*tview.Application, error) {
|
|||
}
|
||||
|
||||
app = app.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
|
||||
defer app.QueueUpdateDraw(updateEntryInfo)
|
||||
|
||||
if event.Key() == tcell.KeyUp {
|
||||
if optionsList.origin > 0 && optionsList.selected == optionsList.origin {
|
||||
optionsList.origin--
|
||||
|
@ -106,8 +108,6 @@ func initGUI() (*tview.Application, error) {
|
|||
optionsList.selected--
|
||||
}
|
||||
event = nil
|
||||
updateEntryInfo()
|
||||
app.Draw()
|
||||
} else if event.Key() == tcell.KeyDown {
|
||||
if optionsList.selected < len(optionsList.options)-1 {
|
||||
optionsList.selected++
|
||||
|
@ -116,14 +116,10 @@ func initGUI() (*tview.Application, error) {
|
|||
}
|
||||
}
|
||||
event = nil
|
||||
updateEntryInfo()
|
||||
app.Draw()
|
||||
} else if event.Key() == tcell.KeyPgUp {
|
||||
if optionsList.origin == 0 {
|
||||
optionsList.selected = 0
|
||||
|
||||
updateEntryInfo()
|
||||
app.Draw()
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -133,8 +129,6 @@ func initGUI() (*tview.Application, error) {
|
|||
}
|
||||
optionsList.selected = optionsList.origin
|
||||
|
||||
updateEntryInfo()
|
||||
app.Draw()
|
||||
return nil
|
||||
} else if event.Key() == tcell.KeyPgDn {
|
||||
numEntries := len(gmenu.FilteredEntries)
|
||||
|
@ -142,8 +136,6 @@ func initGUI() (*tview.Application, error) {
|
|||
if optionsList.origin >= numEntries-optionsList.shown {
|
||||
optionsList.selected = numEntries - 1
|
||||
|
||||
updateEntryInfo()
|
||||
app.Draw()
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -153,8 +145,6 @@ func initGUI() (*tview.Application, error) {
|
|||
}
|
||||
optionsList.selected = optionsList.origin
|
||||
|
||||
updateEntryInfo()
|
||||
app.Draw()
|
||||
return nil
|
||||
} else if event.Key() == tcell.KeyEnter {
|
||||
err := listSelect()
|
||||
|
|
|
@ -15,7 +15,7 @@ func updateEntries(input string) {
|
|||
|
||||
optionsList.selected = 0
|
||||
optionsList.origin = 0
|
||||
defer updateEntryInfo()
|
||||
defer app.QueueUpdateDraw(updateEntryInfo)
|
||||
|
||||
optionsList.options = nil
|
||||
for _, entry := range gmenu.FilteredEntries {
|
||||
|
|
11
go.mod
11
go.mod
|
@ -4,12 +4,13 @@ go 1.12
|
|||
|
||||
require (
|
||||
git.sr.ht/~tslocum/desktop v0.1.1
|
||||
github.com/gdamore/tcell v1.1.2
|
||||
github.com/gotk3/gotk3 v0.0.0-20190827191254-95d4bac6fe1b
|
||||
github.com/gdamore/tcell v1.3.0
|
||||
github.com/gotk3/gotk3 v0.0.0-20191027191019-60cba67d4ea4
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
|
||||
github.com/lithammer/fuzzysearch v1.0.2
|
||||
github.com/mattn/go-isatty v0.0.9
|
||||
github.com/mattn/go-isatty v0.0.10
|
||||
github.com/mattn/go-runewidth v0.0.6 // indirect
|
||||
github.com/pkg/errors v0.8.1
|
||||
github.com/rivo/tview v0.0.0-20190829161255-f8bc69b90341
|
||||
golang.org/x/sys v0.0.0-20190927073244-c990c680b611 // indirect
|
||||
github.com/rivo/tview v0.0.0-20191018125527-685bf6da76c2
|
||||
golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd // indirect
|
||||
)
|
||||
|
|
33
go.sum
33
go.sum
|
@ -4,28 +4,35 @@ github.com/DATA-DOG/go-sqlmock v1.3.3 h1:CWUqKXe0s8A2z6qCgkP4Kru7wC11YoAnoupUKFD
|
|||
github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
|
||||
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 v1.1.2 h1:Afe8cU6SECC06UmvaJ55Jr3Eh0tz/ywLjqWYqjGZp3s=
|
||||
github.com/gdamore/tcell v1.1.2/go.mod h1:h3kq4HO9l2On+V9ed8w8ewqQEmGCSSHOgQ+2h8uzurE=
|
||||
github.com/gotk3/gotk3 v0.0.0-20190827191254-95d4bac6fe1b h1:/ExhbPkho7qhFp96P5JZq5GB2x3ApecVIy0pqPoF0DQ=
|
||||
github.com/gotk3/gotk3 v0.0.0-20190827191254-95d4bac6fe1b/go.mod h1:Eew3QBwAOBTrfFFDmsDE5wZWbcagBL1NUslj1GhRveo=
|
||||
github.com/gdamore/tcell v1.3.0 h1:r35w0JBADPZCVQijYebl6YMWWtHRqVEGt7kL2eBADRM=
|
||||
github.com/gdamore/tcell v1.3.0/go.mod h1:Hjvr+Ofd+gLglo7RYKxxnzCBmev3BzsS67MebKS4zMM=
|
||||
github.com/gotk3/gotk3 v0.0.0-20191027191019-60cba67d4ea4 h1:XKmosDfDUElDjCNdtc5SpEArZXi3hOStu0HEOO9fm4Q=
|
||||
github.com/gotk3/gotk3 v0.0.0-20191027191019-60cba67d4ea4/go.mod h1:Eew3QBwAOBTrfFFDmsDE5wZWbcagBL1NUslj1GhRveo=
|
||||
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.0.2 h1:AjCE2iwc5y+8K+h2nXVc0Pmrpjvu+JVqMgiZ0oakXDM=
|
||||
github.com/lithammer/fuzzysearch v1.0.2/go.mod h1:bvAJyokfCQ7Vknrd4Kgc+izmMrPj5CiBAu2t6rK1Kak=
|
||||
github.com/lucasb-eyer/go-colorful v1.0.2 h1:mCMFu6PgSozg9tDNMMK3g18oJBX7oYGrC09mS6CXfO4=
|
||||
github.com/lucasb-eyer/go-colorful v1.0.2/go.mod h1:0MS4r+7BZKSJ5mw4/S5MPN+qHFF1fYclkSPilDOKW0s=
|
||||
github.com/mattn/go-isatty v0.0.9 h1:d5US/mDsogSGW37IV293h//ZFaeajb69h+EHFsv2xGg=
|
||||
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
|
||||
github.com/mattn/go-isatty v0.0.10 h1:qxFzApOv4WsAL965uUPIsXzAKCZxN2p9UqdhFS4ZW10=
|
||||
github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
|
||||
github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y=
|
||||
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
||||
github.com/mattn/go-runewidth v0.0.6 h1:V2iyH+aX9C5fsYCpK60U8BYIvmhqxuOL3JZcqc1NB7k=
|
||||
github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
||||
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/rivo/tview v0.0.0-20190829161255-f8bc69b90341 h1:d2Z5U4d3fenPRFFweaMCogbXiRywM5kgYtu20/hol3M=
|
||||
github.com/rivo/tview v0.0.0-20190829161255-f8bc69b90341/go.mod h1:+rKjP5+h9HMwWRpAfhIkkQ9KE3m3Nz5rwn7YtUpwgqk=
|
||||
github.com/rivo/uniseg v0.0.0-20190513083848-b9f5b9457d44 h1:XKCbzPvK4/BbMXoMJOkYP2ANxiAEO0HM1xn6psSbXxY=
|
||||
github.com/rivo/uniseg v0.0.0-20190513083848-b9f5b9457d44/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190927073244-c990c680b611 h1:q9u40nxWT5zRClI/uU9dHCiYGottAg6Nzz4YUQyHxdA=
|
||||
golang.org/x/sys v0.0.0-20190927073244-c990c680b611/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
github.com/rivo/tview v0.0.0-20191018125527-685bf6da76c2 h1:GVXSfgXOMAeLvFH7IrpY3yYM8H3YekZEFcZ14q9gQXM=
|
||||
github.com/rivo/tview v0.0.0-20191018125527-685bf6da76c2/go.mod h1:/rBeY22VG2QprWnEqG57IBC8biVu3i0DOIjRLc9I8H0=
|
||||
github.com/rivo/uniseg v0.1.0 h1:+2KBaVoUmb9XzDsrx/Ct0W/EYOSFf/nWTauy++DprtY=
|
||||
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||
golang.org/x/sys v0.0.0-20190626150813-e07cf5db2756/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191018095205-727590c5006e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd h1:3x5uuvBgE6oaXJjCOvpCC1IpgJogqQ+PqGGU3ZxAgII=
|
||||
golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
|
|
Loading…
Reference in New Issue