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)) }