• Stars
    star
    303
  • Rank 134,352 (Top 3 %)
  • Language
    Go
  • Created about 3 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Self-contained Emacs.app builds for macOS, with native-compilation support.

Logo

Emacs Builds

GitHub release (stable) GitHub release (pretest) GitHub release (nightly) GitHub release (nightly@emacs-29) GitHub release (known good nightly) GitHub issues GitHub pull requests GitHub all releases

Self-contained Emacs.app builds for macOS, with native-compilation support.

Features

  • Self-contained Emacs.app application bundle, with no external dependencies.
  • Native compilation (gccemacs), only in Emacs 28.x and later builds.
  • Native JSON parsing via libjansson.
  • SVG rendering via librsvg.
  • Various image formats are supported via macOS native image APIs.
  • Xwidget-webkit support is enabled, allowing access to a embedded WebKit-based browser with M-x xwidget-webkit-browse-url.
  • Native XML parsing via libxml2.
  • Dynamic module loading.
  • Includes the fix-window-role, system-appearance, and round-undecorated-frame patches from the excellent emacs-plus project.
  • Emacs source is fetched from the emacs-mirror/emacs GitHub repository.
  • Build creation is transparent and public through the use of GitHub Actions, allowing anyone to inspect git commit SHAs, full source code, and exact commands used to produce a build.
  • Emacs.app is signed with a developer certificate and notarized by Apple.
  • Uses build-emacs-for-macos to build the self-contained application bundle.

System Requirements

  • macOS 11.x (Big Sur) or later (uses Rosetta2 on Apple Silicon machines).
  • Xcode Command Line Tools for native compilation (Emacs 28.x and later).

Installation

Manual Download

See the Releases page to download latest builds, or here for the latest stable release.

Nightly builds of Emacs are for the most part just fine, but if you don't like living too close to the edge, see issue #7 Known Good Nightly Builds for a list of recent nightly builds which have been actively used by a living being for a day or two without any obvious issues.

Homebrew Cask

  1. Install the jimeh/emacs-builds Homebrew tap:
    brew tap jimeh/emacs-builds
    
  2. Install one of the available casks:
    • emacs-app for the latest stable release of Emacs (includes native-comp since v28.1):
      brew install --cask emacs-app
      
    • emacs-app-pretest for the latest pretest build from Emacs:
      brew install --cask emacs-app-pretest
      
    • emacs-app-nightly for the latest nightly build from Emacs' master branch:
      brew install --cask emacs-app-nightly
      
    • emacs-app-good for the latest known good nightly build listed on #7:
      brew install --cask emacs-app-good
      
    • emacs-app-nightly-29 for the latest Emacs 29.x nightly build from the emacs-29 branch:
      brew install --cask emacs-app-nightly-29
      

Use Emacs.app as emacs CLI Tool

Installed via Homebrew Cask

The cask installation method sets up CLI usage automatically by exposing a emacs command. However it will launch Emacs into GUI mode. To instead have emacs in your terminal open a terminal instance of Emacs, add the following alias to your shell setup:

alias emacs="emacs -nw"

Installed Manually

Builds come with a custom emacs shell script launcher for use from the command line, located next to emacsclient in Emacs.app/Contents/MacOS/bin.

The custom emacs script makes sure to use the main Emacs.app/Contents/MacOS/Emacs executable from the correct path, ensuring it finds all the relevant dependencies within the Emacs.app bundle, regardless of if it's exposed via PATH or symlinked from elsewhere.

To use it, simply add Emacs.app/Contents/MacOS/bin to your PATH. For example, if you place Emacs.app in /Applications:

if [ -d "/Applications/Emacs.app/Contents/MacOS/bin" ]; then
  export PATH="/Applications/Emacs.app/Contents/MacOS/bin:$PATH"
  alias emacs="emacs -nw" # Always launch "emacs" in terminal mode.
fi

If you want emacs in your terminal to launch a GUI instance of Emacs, don't use the alias from the above example.

Build Process

Building Emacs is done using the jimeh/build-emacs-for-macos build script, executed within a GitHub Actions workflow. This is why macOS 11.x (Big Sur) or later is required, as it's the oldest version of macOS available in GitHub Actions.

Full history for all builds is available on GitHub Actions here. Build logs are only retained by GitHub for 90 days though.

Nightly builds are scheduled for 0:00 UTC every night, based on the latest commit from the master branch of the emacs-mirror/emacs repository. This means a nightly build will only be produced if there have been new commits since the last nightly build.

