Menu

Calimero home page

Luca Piergentili

Calimero Calimero

Small, black, ugly... But powerful!

Calimero is a high-performance Win32 x86, old-school () console application designed to take full control of your Windows Desktop background.
Started as a simple wallpaper swapper, it has evolved into a tool able to scrape and manage images from the web, using services like _Picsum, Pexels, Reddit
and Danbooru.
The program also includes a built-in Gallerist — a customizable artistic curator that manipulates and adapts any image to fit your current video setup in the best possible way, including full support for multi-monitor / dual screen configurations.
_(
)
see the Under the Hood / Internals section below

Current version: 4.12.5.0 (26/04/2026)

Calimero throwing wallpapers at your desktop through a console window.
Calimero

How to get started:

  • Install or update to the new version (4.12.5.0) using the Installer in the Releases section of this web site.
  • Make a backup copy of your C:\WCHG\url.txt file if you want to preserve your existing URLs and then delete it. This new version contains important changes about the URLs download that you need to read/apply.
  • Run the program — it will generate a fresh url.txt with ready-to-use examples and new data/instructions.
  • Starting from this version, a whatisnew.txt file is also included to list the changelog.

What is new:

  • Added support for user-custom and Danbooru URLs, have a look at the new url.txt file.
  • Added new service parameters in the url.txt file.
  • Fixed the bugs about the cache parameter for the URL entries.
  • Added new flags in the Calimero.txt configuration file for default console font, video download and auto-check for updates.
  • Changed the way the -t option works: now it allows to specify seconds instead of minutes, using a negative value, which must be enclosed in quotes, as in: -t"-15" (set a timeout of 15 seconds for the wallpaper change).

🥚🍳 Key Features

The Duellists: Calimero (right side) defeating the competition (left side).
Alpha

  • The Gallerist: In addition to supporting all native Windows modes (stretch, center, tile, fit, fill, and span), the program also offers custom modes such as cover and alternate, plus its exclusive gallery mode.
  • Multi-monitor / Dual Screen: Native support for multi-monitor / dual screen setups. Perfectly handles wide wallpapers, 4K assets, and complex spanning without blurriness.
  • Graphic Filters: Apply professional-grade filters via integrated libraries (paintLib, NexgenIPL, FreeImageRE, ImageMagick) and custom built-in effects like GhostTrail, Echo, Pixelate and more.
  • Smart Rescaling: Custom algorithms to resize images on-the-fly for the sharpest possible output.
  • Deep Customization: Print dynamic text over images, filter by size or wildcards, sort by name, size, etc.
  • Hypersonic Loading: Powered by a marvelous BerkeleyDB customized engine to manage thousands of files instantly. No more disk-thrashing or re-scanning directories every time you run it.
  • Seamless Navigation: Change wallpapers via a configurable timer or global hotkeys.
  • Web Fetching: Fetch images directly from the web using free services like Picsum, Pexels, Reddit and Danbooru.
  • Native & Lightweight: Zero bloated frameworks, zero SLOP, no VIBE-coding. Just pure, "to-the-metal" Win32 C/C++. A small, black and ugly console app, but deadly as a Ninja!
  • 100% Free: NO telemetry, NO hidden connections, NO backdoors, NO buy me a coffee requests.

