Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update readme (for "AM" 9) #1068

Merged
merged 17 commits into from
Nov 1, 2024
1,630 changes: 378 additions & 1,252 deletions README.md

Large diffs are not rendered by default.

33 changes: 33 additions & 0 deletions docs/guides-and-tutorials/backup-and-overwrite.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
### Backup and restore installed apps using snapshots

#### Backup
Option `-b` or `backup` creates a copy of the installed app into a dedicated directory under $HOME/.am-snapshots.

- by default, each snapshot is named with the date and time you have done the backup, just leave blank and press ENTER;
- if you press "1", the snapshot version will be used as the name;
- finally, you can simply write the name to give to the snapshot (spaces will be replaced with a "`_`").

https://github.com/user-attachments/assets/cff80e3d-a030-4649-a9ef-280938c2eb94

To restore the application to a previous version, copy/paste the name of the snapshot when the `-o` option will prompt it.

#### Restore
Option `-o` or `overwrite` lists all the snapshots you have created with the option `-o` (see above), and allows you to overwrite the new one:

https://github.com/user-attachments/assets/b11e8a2d-9f94-43a2-8c0b-09b9e173394e

### How to use multiple versions of the same application
You can use the `-b` option for snapshots, and where applicable, you can use the `downgrade` or `--rollback` option to install older versions of a program. This way, whenever you want to use a different version of the same program, you can use `-o`, using the snapshot you prefer.

For example, suppose you want to alternate "Kdenlive 24.08.1" (at the time of writing, it is the latest release available) with "Kdenlive 23.08" which still supports QT5, here's how to do it:
1. do a backup with `am -b kdenlive`, press `y` and press `1`, this will create the snapshot "24.08.1";
2. run the command `am downgrade kdenlive` and select the version 23.08 from the list;
3. run a backup again with `am -b kdenlive`, press `y` and press `1` to create the snapshot "23.08";
4. from now on, to switch between them, just use `am -o kdenlive` and select between "24.08.1" and "23.08", from the list.

You can create as many snapshots as you want and switch them this way according to your needs!

And if it is an AppImage, you can dedicate its own .home and .config directories to it (option `-H` and `-C`, respectively, in uppercase).