Application Signing / Trust

As of June 21st, 2021, all builds are fully signed and notarized. The signing certificate used is: Developer ID Application: Jim Myhrberg (5HX66GF82Z)

To verify the application signature and notarization, you can use spctl:

$ spctl -vvv --assess --type exec /Applications/Emacs.app
/Applications/Emacs.app: accepted
source=Notarized Developer ID
origin=Developer ID Application: Jim Myhrberg (5HX66GF82Z)

All builds also come with a SHA256 checksum file, which itself can be double checked against the SHA256 checksum log output from the packaging step of the GitHub Actions workflow run which produced the build.

Issues / To-Do

Please see Issues for details of things to come, or to report issues.

More Repositories

1

git-aware-prompt

Display current Git branch name in your terminal prompt when in a Git working directory.
Shell
2,139
star
2

tmux-themepack

A pack of various Tmux themes.
Go
1,564
star
3

tmuxifier

Tmuxify your Tmux. Powerful session, window & pane management for Tmux.
Shell
1,018
star
4

build-emacs-for-macos

Somewhat hacky script to automate building of Emac.app on macOS.
Go
434
star
5

manservant

Browse man pages in style with your personal manservant.
Perl
164
star
6

redistat

A Redis-backed statistics storage and querying library written in Ruby.
Ruby
155
star
7

docker-znc

Run the ZNC IRC Bouncer in a Docker container.
Shell
134
star
8

zsh-peco-history

Search shell history with peco when pressing ctrl+r.
Shell
121
star
9

PastryKit

A little-known and unreleased iPhone web-app Javascript framework developed by Apple.
JavaScript
104
star
10

.emacs.d

My personal Emacs config with any quirks, oddities, bugs, and man-eating errors I live with on a daily basis.
Emacs Lisp
98
star
11

twilight-bright-theme.el

A Emacs port of the TextMate theme by the same name with some minor tweaks and additions.
Emacs Lisp
63
star
12

stub.sh

Helpers for bash script testing to stub/fake binaries and functions. Includes support for validating number of stub calls, and/or if stub has been called with specific arguments.
Shell
53
star
13

php-rack

An implementation of the middleware execution stack from Ruby's Rack library, for PHP.
PHP
52
star
14

dotfiles

My personals dotfiles with any quirks, oddities, bugs, and man-eating errors I live with on a daily basis.
Shell
40
star
15

twilight-anti-bright-theme

A light-on-dark Emacs and TextMate theme inspired by the dark-on-light Twilight Bright TextMate theme.
Emacs Lisp
40
star
16

common-flow

An attempt to gather a sensible selection of the most common usage patterns of git into a single and concise specification.
40
star
17

birds-of-paradise-plus-theme.el

A Emacs port of Joseph Bergantine's light-on-dark theme by the same name.
Emacs Lisp
38
star
18

node-base58

Base58 encoding and decoding for Node.js
JavaScript
33
star
19

rubocopfmt.el

Emacs minor-mode to format Ruby code with RuboCop on save.
Emacs Lisp
16
star
20

go-midjourney

Go
15
star
21

760-grid-system

Use the same principals of the 960 grid system within Facebook's 760 pixel wide frame for Facebook Applications.
Ruby
15
star
22

jimeh.me-v3.0

Jekyll project of a old version my personal website and blog.
CSS
13
star
23

tomorrow-night-paradise-theme.el

A light-on-dark Emacs theme which is essentially a tweaked version of Chris Kempson's Tomorrow Night Bright theme.
Emacs Lisp
11
star
24

litemysql

Very light-weight and simple ORM-like MySQL library for PHP. Kind of like ActiveRecord's little brother.
PHP
11
star
25

amqp-failover

Add multi-server support with failover and fallback to the amqp gem.
Ruby
10
star
26

homebrew-emacs-builds

Ruby
9
star
27

jimeh.github.io

This is the source-code for my personal website.
SCSS
9
star
28

suggest_results

Easily customizable search suggestion plugin for jQuery, which suggests results directly, rather than search terms.
JavaScript
7
star
29

collecta_ruby

A light Ruby library / Rails plugin for querying the Collecta API.
Ruby
7
star
30

ansible-adguardhome

Ansible role to install and run AdGuard Home, with support for non-root operation.
Python
7
star
31

mta-sts-on-github-pages

