/* BeejBlog */

PowerShell Photo Slideshow

GitHub Source

Project Description

Photo slideshow implemented in PowerShell -> Windows Forms

Simply target a local/LAN folder of images.

Features:

  • task tray icon to start slideshow on demand…
  • otherwise kicks off after user defined idle timeout (honors running video)
  • good randomization - one soon realizes pleasantly random photos are the key want of a photo slideshow … fortunately PowerShell has a readily available random commandlet that seems to do quite well
  • image fade-in and slide for ambience
  • several hotkeys functional:
    • open current image folder
    • copy current image to My Photos
    • rotate current image (and save) - specifcally coded to honor EXIF rotation metadata where present but sometimes this gets lost
    • reverse to previously shown photo (left cursor)
    • pause/play (space)
    • hotkey legend pops up on any other keypress
  • skips .hidden folders
  • open to modification - it’s just PowerShell :) no compiling tools required

Install - basically just launch the ps1… here’s some tips:

  1. only the ps1 and ico files are needed, download them to a folder
  2. (see screenshot below) create a shortcut to the ps1 and tweak the target to include powershell before the ps1 filename…
  3. select Run: Minimized to make script launch more polished
  4. add -WindowStyle Hidden after powershell.exe on target command line for further polish
  5. then hit the Advanced button and select Run as administrator - this is only required for the powercfg /requests used to identify running video and avoid starting slideshow after user input idle timeout (wouldn’t mind hearing a slicker approach???)
  6. script parameters:
    • add -photoPath {path\to\your\images} to the end of the shortcut path - shared folder fair game
    • add -idleTimeout 2 to the end of the shortcut path - units are in minutes
  7. Copy this shortcut to shell:startup in Windows FileExplorer to automatically launch this script when you login to your desktop

Wishlist

  • show videos as well - thinking VLC convenient… would need to pause image display loop and figure out how to recognize when VLC was done playing… would be nice not to keep launching new VLC instance vs reusing