Hacker News new | past | comments | ask | show | jobs | submit login
Emacs on an iPad (andschwa.com)
138 points by rcarmo on Nov 24, 2022 | hide | past | favorite | 108 comments



I've done this (vps for emacs). My tuppenth worth:

- NoMachine with X works really well, especially over a VPN. Full linux desktop, great scaling and kb support

- Use mosh instead of ssh, especially if connecting over cellular, as it is tolerant of dropped connections

- Like the person who switched to an X230, I followed a similar path finally settling on a Microsoft Surface v7 which was £300 second hand. The hardware is fantastic, with a glorious screen and lovely typecover keyboard. Live in WSL and it could be a linux box. I leave the ipad behind now when I travel.

Having said that, even if it had to be handbuilt against a testflight account, it would be wonderful to have a native emacs app. Seems like the developers of hummingbird eXceed or blink might be clever enough to do that?

Although I went into the purchase knowing about Apple's walled garden, I really do resent the way good hardware has been artificially crippled. It feels like being treated like a child, I should be able to make informed decisions with my own hardware! I won't be buying another ipad unless things change up big time.


I skipped the iPad and settled on an HP Elite X2 G4 tablet which runs linux quite well, and am hoping either better support for newer Surface devices or other tablets (e.g. rog flow z13) improve.

My real reason for doing this was ergonomics: https://www.reddit.com/r/ErgoMobileComputers/comments/vzs8mm... , but vented my ipad frustrations for a while ( https://imgur.com/a/CQwApt8 , https://news.ycombinator.com/item?id=31648704 )

Gnome has really made strides in the past couple years of having something fairly tablet friendly.


I thought "NoMachine on X" was a joke or slang, but it turns out NoMachine is free remote desktop software (Linux, Mac, Windows, Raspberry Pi, ARM, Android, and IOS) [0]. Looks like they make money with enterprise sales. Thanks for the tip!

[0]: https://downloads.nomachine.com/


Why does NoMachine work better over a VPN?


It does autodiscovery of all no-machine capable devices on the LAN


Does the autodiscovery for NoMachine work on Wireguard VPNs as well?

I use, and love, Wireguard, but I think out of the box Wireguard does not support multicast. And I expect that NoMachine also depends on multicast to do its autodisovery. Probably with mDNS and DNS-SD.

Upon googling now, it does seem like some people have successfully been able to get multicast working over Wireguard. For example:

> Hey! Just in case you (or anyone else browsing this) still needs this, i've got avahi working over my wireguard client-to-site connection. I can access my home LAN computers using hostname.local from any VPN-connected device.

> I think the missing piece was adding 224.0.0.251/32 and ff02::fb/128 (multicast addresses) to allowed ips.

from https://www.reddit.com/r/WireGuard/comments/g80bxf/cant_get_...

Likewise, there seem to be some additional useful information relating to mDNS / Avahi on this issue on GitHub, for various situations:

https://github.com/lathiat/avahi/issues/262

And here is someone who got DLNA (which also uses multicast) working through site-to-site Wireguard VPN:

https://an0n-r0.medium.com/making-dlna-through-site-to-site-...


Termux on my $95 Kindle Fire is more useful than anything I’ve yet encountered on iPadOS simply because of the execrable keyboard options available on the iPad.

There are great prices on wonderful M1 iPads right now, and I love my MacBook Air, so I got this year’s iPad Air.

You must be joking.

After hours of futility, I am forced to accept that Apple still has no API for adding Control Escape arrow keys to keyboard apps.

While I can use the hard coded keyboard option in the great a-Shell app, I can’t customize it. And I can’t use its keyboard in Safari for online Visual Studio Code or Colab notebooks.

With Termux, I set up a keyboard via a simple text config file. Done. And for a general system keyboard, in a pinch I can use a the “Hacker Keyboard” keyboard app. It’s ugly but it works.

Please tell me I’m taking crazy pills and that there’s a keyboard app that solves this.

No, I can’t use a hardware external keyboard in this use case.

- https://termux.dev/en/

- https://holzschu.github.io/a-Shell_iOS/


Map esc to caps lock with your terminal emulator. That’s what I do.


+1. Blink does this great.


Thanks, that's possible.

