wallswitch
Random Wallpaper for Multiple Monitors
#-----------#-----------# ... ... #-----------#
| | | | |
| Monitor 1 | Monitor 2 | | Monitor n |
| | | | |
#-----------#-----------# ... ... #-----------#
Description:
wallswitch randomly selects wallpapers for multiple monitors.
Features:
-
Random Wallpaper Selection: Dynamically chooses different wallpapers from designated directories for every monitor.
-
Configurable Filtering:
-
Dimension Control: Refine your wallpaper choices by setting minimum and maximum dimensions (height and width) to include only images within a specific size range.
-
File Size Management: Specify minimum and maximum file sizes for searching, allowing you to exclude very large or small images.
-
-
Flexible Configuration: Customize
wallswitchwith options for:-
Directory Specification: Define custom directories containing your wallpaper images using the
directoriesoption. -
Image File Types: Select specific image extensions (e.g., JPG, PNG, SVG) through the
extensionsoption. -
Resolution Matching: Optimize display by matching wallpapers to monitor resolutions defined in the
resolutionsarray.
-
-
Wallpaper Cycling Interval: Set the time interval between wallpaper changes using the
intervaloption. -
Image Sorting: Optionally sort selected images based on filename using the
sortoption.
Usage:
Run the command:
The default number of monitors is set to m = 2.
Wallpapers will be recursively searched in the specified directories ("directories": [...]) for files with compatible extensions ("extensions": [...]).
Configuration
The configuration file, located at ~/.config/wallswitch/wallswitch.json, is key to customizing wallswitch behavior:
- Displaying the Configuration:
- Direct Display:
- Parsing with jq:
|
- Direct Display:
The default configuration file has the following structure:
Set number of wallpaper per monitor (Gnome desktop only)
You can display N different wallpapers on each monitor by using the -p flag followed by the desired number (N).
The orientation of constructed images can be changed on each monitor between Horizontal and Vertical.
Wallpaper suggestions
- Get all gnome backgrounds.
Dowload wallpapers with:
git clone https://github.com/zebreus/all-gnome-backgrounds.git
Help messages
To get help messages, run the command:
wallswitch -h
The output:
randomly sets different wallpapers for each of your desktop monitors.
Usage: wallswitch [OPTIONS]
Options:
-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
-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
-i, --interval <INTERVAL>
Set the interval (in seconds) between each wallpaper displayed
-m, --monitor <MONITOR>
Set the number of monitors [default: 2]
-o, --orientation <ORIENTATION>
Inform monitor orientation: Horizontal (side-by-side) or Vertical (stacked)
-p, --picture <PICTURE>
Set number of picture per monitor [default: 1]
-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 width and height of an image file:
min_dimension = min(width, height).
max_dimension is the maximum value obtained from the width and height of an image file:
max_dimension = max(width, height).
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).