1. Ubuntu MATE
  2. Ubuntu MATE
  3. ubuntu-mate-welcome




The Ubuntu MATE Welcome application to greet both new and returning users on their first login.



Build Status for Yakkety

Build Status for Xenial

Daily Builds

Testers wanting the latest builds should use the Daily PPA:

sudo add-apt-repository ppa:lah7/ubuntu-mate-welcome-dev
sudo apt update
sudo apt remove ubuntu-mate-welcome
sudo apt install ubuntu-mate-welcome-dev

Only ubuntu-mate-welcome or ubuntu-mate-welcome-dev may be present at the same time.


  • Introduce new users to the operating system.
    • Highlight key features of Ubuntu MATE and GNU/Linux.
    • Provide quick guidelines on getting started.
    • Provide quick installation guidance.
    • Inform users of their system's specifications.
  • Grow the Ubuntu MATE Community
    • Links to the community forums and social networks.
    • Inform of Ubuntu MATE branded products for sale.
    • Provide details on donating to the project.
  • Software Boutique
    • From a pick of Ubuntu MATE's recommended software tested for the distribution.
    • Simple tools to manage packages on the system.
    • Install a package manager, such as Ubuntu Software Center.

Originally based on:


Welcome does not require parameters for general usage, but for debugging and testing purposes, the following can be specified:


Usage: ubuntu-mate-welcome [arguments]
  -d, --dev, --debug           Disables locales and is very verbose
                               intended for development purposes.
  --font-dpi=NUMBER            Adapt zoom setting based on DPI. Default 96.
  -h, --help                   Show this help text.
  --force-arch=ARCH            Simulate a specific architecture.
                                -- Examples: i386, amd64, armhf, arm64
  --force-codename=CODENAME    Simulate a specific release.
                                -- Examples: trusty, wily, xenial
  --force-net                  Simulate a working internet connection.
  --force-no-net               Simulate no internet connection.
  --force-session=TYPE         Simulate a specific type of session.
                                -- Options: guest, live, pi, vbox
  --jump-to=PAGE               Open a specific page, excluding *.html
  --locale=CODE                Locale to use. e.g. fr_FR.
  --simulate-changes           Simulate software package changes without
                               modifying the system.
  -b, -boutique,               Open Welcome only for the software selections.
  -v, --verbose                Show more details to stdout (for diagnosis).


This tool is for making queries on the Software Boutique's JSON database.

  • --list-index = List applications in the index.
  • --list-broken = List applications that are not working.
  • --list-missing-codename=<RELEASE> = List applications not present in a release.
  • --list-missing-arch=<ARCH> = List applications not present for an architecture.
  • --list-special = List applications that pre-install differently on releases.
  • --list-sources = List each application\'s source (eg. PPA, Ubuntu Archives)


To perform tests against the application, see the tests/ folder. These scripts check the application for consistency and may even catch bugs early.


  • gir1.2-gtk-3.0
  • gir1.2-notify-0.7
  • gir1.2-webkit2-4.0
  • libnotify-bin
  • parted
  • pciutils
  • policykit-1
  • python3
  • python3-apt
  • python3-aptdaemon
  • python3-aptdaemon.gtk3widgets
  • python3-gi
  • python3-setproctitle
  • software-properties-common
  • inxi
  • humanity-icon-theme



We are on Transifex!

Testing Translations

  1. Navigate to the repository folder.
  2. Run ./create-translations.sh
  3. Run ./ubuntu-mate-welcome --locale=<CODE> (e.g. fr_FR, es_ES)

Syncing Translations

tx pull -a
./welcome-po.py --update-pos
./edgar-allan create-all-pots
./edgar-allan translate-all
tx push -s


The following cannot be translated:

  • Software Boutique - Names and descriptions for applications.
  • Terminal debug output.
  • Screenshots.


Stupid name, but we like it, which supports the following arguments:

  • create-all-pots - will create a .pot file for every slide (using @zwnj; chars to denote translatable string) and place it in data/po/<slide name>
  • translate-all - for each slide, will produce translated html for each .po found in data/po/slidename. The .po should according to locale e.g. en_GB.po. The output will be written to the data/i18n/<locale>/ directory as slide_name.html
  • create-pot - create a single .pot file (mainly for testing purposes)
  • translate - translate a single slide (mainly for testing purposes)
  • po - for each translatable string in a po file, set the translation to be the original string reversed (only for use when testing...)

Additional arguments:

  • --input=<filename> used with create-pot and translate and specifies the source html. Also used with po to specified .po file containing strings to be reversed --po-file=<filename> used with translate and specified .po file to use
  • --output=<filename> used with create-pot, translate and po and specifies the output file

Normal usage would be to:

  • run create-pot to create an initial set of .pot files or to update them when new strings are added to slides.
  • check the .pots in poedit or a text editor in case missing or misaligned &zwnj;'s in the html
  • copy .po files translations from Transiflex into the data/po/<slide_name>/ directories
  • run translate-all to build a set of translated slides

Building a local package

If you want to build a local package for testing then do the following:

sudo apt-get install python3-polib
./welcome-po.py --update-pos
./welcome-po.py --install
./edgar-allan translate-all
debuild -b

The resulting .deb can be installed with sudo dpkg -i or gdebi.