> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tuple.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Tuple for Linux (alpha)

Tuple for Linux is currently in alpha and under active development. The client is primarily command-line driven.

To install, visit [the Linux install page](https://tuple.app/linux?utm_source=docs) for the latest download command and architecture options.

Join the [Slack channel](https://tuple.app/linux/slack) to provide feedback, report bugs, and ask questions.

## Display server support

Tuple runs natively on both **X11** and **Wayland**. The client automatically detects your session type using the `XDG_SESSION_TYPE` environment variable.

All core features, including screen sharing, the drawing overlay, and UI windows, work on both display servers.

## Current feature set

<Warning>
  The Tuple client on Linux is **extremely barebones** at the moment. We'll be working hard to flesh it out in the coming weeks — your patience is appreciated!
</Warning>

### What works

* Logging in and running Tuple as a daemon — you'll appear available for your contacts / teammates
* Receiving an incoming direct call
* Starting a call
* Joining a call via a URL
* Hearing (and being heard by) others using the system default audio device
* Viewing a shared screen
* Sharing your own screen
* Viewing drawing annotations on a shared screen
* Drawing on the shared screen
* Remotely controlling someone else's screen
* Initiating a direct call from the command line
* Listing and managing contacts and favorites
* Muting and unmuting your microphone

### Not yet implemented

* UI for making calls, managing contacts, and settings (everything is done via the command line for now)
* Being remotely controlled while sharing
* Viewing text or highlight click annotations on the shared screen
* Changing audio devices
* Sharing or viewing webcams

## Commands

| Command                     | Description                                                                                                                                   |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `tuple login`               | Initiates the login process. Outputs a URL to log in via the web; the last step emits an authorization code to be used in `tuple auth`.       |
| `tuple auth $AUTH_CODE`     | Authorizes the local Tuple client. Takes the code emitted via the web login flow as its only parameter.                                       |
| `tuple logout`              | Logs you out of Tuple.                                                                                                                        |
| `tuple call`                | Starts a direct call with one of your contacts. Lists your favorited contacts who are currently online and prompts you to pick one.           |
| `tuple new`                 | Starts a new call and automatically adds you as a participant. Prints the URL of the call to the console so you can share it with others.     |
| `tuple end`                 | Ends the current call if it's just you and one other person; leaves the call if others are still on it (or you're in a room).                 |
| `tuple join $CALL_URL`      | Joins a call that's in progress (or a room). Takes the URL of the call or room as its only parameter.                                         |
| `tuple ls`                  | Lists your contacts.                                                                                                                          |
| `tuple favorite $USER_ID`   | Favorites a contact.                                                                                                                          |
| `tuple unfavorite $USER_ID` | Removes a contact from your favorites.                                                                                                        |
| `tuple share`               | Starts sharing your entire viewable display — not just one monitor.                                                                           |
| `tuple unshare`             | Stops sharing your screen.                                                                                                                    |
| `tuple mute`                | Mutes your microphone during a call.                                                                                                          |
| `tuple unmute`              | Unmutes your microphone during a call.                                                                                                        |
| `tuple on`                  | Starts running the Tuple daemon. The daemon also starts automatically when most other commands are run (including `auth`, `new`, and `join`). |
| `tuple off`                 | Stops the Tuple daemon.                                                                                                                       |
| `tuple ui`                  | Displays a simple debugging UI.                                                                                                               |
| `tuple settings`            | Lists all settings.                                                                                                                           |
| `tuple set $name $value`    | Sets the setting named `$name` to the given `$value`.                                                                                         |

## Settings

| Setting        | Type | Values                  | Description                                                                                                                                                                                                                                    |
| -------------- | ---- | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `host-overlay` | bool | `0`, `1`                | Enables the "host overlay", which is where annotations are drawn. Transparency doesn't work correctly with certain window managers / compositors, which can cause this window to render incorrectly. Use this setting to disable it if needed. |
| `capture`      | enum | `auto`, `x11`, `portal` | Controls which screen capture mechanism Tuple uses. `auto` selects the best method for your session type. `x11` forces X11 capture. `portal` forces the XDG Desktop Portal (PipeWire) capture used on Wayland.                                 |

### Screen capture methods

You can also cycle through capture mechanisms during a call by clicking the capture button in the call UI. The button appears next to the screen share button and displays the current capture mechanism (`auto`, `x11`, or `portal`). Clicking it cycles to the next option.

### Fonts

Tuple runs `fc-match sans-serif:fontformat=TrueType` to find your system's "sans-serif" font.

## Troubleshooting screen capture

If screen capture fails, Tuple displays an error popup with details about what went wrong. You can dismiss the popup by clicking **Dismiss** or pressing **Enter**.

Common causes of screen capture failures on Linux include:

* **Wayland**: The XDG Desktop Portal or PipeWire service is not running. Make sure `xdg-desktop-portal` and `pipewire` are installed and active on your system.
* **X11**: Tuple could not query screen information. Verify that your X11 display server is running and accessible.

If the error persists, check the [log file](#logs) for additional details and share them with the team in the [Slack channel](https://tuple.app/linux/slack).

## Logs

Tuple logs to:

```
$XDG_DATA_HOME/tuple/0/log.txt
```

If the `$XDG_DATA_HOME` environment variable is not set, logs are written to:

```
$HOME/.local/share/tuple/0/log.txt
```

These are useful to include in any bug reports.
