43 lines
827 B
Go
43 lines
827 B
Go
package app
|
|
|
|
import (
|
|
"os"
|
|
|
|
"git.sr.ht/~rockorager/vaxis"
|
|
"git.tilde.town/nbsp/directory/ui"
|
|
)
|
|
|
|
type App struct {
|
|
users ui.List
|
|
}
|
|
|
|
func New() *App {
|
|
users := []string{"(home)"}
|
|
userDirs, _ := os.ReadDir("/home")
|
|
for _, user := range userDirs {
|
|
if user.IsDir() {
|
|
users = append(users, "~"+user.Name())
|
|
}
|
|
}
|
|
return &App{ui.NewList(users, 0)}
|
|
}
|
|
|
|
func (app *App) Event(state *ui.State, event vaxis.Event) {
|
|
if key, ok := event.(vaxis.Key); ok && key.EventType == vaxis.EventPress {
|
|
switch key.String() {
|
|
case "Ctrl+c", "Ctrl+d", "q":
|
|
close(ui.Quit)
|
|
case "Down", "j", "Ctrl+n":
|
|
app.users.Down()
|
|
case "Up", "k", "Ctrl+p":
|
|
app.users.Up()
|
|
case "End", "Shift+g":
|
|
app.users.End()
|
|
case "Home", "g":
|
|
app.users.Home()
|
|
}
|
|
}
|
|
|
|
app.users.Draw(state.Window().New(0, 0, 20, state.Window().Height))
|
|
}
|