directory/app/app.go
2025-03-22 13:47:16 +02:00

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