AM-extras
April 18, 2026 · View on GitHub
Extensions for "AM", the package manager for AppImages and portable apps for GNU/Linux
This repository is used to extend the available AM/AppMan software portfolio by adding third-party sources to the AM database.
To know more about AM, visit https://github.com/ivan-hc/AM
Main index
How to create a database for AM
Each directory in the root of this repository contains a script named "lister.sh" that generates a Markdown table in its same directory.
How to set up the lister.sh script
It is a shell script that must create a table .md whit the name of the architecture, in this format:
| appname | description | site | download | version |
|---|---|---|---|---|
| program0 | Description of program0 | url-of-the-main-page | url-to-the-file | 1.5 |
| program1 | Description of program1 | url-of-the-main-page | url-to-the-file | 0.8 |
Note the spaces between one separator and another (see the code below):
| appname | description | source (URL) | download (URL) | version |
You can check the lister.sh script in each directory of this repo as an example.
All lists available in this repository are updated every hour trough Github Actions.
Why AM/AppMan needs a markdown table to handle Third-party apps
Given the table above, AM and AppMan will use awk to detect the item, in the following order:
appnameis the name of the program, used in all interested optionsdescriptionis the description of this app and is used in when AM/AppMan crates the lists to be used in-l/listand-q/querysitecan be both the homepage of the project, the url of the database or an unique URL, also a fake one, in case there are multipleappnamewith the same name in the same table. For the latters, the option-i/installwill use the multiple values ofsiteto prompt a list from where you can pick one. We call them "families"downloadis the direct download URL of the program. In the installation script and in the AM-updater,awkuses it to download the file, whenversionis changedversionis the version of the program or the releases (all depends on the targeted database), and it is used in the AM-updater to compare online and offline versions. If they are different,downloadwill be called to replace the existing program
In APP-MANAGER (core script of AM/AppMan), each of these numbered columns is represented by one of these variables
export awk_name="1" awk_description="2" awk_site="3" awk_dl="4" awk_ver="5"
How AM/AppMan uses these tables
Each database must have its own simple name. This will be used:
- as a flag after two dashes, in
-l,-qand-i - as an extension after a dot, in
-aand-i - as first word into a variable name
Given the above rules, and given a database we will call "sample":
- the flag will be
--sample - the extension will be
.sample - the variables will be called
sample_repo,sample_readmeandsample_info(see below)sample_repois the main page of the database. This will be shown in-h/helpand-a/aboutsample_readmeis the .md file of the targeted architecture. NOTE thst "$ARCH" is set in AM/AppMan directlysample_info(new) is a description of the content of your database, to be shown in-h/help
How to add and use a new database in AM/AppMan
Once that you have added the new database directory in this repo with its own lister.sh script and its generated table .md, add the following line to the am-extras" script in the root of this repository, in the right space.
Where set_db is the name of the function that generates the database-sppecific variable names that AM/AppMan will use, yourdbname is the name of your database, an URL to the main site/source and a description of what the database provides:
set_db yourdbname "URL" "DESCRIPTION"
This will be a one-line command that looks like this:
set_db sample "https://sample.source.org" "The description of what this database provides, for example static binaries or Appimages."
How to test
In APP-MANAGER (am) or in appman there is a function named _sync_third_party_lists that contains a line _am_extras_sources:
- comment the line
_am_extras_sourcesin the_sync_third_party_listsfunction - add your lines to the ~/.local/share/AM/am-extras file
- run
am -l --yourdatabaseto see all available apps from your database - run
am -i appname.yourdatabaseoram -i --yourdatabase appnameto install an app from your database - run
am -a appname.yourdatabaseto get more info about the targeted app from your database - if everything is ok, submit your pull request to am-extras
How to test or use databases not in this repository
Given all these info, it is enough to create the variable names. For example, this is how lines would appear for the "sample" database:
export sample_repo="https://github.com/NAME/PROJECT"
export sample_readme="https://raw.githubusercontent.com/ivan-hc/am-extras/main/sample/${ARCH}.md"
export sample_info="This database contains amazing software in TYPE format."
export third_party_flags="$third_party_flags --sample"
NOTE, third_party_flags is a common variable needed to collect all flags of all databases. This is enriched with new flags each time it appear exported in "am-extras".
You can test your variables also from terminal, by exporting them
If you want, you can add them to your bashrc, if you have one.
But the simpler way is to submit it to this repository, so the am-extras script will handle it for you.
You can support me and my work on ko-fi.com and PayPal.me. Thank you!
© 2020-present Ivan Alessandro Sala aka 'Ivan-HC' - I'm here just for fun!
| ko-fi.com | PayPal.me | Install "AM"/"AppMan" | "Main Index" |
|---|