appimaged

command
v0.0.0-...-32ce2be Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 18, 2021 License: MIT Imports: 44 Imported by: 0

README

appimaged

This is an experimental implementation of the optional AppImage daemon, appimaged, in Go.

Initial setup

Assuming you are using a 64-bit Intel machine (arm64, also known as x86_64), you can use our pre-compiled binaries. To try it out, boot a Ubuntu, Debian, Fedora, openSUSE, elementary OS, KDE neon,... Live ISO and run:

# Remove pre-existing similar tools
systemctl --user stop appimaged.service || true
sudo apt-get -y remove appimagelauncher || true

# Clear cache
rm "$HOME"/.local/share/applications/appimage*

# Optionally, install Firejail (if you want sandboxing functionality)

# Download
mkdir -p ~/Applications
wget -c https://github.com/$(wget -q https://github.com/probonopd/go-appimage/releases -O - | grep "appimaged-.*-x86_64.AppImage" | head -n 1 | cut -d '"' -f 2) -P ~/Applications/
chmod +x ~/Applications/appimaged-*.AppImage

# Launch
~/Applications/appimaged-*.AppImage

Removal

systemctl --user stop appimaged.service || true
sudo rm /etc/systemd/user/appimaged.service
rm ~/.local/share/applications/appimagekit*.desktop
rm ~/Applications/appimaged-*-x86_64.AppImage

Notes

Do not remove "~/Applications/appimaged*.AppImage". The service is running from this location (unless you want to do the uninstallation process)

The extension of AppImage files MUST be case-sensitive to be recognized by appimaged service.

Folders being watched for AppImage files:

  • /usr/local/bin
  • /opt
  • ~/Applications
  • ~/.local/bin
  • $PATH, which frequently includes /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin, and other locations

https://github.com/probonopd/go-appimage/releases/tag/continuous has builds for 32-bit Intel, 32-bit ARM (e.g., Raspberry Pi), and 64-bit ARM.

Features

Implemented

  • Registers type-1 and type-2 AppImages
  • Detects mounted and unmounted partitions by watching DBus
  • Significantly lower CPU and memory usage than other implementations
  • Error notifications in case applications cannot be launched for whatever reason
  • If Firejail is on the $PATH, various options for running applications sandboxed via the context menu
  • Updating applications via the context menu
  • Opening the containing folder via the context menu
  • Extracting AppImages via the context menu
  • Announces itself on the local network using Zeroconf (more to come)
  • Real-time notification based on PubSub when updates are available, as soon as they are uploaded
  • Quality checking of AppImages and notifications in case of errors (can be extended)
  • Launch Services like functionality, e.g., being able to launch the newest version of an AppImage that we know of

Envisioned

  • Seamless P2P distribution using IPFS?
  • Decentralized PubSub using IPFS?
  • Web-of-trust (based on a Social Graph)?
  • Blockchain?
  • ...

Building

If for whatever reason you would like to build from source:

sudo apt-get -y install gcc 
if [ -z $GOPATH ] ; then export GOPATH=$HOME/go ; fi
go get github.com/probonopd/go-appimage/src/appimaged 
go build -trimpath -ldflags="-s -w" github.com/probonopd/go-appimage/src/appimaged

Documentation

Overview

appwrapper executes applications and presents errors to the GUI as notifications TODO: Enable appimaged for DBus Activation so that the running instance can wrap the apps, so that we don't need to run another appimaged process for each app

Contains the commands appimaged can be invoked with

watcher document

zeroconf.go

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL