Skip to content

imhemish/backman

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

backman

Backman is a random/fixed background image setter for major GTK desktops, X11, sway and other wlroots based wayland compositors.

Supported

Backman is tested to work on i3, sway, GNOME (Wayland), GNOME (Xorg), Cinnamon, XFCE, Budgie. It may also work on other platforms but is not tested.

Dependencies:

The program depends on swaybg, python3-toml (or python-toml), python3, hsetroot, bash.

Installation:

Arch Linux (.pkg.tar.zst) and Debian packages (.deb) have been provided in releases section of Github.

To install from source:
Meet the required dependencies and run the provided install script like this:

sudo ./install

Prepending the install script with “sudo” or executing in super user environment is required.

If you are using Arch Linux, there is an AUR package, called “backman-git”. You can install by cloning or using an AUR helper.

If you are using Debian and are familiar with Makedeb Package Repository (MPR), there is a package there, called “backman-git”. You can install by cloning or using helper.

Configuration

The configuration for backman resides at ~/.config/backman.toml The configuration follows the toml markup. The configuration contains three options:

  • mode: this parameter can have two values, “fixed” and “random”. The “fixed” option is used to have a single image as your background. The “random” option picks a random picture from your specified directories. (defined in next configuration paratemer)
  • directories: this paramater is list type. For “random” feature to work, you have to specify directories which would be looked for pictures. Take care that you have to add full path and you can not add such values: “~/Pictures”. You have to specify like “/home/user/Pictures”.
  • fix_bg: this parameter should contain full path to an image. For “fixed” feature to work, you have to specify a fixed image to be set as background each time.

Example configuration 1:

mode = "random"
directories = [ "/home/cat/pix/bg", "/usr/share/backgrounds" ]
fix_bg = "/home/cat/pix/bg/btwarch-black.png"

Example configuration 2:

mode = "fixed"
directories = [ "/home/cat/pix/bg", "/usr/share/backgrounds" ]
fix_bg = "/home/cat/pix/bg/btwarch-black.png"

Also note that you can also change these configurations without actually editing the configuration file, itself inside the program. See usage for knowing how.

Usage

usage: backman [-h] [--previous] [--set] [--return-path] [--wal] [--change-mode mode] [--set-fix-bg /path/to/file]
               [--add-dir path/to/directory] [--rm-dir path/to/directory] [--list-dirs] [--set-temporary /path/to/file]

Backman is a random/fixed background image setter for major GTK desktops, X11, sway and other wlroots based wayland compositors

optional arguments:
  -h, --help            show this help message and exit
  --previous, -p        Use previous background image in set/return method instead of choosing random
  --set, -s             Set the background, either random or fixed (as specified in configuration)
  --return-path, -r     Return the path of background that would be set, either random or fixed
  --wal, -w             Use wal to generate color schemes using returned/set background
  --change-mode mode, -m mode
                        Change mode to specified as arguement
  --set-fix-bg /path/to/file, -f /path/to/file
                        Set fixed background image in configuration
  --add-dir path/to/directory
                        Add a directory to configuration
  --rm-dir path/to/directory
                        Remove a directory from configuration
  --list-dirs, -l       List directories specified in configuration
  --set-temporary /path/to/file, -i /path/to/file
                        Set temporary background disregarding any configuration

Explaination:

  • The --set flag instructs the program to set the background (either fixed or random, as specified in configuration)
  • The --return-path flag instructs the program to return the path of background image to be set (either fixed or random, as specified in configuration)
  • The --wal flag instructs the program to also generate color schemes using Wal and returned/set background
  • The --change-mode parameter can change the modes between fixed and random
    For example, to change the mode to fixed, you can execute:
backman -m fixed

To change to random, you can execute:

backman -m random
  • The --set-fix-bg paramter can be used to set the fixed background image for “fixed” mode.
    For example, to set the image: /home/user/Pictures/1.jpg as fixed background image, you can execute:
backman -i /home/user/Pictures/1.jpg
  • The --add-dir and --rm-dir can be respectively used to add and remove directories from directories configuration.
    For example, to remove “/home/user/Pictures” directory and add “/usr/share/backgrounds” directory, you can execute:
backman --add-dir /usr/share/backgrounds --rm-dir /home/user/Pictures
  • The --list-dirs can be used to list all directories specified in the configuration.

Warnings

The program prints out warnings to sterr. So, if you want to pipe or use the output of the program’s stdout, you would need to send the sterr to /dev/null
Example:

backman -r 2>/dev/null

Reminder and tip

The background set by this script (or swaybg) is not persistent across logout and logins in standalone window managers. It just disappears after quitting compositor/window manager. To have a persistent feel, add the following command to your autostart script (maybe in your window manager/compositor configuration):

backman -s 2>/dev/null 

License

This program is licensed under MIT license

Thanks

The project waves out a great thanks to sway team for developing swaybg and hsetroot developer Martin Hradil.
The licenses of both the projects should be respected and followed.

Windows background setting code is brought from https://github.com/mammuth/bing-wallpaper/blob/master/bing_wallpaper.py and thus this project waves out a thanks to Maximilian Muth for this code. (licensed under GPLv2)