Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/beeware/briefcase-macos-app-template
A template for generating macOS app projects with Briefcase
https://github.com/beeware/briefcase-macos-app-template
Last synced: 3 months ago
JSON representation
A template for generating macOS app projects with Briefcase
- Host: GitHub
- URL: https://github.com/beeware/briefcase-macos-app-template
- Owner: beeware
- License: mit
- Created: 2019-10-20T03:34:45.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-05-11T02:07:05.000Z (9 months ago)
- Last Synced: 2024-05-11T03:22:03.124Z (9 months ago)
- Language: Python
- Homepage:
- Size: 165 MB
- Stars: 22
- Watchers: 8
- Forks: 11
- Open Issues: 2
-
Metadata Files:
- Readme: README.rst
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
Briefcase macOS App Template
============================A `Cookiecutter `__ template for
building Python apps that will run under macOS.Using this template
-------------------The easiest way to use this project is to not use it at all - at least, not
directly. `Briefcase `__ is a tool that
uses this template, rolling it out using data extracted from a
``pyproject.toml`` configuration file.However, if you *do* want use this template directly...
1. Install `Cookiecutter `__. This
is a tool used to bootstrap complex project templates::$ pip install cookiecutter
2. Run ``cookiecutter`` on the template::
$ cookiecutter https://github.com/beeware/briefcase-macOS-app-template
This will ask you for a number of details of your application, including the
`name` of your application (which should be a valid PyPI identifier), and
the `Formal Name` of your application (the full name you use to describe
your app). The remainder of these instructions will assume a `name` of
``my-project``, and a formal name of ``My Project``.3. `Obtain a Python Apple support package for macOS
`__, and extract it into the
``My Project/My Project.app/Contents/Resources/Suppoort`` directory generated
by the template.4. Obtain a stub binary, and add it as a file named ``My Project`` in the ``My
Project/My Project.app/Contents/MacOS/`` directory generated by the template.
The `stub project
`__
in the `Briefcase macOS Xcode template
`__ generates
two stub binaries - one for GUI apps, and one for console apps; copy the
appropriate executable from that project into your app template.5. Add your code to the template, into the
``My Project/My Project.app/Contents/Resources/app`` directory. At the very
minimum, you need to have an ``app//__main__.py`` file that
defines an entry point that will start your application.If your code has any dependencies, they should be installed into the
``My Project/My Project.app/Contents/Resources/app_packages`` directory.If you've done this correctly, a project with a formal name of ``My Project``,
with an app name of ``my-project`` should have a directory structure that
looks something like::My Project/
My Project.app/
Contents/
MacOS/
My Project
Resources/
app/
README
my_project/
__init__.py
__main__.py
app_packages/
README
...
Support/
...
VERSIONS
my-project.icns
Info.plist
installer/
resources/
welcome.html
scripts/
postinstall
Distribution.xml
Entitlements.plist
briefcase.tomlThe ``My Project.app`` directory should identify as an macOS application that
can be started by clicking on the application icon in Finder. It can also be
distributed as a standalone package.Before you can run the app, you will need to sign any binary files, frameworks
and embedded apps in the ``My Project.app`` folder, as well as the ``My
Project.app`` folder itself. The ``Entitlements.plist`` file should be a good
starting point for the entitlements required to sign the app.Next steps
----------Of course, running Python code isn't very interesting by itself - you won't
be able to do any console input or output, because a macOS app doesn't display
a console.To do something interesting, you'll need to work with the native macOS system
libraries to draw widgets and respond to user input. The `Rubicon Objective C
`__ bridging library can be used to
interface with the macOS system libraries. Alternatively, you could use a
cross-platform widget toolkit that supports macOS (such as `Toga
`__) to provide a GUI for your application.If you have any external library dependencies (like Toga, or anything other
third-party library), you should install the library code into the
``app_packages`` directory. This directory is the same as a ``site_packages``
directory on a desktop Python install.