But my real gripe is the lack of these keys in an onscreen keyboard that I could use in Safari.

Online, web-hosted VS Code (via GitHub dot-dev, in my case), and Jupyter notebooks via CoLab or local hosted -- they are nice to have, but the editor library in Jupyter seems to map each word of code in its own text field. You can't use the usual iOS/iPadOS touch editing features, it's impossible to select a line of code... And on and on.

It doesn't sound like it would be such a big deal but it's a show-stopper. "Type F1 for the Command Palette" -- aaargh!


A day after my rant:

I noticed that I still use Panic Software's "Coda" on my 10-year-old iPad 4, and the terminal, editor, and keyboard design choices are the best I've found for iOS.

And that said, I wanted to call out that on Android, the Termux environment is native, local Linux (userland on Android). I use it for SSH, sure, but I also use it for everything else. Last night I tried some Zsh, FORTRAN, GCC, and Python. All on-device. Performance on my cheap Kindle Fire HD is actually better experience than attempting to use a web browser. Android is old; newer versions may restrict Termux functionality.


The M1 on the Mac unintentionally killed iPad as laptop replacement for a lot of people.

Around 2015-2019, Macs were terrible. They overheated, theottled and had loud fans. At the same time, the iPad Pro was dead silent, lighter, faster and had better battery life.

Today, the M1 MacBook Air gets all those goodies and you get a nice keyboard and a capable OS. The battery life is also twice as long as an iPad Pro.

Apple needs to pull a rabbit out of the hat to pull the iPad ahead again.


Only problem is Macs are missing everything good about the iPad. No touch screen, no pen input, always 2+ lbs.

Apple doesn't need to pull a rabbit out of a hat they just need to stop artificially limiting what iPadOS can do. There's no reason the iPad can't run Emacs natively with a full stack of dev tools except Apple's rules. The $80 Fire Tablet I'm typing this on can (OK it's not exactly quick but $80...).


> stop artificially limiting what iPadOS can do

Why would they do that when it would remove the incentive for their customers to buy one of each?

Give the iPad range Mac features, and it'd cannibalize Macbook sales from the bottom up. Give the Macbook a touchscreen, 5G, and the ability to run iPadOS apps, and it'd cannibalize iPad Pro sales from the top down. Neither of these are in Apple's commercial best interests.


MacBooks can run iPad apps, it's just that most software vendors switch this option off in the App Store. But I am using a bunch of iPad apps on the Mac.

(E.g. search Eve Energy in the Mac App Store and the iPhone/iPad apps tab becomes visible.)


Have you seen high-end iPad price? For the same level of performance of their lowest macbook air config?


true. if i could get macos on an big ipad i would probably sell my macbook.


And if the iPad gets much more Mac-like, I might be done with it. I like the iPad for what it is and I like the Mac for what it is. I like that they are very different things and I hope it stays that way. I don't think they can combine them without ruining what makes each thing special.


yup, good point. i think they should just let us choose.


Maybe in a few years we'll have Asahi Linux on eyepads.


> they just need to stop artificially limiting what iPadOS can do

I wish they would add a touch screen and pen input to their laptops.


But then why would people buy an iPad? Everyone needs multiple devices! /s


Huh? I just purchased an iPad Air M1 as a laptop replacement. With stage manager supporting external displays as of iPadOS 16.2, an iPad really is just a laptop without a keyboard.

Combine it with a bluetooth keyboard and mouse, hook it up to an external display, and it's hard to distinguish from any other desktop computer. Remove everything, and it's the optimal size to consume books and video on the couch. Combine it with a Pen, it's perfect for photo editing or drawing. Connect it to your guitar or midi instrument, and it's perfect for making music.

Funny thing is, i'm starting to use the ipad as a keyboard alternative more and more, text dictation often feels more convenient than typing.

Sure, for programming you'll probably want to ssh into another machine (using blink, which also provides visual studio code on the ipad), but that's maybe 5% of my home use of a computer.


If you're just going to use another machine to do your work on, it doesn't sound like much of a replacement.


True, so for that 5% it's not a replacement, unless you do coding via ssh or a cloud IDE.


What programs / hardware do you use for connecting it to your guitar?


