Compare commits
3 Commits
8f1eacab87
...
0adaf9e90c
Author | SHA1 | Date | |
---|---|---|---|
|
0adaf9e90c | ||
|
fd79bceb79 | ||
|
c9aec29b0c |
@ -2,6 +2,7 @@ package app
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"os/user"
|
"os/user"
|
||||||
|
|
||||||
@ -10,7 +11,9 @@ import (
|
|||||||
"git.tilde.town/nbsp/welcome/ui"
|
"git.tilde.town/nbsp/welcome/ui"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Editor struct{}
|
type Editor struct {
|
||||||
|
loaded bool
|
||||||
|
}
|
||||||
|
|
||||||
func (view *Editor) Draw(state *ui.State) {
|
func (view *Editor) Draw(state *ui.State) {
|
||||||
win := state.Window()
|
win := state.Window()
|
||||||
@ -52,11 +55,16 @@ like before, when you're done, type `},
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (view *Editor) Event(state *ui.State, event vaxis.Event) (processed bool) {
|
func (view *Editor) Event(state *ui.State, event vaxis.Event) (processed bool) {
|
||||||
win := state.Window()
|
if view.loaded {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
view.loaded = true
|
||||||
|
|
||||||
|
win := state.Window().New(0, 16, 80, 80)
|
||||||
view.Draw(state)
|
view.Draw(state)
|
||||||
|
|
||||||
vt := term.New()
|
vt := term.New()
|
||||||
vt.Draw(win.New(0, 16, 80, 80))
|
vt.TERM = os.Getenv("TERM")
|
||||||
vt.Attach(state.PostEvent())
|
vt.Attach(state.PostEvent())
|
||||||
vt.Focus()
|
vt.Focus()
|
||||||
err := vt.Start(exec.Command("bash", "-l"))
|
err := vt.Start(exec.Command("bash", "-l"))
|
||||||
@ -76,15 +84,12 @@ func (view *Editor) Event(state *ui.State, event vaxis.Event) (processed bool) {
|
|||||||
return
|
return
|
||||||
case vaxis.Redraw:
|
case vaxis.Redraw:
|
||||||
view.Draw(state)
|
view.Draw(state)
|
||||||
vt.Draw(win.New(0, 16, 80, 80))
|
vt.Draw(win)
|
||||||
state.Render()
|
state.Render()
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
// for some reason vaxis doubles all events for Press/Release so this just ignores releases
|
vt.Update(ev)
|
||||||
if key, ok := ev.(vaxis.Key); ok && key.EventType == vaxis.EventPress {
|
|
||||||
vt.Update(ev)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"git.sr.ht/~rockorager/vaxis"
|
"git.sr.ht/~rockorager/vaxis"
|
||||||
"git.sr.ht/~rockorager/vaxis/widgets/textinput"
|
"git.sr.ht/~rockorager/vaxis/widgets/textinput"
|
||||||
"git.tilde.town/nbsp/welcome/ui"
|
"git.tilde.town/nbsp/welcome/ui"
|
||||||
@ -26,7 +30,23 @@ func (view *Settings) Event(state *ui.State, event vaxis.Event) (processed bool)
|
|||||||
}
|
}
|
||||||
case "Enter":
|
case "Enter":
|
||||||
if view.index == 3 {
|
if view.index == 3 {
|
||||||
// TODO: save settings
|
pronouns := strings.TrimSpace(view.inputs[0].String())
|
||||||
|
birthday := strings.TrimSpace(view.inputs[1].String())
|
||||||
|
timezone := strings.TrimSpace(view.inputs[2].String())
|
||||||
|
|
||||||
|
// XXX: this assumes nothing will break
|
||||||
|
if pronouns != "" {
|
||||||
|
os.WriteFile(".pronouns", []byte(pronouns), 0644)
|
||||||
|
}
|
||||||
|
if birthday != "" {
|
||||||
|
os.WriteFile(".birthday", []byte(pronouns), 0644)
|
||||||
|
}
|
||||||
|
if timezone != "" {
|
||||||
|
f, _ := os.OpenFile(".bashrc", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
||||||
|
f.Write([]byte(fmt.Sprintf("export TZ='%s'\n", timezone)))
|
||||||
|
f.Close()
|
||||||
|
}
|
||||||
|
|
||||||
ui.ViewChange <- &Shell{}
|
ui.ViewChange <- &Shell{}
|
||||||
}
|
}
|
||||||
if view.index < 3 {
|
if view.index < 3 {
|
||||||
|
17
app/shell.go
17
app/shell.go
@ -1,6 +1,7 @@
|
|||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
|
||||||
"git.sr.ht/~rockorager/vaxis"
|
"git.sr.ht/~rockorager/vaxis"
|
||||||
@ -8,7 +9,9 @@ import (
|
|||||||
"git.tilde.town/nbsp/welcome/ui"
|
"git.tilde.town/nbsp/welcome/ui"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Shell struct{}
|
type Shell struct {
|
||||||
|
loaded bool
|
||||||
|
}
|
||||||
|
|
||||||
func (view *Shell) Draw(state *ui.State) {
|
func (view *Shell) Draw(state *ui.State) {
|
||||||
win := state.Window()
|
win := state.Window()
|
||||||
@ -43,11 +46,16 @@ you're ready.`},
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (view *Shell) Event(state *ui.State, event vaxis.Event) (processed bool) {
|
func (view *Shell) Event(state *ui.State, event vaxis.Event) (processed bool) {
|
||||||
|
if view.loaded {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
view.loaded = true
|
||||||
|
|
||||||
win := state.Window().New(0, 16, 80, 80)
|
win := state.Window().New(0, 16, 80, 80)
|
||||||
view.Draw(state)
|
view.Draw(state)
|
||||||
|
|
||||||
vt := term.New()
|
vt := term.New()
|
||||||
vt.Draw(win)
|
vt.TERM = os.Getenv("TERM")
|
||||||
vt.Attach(state.PostEvent())
|
vt.Attach(state.PostEvent())
|
||||||
vt.Focus()
|
vt.Focus()
|
||||||
err := vt.Start(exec.Command("bash", "-l"))
|
err := vt.Start(exec.Command("bash", "-l"))
|
||||||
@ -72,10 +80,7 @@ func (view *Shell) Event(state *ui.State, event vaxis.Event) (processed bool) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
// for some reason vaxis doubles all events for Press/Release so this just ignores releases
|
vt.Update(ev)
|
||||||
if key, ok := ev.(vaxis.Key); ok && key.EventType == vaxis.EventPress {
|
|
||||||
vt.Update(ev)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
|
1
ui/ui.go
1
ui/ui.go
@ -25,7 +25,6 @@ type State struct {
|
|||||||
func New(view View) (state State, err error) {
|
func New(view View) (state State, err error) {
|
||||||
vx, err := vaxis.New(vaxis.Options{
|
vx, err := vaxis.New(vaxis.Options{
|
||||||
DisableMouse: true,
|
DisableMouse: true,
|
||||||
CSIuBitMask: vaxis.CSIuDisambiguate | vaxis.CSIuReportEvents | vaxis.CSIuAlternateKeys | vaxis.CSIuAllKeys | vaxis.CSIuAssociatedText,
|
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
Loading…
x
Reference in New Issue
Block a user