| [Back to "Guides and tutorials"](../../README.md#guides-and-tutorials) | [Back to "Main Index"](../../README.md#main-index) | ["Portable Linux Apps"](https://portable-linux-apps.github.io/) | [ "AppMan" ](https://github.com/ivan-hc/AppMan) |
| - | - | - | - |
11 changes: 11 additions & 0 deletions docs/guides-and-tutorials/downgrade.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
### Downgrade an installed app to a previous version
Use the `--rollback` option or `downgrade` in this way:
```
am --rollback ${PROGRAM}
```
This only works with the apps hosted on Github.

https://github.com/ivan-hc/AM/assets/88724353/8f286711-7934-461a-8bc2-b3a3e1d5f269

| [Back to "Guides and tutorials"](../../README.md#guides-and-tutorials) | [Back to "Main Index"](../../README.md#main-index) | ["Portable Linux Apps"](https://portable-linux-apps.github.io/) | [ "AppMan" ](https://github.com/ivan-hc/AppMan) |
| - | - | - | - |
35 changes: 35 additions & 0 deletions docs/guides-and-tutorials/extra.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
### Install AppImages not listed in this database but available in other github repos
From version 7.2 its possible to install AppImages not listed in this database, thanks to the option `-e` or `extra`.

You need to add the URL to the github repo before the name you want to give to the AppImage (for command line usage, for example).

Optionally, you can add a "keyword" if more AppImages are listed in the same repo.

Usage:
```
am -e $USER/$PROJECT $PROGRAM
am -e $USER/$PROJECT $PROGRAM $KEYWORD
```
or
```
appman -e $USER/$PROJECT $PROGRAM
appman -e $USER/$PROJECT $PROGRAM $KEYWORD
```
You can give whatever name you want to the apps (as long as they does not overlap with commands already existing on your system, be careful).

In this video I'll install AnyDesk as "remote-desktop-client":

https://github.com/user-attachments/assets/aa546905-38da-48b5-bb10-658426e8372b

In this other example, I'll install an obsolete version of WINE AppImage, from a repo that lists more versions of the same app:
1. the first attempt is without a keyword, so that the script picks the first AppImage in the list (for Debian Buster)
2. in the second attempt I'll use the keyword "arch" to pick the Arch-based AppImage

https://github.com/user-attachments/assets/af00a5f2-f3fe-4616-899a-155cb31d2acd

As you can see, there are all the files needed by any app listed in this database, also if an installation script for them does not exists.

Apps installed this way will enjoy the same benefits as those that can already be installed from the database with the "`-i`" or "`install`".

| [Back to "Guides and tutorials"](../../README.md#guides-and-tutorials) | [Back to "Main Index"](../../README.md#main-index) | ["Portable Linux Apps"](https://portable-linux-apps.github.io/) | [ "AppMan" ](https://github.com/ivan-hc/AppMan) |
| - | - | - | - |
20 changes: 20 additions & 0 deletions docs/guides-and-tutorials/files.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
### List the installed applications
Option `-f` or `files`, it shows the installed apps, the version, the size and the type of application:

https://github.com/user-attachments/assets/31e36845-48e9-4274-8978-ca86b525d797

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.
```
am -f
am -f --byname
am -f --less
```
or
```
appman -f
appman -f --byname
appman -f --less
```

| [Back to "Guides and tutorials"](../../README.md#guides-and-tutorials) | [Back to "Main Index"](../../README.md#main-index) | ["Portable Linux Apps"](https://portable-linux-apps.github.io/) | [ "AppMan" ](https://github.com/ivan-hc/AppMan) |
| - | - | - | - |
21 changes: 21 additions & 0 deletions docs/guides-and-tutorials/install-appimage.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
## Install only AppImages
All suboptions for `-i`/`install` listed above can be used to install AppImages only, it is enough to use the option `-ia`/`install-appimage`:
```
am -ia {PROGRAM}
am -ia --debug {PROGRAM}
am -ia --force-latest {PROGRAM}
```
or
```
appman -ia {PROGRAM}
appman -ia --debug {PROGRAM}
appman -ia --force-latest {PROGRAM}
```
In this example, I'll run the script `brave-appimage` but running `brave`, that instead is the original upstream package:

https://github.com/user-attachments/assets/b938430c-ec0b-4b90-850f-1332063d5e53

in the video above I first launch a "query" with the `-q` option to show you the difference between `brave` and `brave-appimage`, and then `-q --appimages` to show you only the appimages from the list.

| [Back to "Guides and tutorials"](../../README.md#guides-and-tutorials) | [Back to "Main Index"](../../README.md#main-index) | ["Portable Linux Apps"](https://portable-linux-apps.github.io/) | [ "AppMan" ](https://github.com/ivan-hc/AppMan) |
| - | - | - | - |
46 changes: 46 additions & 0 deletions docs/guides-and-tutorials/install.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
## Install applications
The option `-i` or `install` is the one responsible of the installation of apps or libraries.

### Install, normal behaviour
This is the normal syntax:
```
am -i $PROGRAM
```
or
```
appman -i $PROGRAM
```
in this video I'll install AnyDesk:

https://github.com/user-attachments/assets/62bc7444-8b1f-4db2-b23b-db7219eec15d

### Install, debug an installation script
The "install.am" module contains some patches to disable long messages. You can see them with the suboption `--debug`:
```
am -i --debug $PROGRAM
```
or
```
appman -i --debug $PROGRAM
```
let test again the installation of AnyDesk using the `--debug` flag:

https://github.com/user-attachments/assets/9dd73186-37e2-4742-887e-4f98192bd764

### Install the "latest" stable release instead of the latest "unstable"
By default, many installation scripts for apps hosted on github will point to the more recent generic release instead of "latest", which is normally used to indicate that the build is "stable". This is because upstream developers do not always guarantee a certain packaging format in "latest", sometimes they may only publish packages for Windows or macOS, so pointing to "latest" would not guarantee that any package for Linux will be installed.

On the other hand, if you know that the upstream developer will always guarantee a Linux package in "latest" and "AM" instead points to a potentially unstable development version (Alpha, Beta, RC...), this is the syntax to adopt:
```
am -i --force-latest $PROGRAM
```
or
```
appman -i --force-latest $PROGRAM
```
in this video I'll install "SqliteBrowser" using the `--force-latest` flag:

https://github.com/user-attachments/assets/ee29adfd-90e1-46f7-aed9-b9c410f68776

| [Back to "Guides and tutorials"](../../README.md#guides-and-tutorials) | [Back to "Main Index"](../../README.md#main-index) | ["Portable Linux Apps"](https://portable-linux-apps.github.io/) | [ "AppMan" ](https://github.com/ivan-hc/AppMan) |
| - | - | - | - |
43 changes: 43 additions & 0 deletions docs/guides-and-tutorials/launcher.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
### Integrate local AppImages into the menu by dragging and dropping them
If you are a user who is used to dragging your local AppImages scattered around the system and if you are a user who likes clutter and wants to place their packages in different places... this option is for you.

The option `--launcher` allows you to drag and drop a local AppImage to create a launcher to place in the menu, like any other classic AppImage helper would... but in SHELL.

This option also allows you to create a symbolic link with the name you prefer, in "`~/.local/bin`". Leave blank to let the option create a shell script that calls your AppImage, with extension ".appimage", lowercased.

##### How to create a launcher for a local AppImage
```
am --launcher /path/to/File.AppImage
```
or
```
appman --launcher /path/to/File.AppImage
```
In this video I'll integrade Brave AppImage, the first time without a name, and the second time by choosing "brave" (NOTE, the ".appimage" in $PATH is a little shell script that calls the AppImage, not the whole AppImage):

https://github.com/user-attachments/assets/caa22ab7-b6a4-45c4-bd33-27316251e267

Now the binaries are "two", keep read to see how to remove them using "AM" and "AppMan".

##### How to remove the orphan launchers
In case you move your AppImages somewhere else or remove them, use the following otion `-c` or `clean` to get rid of all the orphaned launchers and dead symlinks and scripts you created earlier:
```
am -c
```
or
```
appman -c
```
In this video I'll remove the AppImage, and then I'll remove the launchers and items in $PATH created in the previous video (see above):

https://github.com/user-attachments/assets/2dedf1a9-43c2-455c-8c97-2023bedc4203

##### AppImages from external media
Another peculiarity concerns the use of the `-c` option on launchers created on AppImage packages placed on removable devices:
- if in the .desktop file belongs to an AppImage placed in /mnt or /media and none of the references are mounted, the option `-c` will not be able to remove it until you mount the exact device where it was placed in the moment you have created the launcher;
- if you mount that same device and the AppImage is not where it was when you created the launcher, it will be removed.

This is very useful if you have large AppImage packages that you necessarily need to place in a different partition.

| [Back to "Guides and tutorials"](../../README.md#guides-and-tutorials) | [Back to "Main Index"](../../README.md#main-index) | ["Portable Linux Apps"](https://portable-linux-apps.github.io/) | [ "AppMan" ](https://github.com/ivan-hc/AppMan) |
| - | - | - | - |
19 changes: 19 additions & 0 deletions docs/guides-and-tutorials/list-and-query.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
### List and query all the applications available on the database
Option `-l` or `list` shows the whole list of apps available in this repository.

This option uses `less` to show the list, so to exit its enough to press "**Q**".

If the option `-l` is followed by `--appimages`, you will be able to see only the available AppImages.

https://github.com/user-attachments/assets/eae9ea83-d1f7-4f15-8acf-0cfb7a75a1af

Option `-q` or `query` shows search results from the list above.

If followed by `--appimages`, the search results will be only for the available AppImages.

If followed by `--pkg`, all keywords will be listed also if not on the same line. This is good if you are looking for multiple packages.

https://github.com/user-attachments/assets/1b2f3f3b-fe22-416f-94d8-d5e0465b3f6d

| [Back to "Guides and tutorials"](../../README.md#guides-and-tutorials) | [Back to "Main Index"](../../README.md#main-index) | ["Portable Linux Apps"](https://portable-linux-apps.github.io/) | [ "AppMan" ](https://github.com/ivan-hc/AppMan) |
| - | - | - | - |
56 changes: 56 additions & 0 deletions docs/guides-and-tutorials/newrepo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
### Third-party databases for applications (NeoDB)
Use the option `newrepo` or `neodb` to add new repositories to use instead of this one. This works for both online and offline repositories.

Set a new default repo, use "add" to append the path to a local directory or an online URL:
```
am newrepo add {URL}\{PATH}
```
or
```
appman newrepo add {URL}\{PATH}
```
then use "select" to use it by default:
```
am newrepo select
```
or
```
appman newrepo select
```
a message will warn you about the usage of this repo instead of the default one.

In the screenshot below, I'm adding an offline directory and an online "RAW" fork of "AM"
![Istantanea_2024-08-25_20-10-47](https://github.com/user-attachments/assets/599f1c11-e2dd-4343-ac51-32e0eeb2643f)

Use "on"/"off" to enable/disable it:
```
am newrepo on
am newrepo off
```
or
```
appman newrepo on
appman newrepo off
```
Use "purge" to remove all 3rd party repos:
```
am newrepo purge
```
or
```
appman newrepo purge
```
Use "info" to see the source from where installation scripts and lists are taken.
```
am newrepo info
```
or
```
appman newrepo info
```
if no third-party repo is in use, you will see the default URLs from this repo.

![Istantanea_2024-08-25_20-07-54 png](https://github.com/user-attachments/assets/793e64b9-7377-424c-a70e-a83e89c5225c)

| [Back to "Guides and tutorials"](../../README.md#guides-and-tutorials) | [Back to "Main Index"](../../README.md#main-index) | ["Portable Linux Apps"](https://portable-linux-apps.github.io/) | [ "AppMan" ](https://github.com/ivan-hc/AppMan) |
| - | - | - | - |
44 changes: 44 additions & 0 deletions docs/guides-and-tutorials/nolibfuse.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
### Convert Type2 AppImages requiring libfuse2 to New Generation AppImages
Option `nolibfuse` converts old Type2 AppImages asking for "libfuse2" into new generation AppImages:
```
am nolibfuse $PROGRAM
```
or
```
appman nolibfuse $PROGRAM
```
in this example, I'll convert Libreoffice and Kdenlive:

https://github.com/user-attachments/assets/494d0d92-f46c-4d4e-b13d-f1d01168fb8f

As you can see, the file sizes are also smaller than before.

This process only works for old AppImages that still depend on "libfuse2", other files will be ignored.

The original AppImage will be extracted using the `--appimage-extract` option, and then repackaged using `appimagetool` from https://github.com/AppImage/appimagetool

#### Updating converted AppImages
The `nolibfuse` option adds the following lines at the end of the AM-updater script
```
echo y | am nolibfuse $APP
notify-send "$APP has been converted too! "
```
or
```
echo y | appman nolibfuse $APP
notify-send "$APP has been converted too! "
```
so if an update happens through "comparison" of versions, the converted AppImage will be replaced by the upstream version and then the `nolibfuse` option will automatically start the conversion (prolonging the update time, depending on the size of the AppImage). In this example, I update all the apps, including the original Avidemux, that is an old Type2 AppImage:

https://github.com/user-attachments/assets/03683d8b-32d8-4617-83e3-5278e33b46f4

Instead, if the installed AppImage can be updated via `zsync`, **this may no longer be updatable**, anyway a solution may be the use of `appimageupdatetool`, at https://github.com/AppImageCommunity/AppImageUpdate .

The `nolibfuse` option has been improved since version 7.8, so everyone can say goodbye to the old "libfuse2" dependence.

Anyway, **I suggest anyone to contact the developers to update the packaging method of their AppImage!** This is also a way to keep open source projects alive: your participation through feedback to the upstream.

The `nolibfuse` option is not intended to replace the work of the owners of these AppImage packages, but to encourage the use of AppImage packages on systems that do not have "libfuse2", a library that is now obsolete and in fact no longer available out-of-the-box by default in many distributions, first and foremost Ubuntu and Fedora.

| [Back to "Guides and tutorials"](../../README.md#guides-and-tutorials) | [Back to "Main Index"](../../README.md#main-index) | ["Portable Linux Apps"](https://portable-linux-apps.github.io/) | [ "AppMan" ](https://github.com/ivan-hc/AppMan) |
| - | - | - | - |
12 changes: 12 additions & 0 deletions docs/guides-and-tutorials/remove.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
### Remove one or more applications
Option `-R` removes the selected apps without asking (to have a prompt, use `-r` or `remove`):

https://github.com/ivan-hc/AM/assets/88724353/4d26d2d7-4476-4322-a0ab-a0a1ec14f751

### How to update or remove apps manually
Inside each installed applications directory, there are two scripts called "AM-updater" and "remove", and their purpose is indicated in their name:
- To update an app manually, run the AM-updater script.
- To remove an application instead, run the "remove" script.

| [Back to "Guides and tutorials"](../../README.md#guides-and-tutorials) | [Back to "Main Index"](../../README.md#main-index) | ["Portable Linux Apps"](https://portable-linux-apps.github.io/) | [ "AppMan" ](https://github.com/ivan-hc/AppMan) |
| - | - | - | - |
Loading