🍴 Let's Go!

  • Getting Started:
  • Download the Installer from the Releases section and run it.
  • If you get the "Windows protected your PC" JOKE, do not worry, it's a default Microsoft Defender SmartScreen feature that blocks unrecognized apps. To bypass it, click the "More info" link in the pop-up, then click "Run anyway". Calimero is a program I wrote, NOT a virus :) so you can safely say Yes to the next Windows screen asking for authorization.
    Last but not least, the Microsoft Edge browser, following the ANTI-indie-software Microsoft policy, will block the download from the Sourceforge web site. Please switch to a serious browser, there are many and IMO Duck Duck Go is a good option.
  • The Installer will create a folder named WCHG directly in your C: drive root.
  • Once the installation is complete, press Win+R, type CMD and hit Enter.
  • When the console windows opens, type CD \WCHG and hit Enter.
  • Launch the app by typing Calimero followed by the required parameters (see the Examples section below).

  • Basic, essential arguments:

  • -t : Timeout (minutes) between wallpaper changes. To specify seconds instead of minutes, usa a negative value enclosed within quotes, as in: -t"-10" (change the wallpaper every 10 seconds).
  • -d : Source directory for images.
  • -m : Display mode: 1=Stretch, 2=Center, 3=Tile, 4=Fit, 5=Fill, 6=Cover, 7=Span, 8=Alternate and the exclusive 9=Gallery mode
    note that the alternate mode has the following sub-modes:
    1=stretch, 2=center, 4=fit, 5=fill, 6=cover, when -w option IS used OR 1=stretch, 2=center, 3=tile, 4=fit, 5=fill, when -w option is NOT used, append the number directly to the mode, e.g. -m81, -m84, etc.

  • Global Hotkeys:
    Keep in mind that you can only interact with the program using keyboard shortcuts (hotkeys). Just because the console window (the command prompt) opens up, it does not mean you can type commands inside it!
    Hotkeys always work, even if the console window is minimized; most useful are:

  • Ctrl + Alt + N: Go to the next image.
  • Ctrl + Alt + P: Go to the previous image.
  • Ctrl + Alt + X: Remove image from the list and optionally delete it from disk.
  • Ctrl + Alt + Q: Quit.
  • Shift + Esc: Restore console window when minimized and always set as foreground window.
  • Ctrl + Alt + V: Save current wallpaper to the savings sub-directory of the WCHG root, useful if you want to keep the final result of the image after applying some filters.
  • Ctrl + Alt + H: Show the help (as the -h option from the command line), listing also all the current hotkeys.
    Hotkeys can be customized by editing the values in the configuration file Calimero.txt located in the C:\WCHG directory.

  • Quick Help:
    From the command prompt, use the -h option to show a list of available options:
    C:\WCHG>Calimero -h
    The -W option from the command prompt is used to open the Wiki page (this page):
    C:\WCHG>Calimero -W
    The Ctrl + Alt + H hotkey can be used to show the help when the program is running and the console is visible.

  • Examples (the following folder names are purely examples; they should be replaced with your own):

  • The Gallerist: Use the folder C:\Users[...]Wallpapers (notice the double quotes around the path because it may contains spaces or other control characters, always use the double quotes!), with a 3-minute timeout (-t3) for changing the image and displaying it in gallery mode (-m9) and you will see the magic performed by The Gallerist itself:
    Calimero -d"C:\Users\lpier\Documents\Luca\Pictures\Wallpapers" -t3 -m9

  • The Voyeur: Use the same command line as above, but add these two parameters: -a50 -V

  • Kill me softly: Use the folder C:\Users[...]Wallpapers, with a 1-minute timeout (-t1) for changing the image, displaying it in center mode (-m2):
    Calimero -d"C:\Users\lpier\Documents\Luca\Pictures\Wallpapers" -t1 -m2

  • Span me!: On a multi-monitor setup, use the folder Calimero -d"C:\Users[...]Dual, with a 5-minute timeout (-t5) for changing the image, displaying it in span mode (-m7):
    Calimero -d"C:\Users\lpier\Documents\Luca\Pictures\Wallpapers\Dual" -t5 -m7

  • To filter or not to filter: (1) Same as above, but using the alternate mode (-m8) and applying the GhostTrail filter (-fGhostTrail) to the image before displaying it:
    Calimero -d"C:\Users\lpier\Documents\Luca\Pictures\Wallpapers" -t5 -m8 -fGhostTrail
    or using a random graphics filter selection: (2)
    Calimero -d"C:\Users\lpier\Documents\Luca\Pictures\Wallpapers" -t5 -m8 -frandom
    (1) keep in mind that applying filters on very large images may take a bit ⏳
    (2) to show a list of the available filters, use the Ctrl + Alt + G hotkey

  • Dijkstra mode: Start from the folder C:\Users[...]Pictures with a recursive search in subfolders (-r) , change image every 3-minutes (-t3), display in fit mode (-m4) and use fast 🐇 loading from table for subsequent runs (-D), not to mention the random order (-o3) for image load:
    Calimero -d"C:\Users\lpier\Documents\Luca\Pictures" -t3 -m4 -r -D -o3
    Now, about the -D option:
    If you delete files from the folder, the program will correctly notify you that those files are no longer on disk.
    However, if you add new files to the directory/folder you loaded earlier with -D, the program will not automatically see or include the new files because -D is exactly to not re-read the direcory!
    To make the program pick up the newly added files, simply run a fresh rescan of the folder using the normal -d (not fast-load -D) option.
    If you make a BIG mess, do not worry, just close the program, go to the C:\WCHG\database folder and delete it all, it's just that simple :)

  • Comics time: Use the comic mode to read scanned comic pages from the folder C:\Users[...]Makoma (#1) (remember the old .cbr files?), no automatic timeout (manual change with Ctrl+Alt+N), images sorted by name (-o0), displayed in fit mode (-m4), and launched minimized/iconized (-v):
    Calimero -d"C:\Users\lpier\Documents\Luca\Pictures\2D\Comics\Hellboy\Makoma\Makoma (#1)" -t0 -m4 -o0 -v

  • Grab it!: Load the URLs from the url.txt file to download the related images, change the wallpaper every 5-minutes (-t5) and display the images using the gallerist mode (-m9). If you have a dual screen setup, you can use instead the alternate mode (-m8) to rotate wallpapers through the monitors in sequence.
    Important: before running the command, if you are using the example file provided with the program, ensure you have read and understood its content. Most importantly, do not use the file as is; modify it by entering any required API Keys and commenting out the URLs you do not need.
    Calimero -u"C:\WCHG\url.txt" -t5 -m9
    Currently the program allows to download images from Picsum, Pexels, Reddit and Danbooru.

  • You talking to me?: Load the content of words.txt file to print the text specified in the file onto the image before setting it as wallpaper (of course a copy of the image will be used, never the original!), with a 5-minute timeout (-t5), displaying in stretch mode (-m1):
    Calimero -d"C:\Users\lpier\Documents\Luca\Pictures\Wallpapers" -w"C:\WCHG\words.txt" -t5 -m1
    (have a look at the sample words.txt file in the C:\WCHG)

  • HACK-a-smack: Last but not least, give a try to the -H option (specifying a number between 1 and 99, as in -H5 or -H50):
    Calimero -d"C:\Users\lpier\Documents\Luca\Pictures\Wallpapers" -t1 -m4 -H25

NEW!: The program automatically checks for a new version. If you want to disable this feature, edit the Calimero.txt configuration file and set the CheckForUpdates field to 0 (zero).

♨️ Does it burn?

This is a pretty stable release, but it might still have "real" bugs 🐞 (like memory exceptions) and/or "logical" bugs ⛔️ (such as weird behavior).

  • Crashes: If you see a memory exception, please copy the debug data and send it.
  • Feedback: For logical bugs, suggestions, rants, etc., feel free to reach out.

👨‍🍳 Under the Hood / Internals

First of all, a quick question followed by a short and a deep-dive technical answer:
Short question: "Why the Chinese image author name of the image is correctly displayed on the console window title, but NOT in the console window output?"
Short answer: "Click the small icon in the top-left corner of the console window and select Properties -> Font, and then choose the NSimSun font from the list. If you don't see it, ensure that NSimSun is correctly installed on your system."
Tech answer: "The program uses the ANSI charset, not Unicode. In cases where non-standard ANSI characters (i.e., more common Unicode characters such as extended Latin, Cyrillic, Greek) may appear in significant data, such as titles or image author names, the program performs a conversion from UTF-8 to UTF-16 (Unicode) to display the characters correctly.
However, while this works for the console window title, it fails for the output displayed inside the window. This is because window titles are handled by system UI drivers using an advanced rendering system with automatic font linking. In contrast, the text area uses the classic Windows Console driver (conhost.exe), which fails because it lacks the glyphs for character sets with a large number of symbols, such as Chinese.
To solve the problem, you can: 1) Select the appropriate font (e.g., NSimSun() for Chinese) in the console window properties, or: 2) Use Windows Terminal to run the program instead of the Windows Console (AKA Command Prompt), since in that case the mapping to character sets with a large number of symbols is used automatically._
_In other words, the classic Windows Console is limited to a
single monospace font, whereas Windows Terminal and the UI system used for the window title support proportional fonts with multi-font fallback*"

