I love Meld. It’s is my favorite diff tool, and one of the tools I missed the most when I switched over to Mac from Linux.
Except, you can run Meld on Mac too. The easiest way is using Homebrew, via
brew install meld. If you don’t have Homebrew on your Mac yet, it will only take a minute to install via one simple command, and you will probably end up installing it at some point anyway.
Here is what I had to do to get it working in 2020.
- Download and Install Yousseb fork for Mac https://yousseb.github.io/meld/.
- Create a meld file somewhere on my path, with code from comment by Levsa (pasted bellow) https://techtldr.com/how-to-run-meld-on-mac-os-x-yosemite-without-homebrew-macports-or-think/#comment-50195
- Make sure the file is still executable
sudo chmod a+x ~/bin/meld
Improved Script from Levsa:
import sys import os import subprocess MELDPATH = "/Applications/Meld.app" userArgs =  for arg in sys.argv[1:]: if arg.startswith('--output'): filename = arg.split('=') newArg = '--output=' + os.path.abspath(filename) elif arg.startswith('-'): newArg = arg else: newArg = os.path.abspath(arg) userArgs.append(newArg) argsArray = ['open', '-W', '-a', MELDPATH, '--args'] + userArgs print argsArray p = subprocess.call(argsArray)
Note: `brew install meld` will probably fail, but the error will show you the proper command to run. In February of 2016 for me that command was `brew install homebrew/gui/meld`, some people report that `brew install homebrew/x11/meld` worked for them. Just read the outputted message carefully. It will probably have to pull in a lot of dependencies so it might take a while, but it should work.
For some reason Homebrew did not work for me on my new Mac back in February of 2015, so I had to look for other options (hence the “Without Homebrew, MacPorts, or Think” part in the original title of this article).
After some intense Googling, I came across this AWESOME fork of Meld. It is Meld packaged with all of the dependencies into a regular .dmg. Pleae make sure to visit the official project page – Meld for OSX.
Note: I am linking to release tagged osx-v1, there have been other releases since then. Some of them did not work for all users, but the latest release (OSX – 3.15.2) suppose to work. You might have to try a few release to find the one that works for you. The author of of that package posts his updates in the comments sometimes, so be on a lookout for that. If all fails I recommend using version osx-v1, since it seems to work for most users.
As I said earlier, Meld.dmg “just worked” for me, except that it didn’t work in the command line, and that is where I need it the most.
I wrote the following script (in python since you already need it to run meld) and placed it in
~/bin folder (making sure to add ~/bin to my PATH, see bellow).
Note: There is a cleaner version posted in the comments that should work with 3 arguments, allowing you to use meld as a merge tool. I have not tested it, but it looks like it should work, and it might be worth your time to try it first.
import sys import os import subprocess if len(sys.argv) > 1: left = os.path.abspath(sys.argv); else: left = "" if len(sys.argv) > 2: right = os.path.abspath(sys.argv); else: right = "" MELDPATH = "/Applications/Meld.app" p = subprocess.call(['open', '-W', '-a', MELDPATH, '--args', left, right])
I then added that folder to my PATH via
export PATH=~/bin:$PATH entry in my
.bashrc file, to make sure that meld command got picked up in my terminal. You can reload your bash config via
. ~/.bashrc or just restart the terminal. Type in
meld and it should work.
I’ve been using it for a few weeks many months now, and yet to run into any problems. So there you have it, a working Meld on Mac OS X Yosemite, without having to use any 3rd party tools.
- Updated February 13, 2016
- Updated homebrew instructions
- Updated Meld fork reference instructions