A Wayland shell for GNOME on mobile devices. See the [Wiki](https://gitlab.gnome.org/World/Phosh/phosh/-/wikis/home) for more information. For a matching compositor see [phoc](https://gitlab.gnome.org/World/Phosh/phoc). For an on screen keyboard see [squeekboard](https://gitlab.gnome.org/World/Phosh/squeekboard).
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
Marge Bot f5d7f0a259
Merge branch 'rel-0.25.0' into 'main'
3 months ago
.gitlab/issue_templates gitlab: Improve setup description in bug template 2 years ago
.gitlab-ci ci: Update images to 2023-01-05 5 months ago
calendar-server calendar-server: Add color to events 9 months ago
data build: Avoid relative paths for enums 4 months ago
debian Document changes and release 0.25.0 3 months ago
docs screen-saver-manager: Document what affects blanking and locking 4 months ago
plugins plugins/emergency-info-prefs: Use a larger default size 3 months ago
po Update Hindi translation 3 months ago
protocol Add draggable layer surfaces 1 year ago
screenshots README: Use a screenshot of the unlocked shell 1 year ago
src util: Detect multi finger touches too 3 months ago
subprojects Update to gmobile 0.0.1 4 months ago
tests tests: Screenshot emergency plugin prefs too 3 months ago
tools tools/plugin-prefs-standalone: Fix locale dir in test mode 4 months ago
.dir-locals.el dir-locals: Prevent tabs in meson mode 6 months ago
.editorconfig editorconfig: Bump line length to 100 1 year ago
.gitignore gitignore: Ignore packaging directories 9 months ago
.gitlab-ci.yml ci: Switch package build to Debian bookworm 4 months ago
.gitmodules Add libgmobile subproject 8 months ago
COPYING Add GPLv3 license file 5 years ago
HACKING.md Change URLs to gitlab.gnome.org 2 years ago
NEWS Document changes and release 0.25.0 3 months ago
README.md README: Fix link to gitlab-ci.yml 1 year ago
gcovr.cfg ci: Exclude autogenerated and imported sources 9 months ago
meson.build Document changes and release 0.25.0 3 months ago
meson_options.txt Build and install manpages 5 months ago
phosh.doap doap: Update description 1 year ago
run.in plugins/ticket-box: Make folder configurable 7 months ago



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


phosh is licensed under the GPLv3+.

Getting the source

git clone https://gitlab.gnome.org/World/Phosh/phosh
cd phosh

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 . _build
ninja -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 https://wiki.gnome.org/TranslationProject and https://l10n.gnome.org/module/phosh/.

Getting in Touch

Development Documentation

API documentation is at https://world.pages.gitlab.gnome.org/Phosh/phosh