Graphical user interface for managing your Linux applications. Supports AppImage, Debian and Arch packages (including AUR), Flatpak, Snap and native Web applications
bauh (baoo), formerly known as fpakman, is a graphical interface for managing your Linux software (packages/applications). It currently supports the following formats: AppImage, Debian and Arch Linux packages (including AUR), Flatpak, Snap and Web applications.
Key features
fuse
: the package name may vary from distributionqt5dxcb-plugin
(or equivalent): the package name may vary from distributionchmod a+x bauh-${version}-x86_64.AppImage
(replace ${version}
by the respective downloaded version)./bauh-${version}-x86_64.AppImage
Install bauh
sudo apt-get install python3 python3-pip python3-yaml python3-dateutil python3-pyqt5 python3-packaging python3-requests
sudo pip3 install bauh
aptitude
: Debian package managementtimeshift
: system backuparia2
: multi-threaded downloadsaxel
: multi-threaded downloads alternativelibappindicator3-1
: tray-modesqlite3
, fuse
: AppImage supportflatpak
: Flatpaks supportsnapd
: Snaps supportpython3-lxml
, python3-bs4
: Web apps supportpython3-venv
: isolated installation
xdg-utils
: to open URLs in the browsers (xdg-open
)Method 1
sudo pip3 install bauh --upgrade
Method 2
sudo pip3 uninstall bauh
sudo pip3 install bauh
bauh --reset # removes cache and configurations files from HOME
sudo pip3 uninstall bauh
yay -S bauh
git clone https://aur.archlinux.org/bauh.git
cd bauh
makepkg -si
timeshift
: system backuparia2
: multi-threaded downloadsaxel
: multi-threaded downloads alternativelibappindicator-gtk2
: tray-mode (GTK2 desktop environments)libappindicator-gtk3
: tray-mode (GTK3 desktop environments)xdg-utils
: to open URLs in the browser (xdg-open
)sqlite
, fuse2
, fuse3
: AppImage supportflatpak
: Flatpak supportsnapd
: Snap supportpacman
: ArchLinux package management supportpython-lxml
, python-beautifulsoup4
: Web apps supportpython-venv
: isolated installation
bauh --reset # removes cache and configurations files from HOME
pacman -R bauh
If you prefer an isolated installation from the system libraries, type the following commands:
python3 -m venv bauh_env # creates an isolated environment inside the directory called "bauh_env"
bauh_env/bin/pip install bauh # installs bauh in the isolated environment
bauh_env/bin/bauh # launches bauh. For the tray-mode: bauh_env/bin/bauh-tray
Updating bauh
bauh_env/bin/pip install bauh --upgrade
Uninstalling bauh
bauh_env/bin/bauh --reset # removes cache and configurations files from HOME
rm -rf bauh_env` (just remove the directory)
To create a shortcut for bauh on your desktop menu:
~/.local/share/applications
(or /usr/share/applications
for root)Exec
field on theses files by the bauh binary path. e.g: Exec=/usr/bin/bauh
(or bauh_env/bin/bauh
)/usr/share/icons/hicolor/scalable/apps
as bauh.svg
In order to initialize bauh with the system, use your Desktop Environment settings to register it as a startup application / script (bauh-tray). Or create a file named bauh.desktop in ~/.config/autostart with the content below:
[Desktop Entry]
Type=Application
Name=bauh (tray)
Exec=/path/to/bauh-tray
bauh is officially distributed through PyPi and AUR (bauh / bauh-staging)
Supported sources: AppImageHub (applications with no releases published to GitHub are not available)
All available application names can be found at apps.txt
Only x86_64 AppImage files are available through the search mechanism at the moment
Crashes may happen during an AppImage installation if AppImageLauncher is installed. It is recommended to uninstall it and reboot your system before trying to install an application.
Extra actions
Install AppImage file
: allows to install an external AppImage fileUpgrade file
: allows to upgrade a manually installed AppImage fileUpdate database
: manually synchronize the AppImage databaseInstall bauh
: installs bauh if it is running as an AppImageInstalled applications are store at ~/.local/share/bauh/appimage/installed
(or /usr/local/share/bauh/installed
for root)
Desktop entries (menu shortcuts) of the installed applications are stored at ~/.local/share/applications
(or /usr/share/applications
for root). Name pattern: bauh_appimage_appname.desktop
Symlinks are created at ~/.local/bin
(or /usr/local/bin
for root). They have the same name of the application (if the name already exists, it will be created as 'app_name-appimage'. e.g: rpcs3-appimage
)
Downloaded database files are stored at ~/.cache/bauh/appimage
(or /var/cache/bauh/appimage
for root) as apps.db and releases.db
Databases are updated during the initialization process if they are considered outdated
The configuration file is located at ~/.config/bauh/appimage.yml
(or /etc/bauh/appimage.yml
for root) and it allows the following customizations:
database:
expiration: 60 # defines the period (in minutes) in which the database will be considered up to date during the initialization process. Use 0 if you always want to update it. Default: 60.
suggestions:
expiration: 24 # defines the period (in hours) in which the suggestions stored in disc will be considered up to date. Use 0 if you always want to update them. Default: 24.
~/.config/bauh/appimage/updates_ignored.txt
(or /etc/bauh/appimage/updates_ignored.txt
for root)~/.cache/bauh/web/suggestions.txt
(or /var/cache/bauh/web/suggestions.yml
for root)Only available for Arch-based systems
It handles conflicts, missing / optional packages installations, and several providers scenarios
rebuild-detector integration (AUR only)
Automatically makes simple package compilation improvements (for AUR packages):
a) if MAKEFLAGS
is not set in /etc/makepkg.conf
,
then a copy of /etc/makepkg.conf
will be generated at ~/.config/bauh/arch/makepkg.conf
defining MAKEFLAGS to work with
the number of your machine processors (-j${nproc}
).
b) same as previous, but related to COMPRESSXZ
and COMPRESSZST
definitions (if '--threads=0' is not defined)
c) ccache
will be added to BUILDENV
if it is installed on the system and already not defined
d) set the device CPUs to performance scaling governor
Obs: For more information about them, have a look at Makepkg
Extra actions
Synchronize packages database
: synchronizes the database against the configured mirrors (sudo pacman -Syy
)Refresh mirrors
: allows to define multiple mirrors locations and sort by the fastest (sudo pacman-mirrors -c country1,country2 && sudo pacman-mirrors --fasttrack 5 && sudo pacman -Syy
)Quick system upgrade
: it executes a default pacman upgrade (pacman -Syyu --noconfirm
)Clean cache
: it cleans the pacman cache directory (default: /var/cache/pacman/pkg
)Mark PKGBUILD as editable
: it marks a given PKGBUILD of a package as editable (a popup with the PKGBUILD will be displayed before upgrading/downgrading this package). Action only available when the configuration property edit_aur_pkgbuild
is not false
.Unmark PKGBUILD as editable
: reverts the action described above. Action only available when the configuration property edit_aur_pkgbuild
is not false
.Allow reinstallation check
: it allows to check if a given AUR packages requires to be rebuiltIgnore reinstallation check
: it does not to check if a given AUR packages requires to be rebuiltCheck Snaps support
: checks if the Snapd services are properly enabled.Reinstall
(AUR only): rebuilds an installed package.If you have AUR added as a repository on you pacman configuration, make sure to disable bauh's support (through the settings described below)
AUR package compilation may require additional installed packages to work properly. Some of them are defined on the field optdepends
of the PKGBUILD
useradd
: required to create a simple user named bauh-aur (since makepkg does not allow building packages as the root user)runuser
: required to run commands as another userRepository packages currently do not support the following actions: Downgrade and History
If some of your installed packages are not categorized, open a PullRequest to the bauh-files repository changing categories.txt
During bauh initialization a full AUR normalized index is saved at ~/.cache/bauh/arch/aur/index.txt
Installed AUR packages have their PKGBUILD files cached at ~/.cache/bauh/arch/installed/$pkgname
Packages with ignored updates are defined at ~/.config/bauh/arch/updates_ignored.txt
The configuration file is located at ~/.config/bauh/arch.yml
and it allows the following customizations:
aur: true # allows to manage AUR packages. Default: true
repositories: true # allows to manage packages from the configured repositories. Default: true
optimize: true # if 'false': disables the auto-compilation improvements (AUR)
sync_databases: true # package databases synchronization once a day before the first package installation/upgrade/downgrade
sync_databases_startup: true # package databases synchronization once a day during startup
clean_cached: true # defines if old cached versions should be removed from the disk cache during a package uninstallation
refresh_mirrors_startup: false # if the package mirrors should be refreshed during startup
mirrors_sort_limit: 5 # defines the maximum number of mirrors that will be used for speed sorting. Use 0 for no limit or leave it blank to disable sorting.
repositories_mthread_download: false # enable multi-threaded download for repository packages if aria2/axel is installed (otherwise pacman will download the packages). Default: false
automatch_providers: true # if a possible provider for a given package dependency exactly matches its name, it will be chosen instead of asking for the user to decide (false). Default: true.
edit_aur_pkgbuild: false # if the AUR PKGBUILD file should be displayed for edition before the make process. true (PKGBUILD will always be displayed for edition), false (PKGBUILD never will be displayed), null (a popup will ask if the user want to edit the PKGBUILD). Default: false.
aur_build_dir: null # defines a custom build directory for AUR packages (a null value will point to /tmp/bauh/arch (non-root user) or /tmp/bauh_root/arch (root user)). Default: null.
aur_remove_build_dir: true # it defines if a package's generated build directory should be removed after the operation is finished (installation, upgrading, ...). Options: true, false (default: true).
aur_build_only_chosen : true # some AUR packages have a common file definition declaring several packages to be built. When this property is 'true' only the package the user select to install will be built (unless its name is different from those declared in the PKGBUILD base). With a 'null' value a popup asking if the user wants to build all of them will be displayed. 'false' will build and install all packages. Default: true.
aur_idx_exp: 1 # It defines the period (in HOURS) for the AUR index stored in disc to be considered up to date during the initialization process. Use 0 so that it is always updated. Default: 1. (P.S: this index is always updated when a package is installed/upgraded)
check_dependency_breakage: true # if, during the verification of the update requirements, specific versions of dependencies must also be checked. Example: package A depends on version 1.0 of B. If A and B were selected to upgrade, and B would be upgrade to 2.0, then B would be excluded from the transaction. Default: true.
suggest_unneeded_uninstall: false # if the dependencies apparently no longer necessary associated with the uninstalled packages should be suggested for uninstallation. When this property is enabled it automatically disables the property 'suggest_optdep_uninstall'. Default: false (to prevent new users from making mistakes)
suggest_optdep_uninstall: false # if the optional dependencies associated with uninstalled packages should be suggested for uninstallation. Only the optional dependencies that are not dependencies of other packages will be suggested. Default: false (to prevent new users from making mistakes)
suggest_optdep_select: Selects all or no optional dependencies when installing packages
categories_exp: 24 # It defines the expiration time (in HOURS) of the packages categories mapping file stored in disc. Use 0 so that it is always updated during initialization.
aur_rebuild_detector: true # it checks if packages built with old library versions require to be rebuilt. If a package needs to be rebuilt, it will be marked for update ('rebuild-detector' must be installed). Default: true.
prefer_repository_provider: true # when there is just one repository provider for a given a dependency and several from AUR, it will be automatically picked.
suggestions_exp: 24 # it defines the period (in hours) in which the suggestions stored in disc will be considered up to date. Use 0 if you always want to update them.
~/.cache/bauh/arch/suggestions.txt
(or /var/cache/bauh/arch/suggestions.yml
for root)aptitude update
)software-properties-gtk
is supported)~/.cache/bauh/debian/apps_idx.json
(or /var/cache/bauh/debian/apps_idx.json
for root)~/.cache/bauh/debian/suggestions.txt
(or /var/cache/bauh/debian/suggestions.txt
for root)~/.config/bauh/debian.yml
or /etc/bauh/debian.yml
index_apps.exp
: time period (in minutes) in which the installed applications cache is considered up-to-date during startup (default: 1440
-> 24 hours)sync_pkgs.time
: time period (in minutes) in which the packages synchronization must be done on startup (default: 1440
-> 24 hours)suggestions.exp
: it defines the period (in hours) in which the suggestions stored in disc will be considered up to date. Use 0 if you always want to update them.pkg_sources.app
: it defines the application for managing the software sources. A null
value detects one of the supported applications automatically.remove.purge
: if the package configurations should be removed during the uninstallation process (purge). Default: false.~/.config/bauh/flatpak/updates_ignored.txt
~/.config/bauh/flatpak.yml
and it allows the following customizations:installation_level: null # defines a default installation level: "user" or "system". (null will display a popup asking the level)
Refresh
: tries to update the current Snap application revisionChange channel
: allows to change the Snap application channel~/.config/bauh/snap.yml
and it allows the following customizations:install_channel: false # it allows to select an available channel during the application installation. Default: false
categories_exp: 24 # It defines the expiration time (in HOURS) of the Snaps categories mapping file stored in disc. Use 0 so that it is always updated during initialization.
~/.local/share/bauh/web/env
(or /usr/local/share/bauh/web/env
for root).~/.local/share/bauh/web/fixes/electron_{branch}/{app_name}.js
(or /usr/local/share/bauh/web/fixes/...
for root)~/.local/share/bauh/installed
(or /usr/local/share/bauh/web/installed
for root).~/.local/share/applications
(or /usr/share/applications
for root)~/.config/autostart
(or /etc/xdg/autostart
for root)
allowing the application to launch automatically after the system's boot attached to the tray.
Extra actions
Clean installation environment
: removes all the installation environment folders (it does not remove installed apps)The configuration file is located at ~/.config/bauh/web.yml
(or /etc/bauh/web.yml
for root) and it allows the following customizations:
environment:
electron:
version: null # set a custom Electron version here (e.g: '6.1.4')
system: false # set it to 'true' if you want to use the nativefier version globally installed on your system
cache_exp: 24 # defines the period (in HOURS) in which the stored environment settings are considered valid. Use 0 so that they are always updated. Default: 24.
suggestions:
cache_exp: 24 # defines the period (in HOURS) in which suggestions stored on the disk are considered up to date during the initialization process. Use 0 so that they are always updated. Default: 24.
~/.cache/bauh/web/suggestions.txt
(or /var/cache/bauh/web/suggestions.yml
for root)You can change some application settings via environment variables or arguments (type bauh --help
to get more information).
--tray
: if bauh should be launched attaching itself to the system tray.--settings
: it displays only the settings window.--reset
: it cleans all configurations and cached data stored in the HOME directory.--logs
: it enables logs (for debugging purposes).--offline
: it assumes the internet connection is off.--suggestions
: it forces loading software suggestions after the initialization process.download:
icons: true # allows bauh to download the applications icons when they are not saved on the disk
multithreaded: true # allows bauh to use a multithreaded download client installed on the system to download applications source files faster
multithreaded_client: null # defines the multi-threaded download tool to be used. If null, the default installed tool will be used (priority: aria2 > axel). Possible tools/values: aria2, axel
check_ssl: true # if the security certificate (SSL) should be checked before downloading files.
gems: null # defines the enabled applications types managed by bauh (a null value means "all available")
locale: null # defines a different translation for bauh (a null value will retrieve the system's default locale)
store_root_password: true # if the root password should be asked only once
memory_cache:
data_expiration: 3600 # the interval in SECONDS that data cached in memory will live
icon_expiration: 300 # the interval in SECONDS that icons cached in memory will live
suggestions:
by_type: 20 # the maximum number of application suggestions that must be retrieved per type
enabled: true # if suggestions must be displayed when no application is installed
system:
notifications: true # if system popup should be displayed for some events. e.g: when there are updates, bauh will display a system popup
single_dependency_checking: false # if bauh should check only once if for the available technologies on the system.
ui:
qt_style: fusion # defines the Qt style. A null value will map to 'fusion' as well.
table:
max_displayed: 50 # defines the maximum number of displayed applications on the table. Use 0 for no limit.
tray: # system tray settings
default_icon: null # defines a path to a custom icon
updates_icon: null # defines a path to a custom icon indicating updates
hdpi: true # enables HDPI rendering improvements. Use 'false' to disable them if you think the interface looks strange
auto_scale: false # activates Qt auto screen scale factor (QT_AUTO_SCREEN_SCALE_FACTOR). It fixes scaling issues for some desktop environments (like Gnome)
scale_factor: 1.0 # defines the interface display scaling factor (Qt). Raise the value to raise the interface size. The settings window display this value as a percentage (e.g: 1.0 -> 100%).
theme: defines the path to the theme/stylesheet file with a .qss extension (e.g: /path/to/my/theme.qss). For themes provided by bauh, only a string key is needed (e.g: light). Default: light
system_theme: merges the system's theme/stylesheet with bauh's. Default: false.
updates:
check_interval: 5 # the updates checking interval in minutes
ask_for_reboot: true # if a dialog asking for a system reboot should be displayed after a successful upgrade
disk:
trim:
after_upgrade: false # it trims the disk after a successful packages upgrade (`fstrim -a -v`). 'true' will automatically perform the trim and 'null' will display a confirmation dialog
backup:
enabled: true # generate timeshift snapshots before an action (if timeshift is installed on the system)
mode: 'incremental' # incremental=generates a new snapshot based on another pre-exising one. 'only_one'=deletes all pre-existing self created snapshots and generates a fresh one.
install: null # defines if the backup should be performed before installing a package. Allowed values: null (a dialog will be displayed asking if a snapshot should be generated), true: generates the backup without asking. false: disables the backup for this operation
uninstall: null # defines if the backup should be performed before uninstalling a package. Allowed values: null (a dialog will be displayed asking if a snapshot should be generated), true: generates the backup without asking. false: disables the backup for this operation
upgrade: null # defines if the backup should be performed before upgrading a package. Allowed values: null (a dialog will be displayed asking if a snapshot should be generated), true: generates the backup without asking. false: disables the backup for this operation
downgrade: null # defines if the backup should be performed before downgrading a package. Allowed values: null (a dialog will be displayed asking if a snapshot should be generated), true: generates the backup without asking. false: disables the backup for this operation
type: rsync # defines the Timeshift backup mode -> 'rsync' (default) or 'btrfs'
remove_method: self # define which backups should be removed in the 'only_one' mode. 'self': only self generated copies. 'all': all existing backups on the disc.
boot:
load_apps: true # if the installed applications or suggestions should be loaded on the management panel after the initialization process. Default: true.
/etc/bauh/gems.forbidden
. This will prevent their management code to be loaded.arch
appimage
# flatpak # 'sharps' can be used to ignore a given line (comment)
The software suggestions are download from bauh-files by default
Most of the files follow the pattern: {priority_number}=${id or name}
If Linux distributions want to provide their custom suggestions files:
/etc/bauh/suggestions.conf
arch=https://mydomain.com/arch/suggestions.txt # remote file
appimage=/etc/bauh/appimage/suggestions.txt # local file (absolute path)
# snap = my mapping # comments with a '#' are allowed
~/.config/bauh
(or /etc/bauh
for root): stores configuration files~/.cache/bauh
(or /var/cache/bauh
for root): stores data about your installed applications, databases, indexes, etc. Files are stored here to provide a faster initialization and data recovery./tmp/bauh@$USER
(e.g: /tmp/bauh@root
): stores logging and temporary files (e.g: build dependencies)~/.local/share/bauh/themes
(or /usr/share/bauh/themes
for root). Sub-folders are allowed.my_theme.qss
: file with the qss rules. Full example: light.qss
my_theme.meta
: file defining the theme's data. Full example: light.meta
name
: name that will be displayed on the interface. It supports translations by adding additional name
fields with brackets and the language code (e.g: name[es]=Mi tema
)description
: theme's description that will be displayed on the interface. It supports translations like name
(e.g: description[es] = Mi tema).version
: theme's version. It just works as information at the moment. (e.g: 1.0)root_theme
: optional attribute that points to a theme that must be loaded before the theme. It supports the bauh's default theme keys (e.g: default, light, ...) or a file path (e.g: /path/to/root/file.qss
).abstract
: optional boolean attribute (true/false) that should only be used by themes that are not complete on their own and just work as a base (root) for other themes. Abstract themes are not displayed on the interface. Full example: default.qss
my_theme.vars
: optional file defining key=value
pairs of variables that will be available for the .qss file (can be referenced through the symbol @. e.g @my_var
). Full example: light.vars
style_dir
: path to the .qss file directory. Example: @style_dir/my_icon.svgimages
: path to bauh's icons directory (gem icons are not available through this variable). Example: @images/logo.svgPriority:
bauh_tray_default
and bauh_tray_updates
bauh-cli updates
).bauh-cli --help
.bauh-cli [command] --help
. (e.g: bauh-cli updates --help
)single_dependency_checking
. This can reduce the application response time, since it won't need to recheck if the required technologies are available on your system every time a given action is executed.download: icons: false
. The application may have a slight response improvement, since it will reduce the IO and parallelism within it.boot.load_apps
to false
.It is a separate repository with some files downloaded during runtime.
view
: code associated with the graphical interfacegems
: code responsible to work with the different packaging technologies (every submodule deals with one or more types)api
: code abstractions representing the main actions that a user can do with Linux packages (search, install, ...). These abstractions are implemented by the gems
, and
the view
code is only attached to them (it does not know how the gems
handle these actions)commons
: common code used by gems
and view