Skip to main content

Browse and launch remote Linux desktop apps via Waypipe

Project description

remote-app-launcher

Browse and launch desktop applications installed on a remote Linux HTPC from your local laptop. Uses Waypipe to forward Wayland windows so they display locally.

What it does

  1. Connects to a remote Linux host over SSH
  2. Discovers launchable apps by reading .desktop files in /usr/share/applications and ~/.local/share/applications
  3. Caches results locally (JSON) for fast startup
  4. Shows a searchable list via fzf
  5. Launches the selected app on the remote host with waypipe ssh -t host gtk-launch <desktop-id>, displaying the window locally

Dependencies

  • Python 3.10+
  • fzf – fuzzy finder
  • waypipe – Wayland proxy for remote display
  • SSH – remote access

Install on both local and remote hosts. The remote needs gtk-launch and a Wayland session.

Install

cd remote-app-launcher
pip install -e .

Usage

# Scan remote host and cache apps
remote-app-launcher refresh --host htpc

# Launch an app (opens fzf)
remote-app-launcher launch --host htpc

# List cached apps
remote-app-launcher list --host htpc

# Verbose output
remote-app-launcher refresh --host htpc -v

Config file (optional)

mkdir -p ~/.config/remote-app-launcher
echo '{"host": "htpc"}' > ~/.config/remote-app-launcher/config.json

Then you can omit --host:

remote-app-launcher refresh
remote-app-launcher launch

Filters

  • Terminal apps – Excluded (Terminal=true)
  • Games – Excluded if only categorized as a game (keeps gaming tools like launchers)
  • NoDisplay – Excluded

Troubleshooting

Waypipe / SSH

  1. Install waypipe on both local and remote
  2. Add to ~/.ssh/config:
    Host htpc
        SetEnv XDG_RUNTIME_DIR=/run/user/1000
    
  3. Enable AcceptEnv XDG_RUNTIME_DIR in remote /etc/ssh/sshd_config
  4. Remote must run a Wayland compositor (e.g. GNOME, KDE on Wayland)

"gtk-launch not found" on remote

Install GTK/GLib on the remote host.

Apps not launching

The waypipe process keeps the session open for 24 hours. To stop it early:

pkill -f "waypipe ssh.*gtk-launch"

ChromeOS Crostini – invisible fzf UI

If the fzf selection list appears blank (you can press Enter but see nothing), the launcher cannot render its TUI because the process lacks access to the controlling terminal (/dev/tty).

The launcher now opens /dev/tty explicitly. Always run remote-app-launcher launch directly inside the Crostini Terminal app, not via a desktop shortcut, cron job, or any wrapper that detaches from the terminal.

If you see:

Cannot open /dev/tty for fzf TUI (…). Run 'remote-app-launcher launch' from an interactive terminal.

it means no TTY is available. Switch to an interactive terminal session and try again.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

remote_app_launcher-0.1.0.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

remote_app_launcher-0.1.0-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file remote_app_launcher-0.1.0.tar.gz.

File metadata

  • Download URL: remote_app_launcher-0.1.0.tar.gz
  • Upload date:
  • Size: 11.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for remote_app_launcher-0.1.0.tar.gz
Algorithm Hash digest
SHA256 102a8f7ee0076e7780760b11a630f23c43d9806f92263f2ee837fcf0a50edde9
MD5 c984eb6dec508f7ba2e5d38ea43128bd
BLAKE2b-256 3d3aed62a7ac64b5cc5bf6a2e5903ce6b16133ce7d929702ef6bdfbb77260e54

See more details on using hashes here.

File details

Details for the file remote_app_launcher-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for remote_app_launcher-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5351862ee2c2de508dbcee60f972a5a023943a853c079cd6a3757436fc83a379
MD5 fcf3a1da7f279c3c66c33155cdc527a9
BLAKE2b-256 6db4d9dff2dec54e46ecd8fe44279c56491aee546e0c45f5af62955ee0b6cf6e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page