---
date: "2020-03-13T00:00:00-08:00"
tags:
- blog
title: Imperfect iPad Apps
---
### They each have something wrong

This post is for explaining the pros and cons of a group of shell and shell-like iOS apps that I have explored on my iPad Pro.  Before going into details about the apps, I'm going to first explain how and why I ended up using the iPad Pro as my main device.

Despite running Linux as my main OS for years, I decided recently to switch to an iPad Pro as my daily driver after some issues with a Thinkpad T430 became too much.  The Thinkpad was running Debian Buster and had some hardware issues that started affecting the portability of the device, such as the backplate to the screen breaking at the hinge, making it difficult to open and close the lid; the latch for securing the extra drive in the ultrabay losing its ability to stay latched; the battery was unable to maintain a charge for much more than an hour.  These hardware issues were pretty minor, but they were also accompanied by a (nearly) complete data loss that may or may not have been associated with Nextcloud (I have no evidence of that, just a suspicion that I am unable to prove).  I had reached a point where I was considering a drastic change to my personal workflow.

The iPad Pro became a consideration after coming across multiple people using them as a live performing tool (Jakob Haq, Electronisounds, Dylan Paris, and more).  I did some research on how other people use an iPad as their main device and decided to make to make the switch myself.  One major hurdle to switching from a Linux device to an iPad is the lack of a shell.  I prefer using commandline programs to graphic programs, which I completely understand is antithetical to the iOS UX philosophy.  I still stuck with the switch because there are some talented developers who have brought the shell to iOS.  The apps I have tried are iSH, Termius, Blink.sh, a-Shell, iVim, and LibTerm.  I have also learned of OpenTerm, but never used it.

* [Jakob Haq's YouTube Channel](https://www.youtube.com/channel/UCZFPiLpzd4cKOsBS9CIu3x)
* [Electronisounds' YouTube Channel](https://www.youtube.com/channel/UCX1L0U_AaeJrmRVr8JhCq0)
* [Dylan Paris' YouTube Channel](https://www.youtube.com/channel/UCYicqa83y7EVsMLRuIQ4q6A)

## iSH

[Direct link](https://ish.app)

iSH is an amazing project bringing a real Linux distro to iOS.  It's essentially an x86 emulator running an Alpine Linux in an iOS app.  The app is only available (at the time of writing) in beta using Apple's TestFlight service.  While there are quite a few things that don't work in the app, most basic programs and functions do work (ssh, vim, unix tools, etc).  This app would solely meet my work needs except that the one and only issue with using iSH for any kinda of real work is the speed of the app.  Vim is incredibly slow with a noticeable latency between key presses and perceived output.  Tmux and screen has some display glitches, like the cursor being on top of the last character.  The developer seems to be addressing most of the issues with iSH, but at this time, it is noticably a beta project and some issues, like the latency, may not be addressable considering it's an x86 emulator running on an iPad.

## Termius

[Direct link](https://www.termius.com)

Termius is not a shell, but rather manages ssh connections.  As long as you have a network connection and a remote server, you can have a shell environment to work in, but of course those two things can be hard to come by.  Termuis follows a freemium model, which allows you to use most of the basic features of the app for free, but blocks premium features unless you pay a monthly fee.  The premium features are built around syncing your settings between devices through their server.  I am not particularly fond of cloud based services, nor monthly fees for software.

## Blink.sh

[Direct link](https://blink.sh)

Blink.sh would almost be perfect.  It's similar to Termius, in that it is only meant to manage remote connections.  I like it better than Termius, because it feels like you're in a real shell when you use it and it's only a one-time payment.  There are a few local commands you can run to manage files (it even has ed, the standard unix editor), but it doesn't work well, or at all, with files outside of it's iOS directory.

## a-Shell

[Direct link](https://holzschu.github.io/a-Shell_iOS)

a-Shell would almost be perfect (too).  It acts as a local shell on the iPad with basically the same commands available as Blink.sh, except ed is replaced with vim.  Sshing into a server with a-Shell isn't great though, with the display getting messed up anytime you run a curses-like app.  The feature that a-Shell offers over everything else is the ability to managed and edit any local iOS file.  Paired with Working Copy, a-Shell becomes very powerful.  That could be indicative of the iOS "There's an app for that" philosophy (which is a commoditized version of the Unix philosophy).  The two apps are pretty good at their intended purpose, but struggle beyond that.

## Working Copy

[Direct Link](https://workingcopyapp.com)

Working Copy is not a shell-like app, it's a git client for iOS.  Using git, it allows you to edit and sync your projects with a remote server.  It does have a built in text editor, but it's rather basic without any vim-like modal features that I'm accustomed to.  A-Shell is able to edit the files saved within Working Copy directly.  These two apps allow someone to work on files in a similar manner to a computer with a shell.

## iVim

[Direct link](https://github.com/terrychou/iVim)

I really wanted to integrate iVim into my iOS workflow, I really did.  It is fast, really fast compared to running vim in any of the other mentioned apps.  The issues with iVim is that it is awkward to use with Working Copy and I was not able to scp files to my server from iVim.  Everything that I tried to do took way too much to time to research whether iVim was capable and to test it out.

## LibTerm

[Direct link](https://libterm.app)

I did not spend much time with LibTerm, but the little bit I did work with it, I found it quite buggy.  By that time, I had already started working with Blink.sh + a-Shell + Working Copy and LibTerm did not offer anything over those three apps.

## OpenTerm

[Direct link](https://github.com/louisdh/openterm)

I have not tried out this app.  It costs $3.99 in the app store and since my work needs were met after paying for Blink.sh and Working Copy, I didn't see a reason to buy OpenTerm.  I may buy it down the line to see if I can consolidate my workflow, but not at this time.

After trying all of these apps, I ended up sticking with Blink.sh for remote connection management, Working Copy for automated remote syncing, and a-Shell for local file management.  These three apps together provide a work flow that is similar enough to a computer with a shell.