> Around 2015-2019, Macs were terrible. They overheated, theottled and had loud fans. At the same time, the iPad Pro was dead silent, lighter, faster and had better battery life.

This is more of a PEBKAC problem than you realize, iPads are only "faster" because they do a better job of managing background tasks.


No. The iPads of the time beat the Macs in performance and efficiency.


Apple was deliberately putting bad cooling into those laptops because they had other priorities I don't understand. So I suppose they could always make the cooling on their new laptops even worse, and then the iPad would pull "ahead".


Jony Ive was the problem. Many things have improved since he was effectively fired. Note that his position was axed, no designer will ever again wield the power and influence at Apple he abused.


But I am assured that Design is the key to everything! How will we be able to make things that humans can use, without Designers? At least, that's what Don Norman, ex-Apple, told me in the seminal book.


Ive was good as an executor of Jobs' vision. By himself, his designs were self-indulgent and putting form above function, the exact opposite of Dieter Rams' approach that he claims to draw inspiration from. That said, Apple cannot sustain its aura and profit margins with me-too design, going too far in the opposite direction.


> no designer will ever again wield the power and influence at Apple he abused.

Besides whoever is in charge of designing MacOS.


macOS plays second fiddle to iOS at Apple.

Ive was Chief Design Officer. Now check Apple's Leadership page (https://www.apple.com/leadership/). Design is nowhere to be found on it. It had temporarily been assigned to HR chief Deirdre O'Brien, no more, and Design co-chiefs Alan Dye and Evans Hankey report to the COO Jeff Williams, a.k.a. the Department of Everything Else. It's not a surprise both Dye and Hankey are leaving the company.

While I think Ive was mostly harmful to the company once the strong guiding hand of Steve Jobs that kept him on the straight and narrow went, it's not good to have this level of instability in the critical function of design either. Expect years of mediocre product design and stagnation ahead. On the plus side, no more butterfly keyboards, cables that fray if you look at them funny, or portless Macs either.


Sounds like you're taking a realistic stance here, so I won't tear you to shreds. Like you said, Apple's hardware is improving objectively so it's not a terrible thing. For years though, I've been more bothered by gimped software than gimped hardware.

Guess that means I shouldn't be in the Apple ecosystem, which is fine by me I suppose.


M1 Air is passively cooled. Still pretty great.


Oh don't worry, it's possible to make passive cooling worse.


Sure, but the current Air doesn't even have a proper heatsink, and still delivers a ton of performance with thermal throttling setting in quite late compared to what I would have expected. They're pretty much doing it badly on purpose and it's still really good.


The cooling on those machines was bed yes, but their Intel CPUs were also ran more ho than they had any right to. Good Windows laptops with the same CPUs didn’t overheat easily but would run their fans doing nothing and have their fans screaming when being pushed. Their battery life was also pretty abysmal, and that’s only started to improve meaningfully with the last 1-2 gems of x86 CPUs.


> Apple was deliberately putting bad cooling into those laptops because they had other priorities I don't understand

There’s a rumor that was because Intel promised every year 10nm chips, which they ultimately postponed every year. MacBooks chassis were designed for the promised thermal advantages which have never been delivered.


Title is misleading. Emacs is on a VPS not running natively on ipad


At some point I’ll stop falling for the click-bait. No emacs is a good portion of the reason my iPad Air collects dust. I wanted something portable to do my most critical work functions when traveling. I love the portability, and it supports most of what I need for work. I underestimated how important emacs was to my general productivity.


Agree. Installing emacs in a VPS and downloading a SSH client on iPad isn’t that interesting. I would expect more from a link in HN front page.


Probably wouldn't be allowed because of the app store rule against apps with embedded languages.


That rule was softened, so there are a bunch of apps like Pyto, Pythonista, Python2IDE, Swift Playgrounds (doesn't quite count since it's by Apple) that let you run code on the device.


To add to that there’s also scriptable for JS


I get what you're saying, but if your most advanced development examples are a Python interpreter and Swift tutorial then that's a sign that something else is holding them back.


Vim is on the app store, so I'm not sure what's holding Emacs back https://apps.apple.com/us/app/vim/id492668168


Emacs really isn’t allowed for the same reason TeX isn’t, everything needs to run from one binary. The single binary requirement of the App Store is surprisingly limiting.


