wallswitch 0.20.0

randomly sets wallpapers for n Linux desktop monitors (arranged horizontally).
Documentation

wallswitch

#-----------#-----------# ... ... #-----------#
|           |           |         |           |
| Monitor 1 | Monitor 2 |         | Monitor n |
|           |           |         |           |
#-----------#-----------# ... ... #-----------#

Randomly sets wallpapers for n Linux desktop monitors (arranged horizontally).

[Define papéis de parede aleatoriamente para desktop Linux com n monitores (dispostos horizontalmente).]

wallswitch randomly selects and applies different wallpapers to each of n monitors arranged horizontally.

Run the command:

wallswitch

The default number of monitors is n = 2.

Images are recursively searched in the indicated directories ("dirs": [...]) for files with extensions ["avif", "jpg", "jpeg", "png", "svg", "tif", "webp"].

Help messages

To get help messages, run the command:

wallswitch -h

The output:

randomly sets wallpapers for n Linux desktop monitors (arranged horizontally).

Usage: wallswitch [OPTIONS]

Options:
  -c, --config
          Read the configuration file and exit the program
  -d, --min_dimension <MIN_DIMENSION>
          Set the minimum dimension that the height and width must satisfy
  -D, --max_dimension <MAX_DIMENSION>
          Set the maximum dimension that the height and width must satisfy
  -b, --min_size <MIN_SIZE>
          Set a minimum file size (in bytes) for searching image files
  -B, --max_size <MAX_SIZE>
          Set a maximum file size (in bytes) for searching image files
  -i, --interval <INTERVAL>
          Set the interval (in seconds) between each wallpaper displayed
  -n, --monitor <MONITOR>
          Set the number of monitors [default: 2]
  -s, --sort
          Sort the images found
  -v, --verbose
          Show intermediate runtime messages
  -h, --help
          Print help (see more with '--help')
  -V, --version
          Print version

min_dimension is the minimum value obtained from the height and width of an image file.

Configuration

Displaying the Configuration

You can view the contents of the wallswitch configuration file using these commands:

  • Displays the configuration directly:
wallswitch -c
  • Parses the json configuration using the jq command-line tool (requires jq to be installed):
cat ~/.config/wallswitch/wallswitch.json | jq

The default configuration file (~/.config/wallswitch/wallswitch.json) has the following structure:

{
  "desktop": "gnome-xorg",
  "min_dimension": 600,
  "max_dimension": 128000,
  "min_size": 1024,
  "max_size": 1073741824,
  "dirs": [
    "/home/user_name/Figures",
    "/home/user_name/Images",
    "/home/user_name/Pictures",
    "/home/user_name/Wallpapers",
    "/home/user_name/Imagens",
    "/usr/share/wallpapers",
    "/usr/share/backgrounds",
    "/tmp/teste"
  ],
  "extensions": [
    "avif",
    "jpg",
    "jpeg",
    "png",
    "svg",
    "tif",
    "webp"
  ],
  "interval": 1800,
  "wallpaper": "/home/user_name/wallswitch.jpg"
}

Editing the Configuration

To customize wallswitch behavior, edit the configuration file directly:

  • Directory paths: Modify the "dirs" array to include locations containing your desired image files. Remember to adjust the path according to your user name.

  • Dimensions: Choose the minimum width and height dimensions.

  • Extensions: Modify the “extensions” array to select the image file extensions.

  • Interval: Change the "interval" value (in seconds) to control how often wallpapers are cycled.

Important Note: Ensure that all directories listed in "dirs" have read permissions for the user running wallswitch.

Wallpaper suggestions

Dowload wallpapers with:

git clone https://github.com/zebreus/all-gnome-backgrounds.git

Desktops

Make changes to the source code.

git clone https://github.com/claudiofsr/wallswitch.git

cd wallswitch

Edit the file: 'src/desktops.rs'.

To build and install from source, run the following command:

cargo b -r && cargo install --path=.

gnome

Create a wallpaper file and set it as your desktop background image.

See the function:

fn set_gnome_wallpaper()

xfce

See the function:

fn set_xfce_wallpaper()

Monitor 1: "/backdrop/screen0/monitorDP-0/workspace0/last-image"

Monitor 2: "/backdrop/screen0/monitorDP-2/workspace0/last-image"

Monitor N: ...

openbox

See the function:

fn set_openbox_wallpaper()

Mutually exclusive features

To use the clap (default):

cargo b -r && cargo install --path=. --features args_v1

To reduce binary size, alternatively use my Command Line Argument Parser (args_v2.rs):

cargo b -r && cargo install --path=. --features args_v2

Dependencies

  • imagemagick (image viewing/manipulation program).

  • feh (fast and light image viewer).