F-Droid desktop client
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Thomas Dickson 2ca4f176bc
Added Keep Android Open notice to README.md
3 weeks ago
.github/workflows fix: testing in github actions: update minimum version 11 months ago
adb -user USER_ID: make sure that the user actually exists 3 years ago
contrib/completion/zsh feat: added more fdroidcl zsh completions 1 year ago
fdroid show: also show name of f-droid repository 3 years ago
testdata Fix error message printed twice on invalid subcommand flag 8 months ago
.gitignore add missing staticrepo index file 7 years ago
LICENSE Fix license wording 10 years ago
README.md Added Keep Android Open notice to README.md 3 weeks ago
clean.go clean: small change for help info 3 years ago
defaults.go feat: switch to toml as a config file 1 year ago
devices.go Use ANDROID_SERIAL for device selection (#75) 3 years ago
download.go allow downloads without adb installed 7 years ago
go.mod fix: testing in github actions: update minimum version 11 months ago
go.sum fix: testing in github actions 11 months ago
install.go -user USER_ID: make sure that the user actually exists 3 years ago
list.go feat: add list all known repositories 4 months ago
main.go Fix error message printed twice on invalid subcommand flag 8 months ago
main_test.go set AppData env for tests 3 years ago
repo.go fix: #82 urls with fingerprint component break adding repo 9 months ago
scan.go fix: make scanning print to stderr so the output can be directed into a file easier 1 year ago
search.go feat: add searching by repository 4 months ago
setup.go feat: added support for 'setups' that allow mass installations 1 year ago
show.go show: also show name of f-droid repository 3 years ago
uninstall.go -user USER_ID: make sure that the user actually exists 3 years ago
update.go show: also show name of f-droid repository 3 years ago

README.md

[!WARNING] Free and Open-Source Android is under threat.

Google will turn Android into a locked-down platform, restricting your essential freedom to install apps of your choice. Make your voice heard

Keep Android Open.

fdroidcl

GoDoc

F-Droid desktop client. Requires Go 1.21 or later.

 go install mvdan.cc/fdroidcl@latest

While the Android client integrates with the system with regular update checks and notifications, this is a simple command line client that talks to connected devices via ADB.

Quickstart

Download the index:

 fdroidcl update

Show all available apps:

 fdroidcl search

Install an app:

 fdroidcl install org.adaway

Show all available updates, and install them:

 fdroidcl search -u
 fdroidcl install -u

Unofficial packages are available on: Debian and Ubuntu.

Commands

 update                   Update the index
 search [<regexp...>]     Search available apps
 show <appid...>          Show detailed info about apps
 install [<appid...>]     Install or upgrade apps
 uninstall <appid...>     Uninstall an app
 download <appid...>      Download an app
 devices                  List connected devices
 scan                     Scan for known fdroid apps on a device
 list (categories/users)  List all known values of a kind
 repo                     Manage repositories
 setups                   Manage setups
 clean                    Clean index and/or cache
 defaults                 Reset to the default settings
 version                  Print version information

An appid is just an app's unique package name. A specific version of an app can be selected by following the appid with a colon and the version code. The 'search' and 'show' commands can be used to find these strings. For example:

 fdroidcl search redreader
 fdroidcl show org.quantumbadger.redreader
 fdroidcl install org.quantumbadger.redreader:85

new: you can manage the repositories now directly via cli

usage: fdroidcl repo

List, add, remove, enable or disable repositories.
When a repository is added, it is enabled by default.

List repositories:

        $ fdroidcl repo

Modify repositories:

        $ fdroidcl repo add <NAME> <URL>
        $ fdroidcl repo remove <NAME>
        $ fdroidcl repo enable <NAME>
        $ fdroidcl repo disable <NAME>

new: you can manage automating installs using setups

usage: fdroidcl setup

List, add, remove, edit, and import/export setups.
Setups allow for mass installs onto an android device, excellent for backups.

List setups:

        $ fdroidcl setup                Show all setups
        $ fdroidcl setup list <NAME>    Show details about one setup

Modify setups:
        $ fdroidcl setup new <NAME>
        $ fdroidcl setup remove <NAME>
        $ fdroidcl setup apply <NAME> 
        $ fdroidcl setup add-app <NAME> <APP-ID> 
        $ fdroidcl setup rm-app <NAME> <APP-ID> 
        $ fdroidcl setup add-repo <NAME> <REPO-NAME>
        $ fdroidcl setup rm-repo <NAME> <REPO-NAME>

Export setups:

        $ fdroidcl setup import <FILENAME>
        $ fdroidcl setup export <NAME>

Config

You can configure what repositories to use in the config.toml file. On Linux, you will likely find it at ~/.config/fdroidcl/config.toml.

You can run fdroidcl defaults to create the config with the default settings.

Advantages over the Android client

  • Command line interface
  • Batch install/update/remove apps without root nor system privileges
  • No need to install a client on the device

What it will never do

  • Run as a daemon, e.g. periodic index updates
  • Act as an F-Droid server
  • Swap apps with devices

Caveats

  • Index verification relies on HTTPS (not the JAR signature)
  • The tool can only interact with one device at a time
  • Hardware compatibility of packages is not checked

FAQ

  • What's the point of a desktop client?

This client works with Android devices connected via ADB; it does not install apps on the host machine.

  • Why not just use the f-droid.org website to download APKs?

That's always an option. However, an F-Droid client supports multiple repositories, searching for apps, filtering by compatibility with your device, showing available updates, et cetera.