|
|
|
@ -278,17 +278,17 @@ func get_private_key(path string, generate bool) ed25519.PrivateKey {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func main_loop(client *pnyx.Client, window ncurses.Window, active *atomic.Bool, packet_chan chan pnyx.Payload, user_chan chan rune) {
|
|
|
|
|
max_y := ncurses.GetMaxY.Load()(window)
|
|
|
|
|
max_x := ncurses.GetMaxX.Load()(window)
|
|
|
|
|
titlebar := ncurses.NewWin.Load()(1, max_x, 0, 0)
|
|
|
|
|
channels := ncurses.NewWin.Load()(max_y - 1, max_x / 3, 1, 0)
|
|
|
|
|
body := ncurses.NewWin.Load()(max_y - 1, max_x * 2 / 3, 1, max_x / 3)
|
|
|
|
|
max_y := ncurses.GetMaxY(window)
|
|
|
|
|
max_x := ncurses.GetMaxX(window)
|
|
|
|
|
titlebar := ncurses.NewWin(1, max_x, 0, 0)
|
|
|
|
|
channels := ncurses.NewWin(max_y - 1, max_x / 3, 1, 0)
|
|
|
|
|
body := ncurses.NewWin(max_y - 1, max_x * 2 / 3, 1, max_x / 3)
|
|
|
|
|
|
|
|
|
|
server_name := client.Connection.RemoteAddr().String()
|
|
|
|
|
|
|
|
|
|
ncurses.MvWAddStr.Load()(titlebar, 0, 0, fmt.Sprintf("pnyx client %X:%X", client.Key.Public().(ed25519.PublicKey)[:2], client.Session.ID[:2]))
|
|
|
|
|
ncurses.MvWAddStr.Load()(body, 0, max_x-len(server_name), server_name)
|
|
|
|
|
ncurses.WRefresh.Load()(titlebar)
|
|
|
|
|
ncurses.MvWAddStr(titlebar, 0, 0, fmt.Sprintf("pnyx client %X:%X", client.Key.Public().(ed25519.PublicKey)[:2], client.Session.ID[:2]))
|
|
|
|
|
ncurses.MvWAddStr(body, 0, max_x-len(server_name), server_name)
|
|
|
|
|
ncurses.WRefresh(titlebar)
|
|
|
|
|
|
|
|
|
|
for active.Load() {
|
|
|
|
|
select {
|
|
|
|
@ -336,11 +336,11 @@ func main_loop(client *pnyx.Client, window ncurses.Window, active *atomic.Bool,
|
|
|
|
|
default:
|
|
|
|
|
}
|
|
|
|
|
case char := <-user_chan:
|
|
|
|
|
ncurses.MvWAddStr.Load()(body, 0, 0, string(char))
|
|
|
|
|
ncurses.WRefresh.Load()(body)
|
|
|
|
|
ncurses.MvWAddStr(body, 0, 0, string(char))
|
|
|
|
|
ncurses.WRefresh(body)
|
|
|
|
|
|
|
|
|
|
ncurses.MvWAddStr.Load()(channels, 0, 0, string(char))
|
|
|
|
|
ncurses.WRefresh.Load()(channels)
|
|
|
|
|
ncurses.MvWAddStr(channels, 0, 0, string(char))
|
|
|
|
|
ncurses.WRefresh(channels)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -435,12 +435,7 @@ func main() {
|
|
|
|
|
|
|
|
|
|
go process_mic(client)
|
|
|
|
|
|
|
|
|
|
err = ncurses.Init()
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic(err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
window := ncurses.InitScr.Load()()
|
|
|
|
|
window := ncurses.InitScr()
|
|
|
|
|
|
|
|
|
|
go ch_listen(&active, user_chan)
|
|
|
|
|
go main_loop(client, window, &active, packet_chan, user_chan)
|
|
|
|
@ -450,5 +445,5 @@ func main() {
|
|
|
|
|
|
|
|
|
|
<-os_sigs
|
|
|
|
|
active.Store(false)
|
|
|
|
|
ncurses.EndWin.Load()()
|
|
|
|
|
ncurses.EndWin()
|
|
|
|
|
}
|
|
|
|
|