Template repository for hosting MTA-STS (.well-known/mta-sts.txt) on GitHub Pages.
6
star
32

go-golden

Yet another Go package for working with *.golden test files, with a focus on simplicity.
Go
6
star
33

yank-indent

Emacs minor-mode that ensures pasted (yanked) text has the correct indentation level.
Emacs Lisp
6
star
34

airbrake-statsd

Extends the Airbrake gem to also report exceptions to Esty's StatsD statistics aggregator.
Ruby
6
star
35

greek_easter

Never wonder again when easter is in Greece.
Ruby
6
star
36

facebooker_plus

A Ruby on Rails plugin fixing, extending and adding features to Facebooker, possibly beyond the originally intended scope of Facebooker itself.
Ruby
5
star
37

fancy_input

Easily customizable search suggestion plugin for jQuery, which suggests results directly, rather than search terms. (Formally known as suggest_results)
JavaScript
5
star
38

casecmp

Case-insensitive string comparison, as an API. Because Β―\_(ツ)_/Β―
Go
5
star
39

docker-flexget

Simple Docker container for running Flexget
Shell
4
star
40

zynapse

Rails-like MVC framework for PHP5. Currently abandoned and published for educational reasons.
JavaScript
4
star
41

twhois

Whois-like command-line tool and Ruby Gem for Twitter users
Ruby
3
star
42

undent

Go package which removes leading indentation/white-space from strings.
Go
3
star
43

Dockerfiles

Small collection of Docker and Docker Compose files I use to run stuff on my personal laptop
Shell
3
star
44

standardfmt.el

Emacs minor-mode to format JavaScript with standard / semistandard on save.
Emacs Lisp
3
star
45

time_ext

Extends the abilities of Ruby's built-in Time class by building on top of ActiveSupport.
Ruby
3
star
46

960-grid-system-plus

A clone/enhancement of the excellent 960 Grid System by Nathan Smith to fit my personal likes and dislikes.
3
star
47

tab-bar-notch

Adjust tab-bar height for MacBook Pro notch
Emacs Lisp
3
star
48

skyline

Ruby-based interactive shell tools to send terminal commands to instances in Amazon EC2 AutoScaling groups
Ruby
2
star
49

fastmail-rules

Go
2
star
50

kotaku-uk-rss

Small experimental web-scraper to provide a RSS feed of kotaku.co.uk for my own personal use.
Go
2
star
51

skyhook

A customized set of scripts and config files to deploy projects and control services on Amazon EC2.
Ruby
2
star
52

rubocopfmt

DEPRECATED! Easy formatting of Ruby code using rubocop. Analogous to gofmt.
Ruby
2
star
53

envctl

Go package providing test helper functions to temporarily change and restore environment variables.
Go
1
star
54

git-basics

A basic intro to git
1
star
55

tmux-themepack-previews

This holds nothing interesting. Go check out the Tmux Themepack project instead.
Shell
1
star
56

cloudflare-dyndns

Go
1
star
57

rands

Go package providing a suite of functions that use crypto/rand to generate cryptographically secure random strings in various formats.
Go
1
star
58

chef-btsync

A simple and quickly hacked together chef cookbook for installing and configuring BTSync on Ubuntu for my own personal needs.
Ruby
1
star
59

blank_gem

A blank/empty Ruby gem that does nothing.
Ruby
1
star
60

modern_bubbling

An Adium message style.
JavaScript
1
star
61

seedsafe

An attempt to learn about AES encryption.
Go
1
star
62

mje

Go
1
star
63

heartb.it

Ruby
1
star
64

pylight

Quick hack to create an HTTP API for accessing Pygments, and to start teaching myself Python.
Python
1
star
65

bah.io

Static landing page for bah.io
HTML
1
star
66

jimeh.me-api

Experimental project to rewrite my site and blog to run off of an EventMachine-based API. Cause it's fun ^_^
Ruby
1
star
67

play-store-notifier

Small shitty script I originally used to notify myself via email of when the Nexus 4 came back in stock. Now using it to find out when the Nexus 5 becomes available on the Play Store.
Ruby
1
star
68

rbheap

A tool to help with tracking down memory leaks in Ruby.
Go
1
star
69

ps4-20th-tool

A small tool built for educational purposes that attempts to pick apart Sony's 20 Years Of Character's website to find the secret URL.
Go
1
star
70

terraform-cloudflare-email

Terraform module to configure various email related DNS records on Cloudflare.
HCL
1
star