Not sure what you're referring to. It's absolutely standard for iOS apps to load dynamic libraries that are bundled along with them. Additionally, Emacs itself doesn't consist of more than one executable.


Pretty much any article about programming on iPad should have that disclaimer.


I believe the iSH app[1] can run Emacs without jailbreaking the iPad. I use it a lot, but not for Emacs.

[1] https://github.com/ish-app/ish


I lose it every time I see the “A note on the JIT” section.

So a warning: Long-term exposure to this code may cause loss of sanity, nightmares about GAS macros and linker errors, or any number of other debilitating side effects. This code is known to the State of California to cause cancer, birth defects, and reproductive harm.

https://github.com/ish-app/ish#a-note-on-the-jit


Your comment made my week, I've been looking for a way to run Emacs (not remotely) on my iPad Pro since buying it in 2020. To confirm I just downloaded iSH and installed Emacs 27.2 (i586-alpine-linux-musl build) successfully. Now lets see what devilish compromises I need to make on keybindings..


I can't mentally get over cringing while using ish, thinking about how many emulated x86 calls are being made under the hood, wasting the incredible CPU in the iPad.

I tried emacs in it once and it was too slow to be usable - would be keen to hear if you get a performant setup.


As an alternative, using UTM with a lightweight linux distro might be more performant. https://www.youtube.com/watch?v=OJfRJhJznzM

Or just run alpine with openssh and ssh in locally through an iOS client. I'd be curious how running UTM/qemu continuously would affect battery life. Is it 10% or 50% less? 10% would be an acceptable trade off for me.


I would be pretty surprised if it was more performant.


How to handle alt key. Most even ish just give you ctrl key


Terminals don’t really have a concept of an alt key. Most map it to meta which you can get by tapping ⎋.


Sadly, this configuration is almost unusable for hard-core Emacs users, because you can't use extended key combinations (Super, Hyper, etc). For people who have been using Emacs for 25 years, being restricted to a narrow TTY is a non-starter.

I am still hoping that someone will develop a native Emacs version (willing to contribute to a bounty for that!).


It is possible to use Emacs effectively with just M-, C- keybindings (20+ years experience). Super (windows key) is for desktop manipulation, so no loss on iPad. No idea what is hyper--you likely need to have 40+ years of experience to start with the space cadet keyboard https://emacsredux.com/blog/2022/06/01/the-space-cadet-keybo...


I don't doubt it is — but my keyboard shortcuts that I use on all my machines involve multiple modifiers, and I can't work without those shortcuts.

Of course you can restrict yourself to a subset of shortcuts, but that's not the point of Emacs, isn't it?


Should any android people stroll by: the Termux app has a native emacs package, it even gobbled up spacemacs for me. I never really used it though because I don't have a tablet.

For org only users on ios: beorg is soo good. Miss it on android very much.


Orgzly is pretty good too, but perhaps not as nice.


I tried using Blink shell for a while and it was ok, but when my iPad screen broke I got a Thinkpad X280 as a replacement. For emacs, programming and a lot of other things it's way better. I've just spent some time in KiCAD this evening, I couldn't do that on an iPad. Plus if something breaks it's way easier to get parts, a new screen is under $100 and I can install it myself without any tools.


You can replace the screen with just your bare hands, not even a screwdriver required?


The front bezel is clipped in, it's quite hard to detach, but can be carefully removed, and then the screen just sits behind with a eDP connector. Quite a contrast to an iPad.


>>> So first off, you cannot run Emacs directly on an iPad as an app, but can certainly access something else which is running it

In comparison, I have been running Vim on iDevices (as native app) for over 7 years. Vim design of using letters insteads of Chords proved useful in the simple onscreen keyboards.


The reason Apple allows Vim and would not allow Emacs in the Store is very interesting to reflect about.


Why?


Two different licenses. They've had an issue with GPLv3 since it started to be the default license of most GNU coreutils and their other programs. That's why Bash was never updated for so long.


The App Store would not reject an app just because its source was under the GPL. It's the other way around: it's the FSF who says that Apple's terms don't allow full compliance with the GPL.


Yeah I think you are right.


It's really impressive what an iPad can do. But this setup requires you to always have a connection, and the author said that he had replaced his laptop with an iPad completely. What do you do if you're offline (or if reception is bad)?