() NSimSun works in the console because even if it appears proportional, internally is a monospace font, the exact requirement for the console fonts. It's a font specifically designed for Simplified Chinese (Hans), Latin script (Latn), Cyrillic script (Cyrl), Greek (Grek) and Japanese syllabaries (Hiragana/Katakana), also offering partial support for other writing systems, such as Vietnamese and Korean. Consider also Arial Unicode MS, which is a true 'all-in-one' font, supporting a vast range of scripts, and the Noto* font by Google.

Important: if you do not want to set the NSimSun (or whatever font) manually each time from the Properties/Fonts entries of the console window, edit the Calimero.txt configuration file and set the PreferredConsoleFont field to the desired font name. Consolas is the name of the default font for the Windows Console.

More about Windows Console vs Windows Terminal:
https://learn.microsoft.com/en-us/windows/console/classic-vs-vt
About the Arial Unicode MS (now unsupported but still available on the web):
https://learn.microsoft.com/en-us/typography/font-list/arial-unicode-ms
Noto fonts from Google:
https://fonts.google.com/noto
https://github.com/notofonts/noto-cjk/releases

Now about the project, conceptually Calimero is the evolution of Crawlpaper, a Windows 95 wallpaper manager I wrote years ago.

Technically, it's written in C/C++ (mhm..., better to say C with classes, or even better, classy C :) on Windows (cartoons) season 10 using Visual Studio 2022 and much love 💖. It integrates several legacy and modern libraries, restored and re-adapted for high-performance processing:

  • BerkeleyDB, brotli, dav1d, FreeImageRE, ImageMagick, libavif, libheif, libjpeg, libpng, libtiff, libungif, libwebp, libz, NexgenIPL, paintLib, zLib.

