/ README.md
README.md
  1  # "AM" Application Manager
  2  ### Database & solutions for all AppImages and portable apps for GNU/Linux!
  3  
  4  <div align="center">
  5  
  6  | <img src="https://raw.githubusercontent.com/ivan-hc/AM/main/sample/sandbox.gif"> | <img src="https://raw.githubusercontent.com/ivan-hc/AM/main/sample/list.gif"> | <img src="https://raw.githubusercontent.com/ivan-hc/AM/main/sample/about.gif"> |
  7  | - | - | - |
  8  | *sandbox AppImages* | *list available apps* | *info about the apps* |
  9  | <img src="https://raw.githubusercontent.com/ivan-hc/AM/main/sample/install.gif"> | <img src="https://raw.githubusercontent.com/ivan-hc/AM/main/sample/query.gif"> | <img src="https://raw.githubusercontent.com/ivan-hc/AM/main/sample/files.gif"> |
 10  | *install applications* | *query lists using keywords* | *show the installed apps* |
 11  | <img src="https://raw.githubusercontent.com/ivan-hc/AM/main/sample/backup-overwrite.gif"> | <img src="https://raw.githubusercontent.com/ivan-hc/AM/main/sample/update.gif"> | <img src="https://raw.githubusercontent.com/ivan-hc/AM/main/sample/nolibfuse.gif"> |
 12  | *create and restore snapshots* | *update everything* | *get rid of libfuse2* |
 13  
 14  </div>
 15  
 16  "AM"/"AppMan" is a set of scripts and modules for installing, updating, and managing AppImage packages and other portable formats, in the same way that APT manages DEBs packages, DNF the RPMs, and so on... using a large database of Shell scripts inspired by the Arch User Repository, each dedicated to an app or set of applications.
 17  
 18  "AM"/"AppMan" aims to be the default package manager for all AppImage packages, giving them a home to stay.
 19  
 20  You can consult the entire **list of managed apps** at [**portable-linux-apps.github.io/apps**](https://portable-linux-apps.github.io/apps).
 21  
 22  ------------------------------------------------------------------------
 23  ## What does it do?
 24  
 25  "AM" easily integrates portable programs and AppImages system-wide (by default) or locally (using the `--user` flag), allows for their updates and management from the command line, integrates them into the application menu and can even assemble them on the fly as an AUR helper.
 26  
 27  "AM" is just a tool to provide applications easily and quickly and is only responsible for integrating the AppImages into the system and installing the various programs available, respecting the following order:
 28  1. creation of the base directories and the removal script
 29  2. download of the package
 30  3. creation of the version file and the update script
 31  4. possibly, extraction of the icons and .desktop files
 32  
 33  ## What doesn't it do!
 34  **"AM" is NOT responsible for the malfunction of individual apps!** This is a problem of those who develop or package them upstream.
 35  
 36  You can use the command `am -a {PROGRAM}` to view the description and get the sources **to contact the program maintainers**, or `am -d {PROGRAM}` to **download and read the script on your desktop to trace and reach the source safely**.
 37  
 38  ------------------------------------------------------------------------
 39  # Main index
 40  ------------------------------------------------------------------------
 41  
 42  [Installation](#installation)
 43  
 44   - [AM installation structure](#am-installation-structure)
 45   - [Uninstall](#uninstall)
 46   - [How are apps installed](#how-are-apps-installed)
 47   - [How to set the path to local apps](#how-to-set-the-path-to-local-apps)
 48   - [What programs can be installed](#what-programs-can-be-installed)
 49     - [Supported third-party databases](#supported-third-party-databases)
 50     - [How to replace AM database](#how-to-replace-am-database)
 51  
 52  [How to update all programs, for real!](#how-to-update-all-programs-for-real)
 53   - [How to update all installed apps](#how-to-update-all-installed-apps)
 54   - [How to update everything using Topgrade](#how-to-update-everything-using-topgrade)
 55  
 56  [Options](#options)
 57  
 58  [Guides and tutorials](#guides-and-tutorials)
 59  
 60  [Instructions for Linux Distro Maintainers](#instructions-for-linux-distro-maintainers)
 61  
 62  [Troubleshooting](#troubleshooting)
 63  
 64  [Related projects](#related-projects)
 65  
 66  ------------------------------------------------------------------------
 67  # Installation
 68  To install "AM" you must first install the "core" dependencies from your package manager:
 69  - "`coreutils`" (contains "`cat`", "`chmod`", "`chown`"...);
 70  - "`curl`", to check URLs;
 71  - "`grep`", to check files;
 72  - "`sed`", to edit/adapt installed files;
 73  - "`wget`" to download all programs and update "AM" itself.
 74  - "`sudo`" or "`doas`", for installing and removing programs at the system level.
 75  
 76  <details>
 77    <summary>Additionally, you may need these optional dependencies, click here.</summary>
 78  
 79  - "`binutils`", contains a series of basic commands, including "`ar`" which extracts .deb packages;
 80  - "`less`", to read the ever-longer lists;
 81  - "`unzip`", to extract .zip packages;
 82  - "`tar`", to extract .tar* packages;
 83  - "`torsocks`", to connect to the TOR network;
 84  - "`zsync`", required by very few programs and AppImages (although it is mentioned in all installation scripts, it is often disabled because the managed .zsync files are often broken, especially for apps hosted on github.com).
 85  
 86  </details>
 87  
 88  ------------------------------------------------------------------------
 89  ### Quick installation
 90  The "AM-INSTALLER" script allows you to choose "[AppMan](#what-is-appman)" instead of "AM", briefly explaining the differences between the two.
 91  
 92  Copy/paste the following one line command to download and run the "[AM-INSTALLER](https://github.com/ivan-hc/AM/blob/main/AM-INSTALLER)" script
 93  ```
 94  wget -q https://raw.githubusercontent.com/ivan-hc/AM/main/AM-INSTALLER && chmod a+x ./AM-INSTALLER && ./AM-INSTALLER
 95  ```
 96  ...below, the screenshot of what will appear.
 97  
 98  ![Istantanea_2024-11-02_00-03-39 png](https://github.com/user-attachments/assets/7bb170da-5b17-4d36-8d86-679d477debf5)
 99  
100  Type "1" to install "AM", "2" to install "[AppMan](#what-is-appman)". Any other key will abort the installation.
101  
102  **Installation is complete!**
103  
104  Run `am -h` or jump to "**[Usage](#usage)**" to see all the available options.
105  
106  ------------------------------------------------------------------------
107  ### Other installation methods
108  As already said, the "AM-INSTALLER" script in the previous paragraph helps you choosing between "[AppMan](#what-is-appman)" and "AM", briefly explaining the differences. However, installing "AM" can be much simpler than that. All "AM-INSTALLER" does when you select "1" is to download and run another script, named "[INSTALL](https://github.com/ivan-hc/AM/blob/main/INSTALL)". That said, you can easily install "AM" without "intermediaries".
109  
110  #### Using "GIT"
111  Copy/paste the following commands
112  ```
113  git clone https://github.com/ivan-hc/AM.git
114  cd AM
115  chmod a+x INSTALL
116  sudo ./INSTALL
117  ```
118  
119  #### Using "Wget"
120  Copy/paste the following one line command command
121  ```
122  wget https://raw.githubusercontent.com/ivan-hc/AM/main/INSTALL && chmod a+x ./INSTALL && sudo ./INSTALL
123  ```
124  This is definitely the quickest method of all!
125  
126  **NOTE, the reason why I gave priority to the "AM-INSTALLER" script in this guide is because "AM" can be used in different forms. In fact, not all users can afford to install "AM" with root privileges. That's why "[AppMan](#what-is-appman)" also exists.**
127  
128  ------------------------------------------------------------------------
129  ### What is AppMan?
130  AppMan is a portable version of "AM", limited to installing and managing apps only locally and without root privileges.
131  
132  The command name changes, from `am` to `appman`, but the script is the same.
133  
134  "AM" on the contrary, provides a "fixed" installation, but can install and manage apps both locally and at the system level.
135  
136  - "AM" is for privileged users who want to install and manage apps at multiple levels
137  - "AppMan" is the way to go for non-privileged users or those who don't have great needs
138  
139  If you want to know more about "AppMan", visit https://github.com/ivan-hc/AppMan
140  
141  ------------------------------------------------------------------------
142  ### AM installation structure
143  The classic "AM" installation has the following structure:
144  ```
145  /opt/am/APP-MANAGER ==> /usr/local/bin/am
146  /opt/am/modules
147  /opt/am/remove
148  ```
149  Where the command `/usr/local/bin/am` is just a symbolic link to `/opt/am/APP-MANAGER`. The directory `/opt/am/modules` contains the modules "not vital" for "AM" but necessary for managing the apps. The script `/opt/am/remove` is instead necessary for removing "AM".
150  
151  ------------------------------------------------------------------------
152  ### Uninstall
153  To uninstall "AM" simply run this command:
154  ```
155  sudo /opt/am/remove
156  ```
157  or from the CLI directly
158  ```
159  am -R am
160  ```
161  NOTE, it is recommended to remove apps first using the `-R` option, and then "AM", since locally installed apps may have a different path than `/opt`, see "[How are apps installed](#how-are-apps-installed)", below.
162  
163  **If you are an AppMan user**, `appman` is a portable script, you can simply remove it manually. **If you used AM-INSTALLER**, you simply need to remove the `$HOME/.local/bin/appman` script. To remove applications, the same rule as AM, above, applies. Their location is the one you indicated in the `$HOME/.config/appman/appman-config` file.
164  
165  ------------------------------------------------------------------------
166  ### How are apps installed
167  The system-wide AppImage integration has the following structure:
168  ```
169  /opt/$PROGRAM/
170  /opt/$PROGRAM/$PROGRAM
171  /opt/$PROGRAM/AM-updater
172  /opt/$PROGRAM/remove
173  /opt/$PROGRAM/icons/$ICON-NAME
174  /usr/local/bin/$PROGRAM
175  /usr/local/share/applications/$PROGRAM-AM.desktop
176  ```
177  Locally installed apps can have a directory of your choice, depending on what you decided when you first started `am -i --user {PROGRAM}` or when you started `appman` (if you chose [AppMan](#what-is-appman)) or by using the `am --user` command.
178  
179  In fact, the `--user` command can be used as a "flag" for application installation options, allowing you to integrate them locally and without root permissions, as AppMan does.
180  
181  For example, let's say you want to create and use the `/home/USER/Applicazioni` directory, here is the structure of a locally embedded AppImage:
182  ```
183  ~/Applicazioni/$PROGRAM/
184  ~/Applicazioni/$PROGRAM/$PROGRAM
185  ~/Applicazioni/$PROGRAM/AM-updater
186  ~/Applicazioni/$PROGRAM/remove
187  ~/Applicazioni/$PROGRAM/icons/$ICON-NAME
188  ~/.local/bin/$PROGRAM
189  ~/.local/share/applications/$PROGRAM-AM.desktop
190  ```
191  
192  ------------------------------------------------------------------------
193  ### How to set the path to local apps
194  
195  The configuration file for the path to locally installed applications is located in `~/.config/appman` and contains the path you specified when you first launched an option to install applications using the `--user` flag, for example:
196  ```
197  am -i --user {PROGRAM}
198  ```
199  If you are an AppMan user, you can simply launch any option.
200  
201  When you first launch it, you will be asked to specify a path to the applications. You can specify any directory or subdirectory you want, **even outside of $HOME**, as long as it is not privileged. Even a USB stick.
202  
203  NOTE: by modifying the contents of `~/.config/appman`, you will only change the paths for any subsequent operation, while apps and modules stored in the old path will not be manageable. It is recommended to remove the apps first.
204  
205  ------------------------------------------------------------------------
206  ### What programs can be installed
207  "AM" installs, removes, updates and manages only standalone programs, ie those programs that can be run from a single directory in which they are contained.
208  
209  1. **PORTABLE PROGRAMS** from official sources (see Firefox, Thunderbird, Blender, NodeJS, Chromium Latest, Platform Tools...), extracted from official .deb/tar/zip packages.
210  2. **APPIMAGES**, from both official and unofficial sources (I also create unofficial AppImages), or compiled on-the-fly with [pkg2appimage](https://github.com/AppImage/pkg2appimage) and [appimagetool](https://github.com/AppImage/AppImageKit), like an AUR helper, from official archives.
211  3. **FIREFOX PROFILES** to run as webapps, the ones with suffix "ffwa-" in the apps list.
212  4. **THIRD-PARTY LIBRARIES** if they are missing in your repositories.
213  
214  The database aims to be a reference point where you can download all the AppImage packages scattered around the web, otherwise unobtainable, as you would expect from any package manager, through specific installation scripts for each application, as happens with the AUR PKGBUILDs, on Arch Linux. You can see all of them [here](https://github.com/ivan-hc/AM/tree/main/programs), divided by architecture.
215  
216  You can view basic information, site links and sources using the related command `am -a {PROGRAM}`, or visit [**portable-linux-apps.github.io/apps**](https://portable-linux-apps.github.io/apps).
217  
218  #### Supported third-party databases
219  Another feature of "AM" is extensibility, thanks to the management of applications from external databases through the use of dedicated "flags" to be used during the installation process (option `-i` or `install`), the creation of lists (`-l` or `list`) and searches (`-q` or `query`)
220  ```
221                  am -i --{FLAG} {PROGRAM}
222                  am -i --{FLAG} --user {PROGRAM}
223                  am -l --{FLAG}
224                  am -q --{FLAG} {KEYWORD}
225  ```
226  These databases have the task of supporting and enriching the list of applications that can be installed via "AM". Here are the ones currently supported:
227  - "[Toolpacks](https://github.com/Azathothas/Toolpacks)", the flag to use is `--toolpack`
228  
229  Third-party databases can show basic information normally with the option `-a` or `about`, no flag is needed here. However, the name of the package will be shown with an extension equivalent to the flag used to install it. For example `{PROGRAM}` will be `{PROGRAM}.toolpack` if coming from the "Toolpacks" database.
230  
231  Same thing, you can use `am -i {PROGRAM}.toolpack` or `am -i --user {PROGRAM}.toolpack` to install the program without using the flag.
232  
233  #### How to replace AM database
234  One thing I care a lot about is **continuity**, and as I have seen over the years, not all open source developers are able to maintain a project. This could happen to me in the future. I don't want it to be that way.
235  
236  Because of this, I have made some essential variables "customizable":
237  - `APPSDB`, i.e. the "raw" directory of the architecture in use, containing the installation scripts (default value *https://raw.githubusercontent.com/ivan-hc/AM/main/programs/$ARCH*), this is mainly used in `-i`, `-d` and `-s`/`-u`
238  - `APPSDBLIST`, i.e. the list of applications available for that architecture (default value *https://raw.githubusercontent.com/ivan-hc/AM/main/programs/$ARCH-apps*), this is used every time lists are updated, for example in `-l`, `-q` and `-s`/`-u`
239  - `APPIMAGES_LIST`, i.e. the list of AppImages available in the database (default value *https://raw.githubusercontent.com/Portable-Linux-Apps/Portable-Linux-Apps.github.io/main/x86_64-appimages*), used in `-ia` and `-l`/`-q` with the `--appimages` flag
240  - `AMCATALOGUEMARKDOWNS`, i.e. the pages in .md format from the catalog of applications available in this database (default value *https://portable-linux-apps.github.io/apps*, add an appname with extension .md to see the content of one file), this is used in `-a`
241  - `AMCATALOGUEICONS`, i.e. the icons in .png format available in the catalog of applications available in this database (default value *https://portable-linux-apps.github.io/icons*, add an appname with extension .png to see one file), this is used in `-i`, in case the installation script fails to get an icon for the application
242  - `AMSYNC`, if set to "1" prevents AM from updating itself and updating modules when running `-s` or `-u`
243  
244  it is enough to `export` the variables above and respect the destination file format (follow the URLs in parentheses) in case you decide to open a new community-driven database that can make up for the lack of support in this repository.
245  
246  I did this to not tie users to this database and to allow them to use AM and all its features if I, Ivan, am unable to intervene for any reason.
247  
248  There are many discontinuous projects. Should this become one too, it will not be obsolete.
249  
250  ------------------------------------------------------------------------
251  
252  | [Back to "Main Index"](#main-index) |
253  | - |
254  
255  ------------------------------------------------------------------------
256  ## How to update all programs, for real!
257  Most of the apps managed by "AM" have a script called `AM-updater`. It tells how updates are checked when running the `am -u` command.
258  
259  In most cases, the "version comparison" is used between the installed one (file `version`) and an online source (official or not, depending on how hard or easy it is to find a download URL or just a number, using the terminal). In other cases, AppImages can rely on "`appimageupdatetool`" if they support "delta updates" (install it with the command `am -i appimageupdatetool`). However, there are some programs that update themselves (and among these the most famous is certainly Firefox, all official development builds).
260  
261  ### How to update all installed apps
262  Option `-u` or `update` updates all the installed apps and keeps "AM"/"AppMan" in sync with the latest version and all latest bug fixes.
263  
264  1. To update only the programs, use `am -u --apps` / `appman -u --apps`
265  2. To update just one program, use `am -u $PROGRAM` / `appman -u $PROGRAM`
266  3. To update all the programs and "AM"/"AppMan" itself, just run the command`am -u` / `appman -u`
267  4. To update only "AM"/"AppMan" and the modules use the option `-s` instead, `am -s` / `appman -s`
268  
269  The `-u` option can also be combined with the `--debug` flag to show the output of installed application updates.
270  
271  ### How to update everything using Topgrade
272  Keeping your system up to date usually involves invoking multiple package managers. This results in big, non-portable shell one-liners saved in your shell. To remedy this, Topgrade detects which tools you use and runs the appropriate commands to update them.
273  
274  Install the "`topgrade`" package using the command
275  ```
276  am -i topgrade
277  ```
278  or
279  ```
280  am -i --user topgrade
281  ```
282  Visit [github.com/topgrade-rs/topgrade](https://github.com/topgrade-rs/topgrade) to learn more.
283  
284  ------------------------------------------------------------------------
285  
286  | [Back to "Main Index"](#main-index) |
287  | - |
288  
289  ------------------------------------------------------------------------
290  # OPTIONS
291  
292  <details>
293    <summary>Click here to see the full list of options</summary>
294    
295  ------------------------------------------------------------------------
296  ## USAGE:
297  
298  		am {OPTION}
299  		am {OPTION} {PROGRAM}
300  
301  ------------------------------------------------------------------------
302  ### `about`, `-a`
303  
304  		am -a {PROGRAM}
305  
306  **Description**:
307  
308  Shows more info about one or more apps.
309  
310  ------------------------------------------------------------------------
311  ### `apikey`
312  
313  		am apikey {Github Token}
314  		am apikey delete
315  
316  **Description**:
317  
318  Accede to github APIs using your personal access tokens. The file named "ghapikey.txt" will be saved in ~/.local/share/AM. Use "`del`" to remove it.
319  
320  ------------------------------------------------------------------------
321  ### `backup`, `-b`
322  
323  		am -b {PROGRAM}
324  
325  **Description**:
326  
327  Create a snapshot of the current version of an installed program.
328  
329  ------------------------------------------------------------------------
330  ### `clean`, `-c`
331  
332  		am -c
333  
334  **Description**:
335  
336  Removes all the unnecessary files and folders.
337  
338  ------------------------------------------------------------------------
339  ### `config`, `-C`, `--config`
340  
341  		am -C {PROGRAM}
342  
343  **Description**:
344  
345  Set a dedicated `$XDD_CONFIG_HOME` for one or more AppImages.
346  
347  ------------------------------------------------------------------------
348  ### `downgrade`, `--rollback`
349  
350  		am --rollback {PROGRAM}
351  
352  **Description**:
353  
354  Download an older or specific app version.
355  
356  ------------------------------------------------------------------------
357  ### `download`, `-d`
358  
359  		am -d {PROGRAM}
360  		am -d --convert {PROGRAM}
361  
362  **Description**:
363  
364  Download one or more installation scripts to your desktop or convert them to local installers for "AppMan". To test the scripts, use the "`am -i '/path/to/script'`" command or enter the directory of the script and run the "`am -i ./script`" command, even using dedicated flags, if necessary (see "`-i`").
365  
366  ------------------------------------------------------------------------
367  ### `extra`, `-e`
368  
369  		am -e user/project {APPNAME}
370  		am -e user/project {APPNAME} {KEYWORD}
371  
372  **Description**:
373  
374  Install AppImages from github.com, outside the database. This allows you to install, update and manage them all like the others. Where "`user/project`" can be the whole URL to the github repository, give a name to the program so that it can be used from the command line. Optionally, add an "univoque" keyword if multiple AppImages are listed.
375  
376  NOTE: Since this is an "install" option, you can add the "`--user`" flag (before "`user/project`") to install apps locally. See "`--user`" at the bottom to learn more.
377  
378  ------------------------------------------------------------------------
379  ### `files`, `-f`, `-fi`
380  
381  		am -f
382  		am -f --byname
383  		am -f --less
384  
385  **Description**:
386  
387  Shows the list of all installed programs, with sizes. By default apps are sorted by size, use "`--byname`" to sort by name. With the option "`--less`" it shows only the number of installed apps. Option "`-fi`" only shows installed apps, not the AppImages integrated with the "`--launcher`" option.
388  
389  ------------------------------------------------------------------------
390  ### `help`, `-h`
391  
392  		am -h
393  
394  **Description**:
395  
396  Prints this message.
397  
398  ------------------------------------------------------------------------
399  ### `home`, `-H`, `--home`
400  
401  		am -H {PROGRAM}
402  
403  **Description**:
404  
405  Set a dedicated $HOME directory for one or more AppImages.
406  
407  ------------------------------------------------------------------------
408  ### `icons`, `--icons`
409  
410  		am --icons {PROGRAM}
411  		am --icons --all
412  
413  **Description**:
414  
415  Allow installed apps to use system icon themes. You can specify the name of the apps to change or use the "`--all`" flag to change all of them at once. This will remove the icon path from the .desktop file and add the symbolic link of all available icons in the `~/.local/share/icons/hicolor/scalable/apps` directory. The "`--icons`" 
416   option can be used as "flag" in the "`-i`" and "`-ia`" options.
417  
418  ------------------------------------------------------------------------
419  ### `install`, `-i`
420  
421   		am -i {PROGRAM}
422   		am -i --debug {PROGRAM}
423   		am -i --force-latest {PROGRAM}
424   		am -i --icons {PROGRAM}
425   		am -i --sandbox {PROGRAM}
426  
427  **Description**:
428  
429  Install one or more programs or libraries from the list. With the "`--debug`" option you can see log messages to debug the script. For more details on "`--force-latest`", see the dedicated option, below. Use the "`--icons`" flag to allow the program to use icon themes. It can also be extended with additional flags (see "`--toolpack`"). The "`--sandbox`" flag allows you to set sandboxes for AppImage packages.
430  
431  NOTE: Since this is an "install" option, you can add the "`--user`" flag to install apps locally. See "`--user`" at the bottom to learn more.
432  
433  ------------------------------------------------------------------------
434  ### `install-appimage`, `-ia`, `-ias`
435  
436   		am -ia {PROGRAM}
437   		am -ia --debug {PROGRAM}
438   		am -ia --force-latest {PROGRAM}
439   		am -ia --icons {PROGRAM}
440   		am -ia --sandbox {PROGRAM}
441   		am -ias {PROGRAM}
442  
443  **Description**:
444  
445  Same as "install" (see above) but for AppImages only.  Option "`-ias`" (aka Install AppImage & Sandox) is equivalent to "`-ia --sandbox`", to set sandboxes for AppImage packages.
446  
447  ------------------------------------------------------------------------
448  ### `lock`
449  
450  		am lock {PROGRAM}
451  
452  **Description**:
453  
454  Prevent an application being updated, if it has an"AM-updater" script.
455  
456  ------------------------------------------------------------------------
457  ### `list`, `-l`
458  
459                  am -l
460                  am -l --all
461                  am -l --appimages
462  
463  **Description**:
464  
465  Shows the list of all the apps available, or just the AppImages. It can also be extended with additional flags, the "`--all`" flag allows you to consult the set of all supported databases (see "`--toolpack`").
466  
467  ------------------------------------------------------------------------
468  ### `newrepo`, `neodb`
469  
470  		am newrepo add {URL}\{PATH}
471  		am newrepo select
472  		am newrepo on\off
473  		am newrepo purge
474  		am newrepo info
475  
476  **Description**:
477  
478  Set a new default repo, use "`add`" to append the path to a local directory or an online URL, then use "`select`" to use it by default, a message will warn you about the usage of this repo instead of the default one. Use "`on`"/"`off`" to enable/disable it. Use "`purge`" to remove all 3rd party repos. Use "`info`" to see the source from where installation scripts and lists are taken.
479  
480  ------------------------------------------------------------------------
481  ### `nolibfuse`
482  
483  		am nolibfuse {PROGRAM}
484  
485  **Description**:
486  
487  Convert old AppImages and get rid of "libfuse2" dependence.
488  
489  ------------------------------------------------------------------------
490  ### `overwrite`, `-o`
491  
492  		am -o {PROGRAM}
493  
494  **Description**:
495  
496  Overwrite apps with snapshots saved previously (see "-b").
497  
498  ------------------------------------------------------------------------
499  ### `query`, `-q`
500  
501                  am -q {KEYWORD}
502                  am -q --all {KEYWORD}
503                  am -q --appimages {KEYWORD}
504                  am -q --pkg {PROGRAM1} {PROGRAM2}
505  
506  **Description**:
507  
508  Search for keywords in the list of available applications, add the "`--appimages`" option to list only the AppImages or add "`--pkg`" to list multiple programs at once. It can also be extended with additional flags, the "`--all`" flag allows you to consult the set of all supported databases (see "`--toolpack`").
509  
510  ------------------------------------------------------------------------
511  ### `remove`, `-r`
512  
513  		am -r {PROGRAM}
514  
515  **Description**:
516  
517  Removes one or more apps, requires confirmation.
518  
519  ------------------------------------------------------------------------
520  ### `-R`
521  
522  		am -R {PROGRAM}
523  
524  **Description**:
525  
526  Removes one or more apps without asking.
527  
528  ------------------------------------------------------------------------
529  ### `sandbox`, `--sandbox`
530  
531  		am sandbox {PROGRAM}
532  
533  **Description**:
534  
535  Run an AppImage in a sandbox using Aisap.
536  
537  NOTE, "`--sandbox`" can be used as a flag in "`-i`" and "`-ia`" or can be replaced using the option "`-ias`" (aka Install AppImage & Sandox).
538  
539  ------------------------------------------------------------------------
540  ### `sync`, `-s`
541  
542  		am -s
543  
544  **Description**:
545  
546  Updates this script to the latest version hosted.
547  
548  ------------------------------------------------------------------------
549  ### `template`, `-t`
550  
551  		am -t {PROGRAM}
552  
553  **Description**:
554  
555  Generate a custom installation script. To test the scripts, use the "`am -i '/path/to/script'`" command or enter the directory of the script and run the "`am -i ./script`" command, even using dedicated flags, if necessary (see "`-i`").
556  
557  ------------------------------------------------------------------------
558  ### `unlock`
559  
560  		am unlock {PROGRAM}
561  
562  **Description**:
563  
564  Unlock updates for the selected program (nulls "`lock`").
565  
566  ------------------------------------------------------------------------
567  ### `update`, `-u`, `-U`
568  
569   		am -u
570   		am -u --apps
571   		am -u --debug
572   		am -u --apps --debug
573   		am -u {PROGRAM}
574   		am -u --debug {PROGRAM}
575   		am -u --launcher
576  
577  **Description**:
578  
579  Update everything. Add "`--apps`" to update only the apps or write only the apps you want to update by adding their names. Add the "`--debug`" flag to view the output of AM-updater scripts. Add the "`--launcher`" flag to try to update only local AppImages integrated with the "`--launcher`" option (see "`--launcher`").
580  
581  ------------------------------------------------------------------------
582  ### `version`, `-v`
583  
584  		am -v
585  
586  **Description**:
587  
588  Shows the version.
589  
590  ------------------------------------------------------------------------
591  ### `--devmode-disable`
592  
593  		am --devmode-disable
594  
595  **Description**:
596  
597  Undo "`--devmode-enable`" (see below).
598  
599  ------------------------------------------------------------------------
600  ### `--devmode-enable`
601  
602  		am --devmode-enable
603  
604  **Description**:
605  
606  Use the development branch (at your own risk).
607  
608  ------------------------------------------------------------------------
609  ### `--disable-notifications`
610  
611  		am --disable-notifications
612  
613  **Description**:
614  
615  Disable notifications during apps update.
616  
617  ------------------------------------------------------------------------
618  ### `--disable-sandbox`
619  
620  		am --disable-sandbox {PROGRAM}
621  
622  **Description**:
623  
624  Disable the sandbox for the selected app.
625  
626  ------------------------------------------------------------------------
627  ### `--enable-notifications`
628  
629  		am --enable-notifications
630  
631  **Description**:
632  
633  Enable notifications during apps update (nulls "`--disable-notifications`").
634  
635  ------------------------------------------------------------------------
636  ### `--force-latest`
637  
638  		am --force-latest {PROGRAM}
639  
640  **Description**:
641  
642  Downgrades an installed app from pre-release to "latest".
643  
644  ------------------------------------------------------------------------
645  ### `--launcher`
646  
647  		am --launcher /path/to/${APPIMAGE}
648  
649  **Description**:
650  
651  Drag/drop one or more AppImages in the terminal and embed them in the apps menu and customize a command to use from the CLI.
652  
653  NOTE that "`--launcher`" can be used as a flag in "`-u`" to try to update the integrated AppImages (see "`-u`"). This works only if "appimageupdatetool" is installed and delta updates are supported. This flag does not work miracles, I strongly suggest to use options "`-ia`" and "`-e`" instead.
654  
655  ------------------------------------------------------------------------
656  ### `--system`
657  
658  		am --system
659  
660  **Description**:
661  
662  Switch "AM" back to "AM" from "AppMan Mode" (see "`--user`").
663  
664  ------------------------------------------------------------------------
665  ### `--toolpack`
666  
667                  am -i --toolpack {PROGRAM}
668                  am -i --toolpack --user {PROGRAM}
669                  am -l --toolpack
670                  am -q --toolpack {KEYWORD}
671   
672  **Description**:
673  
674  This is a flag to use in "`-i`" to install Toolpack programs, in "`-l`" to list all available Toolpacks, and "`-q`" to search the Toolpack list. Toolpack is a collection of programs external to the "AM" database. Visit https://github.com/Azathothas/Toolpacks to learn more.
675  
676  NOTE, for installations you can use "`.toolpack`" as the package extension instead of using the flag.
677  
678  ------------------------------------------------------------------------
679  ### `--user`, `appman`
680  
681  		am --user
682  
683  **Description**:
684  
685  Made "AM" run in "AppMan Mode", locally, useful for unprivileged users. This option only works with "AM".
686  
687  The "`--user`" option can also be used just as a "flag" for installation options. For example:
688  
689  - Use it to install applications locally, option "`-i`" or "`install`":
690  
691  		am -i --user {PROGRAM}
692  
693  - Also suboptions of "`-i`" can work with this flag:
694  
695   		am -i --user --debug {PROGRAM}
696   		am -i --user --force-latest {PROGRAM}
697   		am -i --user --icons {PROGRAM}
698   		am -i --user --debug --force-latest {PROGRAM}
699   		am -i --user --debug --force-latest --icons {PROGRAM}
700  
701  - Same for AppImages only, option "`-ia`" or "`install-appimage`":
702  
703  	 	am -ia --user {PROGRAM}
704  	 	am -ia --user --debug {PROGRAM}
705   		am -ia --user --force-latest {PROGRAM}
706  	 	am -ia --user --icons {PROGRAM}
707  	 	am -ia --user --debug --force-latest {PROGRAM}
708  	 	am -ia --user --debug --force-latest --icons {PROGRAM}
709  
710  - External AppImages can be installed like this as well, option "`-e`" or "`extra`":
711  
712  		am -e --user user/project {APPNAME}
713  		am -e --user user/project {APPNAME} {KEYWORD}
714  
715  NOTE, "AM" 9 or higher is also able to, update and manage apps locally, by default, and without having to switch to "AppMan Mode".
716  
717  </details>
718  
719  ------------------------------------------------------------------------
720  
721  | [Back to "Main Index"](#main-index) |
722  | - |
723  
724  ------------------------------------------------------------------------
725  # Guides and tutorials
726  Below you can access the documentation pages related to the use of "AM", complete with tutorials and demonstration videos, depending on the topic you are interested in:
727  
728  ------------------------------------------------------------------------
729  - [Install applications](docs/guides-and-tutorials/install.md)
730  - [Install only AppImages](docs/guides-and-tutorials/install-appimage.md)
731    - [Install and sandbox AppImages in one go](docs/guides-and-tutorials/install-appimage.md#install-and-sandbox-appimages-in-one-go)
732  - [Install AppImages not listed in this database but available in other github repos](docs/guides-and-tutorials/extra.md)
733  - [List the installed applications](docs/guides-and-tutorials/files.md)
734  - [List and query all the applications available on the database](docs/guides-and-tutorials/list-and-query.md)
735  - [Update all](docs/guides-and-tutorials/update.md)
736  - [Backup and restore installed apps using snapshots](docs/guides-and-tutorials/backup-and-overwrite.md)
737  - [Remove one or more applications](docs/guides-and-tutorials/remove.md)
738  - [Convert Type2 AppImages requiring libfuse2 to New Generation AppImages](docs/guides-and-tutorials/nolibfuse.md)
739  - [Integrate local AppImages into the menu by dragging and dropping them](docs/guides-and-tutorials/launcher.md)
740    - [How to create a launcher for a local AppImage](docs/guides-and-tutorials/launcher.md#how-to-create-a-launcher-for-a-local-appimage)
741    - [How to remove the orphan launchers](docs/guides-and-tutorials/launcher.md#how-to-remove-the-orphan-launchers)
742    - [AppImages from external media](docs/guides-and-tutorials/launcher.md#appimages-from-external-media)
743    - [Update scattered AppImages](docs/guides-and-tutorials/launcher.md#update-scattered-appimages)
744  - [Sandbox an AppImage](docs/guides-and-tutorials/sandbox.md)
745    - [How to enable a sandbox](docs/guides-and-tutorials/sandbox.md#how-to-enable-a-sandbox)
746    - [How to disable a sandbox](docs/guides-and-tutorials/sandbox.md#how-to-disable-a-sandbox)
747    - [Sandboxing example](docs/guides-and-tutorials/sandbox.md#sandboxing-example)
748    - [About Aisap sandboxing](docs/guides-and-tutorials/sandbox.md#about-aisap-sandboxing)
749  - [How to update or remove apps manually](docs/guides-and-tutorials/remove.md#how-to-update-or-remove-apps-manually)
750  - [Downgrade an installed app to a previous version](docs/guides-and-tutorials/downgrade.md)
751  - [How to use multiple versions of the same application](docs/guides-and-tutorials/backup-and-overwrite.md#how-to-use-multiple-versions-of-the-same-application)
752  - [Create and test your own installation script](docs/guides-and-tutorials/template.md)
753    - [Option Zero: "AppImages"](docs/guides-and-tutorials/template.md#option-zero-appimages)
754    - [Option One: "build AppImages on-the-fly"](docs/guides-and-tutorials/template.md#option-one-build-appimages-on-the-fly)
755    - [Option Two: "Archives and other programs"](docs/guides-and-tutorials/template.md#option-two-archives-and-other-programs)
756    - [Option Three: "Firefox profiles"](docs/guides-and-tutorials/template.md#option-three-firefox-profiles)
757    - [How an installation script works](docs/guides-and-tutorials/template.md#how-an-installation-script-works)
758    - [How to test an installation script](docs/guides-and-tutorials/template.md#how-to-test-an-installation-script)
759    - [How to submit a Pull Request](docs/guides-and-tutorials/template.md#how-to-submit-a-pull-request)
760  - [Third-party databases for applications (NeoDB)](docs/guides-and-tutorials/newrepo.md)
761  - [BSD, freeBSD and derivative systems: configuration and troubleshooting](docs/guides-and-tutorials/bsd.md)
762  
763  ------------------------------------------------------------------------
764  
765  | [Back to "Main Index"](#main-index) |
766  | - |
767  
768  ------------------------------------------------------------------------
769  # Instructions for Linux Distro Maintainers
770  You can package "AM" for Debian, Fedora, Arch Linux, Gentoo and many more GNU/Linux distros using the following configuration:
771  ```
772  /usr/bin/am
773  /usr/lib/am/modules
774  ```
775  where "`/usr/bin/am`" is the script "[APP-MANAGER](https://github.com/ivan-hc/AM/blob/main/APP-MANAGER)" and "`/usr/lib/am/modules`" is the directory "[modules](https://github.com/ivan-hc/AM/tree/main/modules)" with all its content.
776  
777  Applications will continue to be installed in /opt, as always. What changes from the normal "AM" installation is the update of the CLI and modules, which will instead be completely managed by the package manager in use (APT, DNF, PacMan/YAY...).
778  
779  **As for "AppMan"**, **there is no packaging**, as it is a standalone or self-updating script, and needs to be in a read-write directory without root privileges.
780  
781  ------------------------------------------------------------------------
782  
783  | [Back to "Main Index"](#main-index) |
784  | - |
785  
786  ------------------------------------------------------------------------
787  # Troubleshooting
788  Below you can access documentation pages for common issues and frequently asked questions:
789  
790  ------------------------------------------------------------------------
791  - [An application does not work, is old and unsupported](docs/troubleshooting.md#an-application-does-not-work-is-old-and-unsupported)
792  - [Cannot download or update an application](docs/troubleshooting.md#cannot-download-or-update-an-application)
793  - [Cannot mount and run AppImages](docs/troubleshooting.md#cannot-mount-and-run-appimages)
794  - [Failed to open squashfs image](docs/troubleshooting.md#failed-to-open-squashfs-image)
795  - [Spyware, malware and dangerous software](docs/troubleshooting.md#spyware-malware-and-dangerous-software)
796  - [Stop AppImage prompt to create its own launcher, desktop integration and doubled launchers](docs/troubleshooting.md#stop-appimage-prompt-to-create-its-own-launcher-desktop-integration-and-doubled-launchers)
797  - [The script points to "releases" instead of downloading the latest stable](docs/troubleshooting.md#the-script-points-to-releases-instead-of-downloading-the-latest-stable)
798  - [Ubuntu mess](docs/troubleshooting.md#ubuntu-mess)
799  - [Wrong download link](docs/troubleshooting.md#wrong-download-link)
800  
801  ------------------------------------------------------------------------
802  
803  | [Back to "Main Index"](#main-index) |
804  | - |
805  
806  ------------------------------------------------------------------------
807  # Related projects
808  #### External tools and forks used in this project
809  - *[aisap](https://github.com/mgord9518/aisap), sandboxing solutions for AppImages*
810  - *[appimagetool](https://github.com/AppImage/appimagetool), get rid of libfuse2 from your AppImages*
811  - *[pkg2appimage](https://github.com/AppImage/pkg2appimage), create AppImages on the fly from existing .deb packages*
812  - *[repology](https://github.com/repology), the encyclopedia of all software versions*
813  
814  #### Partner projects, i.e. those that actively contribute to this project
815  - *[Toolpacks](https://github.com/Azathothas/Toolpacks), Largest Collection of Multi-Platform Pre-Compiled Static Binaries*
816  
817  #### My other projects
818  - *[AppImaGen](https://github.com/ivan-hc/AppImaGen), easily create AppImages from Ubuntu PPAs or Debian using pkg2appimage and appimagetool*
819  - *[ArchImage](https://github.com/ivan-hc/ArchImage), create AppImages for all distributions using Arch Linux packages. Powered by JuNest*
820  - *[Firefox for Linux scripts](https://github.com/ivan-hc/Firefox-for-Linux-scripts), easily install the official releases of Firefox for Linux*
821  - *[My AppImage packages](https://github.com/ivan-hc#my-appimage-packages) the complete list of packages managed by me and available in this database*
822  - *[Snap2AppImage](https://github.com/ivan-hc/Snap2AppImage), try to convert Snap packages to AppImages*
823  
824  ------------------------------------------------------------------------
825  
826  ###### *You can support me and my work on [**ko-fi.com**](https://ko-fi.com/IvanAlexHC) and [**PayPal.me**](https://paypal.me/IvanAlexHC). Thank you!*
827  
828  --------
829  
830  *© 2020-present Ivan Alessandro Sala aka 'Ivan-HC'* - I'm here just for fun! 
831  
832  ------------------------------------------------------------------------
833  
834  | [**ko-fi.com**](https://ko-fi.com/IvanAlexHC) | [**PayPal.me**](https://paypal.me/IvanAlexHC) | [Install "AM"/"AppMan"](#installation) | ["Main Index"](#main-index) |
835  | - | - | - | - |
836  
837  ------------------------------------------------------------------------