Dynamic color-changing wallpaper application
ColorCycle is a terminal process that sets your desktop wallpaper to a solid color that changes hue based on the minute of the hour—red for the top of the hour, then smooth transitions to yellow, green, cyan, indigo, violet and back to red in ten-minute increments.
Consider this a project in artistic expression, or if you're feeling ambitious, a productivity tool. Knowing what time of the hour based on what color your wallpaper changes to is faster than looking at the clock, which tends to be pinned to the corner of our screens.
For the lazy, we don't even need to change our focus to approximate how much time we have left in the hour. This saves precious seconds, and keeps our primary focus on work while passively considering the time rather than wasting aggregate minutes actively checking the clock.
A macOS (Sonoma, Silicon/ARM) binary is provided in the project's dist directory. Windows and Linux users face the ultimatum of waiting for support or compiling on their own, modded software—which will involve finding a way to update desktop wallpaper programmatically. To make this easier, most of the process is outlined below.
So far, this application is only officially supported on macOS. It is assumed that Linux users will understand the project's structure and be able to set a virtual environment and execute as they see fit. Windows users may need to use WSL.
For the purposes of this tutorial, it is assumed you are using zsh, the default Terminal.app shell. You may use any shell you like, but to keep it super simple, commands provided will be for zsh.
The first step is to clone this repository. That should be easy enough.
At this point, the project only depends on Python and a few of its officially supported modules (listed by chronological order of relevance):
- Python (for interpretting the project code)
pip(for installing the below packages)virtualenv(for containing dependencies within a dedicated evnviornment)- Pillow (for generating wallpapers)
It is recommended that you read the installation instructions in the documentation links above before continuing.
Secondly, ensure that Python 3.10 or greater is installed. You may verify the version with the following command:
python --versionIf the version is out of date, you may have previously installed an earlier image. Otherwise, if you get an error message complaining that the command doesn't exist, you might need to add it to your $PATH.
Next, install pip. There are a few different methods of doing this, but my preferred method is by running the following:
python -m pip install -U pipThis will allow you to run pip via its own command, at its latest version, rather than relying on python -m.
Now that pip is installed, we need a place to store dependencies.
pip install -U virtualenvOnce installed, create a virtual environment directory:
virtualenv .venvNaming it .venv is recommended for a few reasons:
- The leading period makes it hidden on POSIX systems
- The 'v' in
.venvsets it apart from environment variables - This project has references to it with that name. If you change it here, be prepared to change in
Makefilein the project root.
Now, the Makefile at the project root will automate the rest for you.
makeThis will perform the following steps in order:
- Create a virtual environment (like in the last step) if one does not exist
- Install remaining dependencies via
pip(namely, Pillow) - Compile the project
When complete, you are ready to run the executable.
make runOptionally, you may want to add the dist directory to your $PATH variable. That way, you can simply run:
colorcycleExit with ctrl + c.