Skip to content
/ runapp Public

Linux desktop application runner

License

Notifications You must be signed in to change notification settings

c4rlo/runapp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

runapp

runapp is an application runner for Linux desktop environments that integrate with systemd.

Its job is simple: it launches the given application in an appropriate systemd user unit, according to systemd's idea of how this should be done.

It is useful if you are using a light-weight Linux desktop such as Sway. In such cases, runapp works great as a complement to your favourite application launcher, such as Fuzzel.

runapp owes its inspiration to uwsm, a great way to go all-in on the systemd way of running applications in a Desktop context, and another great complement to runapp. In fact, the uwsm app subcommand has exactly the same purpose as runapp, and has several more features; see below Missing features section for a comparison.

So why runapp? Its advantage over uwsm app is that it is a native executable (written in C++), hence it has significantly lower startup latency and resource usage (uwsm is written in Python). And compared to the uwsm-app tool that is shipped with uwsm, runapp does not require a permanently-running background daemon.

Usage

If you use Sway with Fuzzel, you might include something like the following in your .config/sway/config file:

bindsym Mod4+d runapp fuzzel --launch-prefix runapp

This will launch Fuzzel via runapp when the Super+D key combination is pressed, and tells Fuzzel to also run any application it launches via runapp.

Variants of the above will apply for other combinations of desktop compositors and application launchers.

Installation

Requirements:

  • GCC (needs C++23 support)
  • glibc
  • libsystemd (e.g. apt install libsystemd-dev on Debian/Ubuntu systems)
make install

Will compile a release version and install it (via sudo) as /usr/local/bin/runapp.

Current features

  • Fast
  • No dependencies beyond systemd
  • If run from Fuzzel, derive unit name from .desktop name, per systemd recommendations
  • On error, if not run from interactive terminal, show desktop notification

Missing features

Most of the features on this list are implemented in uwsm app.

  • Unit name: enforce restricted character set and max length
  • Unit description: derive from .desktop file
  • Support being given a Desktop File ID (only)
    • With optional Action ID
  • Support running .desktop files with args, using field codes
  • Support running app as systemd scope instead of systemd service
  • Support running app within different systemd slices
  • Support running app under Terminal
  • Support custom unit name / description
  • Help output
  • Verbose mode
  • Alternative ways of accepting Desktop File ID (beyond Fuzzel)
  • Linux distro packaging: at least AUR for Arch Linux

About

Linux desktop application runner

Resources

License

Stars

Watchers

Forks