Blink Mobile Shell for iOS (Mosh based)

Related tags

Logging blink
Overview

Blink Shell for iOS

Do Blink! Blink is the first professional, desktop-grade terminal for iOS that leverages the support of Mosh and SSH. Thus, we can unequivocally guarantee stable connections, lightning-fast speeds, and full configurations. It can and should be your all-day-long tool.

We did not create another terminal to fix your website on the go. Blink was built as a professional grade product from the onset. We started by analyzing what the must-haves were and we ended up grounding Blink on these three concepts:

  • Fast rendering: dmesg in your Unix server should be instantaneous. We can't wait even a second to render. We didn't need to reinvent the wheel to make this happen. We simply used Chromium's HTerm to ensure that rendering is perfect and fast, even with those special, tricky encodings.
  • Always on: Mosh transcends SSH's variability. Mosh overcomes the unstable and intermittent connectivity that we all associate with mobile connections. You can check your Safari without fear of having to restart the SSH connection. You can flawlessly jump from home, to the train, and then the office thanks to Mosh. Blink is rock-solid connected all the way. Mosh is readily available and can be easily installed on your server. Go to https://mosh.org.
  • Fully configurable: Blink embraces Bluetooth-coupled keyboards with gusto. Some like Caps as Esc on Vim, others Caps as Ctrl on Emacs. Blink champions them all. But there's more, because we want more. You can also add your own custom themes and fonts to Blink. During your always-on sessions, you're in your zone.

But, Blink is much more. Please read on:

  • You should command your terminal, not navigate it. Blink will jump you right into a friendly shell and it'll be clear to you how to roll.
  • The interface is straightforward. We dumped all menus and went full screen for your terminal.
  • Use swipe to move between your open connections, slide down to close them, and even pinch to zoom!
  • Configure your Blink connections by adding your own Hosts and RSA Encryption keys. Everything will look familiar and you get to work, fast!
  • We've incorporated SplitView, for those necessary Google searches and chats with coworkers.

For more information, please visit Blink Shell.

Additions:

Blink also contains a set of shell utilities, so you can add / remove files, list them, etc.

Specifically, the commands available (as of now) are:

  • cd, setenv, ls, touch, cp, rm, ln, mv, mkdir, rmdir, df, du, chksum, chmod, chflags, chgrp, stat, readlink, compress, uncompress, gzip, gunzip,

  • pwd, env, printenv, date, uname, id, groups, whoami, uptime

  • cat, grep, wc

  • curl (includes http, https, scp, sftp...), scp, sftp

  • tar

  • You can call commands individually, or use small scripts using python or lua. There is redirection (">", "<", "&>" ...), but no pipe.

All these commands are inside the ios_system.framework (precompiled, for facility). If you want to edit the source (to add more commands), see: https://github.com/holzschu/ios_system .

curl opens access to file transfers to and from your iPad (ftp, http, scp, sftp...). It uses the key management of BLINKSHELL (the keys you created with "config"). You can also specify keys with a path:

curl scp://host.name.edu/filename -o filename --key $SHARED/id_rsa --pass MyPassword 

You can also use the scp and sftp commands:

scp [email protected]:filename . 
sftp localFilename [email protected]:~/ 

scp and sftp are implemented through curl, by rewriting the arguments to follow the curl syntax. Pro: lighter implementation, smaller memory cost, less likely to have function name collisions. Con: some switches might not have exactly the same meaning.

Environment variables

In iOS, because of sandbox restrictions, you cannot write in the ~ directory, only in ~/Documents/, ~/Library/ and ~/tmp. Most Unix programs assume the configuration files are in $HOME. So either you redefine $HOME to ~/Documents/ or you set configuration variables (using setenv) to some other place.

I do this in Blink, inside the MCPSession.m file. The following variables are defined:

setenv PATH = $PATH:~/Library/bin:~/Documents/bin
setenv PYTHONHOME = $HOME/Library/
setenv SSH_HOME = $HOME/Documents/
setenv CURL_HOME = $HOME/Documents/
setenv HGRCPATH = $HOME/Documents/.hgrc/
setenv SSL_CERT_FILE = $HOME/Documents/cacert.pem

If you want to change them permanently, it's probably best to edit MCPSession.m.

Obtaining Blink

Blink is available now on the AppStore. Check it out!

If you would like to participate on its development, we would love to have you on board! There are two ways to collaborate with the project: you can download and build Blink yourself, or you can request an invitation to help us test future versions (on the raw branch). If you want to participate on the testing, follow and tweet us @BlinkShell about your usage scenarios. Invitations will be sent out in waves, please be patient if you do not receive yours immediately.

