Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/beeware/briefcase-linux-appimage-template
A template for generating Linux AppImage projects with Briefcase
https://github.com/beeware/briefcase-linux-appimage-template
Last synced: 12 days ago
JSON representation
A template for generating Linux AppImage projects with Briefcase
- Host: GitHub
- URL: https://github.com/beeware/briefcase-linux-appimage-template
- Owner: beeware
- License: mit
- Created: 2019-12-07T07:33:38.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2024-10-15T03:12:01.000Z (about 1 month ago)
- Last Synced: 2024-11-01T03:32:33.144Z (19 days ago)
- Language: Dockerfile
- Homepage:
- Size: 764 KB
- Stars: 20
- Watchers: 9
- Forks: 19
- Open Issues: 1
-
Metadata Files:
- Readme: README.rst
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-appimage - Briefcase Linux AppImage Template - Cookiecutter template for building Python apps that will run under Linux, packaged as an AppImage. (AppImage developer tools / Templates)
README
Briefcase Linux AppImage Template
=================================A `Cookiecutter `__ template for
building Python apps that will run under Linux, packaged as an AppImage.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-linux-appimage-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 Linux support package for x86_64`_, and extract it into
the ``My Project/My Project.AppDir/usr`` directory generated by the
template. This will give you a self-contained Python install. If installed
correctly, there should be a ``My Project/My
Project.AppDir/usr/bin/python3`` binary, as well as some other
Python-related files.Alternatively, you can download the `Python-Linux-support`_ project, and
build your own versions of these frameworks. You will need to do this if
you need to build for an architecture other than `x86_64`.4. Add your code to the template, into the ``My Project/My Project.AppDir/usr/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.AppDir/usr/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.AppDir/
usr/
app/
my_project/
__init__.py
__main__.py
app.py
app_packages/
...
bin/
python3
...
lib/
...
share/
...
com.example.my-project.desktop
briefcase.tomlThis directory can then be compiled into an AppImage using `linuxdeploy`_.
Download the `linuxdeploy AppImage`_, and make the binary executable::$ chmod +x linuxdeploy-x86_64.AppImage
Then compile your AppDir directory (substituting your release version number)::
$ VERSION=1.2.3 ./linuxdeploy-x86_64.AppImage --appdir=My\ Project/My\ Project.AppDir -o appimage -d My\ Project/My\ Project.AppDir/com.example.my-project.desktop
This will produce ``My Project-1.2.3-x86_64.AppImage``. This image can given
to any other Linux user, and should run without installing any other
dependencies.Next steps
----------Of course, running Python code isn't very interesting by itself.
To do something interesting, you'll need to work with the native system
libraries to draw widgets and respond to user input. The `GTK+`_ GUI library
provides Python bindings that you can use to build a user interface.
Alternatively, you could use a cross-platform widget toolkit that supports
Windows (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... _cookiecutter: https://github.com/cookiecutter/cookiecutter
.. _linuxdeploy: https://github.com/linuxdeploy/linuxdeploy
.. _linuxdeploy AppImage: https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
.. _Obtain a Python Linux support package for x86_64: https://github.com/beeware/Python-Linux-support
.. _Toga: https://beeware.org/project/projects/libraries/toga
.. _GTK+: https://python-gtk-3-tutorial.readthedocs.io/