Geany for macOS is a project that contains all the necessary configuration files, themes, scripts and instructions to create the Geany app bundle and a dmg installer image for macOS.
The macOS binaries can be downloaded from the Geany Releases page:
https://www.geany.org/Download/Releases
In addition to standard Geany configuration, the macOS bundle creates
its own configuration file under ~/.config/geany/geany_mac.conf
upon
first start. In this configuration file it is for instance possible
to override the used theme (light/dark) when autodetection based on
system macOS theme is not desired.
A brief description of the contents of the project directory:
For more general instructions about building and bundling macOS applications please visit
The HOWTO below contains just the portions necessary/relevant for building and bundling Geany.
To create the bundle, you need to first install JHBuild and GTK as described below.
Create a new account for jhbuild (not necessary but this makes sure jhbuild does not interfere with some other command-line tools installed on your system).
Optionally, when cross-compiling x86_64 binaries on a new ARM-based Apple computer, run
env /usr/bin/arch -x86_64 /bin/zsh --login
to create a x86_64
shell. All the compilation steps below
have to be executed in this shell.
Depending on the used shell, add the following lines
export PATH=$PATH:"$HOME/.new_local/bin"
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
either to your .zprofile
or .bash_profile
to make sure these variables
are defined and restart your shell.
Get gtk-osx-setup.sh
by
curl -L -o gtk-osx-setup.sh https://gitlab.gnome.org/GNOME/gtk-osx/raw/master/gtk-osx-setup.sh
and run it:
bash gtk-osx-setup.sh
Add the following lines to ~/.config/jhbuildrc-custom
:
setup_sdk(target="10.13", architectures=["x86_64"])
#setup_sdk(target="11", architectures=["arm64"])
setup_release() # enables optimizations
With this settings, the build creates a 64-bit Intel binary that works on
macOS 10.13 and later. Instead of x86_64
you can also specify
arm64
to produce binaries for Apple ARM processors. This only works
when building on ARM processors - it isn't possible to compile
ARM binaries on Intel processors.
Install GTK and all of its dependencies by running the following
command inside the geany-osx
directory:
jhbuild bootstrap-gtk-osx && jhbuild build meta-gtk-osx-bootstrap meta-gtk-osx-gtk3
The upstream project is sometimes in an unstable state and fails to build; if this happens, you can use our snapshot of modulesets which was used to build the last release of Geany:
jhbuild bootstrap-gtk-osx && jhbuild -m "https://raw.githubusercontent.com/geany/geany-osx/master/modulesets-stable/gtk-osx.modules" build meta-gtk-osx-bootstrap meta-gtk-osx-gtk3
To build Geany, plugins and all of their dependencies, run one of
the following commands inside the geany-osx
directory depending on
whether to use Geany sources from the latest release tarball or current
git master:
jhbuild -m `pwd`/geany.modules build geany-bundle-release
jhbuild -m `pwd`/geany.modules build geany-bundle-git
To build the launcher binary, run
xcodebuild ARCHS=`uname -m` -project Launcher/geany/geany.xcodeproj clean build
inside the geany-osx
directory.
Run
jhbuild shell
to start jhbuild shell.
Steps 3 and 4 of this section assume you are running from within the jhbuild shell.
To bundle all available Geany themes, get them from
https://github.com/geany/geany-themes
and copy the colorschemes
directory under $PREFIX/share/geany
.
Inside the geany-osx
directory run the following command to create
the app bundle:
./bundle.sh
Leave jhbuild shell if it was entered in step 2 by typing exit
.
Optionally, if you have a development account at Apple and want to sign the resulting bundle, get the list of signing identities by
security find-identity -p codesigning
and use the whole string within apostrophes which contains "Developer ID Application: ..." in the following command:
export SIGN_CERTIFICATE="Developer ID Application: ..."
Then, run
./sign.sh
Get the create-dmg
script from
https://github.com/andreyvit/create-dmg.git
and put it to your $PATH
.
Create the dmg installation image by calling
./create_dmg.sh
from within the geany-osx
directory. If the SIGN_CERTIFICATE
variable is
defined (see above), the image gets signed by the specified certificate.
Optionally, to get the image notarized by Apple notary service, run
./notarize.sh <dmg_file> <apple_id>
where <dmg_file>
is the dmg file generated above and <apple_id>
is the Apple ID used for your developer account. The script then
prompts for an app-specific password
generated for your Apple ID.
This section describes some maintenance-related activities which do not have to be performed during normal bundle/installer creation:
To get the Info.plist
file associations in sync with
filetype_extensions.conf
, copy the filetype extension portion from
filetype_extensions.conf
to the marked place in utils/plist_filetypes.py
and run the script. Copy the output of the script to the marked
place in Info.plist
.
Before the release, update the Geany version and copyright years inside
Info.plist
and create_dmg.sh
. Also update the -release
targets in
geany.modules
file to point to the new release. Dependencies inside
geany.modules
can also be updated to newer versions.
Copy modulesets-stable
from gtk-osx
into this project to get the latest dependencies (if it builds) and
possibly modify it (if something isn't working).
To make sure nothing is left from the previous build when making a new release, run
rm -rf .new_local .local Source gtk .cache/jhbuild
Jiri Techet, 2023