feature/usage
[appimagekit/gsi.git] / README.md
blob5c36ee6b1d96544d448ae5160c745a2f4bf5a499
1 # AppImageKit [![Build Status](https://travis-ci.org/AppImage/AppImageKit.svg?branch=appimagetool/master)](https://travis-ci.org/AppImage/AppImageKit) [![discourse](https://img.shields.io/badge/forum-discourse-orange.svg)](http://discourse.appimage.org) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/probonopd/AppImageKit?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![irc](https://img.shields.io/badge/IRC-%23AppImage%20on%20freenode-blue.svg)](https://webchat.freenode.net/?channels=AppImage) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=ZT9CL8M5TJU72)
3 Copyright (c) 2004-17 Simon Peter <probono@puredarwin.org> and contributors.
5 Using AppImageKit you can package desktop applications as AppImages that run on common Linux-based operating systems, such as RHEL, CentOS, Ubuntu, Fedora, Debian and derivatives.
7 The __AppImage__ format is a format for packaging applications in a way that allows them to
8 run on a variety of different target systems (base operating systems, distributions) without further modification. 
10 https://en.wikipedia.org/wiki/AppImage
12 __AppImageKit__  is  a  concrete  implementation  of  the  AppImage  format  and  provides  tools such as `appimagetool` and `appimaged` for conveniently handling AppImages.
14 `appimagetool` uses a next-generation AppImage format based on squashfs and embeds a runtime for it. `appimaged` is a daemon that handles registering and unregistering AppImages with the system (e.g., menu entries, icons, MIME types, binary delta updates, and such).
16 ## appimagetool usage
18 A precompiled version can be found in the last successful Travis CI build, you can get it with:
20 ```
21 wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
22 chmod a+x appimagetool-x86_64.AppImage
23 ```
24 Usage in a nutshell, assuming that you already have an [AppDir](https://github.com/AppImage/AppImageSpec/blob/master/draft.md#appdir) in place:
25 ```
26 ./appimagetool-x86_64.AppImage some.AppDir
27 ```
29 Detailed usage:
30 ```
31 Usage:
32   appimagetool [OPTION...] SOURCE [DESTINATION] - Generate, extract, and inspect AppImages
34 Help Options:
35   -h, --help                  Show help options
37 Application Options:
38   -l, --list                  List files in SOURCE AppImage
39   -u, --updateinformation     Embed update information STRING; if zsyncmake is installed, generate zsync file
40   --bintray-user              Bintray user name
41   --bintray-repo              Bintray repository
42   --version                   Show version number
43   -v, --verbose               Produce verbose output
44   -s, --sign                  Sign with gpg2
45   -n, --no-appstream          Do not check AppStream metadata
46 ```
48 If you want to generate an AppImage manually, you can:
50 ```
51 mksquashfs Your.AppDir Your.squashfs -root-owned -noappend
52 cat runtime >> Your.AppImage
53 cat Your.squashfs >> Your.AppImage
54 chmod a+x Your.AppImage
55 ```
56 ## appimaged usage
58 `appimaged` is an optional daemon that watches locations like `~/bin` and `~/Downloads` for AppImages and if it detects some, registers them with the system, so that they show up in the menu, have their icons show up, MIME types associated, etc. It also unregisters AppImages again from the system if they are deleted. If [firejail](https://github.com/netblue30/firejail) is installed, it runs the AppImages with it.
60 A precompiled version can be found in the last successful Travis CI build, you can get it with:
62 ```
63 wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimaged-x86_64.AppImage"
64 chmod a+x appimaged-x86_64.AppImage
65 ```
67 Usage in a nutshell:
69 ```
70 ./appimaged-x86_64.AppImage --install
71 ```
73 Or, if you are on a deb-based system:
75 ```
76 wget -c "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimaged_1.0_amd64.deb"
77 sudo dpkg -i appimaged_*.deb
78 systemctl --user enable appimaged
79 systemctl --user start appimaged
80 ```
82 It will register the AppImages in with your system from the following places:
83 * $HOME/Downloads
84 * $HOME/.local/bin
85 * $HOME/bin
86 * /Applications
87 * /isodevice/Applications
88 * /isofrom/Applications
89 * /run/archiso/img_dev/Applications
90 * /opt
91 * /usr/local/bin
93 Run `appimaged -v` for increased verbosity.
95 Detailed usage:
96 ```
97 Usage:
98   appimaged [OPTION...] 
100 Help Options:
101   -h, --help          Show help options
103 Application Options:
104   -v, --verbose       Be verbose
105   -i, --install       Install this appimaged instance to $HOME
106   -u, --uninstall     Uninstall an appimaged instance from $HOME
107   --version           Show version number
111 __NOTE:__ It may be necessary to restart (or `xkill`) dash, nautilus, to recognize new directories that didn't exist prior to the first run of `appimaged`. Alternatively, it should be sufficient to log out of the session and log in again after having run appimaged once.
113 If you have `AppImageUpdate` on your `$PATH`, then it can also do this neat trick:
115 ![screenshot from 2016-10-15 16-37-05](https://cloud.githubusercontent.com/assets/2480569/19410850/0390fe9c-92f6-11e6-9882-3ca6d360a190.jpg)
117 Here is an easy way to get the latest AppImageUpdate onto your `$PATH`:
120 APP=AppImageUpdate
121 nodeFileName=$(wget -q "https://bintray.com/package/files/probono/AppImages/$APP?order=desc&sort=fileLastModified&basePath=&tab=files" -O - | grep -e '-x86_64.AppImage">' | cut -d '"' -f 6 | head -n 1)
122 wget -c "https://bintray.com/$nodeFileName" -O "$APP"
123 chmod a+x "$APP"
124 sudo mv "$APP" /usr/local/bin/
127 ## Building
129 __NOTE:__ The AppImage project supplies [binaries](https://github.com/AppImage/AppImageKit/releases/tag/continuous) that application developers can use. These binaries are built using the CentOS 6 Docker on Travis CI build system in this repository. As an application developer, you do not have to use the build system. You only have to use the build systems when contributing to AppImageKit, when needing another architecture than `x86_64`, or when trying to reproduce our binaries.
131 On a not too recent Ubuntu:
134 git clone -b appimagetool/master --single-branch --recursive https://github.com/AppImage/AppImageKit
135 cd AppImageKit/
136 sudo bash -ex install-build-deps.sh
137 bash -ex build.sh