You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Go to file
Matthew Strasiotto 2cf0d63ef0 Use nerd font patched Source Code Pro as default font for better rendering of glyphs (elisescu/tty-server#16)
Taken from https://github.com/elisescu/tty-server/pull/16

This was applied to the now defunct tty-server project, but the changes
were never moved accross to the hosting functionality given by this
project.

Changes made to new patch (these changes were commited & squashed):

* Update webpack font publicPath to relative
* Update paths to source files within patch
* Move fonts to CDN, and reference font stylesheet via external `<style>
tag`
* Remove actual font files from project (they're heavyweight)
* Remove introduced frontend dependencies from package.json, package-lock.json, & webpack.config.js
  as per review [comment](https://github.com/elisescu/tty-share/pull/26#discussion_r546345850)
  & [comment](https://github.com/elisescu/tty-share/pull/26#discussion_r546345899).
  * These were required to bundle/serve the font assets, and are now
  redundant as these assets are fetched externally.

Changes made in original PR:

Patch taken from this commit, paths updated & conflicts fixed

* Squashed commit of the following ( Squash performed for tty-server#16 ):

(Done for a cleaner merge)

commit 3f2ef96c66a23a6afe043ccc54a4911373eec730
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Fri Sep 25 05:23:23 2020 +0000

    Completely remove devDependencies

commit 5b7b34c86c8faec9cc99c2f6f548f650b43878f5
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Fri Sep 25 05:22:05 2020 +0000

    Change install deps from dev to production

commit 2b23f00d7d621df32b9c00a776d3bf176aba2d31
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Fri Sep 25 05:08:30 2020 +0000

    Oops add more detail to Sauce Code Pro provenance

commit 56696b2bcbc9594bee0bb39f155b7024456b8ea0
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Fri Sep 25 05:07:54 2020 +0000

    Acknowledge SauceCodePro provenence/license

commit bfb93f49826843f2c4f0e2a8325cc660b272f41c
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Fri Sep 25 05:00:53 2020 +0000

    Revert "Regen assets_bundle.go"

    This reverts commit 51f189421b26078367c8354de6ee0a43e3def32b.

    This is because I don't want this diff in the squash just yet

commit ac15b25af6270ff22a43281639f3870b572c243b
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Fri Sep 25 04:57:49 2020 +0000

    Resolve unnecessary diffs

commit 8a274365dcfb83952ab211e6fd185701ad0b8649
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Fri Sep 25 04:50:07 2020 +0000

    Add some fallback fonts if SauceCodePro is loading

commit 8ff2901bc79a0d3eec452f5a945ec5d3bb6a0cab
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Fri Sep 25 04:30:36 2020 +0000

    Remove SO comment ( wasnt relevant )

commit aa29bf232e3faf3c277df2ad5b62d33405d79604
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Fri Sep 25 04:29:47 2020 +0000

    Finally fix font pathing

commit 86a5ec20cdf8f98b57854849a29d047387e64a4f
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 24 10:38:48 2020 +0000

    Use publicPath ?

commit d225edb5f9c8e5e8ddbbe7d2de38ba0703b61995
Merge: 492a835 81295b8
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 24 10:28:19 2020 +0000

    Merge branch 'fonts' of https://github.com/mstr3336/tty-server into fonts

commit 492a83589d672c3922a8bdf94813af7df096a5ea
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 24 10:26:59 2020 +0000

    Comment stack overflow link in webpack config

commit 81295b8689f218f695a6e214cb4f2d7d1f31b269
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 24 20:26:22 2020 +1000

    Move stuff to static i guess?

commit a3a2238d3548f95dc9ddcf71d18f90f8f16f0c74
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 24 19:49:58 2020 +1000

    Specify esmodule false for font loader

commit be7cc94ade9bd7e8d247148ac8f09111899c677e
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 24 19:39:03 2020 +1000

    Hopefully make webpack load fonts?

commit 97e76cee0be5d29fa796a7fb239410b1d915dd98
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 24 19:31:28 2020 +1000

    Add file-loader npm module

commit 913ce076fb41146f37a98296fbdb8cee5b14d044
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 24 19:25:40 2020 +1000

    Change font setting in tty-reciever.ts to new font

commit 2387c0132b5fb4f61d7a7b3f3fa70d0b6f07c2b4
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 24 19:24:44 2020 +1000

    Add nerd font rules

commit 622d834bf9f0025ea3c03380e904a1a7c9ec5147
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 24 19:23:43 2020 +1000

    Fix format spec for fonts

commit 6df46eacf7da99ad2eba2c56ad8d36209bdd616c
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 24 19:20:50 2020 +1000

    Finish script for building stylesheet

commit e47d0de28b7becc2f16d6ba4814fd1307282710f
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 24 19:15:58 2020 +1000

    Add python script for building css

commit b38526cca7eda401ff49a42f2646bde4fe64c841
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 24 18:35:54 2020 +1000

    Remove _Nerd_Font suffix

commit cfd461ad7e331b1a25894c1513197c422b338422
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 24 18:34:40 2020 +1000

    Remove _Complete_Mono_Windows_Compatible suffix from new fonts

commit 2333f1bf61e0a2672e87f2b5687bf179f41832b2
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 24 18:28:48 2020 +1000

    Add sauce code pro fonts from nerdfonts

commit 778f2194c975a7fdd99dda4ab33eba8864420933
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 17 22:20:32 2020 +1000

    Remove unnessary css rule

commit c86e17f9ed55cf0901a81133c30d8c65a5a4fc52
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 17 12:11:44 2020 +0000

    Remove vagrantfile for clean feature branch

commit 51f189421b26078367c8354de6ee0a43e3def32b
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 17 12:07:03 2020 +0000

    Regen assets_bundle.go

commit 3e0462604b49af18df1f52c0129ea177db74302e
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 17 12:06:39 2020 +0000

    Set the fontFamily of the tty-reciever to SourceCodePro

commit cd06e4b0135ce73a4469ed4f7c06e7494bf5a0b7
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 17 12:04:18 2020 +0000

    Rename font family string for source code pro

commit 87a50edcafb35ef5363d0048bf48e14d4ba91266
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 17 20:46:07 2020 +1000

    Update css to include source code pro for font family

commit a036043573330da5d8792416543570c0204e3f38
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 17 19:59:51 2020 +1000

    Finally fixed env escapes

commit ed7dc41c466ad803ca00358531c67d0848fce7f5
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 17 19:24:27 2020 +1000

    Fix heredoc

commit a9ad5583162430e98e6b821871b64e2fd3ec4bf5
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 17 18:56:25 2020 +1000

    Add serve script to vagrantfile

commit 433353c70f964ea1749cfb316e7ffe191a432fc3
Author: Matthew Strasiotto <mstr3336@uni.sydney.edu.au>
Date:   Thu Sep 17 18:33:11 2020 +1000

    added vagrantfile

* Regen server/frontend/package-lock.json after merging upstream into feature
3 years ago
doc Update the documentation for this new architecture 4 years ago
proxy Log improvements - fixup in the other one 4 years ago
scripts Switch from `dep` to `go mod` deps management 4 years ago
server Use nerd font patched Source Code Pro as default font for better rendering of glyphs (elisescu/tty-server#16) 3 years ago
vendor Add support for detaching shortcut in client mode 4 years ago
.dockerignore Add a Dockerfile to build and run tty-share easily inside 4 years ago
.gitignore Add the forgotten folder with the frontend js code 4 years ago
.travis.yml Update go to 1.14 on travis builds 4 years ago
Dockerfile Add a Dockerfile to build and run tty-share easily inside 4 years ago
LICENSE Add a LICENCE file 5 years ago
README.md Update the documentation for this new architecture 4 years ago
client.go When local window is too small, ignore key presses 4 years ago
go.mod Add support for detaching shortcut in client mode 4 years ago
go.sum Add support for detaching shortcut in client mode 4 years ago
main.go Add several TTY_SHARE_* session environment variables 3 years ago
pty_master.go Add several TTY_SHARE_* session environment variables 3 years ago
rw_combiner.go Log improvements - fixup in the other one 4 years ago

README.md

Build Status

tty-share

tty-share is a very simple tool used to share your Linux/OSX terminal over the Internet. It is written in GO, results in a static cross-platform binary with no dependencies, and therefore will also work on your Raspberry Pi.

The remote participant needs not setup, and they can join the session from the browser or from the terminal (tty-share <secret URL>). The session can be shared either over the Internet, or only in the local network. When sharing it over the Internet (outside your NAT), tty-share will connect to proxy server that will mediate the communication between the participants. An instance of this server runs at tty-share.com, but you can run your own.

Demos

Local network session demo

Public session demo

Join a session from another terminal demo

Installing and running

Docker

If you only want to try it out, there's a Docker image you can use:

docker run -it elisescu/tty-share --public

Brew

If you are on OSX and use brew, then you can simply do a brew install tty-share.

Binary releases

Otherwise, download the latest tty-share binary release, and run it:

Running it

~ $ tty-share --public
public session: https://on.tty-share.com/s/L8d2ECvHLhU8CXEBaEF5WKV8O3jsZkS5sXwG1__--2_jnFSlGonzXBe0qxd7tZeRvQM/
local session: http://localhost:8000/s/local/
Press Enter to continue!

~ $

Sessions can be created as read only, with the --readonly flag. See --help for more.

Join a session

You can join a session by opening the session URLs in the browser, or with another tty-share command:

~ $ tty-share https://on.tty-share.com/s/L8d2ECvHLhU8CXEBaEF5WKV8O3jsZkS5sXwG1__--2_jnFSlGonzXBe0qxd7tZeRvQM/

Building

Simply run

go get github.com/elisescu/tty-share

The frontend code (the code that runs in the browser session) lives under server/frontend, and it is compiled into server/assets_bundle.go go file, committed to this git repo. To rebuild this bundle of web resources, make sure you have node and npm installed, and then run: make -C server frontend. Unless you change the browser/frontend code, you don't need to do this - the code is already precompiled and bundled in assets_bundle.go.

For cross-compilation you can use the GO building environment variables. For example, to build the tty-share for raspberrypi, you can do GOOS=linux GOARCH=arm GOARM=6 go build (check your raspberrypi arch with uname -a).

Security

tty-share connects over a TLS connection to the server, which uses a proxy for the SSL termination, and the browser terminal is served over HTTPS. The communication on both sides is encrypted and secured, in the same way as other similar tools are doing it (e.g. tmate, VSC, etc).

However, end-to-end encryption is on the TODO list. Otherwise, if you don't trust my tty-proxy installation, you can run your own.

Similar solutions

VSC (Visual Studio Code) Live Share

I've tried Visual Studio Code sharing, and it seems to work relatively well. One big advantage is that both persons in the session can write code, and navigate independently of each other. It also supports terminal sharing.

However, the two disadvantages with this tool are the need of logging in with a Github (or Microsoft) account, and having to install Visual Studio Code on the remote side too. I don't want to force the remote person to install VSC just for them to get access to a terminal session. Visual Studio Code might be popular in the web development circles, but it is not popular in the other development corners.

tmate.io

This is a great tool, and I used it quite a few times before. At the time I started my project, tmate.io didn't have the option to join the session from the browser, and one had to use ssh. In most cases, ssh is not a problem at all - in fact it's even preferred, but there are cases when you just don't have easy access to an ssh client, e.g.: joining from a Windows machine, or from your smartphone. In the meantime, the project added some support for joining a terminal session in the browser too.

Perhaps one downside with tmate is that it comes with quite a few dependencies which can make your life complicated if you want to compile it for ARM, for example. Running it on a raspberry pi might not be as simple as you want it, unless you use Debian.

Credits