Bugs should be reported here on GitHub. Crash reports will be automatically reported back to us thanks to HockeyApp. If you have any questions or want to make sure we do not miss on an interesting feature, please send your suggestions to our Twitter account @BlinkShell. We would love to discuss them with you! Please do not use Twitter to report bugs.

We can't wait to receive your valuable feedback. Enjoy!

Build

CI

We made a ton easier to build and install Blink yourself on your iOS devices through XCode. We provide a precompiled package with all the libraries for the master branch. Here are the steps:

  1. Run the following command:
git clone --recursive https://github.com/blinksh/blink.git && \
    cd blink && ./get_frameworks.sh && \
    rm -rf Blink.xcodeproj/project.xcworkspace/xcshareddata/
  1. Change developer ids
cp template_setup.xcconfig developer_setup.xcconfig

edit developer_setup.xcconfig (change apple developer id etc).

  1. Open the project in XCode

3a. If you want to build without iCloud, Push Notificationa and/or Keychain sharing, Before doing anything else, go into the capabilities for the project and turn off Push Notifications, iCloud, and Keychain Sharing

  1. Connect the device you want to build for and select it in Product -> Destination
  2. Build and run on the device

This will download Blink and the associated frameworks: libssh2, OpenSSL, libmoshios, protobuf and ios_system.

Although this is the quickest method to get you up and running, if you would like to compile all libraries and resources yourself, refer to the BUILD.md file. Please let us know if you find any issues. Blink is a complex project with multiple low level dependencies and we are still looking for ways to simplify and automate the full compilation process.

Using Blink

Our UI is very straightforward and optimizes the experience on touch devices for the really important part, the terminal. You will jump right into a very simple shell, so you will know what to do. Here are a few more tricks:

  • Type 'help' to find information at the shell.
  • Use two fingers tap to create a new shell.
  • Move between shells by swiping your finger.
  • You can exit the session and get back to the shell to open a new connection.
  • Use pinch gesture to increase or reduce size of text. You can also use Cmd+ or Cmd- if using the keyboard.
  • Copy and Paste by selecting text o tapping the screen.
  • Run 'config' to setup your keys. Install them to a server through ssh-copy-id.
  • Ctrl and Alt modifiers at the SmartKeys bar allow for continuous presses, like in a real keyboard.
  • Use 3 finger tap to menu.

Changelog

View all changes

