content/blog/2024-07-11-emacs-on-ipad.org

0b2895a90c7751ce06e4b26d4db41005ea2f40a9
cleberg.net/content/blog/2024-07-11-emacs-on-ipad.org rendered · source · history · blame · raw

67 lines · 2630 bytes

Installation and Usage Guide for Running Emacs Natively on Apple Silicon iPad

This post describes the process to install and use Emacs on the iPad Air 13-inch (M2). The iPad used in this post is running iPadOS 17.6.

Shell Application

In order to use Emacs on an iPad, you will need a terminal emulator application. I recommend iSH, since it runs a version of Alpine Linux within the app itself and will allow you to install packages that you need.

ish
iSH Application

Require Packages

I started by adding the required packages directly within iSH. Emacs should install dependencies by default, but I include a few other packages that I use in my terminal as well.

apk add emacs ripgrep fd findutils
dependencies
Package !Installation

Emacs

Once this is complete, you should be able to run Emacs natively on your iPad. It's effective, but can be slow at times.

I attempted to also install Doom Emacs, which technically worked, but was so incredibly slow and buggy that I was not even able to take screenshots. Someone smarter than me could likely get it to work with a little tinkering.

emacs
Emacs
MELPA

You also have to remember to hook up MELPA yourself in the .emacs file to be able to search through their 5700+ packages instead of just ELPA packages. If you don't, you will only have access to ELPA packages like the ones below.

melpa
package-install

Once you have MELPA, you can install packages like the dashboard package shown below.

dashboard
emacs-dashboard
Speed

While Emacs will run on my iPad, it's not perfect. The largest issue on my iPad is speed - loading Emacs takes 6-7 seconds and installing the magit package took 129 seconds.

I haven't played around enough to optimize loading times and poke around to see why the network requests take so long, but it's a big enough issue that I wouldn't see casual Emacs users dealing with the lag.