Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tuzig/terminal7
A Next Generation Terminal running over WebRTC
https://github.com/tuzig/terminal7
Last synced: 3 months ago
JSON representation
A Next Generation Terminal running over WebRTC
- Host: GitHub
- URL: https://github.com/tuzig/terminal7
- Owner: tuzig
- License: gpl-3.0
- Created: 2020-04-19T05:51:39.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-05-28T15:12:36.000Z (9 months ago)
- Last Synced: 2024-05-28T23:59:24.936Z (9 months ago)
- Language: TypeScript
- Homepage: https://terminal7.dev
- Size: 42.1 MB
- Stars: 157
- Watchers: 7
- Forks: 20
- Open Issues: 33
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-github-repos - tuzig/terminal7 - A Multi Platform Terminal Emulator & Multiplexer Running over WebRTC with Touch First UI (TypeScript)
README
# Terminal7 - A touchable terminal multiplexer running over WebRTC
![]()
![Tests](https://github.com/tuzig/terminal7/actions/workflows/validate.yml/badge.svg)
![License](https://img.shields.io/badge/license-GPL-green)
![Platform](https://img.shields.io/badge/platform-web-blue)
![Languages](https://img.shields.io/github/languages/top/tuzig/terminal7)
![Closed
Issue](https://img.shields.io/github/issues-closed/tuzig/terminal7?color=A0A0A0)
![Open Issues](https://img.shields.io/github/issues/tuzig/terminal7)Terminal7 is a terminal that includes a terminal multiplexer made for modern
web clients and real time communications over WebRTC.
A reincaranation of screen and tmux, Terminal7 is a hybrid
app that designed for smart clients.The code here is in vanilla TypeSctipt, relying chiefly on the following projects:
- CapacitorJS for app packaging & plugins
- Xterm.js for terminal emulation
- noble-ed25519 for key generation
- pion.ly for the WebRTC backend
- Vite for packaging
- Vitest for testing
- Docker compose for acceptance tests
- Playwright for end-to-end tests
- MailHog for an SMRP test doubleFor networking on native clients, we support SSH as a fallback.
On the web, only WebRTC servers are supported.
Our WebRTC server is writtten in go and is based on
[pion/webrtc](https://github.com/pion/webrtc).
It supports both direct and relayed connections, and can be used with or without a TURN server.If you're having problems with your first connection, please refer to our
[troubleshooting guide](https://github.com/tuzig/terminal7/blob/master/docs/troubleshooting.md).## Installation
For web platforms, Terminal7 is packaged as a Progressive Web App (PWA) and can be installed from the browser.
Click [here](https://pwa.terminal7.dev) for the latest version.For tablers, you can get Terminal7 for free from the
[App Store](https://apps.apple.com/il/app/terminal7/id1532882447) or
[Google Play](https://play.google.com/store/apps/details?id=dev.terminal).## Installing the server
To connect from the browser you'll need the [webexec](https://github.com/tuzig/webexec) agent running.
webexec is an
open source WebRTC server written in go and based on [pion](https://pion.ly).
Terminal7 should offer to install it for you, but if it doesn't,
open TWR and run `install` to ensure your agent is up.If you that doesn't work you can install webexec using go:
```console
go install github.com/tuzig/webexec@latest
webexec start
```If you don't have go, you can use our line installer to download the binary for your system and start it:
```console
bash <(curl -sL https://get.webexec.sh)
```webexec will start an HTTP WHIP server on port 7777, waiting for the client to connect.
If pperbook user is set, webexec will also connect to peerbook.io so it can accept connections
even when behind-the-NAT.webexec's CLI has a growing set of commands, use `webexec` to get help on the current set.
## Clipboard integration
Terminal7 has a clipboard integration that works over WebRTC.
From the CLI you can:- `webexec copy < FILE` to get the file into the client's clipboard
- `webexec paste` to print rhe client's clipboard to stdoutIf no peer are actives, e.g. you're using a classic terminal, webexec will look for the tools:
- pbcopy, pbpaste on MacOS
- xclip, xsel on Linuxneovim integration will let you use use the `+` and `*` named buffer
to copy to and from the clipboard. Just 12 lines in your init.lua:```lua
vim.g.clipboard = {
name = 'webexec',
copy = {
["+"] = {'webexec', 'copy'},
["*"] = {'webexec', 'copy'},
},
paste = {
["+"] = {'webexec', 'paste'},
["*"] = {'webexec', 'paste'},
},
cache_enabled = true,
}
```When webexec is not install, neovim will try the default clipboard tools like xclip or pbcopy.
## Contributing
We are looking for contributors to help us improve Terminal7.
Please read our [contributing guide](./CONTRIBUTING.md) before rolling your sleeves.