Attributions

  • Mosh was written by Keith Winstein, along with Anders Kaseorg, Quentin Smith, Richard Tibbetts, Keegan McAllister, and John Hood.
  • This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (https://www.openssl.org/).
  • Libssh2
  • Entypo pictograms by Bruce Daniel www.entypo.com.
Comments
  • Adding shell utilities to Blink

    Adding shell utilities to Blink

    I suggest an extension to Blink, giving basic shell commands inside the shell (cp, rm, mv...) This might help user in managing their private keys, or storing files locally.

    This is based on GNU coreutils, edited so they compile for iOS and work as functions instead of commands. For each command (e.g. "ls") I rename its main function (e.g. "ls_main"), and call this function from inside MCPSession.m

    The full list of commands available: cd ln ls cp mv rm mkdir rmdir touch pwd setenv env printenv id groups realpath uname

    For more functionalities, I suggest also compiling VimIOS and creating an App Group, so the two apps can share files. Once this is done, you can edit files in VimIOS and copy/delete them in Blink.

    Only a small set of the GNU coreutils are available: some of them don't make sense in a sandboxed environment (kill, nohup, nice, chown), others don't work in a function because of local variables (df), still others send their output to STDOUT_FILENO instead of stdout, which was too complicated to change (cat).

    RTT 
    opened by holzschu 112
  • Remapping Caps Lock to Ctrl does not work on iPadOS 13

    Remapping Caps Lock to Ctrl does not work on iPadOS 13

    I've got blink (latest from the raw branch) installed on my iPad running the developer preview of iPadOS 13 and the caps lock remapping no longer seems to work.

    I unfortunately am not familiar with the event handling of these key commands so I've not been able to figure out why things broke. keyCommands seems to be returning the correct set of UIKeyCommands (eg. alpha shift modifier + "a"), it just never seems to trigger ctrlSeq: or ctrSeqWithInput:.

    opened by nanzhong 90
  • Yubikey support through USB-C

    Yubikey support through USB-C

    On the new iPad Pro, there is a USB-C port. If it exposes HID, it might be possible to support Yubikeys and other similar devices (like smartcards).

    On a Mac or Linux, I use the GPG keys stored on a Yubikey for SSH authentication. This is very secure and works well. I would love to use the same setup on an iPad.

    Specifically, I'd like to have Blink with a built-in gpg-agent which supports smartcards and yubikeys, to get a setup like this: https://github.com/drduh/YubiKey-Guide

    RTT 
    opened by jwr 69
  • Blink Shell/Safari side by side - Hardware keyboard does not focus

    Blink Shell/Safari side by side - Hardware keyboard does not focus

    Steps to reproduce:

    1.) Open Blink shell and safari. Put them both in split screen mode.

    2.) Type something in blink shell. Tap on the safari window to “focus” to it. Start typing something in the address bar or something.

    What happens:

    Whatever I type on the safari window seems to still only register in Blink shell. It does not properly focus the keyboard to type only in the safari window.

    What should happen:

    Whatever I type while I am “focused” on the safari tab or any other app for that matter, should only register keystrokes and characters on that focused tab, not blink.

    Is there any workaround for this? It seems as though I have to use both apps full screen and just swipe between them to make this usable. Would be more convenient if I was able to split screen them.

    opened by nothingto 59
  • TF179: strange keyboard behavior when switching back to blink

    TF179: strange keyboard behavior when switching back to blink

    A handful of times today I've switched back to blink from safari or another program only to have blink act as if the "command" key - and possibly some other modifier key - is permanently pressed. That is, I can reproduce this when it happens by watching the blink config menu come up when I hit , inside a vim session. Some keys transfer ok; others (like o) do something else, but I'm not sure what exactly is being sent.

    This is also not 100% repeatable; I can't figure out when it happens until it happens. Advice on generating the appropriate logs/info for debugging would be greatly appreciated.

    RTT 
    opened by sbromberger 57
  • Last update broke it all

    Last update broke it all

    It worked a few hours ago. Then I did the big update and now the IP address cannot be found anymore, even if I set the up address instead of the host name in the settings. It asks me to accept the host public key and then just fails again with „Did not find remote IP address“.

    opened by thinkberg 55
  • Add ProxyCommand to ssh

    Add ProxyCommand to ssh

    Implement the ProxyCommand parameter to specify a command to use to connect to a server. This is useful (almost a requirement) in conjunction with Agent Forwarding and an ssh-agent #81.

    feature RTT ssh 
    opened by carloscabanero 52
  • Cannot Import SSH key

    Cannot Import SSH key

    Whenever I load the app, go to Keys -> Add -> Import from Clipboard the app, with no error, generates a new key.

    This confused me a for while.

    The key works in Terminus (it's a basic RSA key) and having no idea why it doesn't work it not helpful. The app should really tell me what's going on or error.

    To clarify, I have pasted the exact same contents of the clipboard into another app and it works fine. In fact said key works everywhere else other than Blink.

    RTT 
    opened by leepa 40
  • Add ssh-agent (or equivalent)

    Add ssh-agent (or equivalent)

    Blink 0.916.26

    Having to type in your passphrase repeatedly is a pain. It'd be nice if Blink had some sort of equivalent to ssh-agent so I could unlock my keys once when first required (or after some timeout) and they'd be used for all subsequent requests.

    bug feature RTT ssh 
    opened by joeshaw 40
  • mosh issues (ios12)

    mosh issues (ios12)

    There is many issues after I've upgraded to the ios 12

    I use blink daily, it is my main tool which I use 90% of my work time (and I currently working only on ipad pro)

    Since update to ios 12 there is connectivity issues.

    mosh often losing connection. Then sometimes it still keep it open as you can see from video, sometimes screen freezes without mosh notification (that blue ribbon at top);

    Very often after I close blink to tray and reopen it, window keep resized (again you can see that on video, it were full-screen);

    812f92ea-325e-4742-b77d-d49e14d7eccb

    opened by andrius 34
  • code command fails to open remote directory

    code command fails to open remote directory

    Checklist

    Configuration

    I have configured a host on my configuration. alias MiniM1.

    Describe the bug

    Connecting to it via ssh MiniM1 it works without issues. Now I would like to use the code CLI to remote into the machine.

    I run code MiniM1:~/git but I get the error:

      98   │ [info] Mar 19 2022, 18:59:00 FileSystem Registered mount 17 for xxx at blinksftp://MiniM1/~/git
      99   │ [info] Mar 19 2022, 18:59:05 CodeWebSocketServer Connection state update - preparing
     100   │ [info] Mar 19 2022, 18:59:05 CodeWebSocketServer Connection state update - ready
     101   │ [debug] Mar 19 2022, 18:59:05 Optional("minim1") stat /~/git
     102   │ [error] Mar 19 2022, 18:59:05 Connection ::1.49787 Error completing operation - connError(msg: "Socket error: No such file or directory")
     103   │ [info] Mar 19 2022, 18:59:20 FileSystem De-registering mount 17
    

    The folder ~/git Is in place in the remote. Also is very weird the way the string is built up. /~/git. I've tried all the combinations even using the full path but I did not find a solution.

    but I've found something interesting

    running the command

    scp .blink/blinkCode.log MiniM1:~/git
    

    it copies the files into the $HOME dir into the remote machine instead of ~/git

    the directory would be found

    bug RTT 
    opened by mazzy89 33
  • Feature Request: VS Code Server

    Feature Request: VS Code Server

    Will there be any way to use the new official code-server? It is using a secure tunnel provided by microsoft, so I am not even sure if there is anything you can do. I would rather not use it in the web app, however it is a progressive webapp.

    https://youtu.be/q2viJSYyKio

    opened by agluck91 1
  • Make facecam work in PIP

    Make facecam work in PIP

    Discussed in https://github.com/blinksh/blink/discussions/1661

    Originally posted by cslaviero December 16, 2022 Hi, I was wondering if facecam could work in PiP mode while Blink is in background. My usecase (not exclusive) would be that of a professor using Blink to teach programming and computer science stuff, and moving back and forth from drawing in some whiteboard app to Blink. iPadOS16 has enabled developers to keep the webcam enabled while in background (or so) : https://developer.apple.com/documentation/avfoundation/capture_setup/accessing_the_camera_while_multitasking .

    feature RTT 
    opened by yury 1
  • Add support for host key certificates

    Add support for host key certificates

    While blink supports SSH certificates on authentication keys. It appears to not support SSH certificates for host keys (known_hosts). With openssh you can place a CA in your known_hosts starting with @cert-authority <domain wildcard or *>

    I tried editing the .ssh/known_hosts file in blink to add the @cert-authority but it was ignored.

    Then any host with a certificate signed host key can login without having the specific host key in the known_hosts, and without the 'cache host key' prompt. All explained in detail at https://goteleport.com/blog/how-to-ssh-properly/

    bug 
    opened by erbenson 0
  • Both the iOs menu and the VsCode menu are popped up when right click.

    Both the iOs menu and the VsCode menu are popped up when right click.

    Checklist

    • [x] Using latest version on the App Store
    • [x] Read the docs
    • [x] Searched for existing GitHub issues There is no existing issues related to the right click behavior by far I searched.

    Configuration

    Default configuration.

    Describe the bug

    What I did: right click on VsCode editor. Both the iOs menu and the VsCode menu are popped up.

    Only the VsCode menu should be popped up.

    image

    I wonder could we some how implement different behavior for touch mode and the keyboard mode? For touch mode, there should be the system’s right click menu; while for the keyboard and mouse mode, there should be the VsCode’s right click menu.

    Please kindly advise!

    Thank you very much and have a great day!

    bug 
    opened by limerick1718 0
  • Osc52 not working in Code Server

    Osc52 not working in Code Server

    I’m using code-server with blink, and enjoying the experience. I mainly use tmux as my code-server profile, but osc52 doesn’t work in that way. However, osc52 works when I’m in ssh session. Can you please help me solve the problem? It’s the one last problem left for my perfect env.

    Problem reproduction:

    1. Connect to code-server in blink (in my case, $ code https://my-domain.com my-domain.com directs to the server)
    2. In code-server integrated terminal, open tmux session ($ tmux new -s anysession)
    3. Copy some text by following steps Tips&Tricks
    4. Nothing happens

    Working situation:

    1. Connect to the server with ssh ($ ssh my-server-host)
    2. In ssh session, open tmux session
    3. Copy some text by the following steps
    4. Selected texts are copied to the local(iPad) clipboard.

    Any suggestions will be appreciated, Thanks.

    opened by ohjoonhee 0
Owner
Blink Shell
Mobile Terminal for iOS
Blink Shell
SecFit (Secure Fitness) is a hybrid mobile application for fitness logging.

SecFit SecFit (Secure Fitness) is a hybrid mobile application for fitness logging. Deploy with Docker Prerequisites: Docker Git Windows hosts must use

Erik Turøy Midtun 0 Oct 22, 2021
CleanroomLogger provides an extensible Swift-based logging API that is simple, lightweight and performant

CleanroomLogger CleanroomLogger provides an extensible Swift-based logging API that is simple, lightweight and performant. The API provided by Cleanro

null 1.3k Dec 8, 2022
A Swift-based API for reading from & writing to the Apple System Log (more commonly known somewhat inaccurately as "the console")

CleanroomASL Notice: CleanroomASL is no longer supported The Apple System Log facility has been deprecated by Apple. As a result, we've deprecated Cle

Gilt Tech 62 Jan 29, 2022
📱💬🚦 TinyConsole is a micro-console that can help you log and display information inside an iOS application, where having a connection to a development computer is not possible.

TinyConsole TinyConsole is a tiny log console to display information while using your iOS app and written in Swift. Usage Wrap your Main ViewControlle

Devran Cosmo Uenal 2k Jan 3, 2023
Shows your current framerate (fps) in the status bar of your iOS app

WatchdogInspector Shows your current framerate (fps) in the status bar of your iOS app Be a good citizen! Don't block your main thread! WatchdogInspec

Christian Menschel 510 Nov 24, 2022
Customizable Console UI overlay with debug log on top of your iOS App

AEConsole Customizable Console UI overlay with debug log on top of your iOS App AEConsole is built on top of AELog, so you should probably see that fi

Marko Tadić 142 Dec 21, 2022
TraceLog is a highly configurable, flexible, portable, and simple to use debug logging system for Swift and Objective-C applications running on Linux, macOS, iOS, watchOS, and tvOS.

Please star this github repository to stay up to date. TraceLog Introduction TraceLog is a highly configurable, flexible, portable, and simple to use

Tony Stone 52 Oct 28, 2022
🍯 Awesome log aggregator for iOS

?? Awesome log aggregator for iOS

Cookpad 204 Oct 24, 2022
In-App iOS Debugging Tool With Enhanced Logging, Networking Info, Crash reporting And More.

The debugger tool for iOS developer. Display logs, network request, device informations, crash logs while using the app. Easy accessible with its bubble head button ?? . Easy to integrate in any apps, to handle development or testing apps easier. First version, there is plenty of room for improvement.

Remi ROBERT 1.8k Dec 29, 2022
Monitor and terminate/throttle CPU hogging processes in iOS

Vedette Monitor and terminate/throttle CPU hogging processes in iOS Vedette is a CPU usage monitoring tweak for processes in iOS like apps and daemons

null 13 Dec 22, 2022
A fast & simple, yet powerful & flexible logging framework for Mac and iOS

CocoaLumberjack CocoaLumberjack is a fast & simple, yet powerful & flexible logging framework for macOS, iOS, tvOS and watchOS. How to get started Fir

null 12.9k Jan 9, 2023
Elegant and extensive logging facility for OS X & iOS (includes database, Telnet and HTTP servers)

Overview XLFacility, which stands for Extensive Logging Facility, is an elegant and powerful logging facility for OS X & iOS. It was written from scra

Pierre-Olivier Latour 315 Sep 7, 2022
A Simple iOS Testing Framework

LumberMill Stupidly Simple Logging for iOS. LumberMill is a simple logging library for iOS 10 and Swift 3.0. It allows users to Log files with 5 diffe

UBC Launch Pad 2 Nov 2, 2017
Easy to use and lightweight logger for iOS, macOS, tvOS, watchOS and Linux in Swift.

Lighty Easy to use and lightweight logger for iOS, macOS, tvOS, watchOS and Linux in Swift. Screenshots Requirements Lighty Version Minimum iOS Target

Abdullah Selek 51 Dec 21, 2022
JustLog brings logging on iOS to the next level. It supports console, file and remote Logstash logging via TCP socket with no effort. Support for logz.io available.

JustLog JustLog takes logging on iOS to the next level. It supports console, file and remote Logstash logging via TCP socket with no effort. Support f

Just Eat 509 Dec 10, 2022
Twitter Logging Service is a robust and performant logging framework for iOS clients

Twitter Logging Service Background Twitter created a framework for logging in order to fulfill the following requirements: fast (no blocking the main

Twitter 290 Nov 15, 2022
Simple network activity logger for iOS

Reqres is a simple library for logging all requests and responses in your app. It supports Alamofire and also requests made via native NSURLSession. ⬆

Ackee 85 Aug 21, 2022
A network logger for iOS and macOS projects.

OkLog for iOS and macOS OkLog-Swift is a network logger written in Swift highly inspired by simonpercic's original OkLog implementation to be used in

Diego Trevisan Lara 18 Dec 24, 2021
Stock tradings Logger app for iOS

Stock Logger Contributor: Name: Prof. Darren Takaki Author: Name: Ibrahim (Wusiman Yibulayin) Student ID: 0728356 Table of contents Description Gettin

null 2 Jul 28, 2022