The iPad in the setup described is just running a terminal with SSH. Emacs (and pretty much everything else described in the blog) is running on a remote server running Ubuntu (so I don't know why he even bothers to compile emacs from source).

"Impressive" is not the word I'd use for running a terminal with SSH. Especially since the iPad is likely several times more powerful than the remote Ubuntu server that is actually running emacs.


> It's really impressive what an iPad can do.

It is just accessing a VPS via ssh. That is not at all impressive, rather the opposite: you have to connect to another machine because the ipad just cannot do what you want. And you then still have to deal with keyboard issues....

And that is kind of a shame because the screen and form factor are both really nice.


A lot of companies are moving into development in cloud, for example GitHub. Which is a future for many use cases, and for which iPad is an ideal device to work with.

> And you then still have to deal with keyboard issues....

What kind of issues?


> and for which iPad is an ideal device to work with

But it's not, the opposite actually. Any kind of serious typing requires a proper keyboard. If you have to carry a tablet, which is essentially just a screen, and a keyboard, you might as well just take a laptop and gain the ability to take advantage of a general computing device.


A real keyboard is absolutely necessary for real work, as you say. I think what makes the iPad Pro attractive is that it can have a real, decent keyboard (and trackpad) that is optional depending on your momentary need.

Unless one flies business class, there is often not enough space between seats to comfortably use a traditional laptop. With a tablet, you can at least do something.

The other big thing is that iPad Pros have very high screen brightness. For working outside it's a big benefit, as most portable laptops don't get that bright. The M2 Air and the M* Pros do, but you can't just pull the screen off when you only need a screen.

The best of both worlds, imo, is to have an M2 Air and an iPad Pro. When you're at a desk to do real work, you get the full laptop benefit plus the big iPad Pro as a second monitor. When you're on the daily outing, you take either or depending on your expected need. But you do now have a $5000 setup, which is more than many people would like to spend for a little more flexibility.

If Apple hadn't done such a great job with the M* Air, it would be easier for me to consider some other vendors' 180 degree folding laptops. But the silence of my Air and the amazing battery life are hard to give up.


The iPad is not an ideal work device for most people.

Typing on a touchscreen is much slower than a keyboard.

Add a keyboard to your iPad, congratulations you've now got a laptop with half the features.

Cloud development sucks if you live far away from the datacenter due to latency. Also, if your internet connection goes down then you're unproductive until it comes back.


I’m doing all my development in the cloud for the last two years and never had any latency problems whatsoever.

And it’s not about feature comparison to a laptop, even with a keyboard as MacBook Air M2 is better and cheaper than iPad. But easy content consumption, taking notes, sketching, writing, and many others. It’s just more fun than a heavy laptop. But yes, it’s not for everyone as using it full-time requires a change in personal habits. There’s also not much pro apps, but for now you can produce videos, music, cad designs, web design (figma, adobe, serif), so it’s not so limiting as it was years ago.


When you say "development", do you mean writing and debugging code, tests, etc?

Because none of the activities you list afterwards are writing and debugging code, tests, etc.


If you do dev in the cloud, you might as well just get a Chromebook, since you're probably carrying a keyboard with the iPad anyway. And all the recent Chromebooks can also run Android and Linux apps.


The ones mentioned in the article under "Some keys that won’t work"


To replace or supplement remote, you can carry a little Raspberry Pi. This guy makes a nice video about it: https://www.youtube.com/watch?v=A3qn1nqw-Gw

I have previously setup a Hetzner server (EU) with openVPN and Code Server, and then I was able to really have the benefits of pretty secure dev environment that was always on, easily accessible, and powerful. Of course it required a connection to use, but the bandwidth requirements were low. Latency requirements were more important, but they weren't as harsh as if you were using a remote desktop.


I, for example, read Books on iPad when there’s no connection, but with a cellular version that isn’t common. Yet, having mosh connection inside Blink is a blessing exactly for that purpose as I’m always going back to my stuff on desktop.


From TFA:

you cannot run Emacs directly on an iPad as an app


I tried to do the vim on iPad over mosh thing. It was cool, but rarely worked well enough for anything more than a simple tinker-pad. I got it working on airplane wifi which itself was amusing but as far as getting anything done (even leisure-coding) it was total disappointment and frustration.

There are many things I like about it the iPad, particularly the focused modality of single-screen apps (split screen was also too finicky and cramped to be useful). It felt very productive. But make no mistake if you're reading this, an iPad is no substitute for a laptop. Don't waste 1000 bucks like I did to figure that out.


I use an iPad Pro 12.9 inch and a Magic Keyboard as my primary dev machine and I love it. I have large bare metal servers I can connect to where I run vim+tmux using Termius. I also have a desktop, MacBook Pro, and a Thinkpad so I actively choose to use the iPad. The beauty of the iPad is I can tote it around in a small bag everywhere, it has cellular, and when I’m not deving I can pull it off and watch movies, play games, draw using the best tablet out there.

My whole setup can also be used with emacs. I have an emacs config as well and have tested using Eglot etc - basically the same setup as what I have in Vim.

The real power move here is to stick to a terminal based workflow. GUIs lock you down to a machine and a platform. Using a terminal based editor, tmux, etc. allows you to be instantly portable, infinitely flexible, and allows you to work anywhere.

SSH is also the other power tool. I mean SSH is actually insane. If you understand SSH agent forwarding, port forwarding, proxy jumping, you can actually be anywhere with any keys you want, proxy dev as a prod environment, use services on any computer anywhere you want, it’s absolutely incredible what you can do with SSH.


It might be possible to run Emacs directly on iPad using iSH.

I run vim this way and love it.


I've tried to run Emacs this way and quickly gave up. There's just too many packages which don't work at all. Also, it's very, very slow. Finally, for it to be truly useful you need to be able to edit all the text files on your iPad with it and setting that up is either very finicky or doesn't work at all (looking at you, Dropbox).


You should try a-Shell if you want a native vim


This is slightly embarrassing to admit but when I went on my honeymoon I brought my iPad along so that I wouldn’t code. Still, we had enough relaxation time that at some point I just set up a $5 digital ocean machine in Europe and I was able to code just fine with a cool eMacs split screen setup and an external iPad keyboard.


This has been done for a while. I recommend MOSH (ssh over UDP) for a better experience


I've done this as well in the past - worked pretty well with Blink (and a bluetooth Thinkpad keyboard)! Ultimately I missed some functionality, mostly viewing images, which are essential to my workflow, and not available in the terminal. Unfortunately at the time there was no remote desktop tool available for iOS (not sure if one exists now) which would be able to display a GUI client on the iPad through X11 forwarding.


Not sure of Terminal emulator capabilities on Apple devices, but thanks to the Sixel standard [1] and a recent implementation in the form of libsixel [2], several applications, including emacs very much support image output in terminals.

[1] https://en.wikipedia.org/wiki/Sixel

[2] https://github.com/saitoha/libsixel


Just to note: Blink Shell comes with built in image support.


No way, the timing! Just received a company iPhone and iPad this month for internal work. Never had an Apple device before, so really happy someone tried this. I have meticulously maintained my .emacs to work in a TTY environment, with custom themes dependent on whether it's GUI emacs or not. (for buffer transparency to work properly) It's finally paying off.

Really happy someone figured this out!


Ish.app is very underrated, it runs a native shell offline without needing ssh or VPS etc. I use it a lot with tmux and vim to write my blog posts.

https://ish.app/


Author should consider replacing port forwarding with Tailscale.


Can you briefly share what's the workflow with Tailscale? I heard a lot about it but not really sure how it works.

I run a Wireguard VPN for some context


Is it possible to port Emacs to iOS? Did anyone try this?



Emacs? Finally, the iPad gets a powerful and flexible Operating System! /s


you mean, Emacs running on Ubuntu? boo


> So first off, you cannot run Emacs directly

Hmm, my device disagrees:

  File Edit Options Buffers Tools C Help          
  #include <stdio.h>
  
  int main() {
      printf("Hello, world!\n");
  }















  -UUU:**--F1  test.c         All L5     (C/*l Abb


What is "your device"? and how do you run Emacs on it, if you are talking about an iPad?


This is an iPhone, I was too lazy to get out of bed and use an iPad. It's running Emacs in iSH, a-Shell or similar can probably do it too.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: