Skip to main content



The easiest way to run Pragtical on Linux is to download and run the Pragtical AppImage. Most recent Linux systems supports AppImage, but you may need to install fuse.

Alternatively, we provide a "portable" tar.gz archive that can be downloaded and extracted to a directory.

Install via package managers

Pragtical is available on some package managers. A complete list is available at Repology.

These packages are maintained by the community.

Arch Linux (via AUR)

Packages for Arch Linux are available as 3 AUR repositories: pragtical and pragtical-git.

To install, you can clone the git repository to a working directory and run makepkg:

git clone
cd pragtical
makepkg -si

Alternatively, install it via an AUR helper such as yay.


Pragtical stable and nightly releases can be installed on Fedora using Copr. To install it, enable the sentry/pragtical Copr and install the appropriate package, for example:

dnf copr enable sentry/pragtical
dnf install pragtical-nightly

32-bit support

Unfortunately, Pragtical does not provide binary packages for 32-bit systems. You may want to compile Pragtical yourself.

32-bit version of Pragtical is not actively tested for bugs.

Due to a lack of testers, we've only been able to test whether the code can compile on a 32-bit system. This does not mean that Pragtical may run correctly.

Portable packages

Since v2.1.0, only portable packages are provided. These packages do not follow the UNIX Filesystem Hierarchy Standard (FHS).

\- data/
\- doc/
\- pragtical

To install the portable package according to the FHS, do the following:

  1. Move data/ to /usr/share/pragtical.
  2. Move doc/ to /usr/share/doc/pragtical
  3. Move pragtical to /usr/bin/pragtical

Client-side decorations

Certain Wayland desktops does not provide server-side decorations. By default, Pragtical (SDL under the hood) will use libdecor to draw client-side decorations.

To work around this, set config.borderless to true. Pragtical will draw a client-side decoration.

local config = require "core.config"
config.borderless = true