- Notifications
You must be signed in to change notification settings - Fork42
A graphical terminal emulator for Linux using Fyne
License
fyne-io/terminal
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A terminal emulator using the Fyne toolkit, supports Linux, macOS, Windows and BSD.
Running on Linux with a custom zsh theme.
Running on macOS with a powerlevel10k zsh theme and classic style.
Running on Windows with PowerShell running inside.
Just use the go get command (you'll need a Go and C compiler installed first):
go install github.com/fyne-io/terminal/cmd/fyneterm@latest
To get the app installed alongside your other applications (with metadata, icons etc),use thefyne
tool, as illustrated below:
$ go get fyne.io/fyne/v2/cmd/fyne$ fyne get github.com/fyne-io/terminal/cmd/fyneterm
There are lots of great things that could be added to this app.Already planned is:
- Tabs
- Scroll-back
- Background and font/size customisation
- Split panels
You can also use this project as a library to create your ownterminal based applications, using the import path "github.com/fyne-io/terminal".
There are two modes, using the default shell or connecting to a remote shell.
To load a terminal widget and launch the current shell (works on macOS and Linux;on Windows, it always uses PowerShell) use theRunLocalShell
method after creatingaTerminal
, as follows:
// run new terminal and close app on terminal exit.t:=terminal.New()gofunc() {_=t.RunLocalShell()log.Printf("Terminal's shell exited with exit code: %d",t.ExitCode())a.Quit()}()// w is a fyne.Window created to hold the contentw.SetContent(t)w.ShowAndRun()
For example to open a terminal to an SSH connection that you have created:
// session is an *ssh.Session from golang.org/x/crypto/sshin,_:=session.StdinPipe()out,_:=session.StdoutPipe()gosession.Run("$SHELL || bash")// run new terminal and close app on terminal exit.t:=terminal.New()gofunc() {_=t.RunWithConnection(in,out)a.Quit()}()// OPTIONAL: dynamically resize the terminal sessionch:=make(chan terminal.Config)gofunc() {rows,cols:=uint(0),uint(0)for {config:=<-chifrows==config.Rows&&cols==config.Columns {continue}rows,cols=config.Rows,config.Columnssession.WindowChange(int(rows),int(cols))}}()t.AddListener(ch)// w is a fyne.Window created to hold the contentw.SetContent(t)w.ShowAndRun()
About
A graphical terminal emulator for Linux using Fyne
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.