Currently only the executable is available. As soon I can check all the code and terminate the beta testing, I'll release all the source files as well. Be kind and help me with the tests so I can put out all the code. Thanks!

🍜How-to-Do-What-You-Want-to-Do

The program, as everything else, needs an input 📥 to produce an output 📤, no mind reading🔮 implemented yet. Last but not least, you HAVE to read 📚 this whole Wiki thing.
As a general rule, option letters are case-sensitive, and any parameters must be attached directly to the option (no spaces allowed).

The only truly essential (and mandatory) parameter is the source of the images.
You must choose one of the following four input methods:

  • A folder containing the images you want to use:
    Use the option: -d<folderpath>
    Example: -d"C:\My Wallpapers"

OR

  • A list of URLs (in a .txt file) from which to download images (look at the url.txt sample file in the C:\WCHG folder):
    Use the option: -u<filename>
    At the moment, the supported (FREE) services are:
    Picsum (no API key needed)
    Pexels (requires a free API key)
    Reddit (no API key needed)
    Danbooru (requires a free API key + a login name)

OR

  • An export file containing a previously saved list of images:
    Use the option: -e<filename>
    (We’ll skip this method for now – see note (*)

OR

  • Your personal favorites list (previously saved):
    Use the option: -F
    (We’ll skip this method for now – see note (*)

() How to create export files or add favorites:
• To export the current list of loaded images (whether loaded via -d or -u) -> press_
Ctrl + Alt + E
• To add the currently displayed image to your favorites -> press
Ctrl + Alt + F*
(the favorites shortcut only works when images are loaded using the -d option)_

🍝Let-Me-Do-My-Thing

There are plenty of websites from where you can download beautiful wallpapers — even Microsoft has its own! If you want to download images through the program, use the -u with the url.txt sample file from the C:\WCHG folder (but read the url.txt content first!).

About all the other options, these are available (or not) depending on which of the four above methods you used to load the images.

To see the full list of available options and their descriptions:
• from the command line -> run the program with the -h option
• while the program is running, press Ctrl + Alt + H (make sure the console window is open and in focus)

However, the following options deserve a special mention:

-f<filter> (specifies the graphics filters to apply)

This option works with all input methods (1 through 4 above).
To see the full list of available filters (depending on the graphics library currently in use), press Ctrl + Alt + G while the program's console window is open and in focus.

For beginners, it's best to start by experimenting with the default settings — just type the filter name on the command line, for example:
-fPixelate
or:
-fEcho
(BTW Echo is one of the most time-consuming filters, on true 4K, high-res, dual screen images it may take time)

To apply multiple filters at once, separate them with commas (NO spaces):
-fPixelate,Contrast,Sharpen

If you want to use custom parameters for a filter, use this syntax (parameters separated by semicolons, NO spaces):
-fGhostTrail;4;10;0.7f;FALSE
(Note: GhostTrail requires exactly 4 parameters in this order.)

For endless experimentation, you can let the program choose the random mode: 🎲
-frandom

Or try the filter currently under development/testing:
-fTest

Keep in mind that some filters (as Echo, GhostTrail, Median) may take a bit ⏳ to apply, the program console output will show you the progress.

-w<filename> (uses a text file containing the phrases/words to display)

To get started quickly, use the example file words.txt (included in the C:\WCHG folder).
Inside it you'll find a short explanation of how it works.

-u<filename> (uses the specified text file containing the URLs from which to download images)

To get started quickly, use the example file url.txt (included in the C:\WCHG folder).
Inside it you’ll find a detailed explanation of how it works, plus lots of sample URLs ready to use.
Important: before running the command, if you are using the example file provided with the program, ensure you have read and understood its content. Most importantly, do not use the file as is; modify it by entering any required API Keys and commenting out the URLs you do not need.

Currently, the (free) services supported for downloading images are:
• Picsum (no API key required)
• Pexels (requires a free API key)
• Reddit (no API key required)
• Danbooru (requires a free API key + a login name)

Please refer to the url.txt file, which contains everything you need to use the -u option.

One important thing to keep in mind:

The list of images coming from URLs behaves differently compared to the list of files already present in a local folder.

When using a URL-based list (-u option), the navigation keyboard shortcuts only move forward to the next image. You cannot go back to a previous image, jump to the beginning, or jump to the end of the list.
If you want full navigation (previous/next, first/last, etc.), simply switch to the local folder mode at the next launch: use the -d option pointing to the folder where the downloaded images are saved (C:\WCHG\download) instead of -u.

Also, since a web-based 🕸 list of images could theoretically be endless, the program automatically removes each image from the in-memory list once it has been displayed. However, pay close attention: the images are removed only from the list, not from your disk.
The downloaded files remain saved in your download folder. This means the number of files (and the total disk space used) can grow very quickly if you keep downloading for a long time.
So, keep an eye on your download folder size if you're using the -u option for extended periods! And carefully read the program output in the console window — it says it all!

That’s all you need to know to start downloading images from URLs, have fun! 🍾


MongoDB Logo MongoDB