---
name: "phoc"
section: "1"
platform: "linux"
package: "phoc"
version: "0.57.0-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/phoc"
---

# phoc(1)

A Wayland compositor for mobile devices

## Name

phoc - A Wayland compositor for mobile devices

## SYNOPSIS

```
phoc [OPTIONS...]
```

## DESCRIPTION

**phoc** is a Wayland compositor for mobile devices using the **wlroots** library. It's often used with the **phosh** mobile shell but works perfectly fine on its own.

## OPTIONS

- **-h, --help**

  Print help and exit

- **-C, --config FILE**

  Path to the configuration file. (default: phoc.ini).

- **-E, --exec EXECUTABLE**

  Executable (session) that will be run at startup

- **--socket**

  Wayland socket to listen on for client connections

- **-S, --shell**

  Whether to expect a shell to attach

- **-X, --xwayland**

  Whether to start XWayland

- **--no-xwayland**

  Whether to disable XWayland

- **--version**

  Show version information

## CONFIGURATION

Configuration is read from **phoc.ini**, **hwdb**, **gsettings** and **$XDG\_STATE\_HOME/outputs.gvdb**. For details on output configuration see **[phoc.ini(5)](/phoc.ini/5.md)**, for details on wakeup key configuration via **hwdb** see **[gmobile.udev(5)](/gmobile.udev/5.md)**, for details on the gsettings handled by phoc see **[phoc.gsettings(5)](/phoc.gsettings/5.md)**. For details on output states see **phoc-outputs-states**.

## ENVIRONMENT VARIABLES

**phoc** honors the following environment variables:

- •

  **WLR\_BACKENDS**: The backends the wlroots library should use when phoc launches. See \<https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/docs/env\_vars.md\>

- •

  **WLR\_RENDERER**: The renderer the wlroots library should use when phoc launches. See \<https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/docs/env\_vars.md\>

- •

  **G\_MESSAGES\_DEBUG**, **G\_DEBUG** and other environment variables supported by glib. \<https://docs.gtk.org/glib/running.html\>

- •

  **PHOC\_DEBUG**: Comma separated list of debugging flags. Some of them can also be toggled at runtime, see **DBUS INTERFACE** below.

  - •

    **help**: Show a list of available debug flags

  - •

    **auto-maximize**: Maximize toplevels

  - •

    **damage-tracking**: Debug damage tracking (can be toggled at runtime)

  - •

    **damage-whole**: Damage whole output on each frame (can be toggled at runtime)

  - •

    **fake-builtin**: Handle virtual outputs like builtin displays

  - •

    **no-quit**: Don't quit when session ends

  - •

    **touch-points**: Debug touch points (can be toggled at runtime)

  - •

    **layer-shell**: Debug layer shell

  - •

    **cutouts**: Debug display cutouts and notches (can be toggled at runtime)

  - •

    **disable-animations**: Disable animations

  - •

    **force-shell-reveal**: Always reveal shell over fullscreen apps

  - •

    **ignore-state**: Ignore any saved output state

## UDEV PROPERTIES

Apart from the udev properties for wakeup keys documented in **[gmobile.udev(5)](/gmobile.udev/5.md)** phoc uses **ID\_INPUT\_KEYBOARD** to identify hardware keyboards. You can use **hwdb** to override these.

## DBUS INTERFACE

**phoc** allows to enable and disable certain debug flags at runtime via DBus. To see a list of available flags use:

```
busctl --user introspect mobi.phosh.Phoc.DebugControl /mobi/phosh/Phoc/DebugControl mobi.phosh.Phoc.DebugControl
```

To toggle individual values:

```
busctl --user set-property mobi.phosh.Phoc.DebugControl /mobi/phosh/Phoc/DebugControl mobi.phosh.Phoc.DebugControl TouchPoints b true
busctl --user set-property mobi.phosh.Phoc.DebugControl /mobi/phosh/Phoc/DebugControl mobi.phosh.Phoc.DebugControl DamageTracking b true
busctl --user set-property mobi.phosh.Phoc.DebugControl /mobi/phosh/Phoc/DebugControl mobi.phosh.Phoc.DebugControl LogDomains as 1 all
busctl --user set-property mobi.phosh.Phoc.DebugControl /mobi/phosh/Phoc/DebugControl mobi.phosh.Phoc.DebugControl LogDomains as 2 phoc-seat phoc-layer-surface
```

Note that the flags are not considered stable API so can change between releases.

## See also

**[phoc.ini(5)](/phoc.ini/5.md)** **[phoc.gsettings(5)](/phoc.gsettings/5.md)** **[phoc-outputs-states(1)](/phoc-outputs-states/1.md)** **[gmobile.udev(5)](/gmobile.udev/5.md)** **[phosh(1)](/phosh/1.md)** **busctl**
