Home

Awesome

GitHub release PyPI AUR AUR-staging License kofi

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

<p align="center"> <img src="https://raw.githubusercontent.com/vinifmor/bauh-files/master/pictures/panel-themes.gif"> </p>

Index

  1. Installation

  2. Isolated installation

  3. Desktop entry / menu shortcut

  4. Autostart: tray mode

  5. Distribution

  6. Supported types

  7. General settings

  8. Directory structure, caching and logs

  9. Custom themes

  10. Tray icons

  11. CLI (Command Line Interface)

  12. Improving performance

  13. bauh-files

  14. Code structure

  15. Roadmap

  16. Contributing

  17. Donations

Installation

<a name="inst_appimage">AppImage</a>

Required dependencies
Steps
<p align="center"> <img src="https://raw.githubusercontent.com/vinifmor/bauh-files/master/pictures/releases/0.10.0/appim_self.png"> </p>

<a name="inst_ubuntu">Ubuntu 20.04 based distros (Linux Mint, PopOS, ...)</a>

Required dependencies

sudo apt-get install python3 python3-pip python3-yaml python3-dateutil python3-pyqt5 python3-packaging python3-requests

Installing bauh

sudo pip3 install bauh

Optional dependencies (they should be installed with apt-get/apt)
Updating bauh

Method 1

sudo pip3 install bauh --upgrade

Method 2

sudo pip3 uninstall bauh
sudo pip3 install bauh
Uninstalling bauh
bauh --reset  # removes cache and configurations files from HOME
sudo pip3 uninstall bauh

<a name="inst_arch">Arch-based distros</a>

Using yay

yay -S bauh

Using git
git clone  https://aur.archlinux.org/bauh.git
cd bauh
makepkg -si
Optional dependencies
Uninstalling bauh
bauh --reset  # removes cache and configurations files from HOME
pacman -R bauh

<a name="inst_iso">Isolated installation</a>

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)

<a name="desk_entry">Desktop entry / menu shortcut</a>

To create a shortcut for bauh on your desktop menu:

<a name="autostart">Autostart: tray mode</a>

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

<a name="dist">Distribution</a>

bauh is officially distributed through PyPi and AUR (bauh / bauh-staging)

<a name="types">Supported types</a>

<a name="type_appimage">AppImage</a>
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.
<a name="type_arch">Arch packages/AUR<a>
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.
<a name="type_deb">Debian packages<a>
<a name="type_flatpak">Flatpak</a>
installation_level: null # defines a default installation level: "user" or "system". (null will display a popup asking the level)

<a name="type_snap">Snap</a>

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.

<a name="type_web">Native Web applications</a>

<p align="center"> <img src="https://raw.githubusercontent.com/vinifmor/bauh-files/master/pictures/web/url_search.gif"> </p> <p align="center"> <img src="https://raw.githubusercontent.com/vinifmor/bauh-files/master/pictures/web/options.png"> </p> <p align="center"> <img src="https://raw.githubusercontent.com/vinifmor/bauh-files/master/pictures/web/suggestions.gif"> </p> <p align="center"> <img src="https://raw.githubusercontent.com/vinifmor/bauh-files/master/pictures/web/tray.gif"> </p>
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.

<a name="settings">General settings</a>

Parameters

You can change some application settings via environment variables or arguments (type bauh --help to get more information).

Configuration file (~/.config/bauh/config.yml)
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.
<a name="forbidden_gems">Forbidden packaging formats</a>
arch
appimage
# flatpak  # 'sharps' can be used to ignore a given line (comment)
<a name="suggestions">Custom suggestions / curated software</a>

<a name="dirs">Directory structure, caching and logs</a>

<a name="custom_themes">Custom themes</a>

<a name="tray_icons">Tray icons</a>

Priority:

  1. Icon paths defined in ~/.config/bauh/config.yml

  2. Icons from the system with the following names: bauh_tray_default and bauh_tray_updates

  3. Own packaged icons

<a name="cli">CLI (Command Line Interface)</a>

<a name="performance">Improving performance</a>

<a name="bauh_files">bauh-files</a>

It is a separate repository with some files downloaded during runtime.

<a name="code">Code structure</a>

<a name="roadmap">Roadmap</a>

<a name="donations">Donations</a>