1
0
Fork 0
forked from Mirrors/gomuks
nyxmuks/tui/tui.go
2025-01-20 18:36:22 +02:00

65 lines
1.7 KiB
Go

// gomuks - A Matrix client written in Go.
// Copyright (C) 2024 Tulir Asokan
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
package tui
import (
"os"
"github.com/gdamore/tcell/v2"
"go.mau.fi/mauview"
"go.mau.fi/gomuks/pkg/gomuks"
)
type View string
// Allowed views in GomuksTUI
type GomuksTUI struct {
*gomuks.Gomuks
App *mauview.Application
loginView *LoginView
}
func New(gmx *gomuks.Gomuks) *GomuksTUI {
return &GomuksTUI{
Gomuks: gmx,
App: mauview.NewApplication(),
}
}
func init() {
mauview.Styles.PrimitiveBackgroundColor = tcell.ColorDefault
mauview.Styles.PrimaryTextColor = tcell.ColorDefault
mauview.Styles.BorderColor = tcell.ColorDefault
mauview.Styles.ContrastBackgroundColor = tcell.ColorDarkGreen
if tcellDB := os.Getenv("TCELLDB"); len(tcellDB) == 0 {
if info, err := os.Stat("/usr/share/tcell/database"); err == nil && info.IsDir() {
os.Setenv("TCELLDB", "/usr/share/tcell/database")
}
}
}
func (gt *GomuksTUI) Run() {
gt.App = mauview.NewApplication()
gt.App.SetRoot(gt.NewLoginView())
err := gt.App.Start()
if err != nil {
panic(err)
}
}