This page looks best with JavaScript enabled

Change your Desktop Wallpaper

 ·  ☕ 4 min read

This article shows you how to automatically change your wallpaper on Windows, macOS, and Linux.

To get the greatest variety and the highest quality it is best to use reddit as the voting system and variety ensure both these goals are met.

Change Wallpaper in Windows

GitHub Project:

From the Releases Tab on GitHub download the latest version and install it.

Here are the settings I recommend using:

There is also an option to save all wallpapers locally. I like to save all downloaded wallpapers for future reference or build and offline repository.

Change Wallpaper in Mac OS

GitHub Project:

Install MacOS Dependancies

xcode-select --install
sudo easy_install pip
sudo pip install --upgrade pip
pip install pillow

Needed Desktop Wallpaper Script Package

Install MacOS Program

cd ~
git clone
cd wallpaper-reddit
sudo python3 install

MacOS Usage

You can run this anytime by typing in terminal wallpaper-reddit [subreddits]
Binaries are located at /usr/local/bin/wallpaper-reddit
Config files are located at ~/.config/wallpaper-reddit
Syntax Help wallpaper-reddit --help

Running on macOS Startup

  • Start Automator
  • Create New Task: File -> New
  • Select “Application”
    • Click “Show library” in the toolbar (if hidden)
  • Add “Run shell script” (from the Actions/Utilities)
    • Copy-and-paste your script into the window and Run- Note: I used desktoppr to force wallpaper if script fails
/usr/local/bin/wallpaper-reddit --startup
/usr/local/bin/desktoppr ~/Pictures/Wallpapers/wallpaper.jpg
  • Save it somewhere: a file called will be created)
  • Go to System Preferences → Users and Groups → Login items
  • Add this newly-created app

Change Wallpaper in Linux

GitHub Project:

Install Linux Dependancies

  • Ubuntu/Linux Mint/ElementaryOS: sudo apt-get install python3-dev python3-setuptools libjpeg8-dev zlib1g-dev libfreetype6-dev
  • Fedora: sudo dnf install python3-imaging
  • Arch: sudo pacman -S python-pillow

Install Linux Program

cd ~
git clone
cd wallpaper-reddit
sudo python3 install

Linux Usage

You can run this anytime by typing in terminal wallpaper-reddit [subreddits]
Binaries are located at /usr/local/bin/wallpaper-reddit
Config files are located at ~/.config/wallpaper-reddit
Syntax Help wallpaper-reddit --help

Running on Linux Startup

There is plenty of ways to have this automatically change the wallpaper on startup, however, I like to use the method by adding it at the /etc/profile EOF (End of File). Here is an example.

/usr/local/bin/wallpaper-reddit --save
/usr/local/bin/wallpaper-reddit --startup

--save option flag will save the current wallpaper to the default directory in the config file (~/Pictures/Wallpapers/). Remove this line if you don’t want to save past wallpapers.
--startup option flag will wait til internet access is established and then download the wallpaper from reddit

Wallpaper-reddit Config File Settings

The config file is in ~/.config/wallpaper-reddit, and will be created automatically. Currently, the GNOME, XFCE, MATE, Unity, and Cinnamon Desktop Environments should be automatically detected and the program should set the wallpaper without any extra work. However, due to the varying nature of window managers, it is possible, even likely, that you may have to specify a custom command to set your wallpaper. The program will prompt you for this if this is the case; the exact command can be researched per desktop environment. If your desktop environment is not supported, leave the set command blank and it will auto download to the ~/Pictures/Wallpapers/ directory as wallpaper.jpg for the daily wallpaper.

Config Options

minwidth and minheight set the minimum dimensions the program will consider a valid candidate for a wallpaper. If --resize is enabled, the script will resize the image to those dimensions before setting the wallpaper.
minratio is the minimal aspect ratio of the image. It is a float value of width/height of the image, for example 1.6 for 16:9 image.
maxlinks is the maximum number of links the script will go through before giving up.
resize does the same thing as the --resize flag. It is enabled by default.
random does the same thing as the --random flag.

  • EarthPorn
  • CityPorn
  • SkyPorn
  • WeatherPorn
  • BotanicalPorn
  • LakePorn
  • VillagePorn
  • BeachPorn
  • WaterPorn
  • SpacePorn
  • multiwall
  • wallpapers
  • wallpaper

Chris Titus Tech


Exclusive Content

  • Members Section (CC Only)
    • Digital Downloads with Guides and Pre-Built Images
    • Monthly Members Only Video
    • $5 Per Month (100% of Proceeds goes to Chris Titus Tech)
  • YouTube Chris Titus Tech Membership (All Payments Accepted)
    • Monthly Members Only Video
    • YouTube Emojis for Comments and Live Chat
    • YouTube Badges that changes based on membership time for comments and chat.
    • All YouTube comments are highlighted when I review comments daily.
    • $4.99 Per Month (70% of the Proceeds goes to Chris Titus Tech)

Chris Titus
Chris Titus
Tech Content Creator