Commit 4d3e00cf authored by David Boddie's avatar David Boddie

Merge branch 'app-devel-refactor' into 'master'

Application Development chapter refactor

See merge request !102
parents d61b24bb 1ee52938
Pipeline #2937 passed with stage
in 10 minutes and 45 seconds
......@@ -3,11 +3,12 @@
GNOME Builder
=============
.. note:: It is assumed that you have already gone through the :ref:`flatpak` section to setup flatpak on your x86 workstation.
.. note:: It is assumed that you have already gone through the :ref:`flatpak`
section to setup flatpak on your workstation.
Builder is a fantastic IDE traditionally used for building GNOME GTK+ apps however the fun doesn't have to stop there. It can build KDE apps as long as there is flatpak metadata for the application - more on that later.
First, checkout the `official documentation for GNOME Builder <https://builder.readthedocs.io/en/latest/>`_
First, checkout the `GNOME Builder documentation`_.
**Install the stable version of GNOME Builder**::
......@@ -146,4 +147,4 @@ You will see the application start on the screen connected to the board.
:width: 300px
:height: 400px
.. include:: /links.rst
.. _developing_apps_gnome:
.. _gnome:
Developing for GNOME
====================
GNOME
=====
Applications (apps) for the Librem 5 will typically be built using the
`GTK+ toolkit`_. In fact many of the apps available will be ported from already
existing apps which are part of the GNOME environment. When you write an app or
port a current app to the Librem 5, you are likely going to use tools and
libraries from the GNOME Desktop Environment, building user interfaces
based on GTK+ using the GObject model. There are many supporting libraries
like libsoup for HTTP access or GSettings for settings management, D-Bus
interaction and lower level I/O.
See the :ref:`development_environment` chapter of this manual, and especially
the :ref:`workstation` section for an overview of the tools that make up
a typical GNOME development environment. The following sections cover use of
these tools in more detail.
.. toctree::
GNOME/Intro
GNOME/Flatpak_setup
GNOME/GBuilder
GNOME/Gtk+
GNOME/Glade
GNOME/Resources
.. include:: /links.rst
......@@ -16,7 +16,7 @@ For your application to work in both orientations, either make it fit a 360×294
|pic1|
.. |pic1| image:: images/available_sizes.png
.. |pic1| image:: /Apps/images/available_sizes.png
:width: 590px
:height: 381px
......
......@@ -5,7 +5,8 @@ Design
.. toctree::
Design/Design_guidelines
Design/Apps_overview
Design/Shell
Design/Howto
Design_guidelines
Constraints
Apps_overview
Shell
Howto
.. _intro:
.. _porting_gnome_apps_guide:
Introduction
=============
Porting GNOME Applications
==========================
Applications (apps) for the Librem 5 will typically be built using the
`GTK+ toolkit`_. In fact many of the apps available will be ported from already
existing apps which are part of the GNOME environment. When you write an app or
port a current app to the Librem 5, you are likely going to use GTK+ and the
tooling around it for development.
The Tools
---------
See the :ref:`development_environment` chapter of this manual, and especially
the :ref:`workstation` section for an overview of the tools that make up a
typical development environment. This includes information on the following:
- `GNOME Builder`_
- ``flatpak``, ``flatpak-builder`` (Your app package format)
- Flatpak runtimes
- :ref:`Librem 5 emulator <qemu>`
- `GTK+ toolkit`
- GNOME environment (Librem 5 runs GNOME by default)
- libhandy (adaptive GTK+ widget library for mobile phones)
.. note:: This guide will cover the tasks associated with porting GNOME
applications to the Librem 5 phone, taking into account the different
capabilities, form factor and other constraints that make application
design different to that on laptops and desktop machines.
The Workflow
------------
A typical developer workflow will involve something of this sort:
A typical developer workflow for porting will involve something like this:
- Install ``flatpak`` and ``flatpak-builder``.
- Install GNOME Builder.
......@@ -41,5 +25,3 @@ A typical developer workflow will involve something of this sort:
- Repeat until your app works well on the Librem 5 emulator.
- Test on a development board or Librem 5.
- Contribute the app or port.
.. include:: /links.rst
.. _app_dev_guides:
Guides
======
Since application development involves a wide range of topics, we aim to
provide a selection of guides that cover those that developers are most likely
to encounter. We aim to add more guides to this collection over time.
.. toctree::
:maxdepth: 1
Design/index
Porting_GNOME_Applications/index
We welcome suggestions for new guides. Please check the current
`developer.puri.sm issues`_ for existing requests and submit a new request if
necessary.
.. include:: /links.rst
.. _kde:
KDE
===
Developing for Plasma Mobile
============================
.. toctree::
......
.. _packaging_apps:
Packaging Applications
======================
Applications on the Librem 5 are supplied in two kinds of package: Debian
packages that are provided as part of the `PureOS`_ operating system running on
the phone, and flatpaks that have been created using the Flatpak suite of tools
that contain third party applications.
.. toctree::
Flatpak_setup
.. include:: /links.rst
......@@ -4,12 +4,13 @@ Application Development
=======================
.. toctree::
:maxdepth: 1
Apps/Constraints
Apps/Gnome
Apps/Kde
Apps/Design
Apps/PublishingApps
Gnome
Kde
Guides/index
Packaging_Apps/index
PublishingApps
If you are interested in app development then you're in the right place! Here,
you can find out how to make, build, deploy, and publish apps for distributing.
......@@ -18,11 +19,11 @@ apps section.
|pic1| |pic2|
.. |pic1| image:: Apps/images/phosh_flow_chart.png
.. |pic1| image:: images/phosh_flow_chart.png
:width: 310px
:height: 310px
.. |pic2| image:: Apps/images/plasma_flow_chart.png
.. |pic2| image:: images/plasma_flow_chart.png
:width: 310px
:height: 310px
......@@ -39,15 +40,21 @@ for app development.
Next, what kind of application format would you like?
* :ref:`flatpak` will show you how to setup flatpak on the dev board
* Deb packages are the official package formats for Debian-based distributions. A deb package is installable from the apt package manager and what is needed for the app to be distributed by Debian.
* Deb packages are the official package formats for Debian-based
distributions. A deb package is installable from the apt package manager
and what is needed for the app to be distributed by Debian.
You can follow the above charts to determine the IDE/build tool suggested.
* :ref:`gbuilder` will show you how to use GNOME Builder for developing, building, and deploying flatpak'd apps to a phone shell environment. Apps built from GNOME Builder can theoretically be deployed to Plasma Mobile as well
* :ref:`gbuilder` will show you how to use GNOME Builder for developing,
building, and deploying flatpak'd apps to a phone shell environment. Apps
built from GNOME Builder can theoretically be deployed to Plasma Mobile as well
* :ref:`glade` is an excellent tool for designing GTK+ based UIs
* :ref:`kirigami_apps` will show you how to use Kirigami for developing, building, and deploying flatpak'd apps to a Plasma Mobile environment
* :ref:`qt` provides QtCreator and QtDesigner, good tools for designing Qt based UIs
* For building a deb package, `git-buildpackage <http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.html>`_ is the preferred build method
* :ref:`kirigami_apps` will show you how to use Kirigami for developing,
building, and deploying flatpak'd apps to a Plasma Mobile environment
* :ref:`qt` provides Qt Creator and Qt Designer, good tools for designing Qt
based UIs
* For building a deb package, `git-buildpackage`_ is the preferred build method
Once your app is ready to be distributed to other developers, you can submit
your app for inclusion.
......@@ -55,3 +62,5 @@ your app for inclusion.
* There will be a flatpak repository for only free software flatpaks. This
repository will be hosted by PureOS
* To submit your app for inclusion into Debian, follow `standard Debian package submission procedures <https://www.debian.org/doc/manuals/distribute-deb/distribute-deb.html#adding-packages-to-debian>`_
.. include:: /links.rst
......@@ -17,7 +17,7 @@ examples to help you accomplish your goals with the Librem 5 dev kit and phone.
Introduction
Development_Environment
Apps
Apps/index.rst
APIs
Contact
FAQ
......
.. _`Debian`: https://www.debian.org
.. _`developer.puri.sm issues`: https://source.puri.sm/Librem5/developer.puri.sm/issues
.. _`Flatpak documentation`: http://docs.flatpak.org/en/latest/
.. _`Flatpak`: https://flatpak.org/
.. _`git-buildpackage`: http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.html
.. _`GNOME Builder`: https://wiki.gnome.org/Apps/Builder
.. _`GNOME Builder documentation`: https://builder.readthedocs.io/en/latest/
.. _`GNOME git client`: https://wiki.gnome.org/Apps/Gitg
.. _`GNOME`: https://www.gnome.org
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment