Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time


a pure wayland shell for mobile devices like Purism's Librem 5.


phosh is licensed under the GPL-3.0-or-later licence.

Getting the source

git clone
cd phosh
git submodule update --init --recursive

The main branch has the current development version.


On a Debian based system run

sudo apt-get -y install build-essential
sudo apt-get -y build-dep .

For an explicit list of dependencies check the Build-Depends entry in the debian/control file.


We use the meson (and thereby Ninja) build system for phosh. The quickest way to get going is to do the following:

meson setup _build
meson compile -C _build


To run the tests run

xvfb-run meson test --no-suite screenshots -C _build

For details see the .gitlab-ci.yml file.


Running from the source tree

When running from the source tree start the compositor phoc. Then start phosh using:


or (if you built phoc from source in ../phoc) in one command:

../phoc/_build/run -C ./data/phoc.ini -E _build/run

This will make sure the needed gsettings schema is found. Note that there's no need to install any files outside the source tree.

The result should look something like this:


Running from the Debian packages

If you're running a display manager like GDM or LightDM you can select the Phosh session from the display managers menu. If you want run without a display manager but nevertheless start phosh at system boot there's a systemd unit file in /lib/systemd/system/phosh which is disabled by default:

systemctl enable phosh
systemctl start phosh

This runs phosh as the user with user id 1000 (which needs to exist). If you don't have that user and don't want to create one you can make systemd run phosh as any user by using an override file:

cat <<EOF > /etc/systemd/system/phosh.service.d/override.conf

All of the above use the /usr/bin/phosh script to start compositor and shell under the hood so if you just want to start phosh from the system console once invoke that script directly.


This is handled via GNOMEs infra, see and

Getting in Touch

Development Documentation

API documentation is at