Native desktop wrapper for Perplexity on Linux
Electron-based launcher with Arch/AUR packaging
- Native Linux packaging (no Wine/emulation).
- System Electron runtime with launcher-based configuration.
- AUR-first distribution with automated CI pipeline.
- Desktop integration: menu entry, icons, URI handler.
- DevTools disabled by default (
DEV_TOOLS=0).
perplexity/
├── src/ # Application sources (Electron)
│ ├── main.js # Electron main process
│ ├── preload.js # Preload script
│ ├── package.json # Dependencies (v1.5.1)
│ └── icons/ # Application icons
├── aur/ # AUR package assets
│ ├── PKGBUILD # AUR build script (CI-injected commit pin)
│ ├── launcher.sh # Runtime launcher (/usr/bin/perplexity)
│ ├── perplexity.desktop # Desktop entry
│ └── default.conf # Default runtime config
├── .github/workflows/ # CI/CD automation
│ ├── ci.yml # Validation and package build checks
│ ├── release.yml # Tag-driven GitHub Release + AUR publish
│ ├── build_and_publish.yml # Legacy manual fallback workflow
│ └── cleanup-artifacts.yml # Artifact retention cleanup
├── native-build/ # Portable native test bundle builder
└── usr/ # Linux system files
├── bin/perplexity # Executable file
└── share/ # Resources (icons, desktop files)
Use an AUR helper:
yay -S perplexity
paru -S perplexity# From terminal
perplexity
# Or through application menu
# Applications → Internet → Perplexity- OS: Arch Linux (or compatible distributions)
- Runtime dependencies:
electron,desktop-file-utils,xdg-utils - Optional:
libappindicator-gtk3(tray icon support) - Architecture: x86_64
- Memory: Minimum 512 MB RAM
All settings are stored at: $XDG_CONFIG_HOME/Perplexity/perplexity.conf (falls back to $HOME/.config/Perplexity/perplexity.conf). You can override via the PERPLEXITY_CONFIG environment variable.
On first run, the launcher copies /etc/perplexity/default.conf to the user configuration path.
Configuration Example
# Perplexity Configuration File
# Created automatically on first run
# Path to custom Electron binary (optional)
ELECTRON_CUSTOM_BIN="/usr/bin/electron"
# Tray is managed by ToDesktop runtime; not configurable via config file
# Enable developer tools (0/1, false/true)
DEV_TOOLS=0
# Additional Electron flags
ELECTRON_ARGS="--disable-web-security --disable-features=VizDisplayCompositor"
| Parameter | Description | Values |
|---|---|---|
ELECTRON_CUSTOM_BIN |
Path to custom Electron | File path |
DEV_TOOLS |
Developer tools | 0/1 or false/true |
ELECTRON_ARGS |
Additional flags | Electron Flags |
perplexity.desktop -> /usr/bin/perplexity (aur/launcher.sh) -> /usr/lib/perplexity
- Managed by ToDesktop runtime and not configurable via
default.conf.
- Auto-updates are disabled in the wrapper.
- Configuration is local (
$XDG_CONFIG_HOMEor$HOME/.config). - Network traffic comes from the upstream Perplexity web application runtime.
- Native icons (freedesktop.org layout)
- Desktop entry and URI handler integration
- XDG-compatible config path behavior
Active workflows:
ci.yml: validates.SRCINFO, runsnamcap PKGBUILD, and builds the Arch package onpull_requestandpushtomainrelease.yml: runs only on version tags, creates the GitHub Release, and then syncs the fullaur/bundle to AURbuild_and_publish.yml: legacy manual-only placeholder kept during the migration
The release version always comes from aur/PKGBUILD (pkgver + pkgrel).
Create the tag with the local preflight script:
./release.sh
git push origin main --follow-tagsrelease.sh checks that the working tree is clean, HEAD matches origin/main, .SRCINFO is current, and the tag v<pkgver>-<pkgrel> does not already exist.
release.yml then validates the tag, builds the package in an Arch container, publishes the GitHub release with generated notes, injects the tagged commit SHA into aur/PKGBUILD, regenerates .SRCINFO, and pushes the updated AUR files.
If you create the tag locally and need to abort before pushing it, delete it with git tag -d v<pkgver>-<pkgrel>.
For local testing, native-build/build.sh creates a portable bundle that includes the app sources, production dependencies, the locally installed Electron runtime, and an isolated state/ directory for config/cache/data.
./native-build/build.sh
./native-build/dist/perplexity-native-1.5.1-2.run --target /tmp/perplexity-testThe generated .run installer extracts a self-contained test build and keeps Perplexity settings inside the installed bundle by default.
| Component | Version | Description |
|---|---|---|
| Electron | System package | Uses system-provided Electron (Arch package) |
| Target Electron | 38.2.0 | Version used in upstream development |
| ToDesktop Runtime | ^2.1.2 | Additional capabilities |
| Package Version | 1.5.1 | Current application version |
Note: You can use a specific Electron version by setting
ELECTRON_CUSTOM_BINin the configuration file.
- Report bugs with reproducible steps
- Suggest improvements in discussions
- Submit pull requests with focused changes
- Star the project
Mixed licensing (important)
- Upstream Perplexity application files synced from AppImage: UNLICENSED (upstream terms).
- Repository-authored wrapper/integration files (AUR packaging, launcher, CI): Apache-2.0.
See full scope details in the LICENSE file.
Perplexity Native for Linux
Maintained by mazixs • 2026
