A Windows desktop application that captures daily screenshots with privacy protection features. I made this because I've recently found some old pictures of my desktop from 4+ years ago and I thought it would be cool and interesting for anyone to be able to track how their computer changes over time.
PictureDay takes a screenshot of your screen once per day at a scheduled time. It includes privacy filters to prevent screenshots when sensitive applications are running (or when you're... inspecting... stuff...), and provides a gallery to browse your captured screenshots organized by month.
Photo Gallery showing the statistics display, dynamic date range, and enhanced navigation controls in PictureDay v2.5.1. NOTE: Images are blurred for privacy.
Settings menu with comprehensive configuration options including privacy filters, screenshot scheduling, monitor selection, quality settings, and storage management
Example screenshot captured by PictureDay, demonstrating the application's daily screenshot functionality. (Some portions of photo blurred for privacy)
- Automatic Daily Screenshots: Captures one screenshot per day at a configurable time
- Privacy Protection: Blocks screenshots when blocked applications or private browsing modes are detected
- Activity Monitoring: Only captures screenshots when the user is active
- Quarter Checkpoint System: For TimeRange mode, takes photos at 4 quarter checkpoints plus the main scheduled time
- Intelligent Photo Selection: Automatically selects the best photo for each day at midnight with priority: MAIN > quarter* > backup*
- Monthly Organization: Screenshots are automatically organized into monthly folders
- Manual Screenshot Trigger: Take screenshots on-demand via button, system tray menu, or keyboard shortcuts (F12 or Ctrl+S)
- System Tray Integration: Runs in the background with system tray icon for quick access
- Auto-Updates: Automatically checks for updates on startup; manual check available via system tray menu
- Donate Button: Support the project via the Donate button in the top right corner of the main window
- Random Time: Automatically picks a random time from 0:00 to 23:59, ensuring the selected time hasn't passed yet
- Fixed Time: Set a specific time for daily screenshots
- Time Range: Random time within a custom range, with smart selection that respects current time
- Quarter Checkpoints: For TimeRange mode, automatically creates 4 quarter checkpoints within the range to increase chances of capturing a photo
- Image Format: Choose between JPEG or PNG
- Quality Control: Adjustable JPEG quality (10-100)
- Desktop Only Mode: When enabled, automatically minimizes all windows before capturing, showing only the desktop background
- Multi-Monitor Support: Capture primary monitor, all monitors, or a specific monitor
- Photo Gallery: Browse screenshots organized by month and year
- Thumbnail View: Quick preview of all screenshots
- Full-Screen Viewer: Click any thumbnail to view full-size image with navigation arrows to browse through images
- Zoom Controls: Zoom in/out with mouse wheel or +/- buttons, with zoom level display (10% to 1000%) and reset button
- Pan & Drag: Click and drag to pan around zoomed images with intuitive hand cursor
- Smart Zooming: Zoom centers on cursor position for precise navigation
- Context Menu: Right-click any image for quick actions (Open, Open in File Explorer, Copy Image, Copy File Location, Delete)
- Windows 10/11
- .NET 8.0 Runtime
- At least one monitor
- Download the latest release
- Extract the files to your desired location
- Run
PictureDay.exe - The application will start minimized in the system tray
On first launch, PictureDay will:
- Create a default screenshot directory in
Pictures\PictureDay - Set up automatic daily screenshots with random scheduling
- Add itself to Windows startup (optional)
You can take screenshots manually using:
- Button: Click "Take Screenshot Now" in the main window
- System Tray: Right-click the system tray icon → "Take Screenshot Now"
- Keyboard: Press
F12orCtrl+Swhen the main window is focused
- Open PictureDay from the system tray
- Navigate to the "Photo Gallery" tab
- Use the month/year dropdowns or arrow buttons to browse
- Click any thumbnail to view the full-size image
- Use the left/right arrow buttons in the image viewer to navigate between images
- Zoom Controls: Use mouse wheel to zoom in/out (zooms toward cursor position), or use the +/- buttons with zoom level display. Click "Reset" to return to 100% zoom
- Pan & Drag: When zoomed in, click and drag to pan around the image (cursor changes to hand when panning is available)
- Right-click any image for context menu options (Open, Open in File Explorer, Copy Image, Copy File Location, Delete)
- Click "Exit" button to close the image viewer
Access settings via:
- Main window → "Settings" tab
- System tray icon → "Settings"
Privacy Filter
- Add applications to block list (screenshots won't be taken when these apps are running)
- Automatically detects private browsing modes
Screenshot Schedule
- Choose scheduling mode (Random, Fixed Time, or Time Range)
- Configure time settings based on selected mode
- View today's scheduled screenshot time (displays in 12-hour format, fully date-aware)
- See notification if today's scheduled time has already passed (will schedule for tomorrow), using the same date+time logic as the scheduler and logs
- TimeRange Mode: Automatically creates 4 quarter checkpoints within your selected range. Photos are taken at the main scheduled time and all quarter checkpoints during the day. At midnight, the system automatically selects the best photo (main photo if available, otherwise randomly selects from quarters)
Monitor Selection
- Primary Monitor (default)
- All Monitors (combined capture)
- Specific Monitor (select from available monitors)
Quality & Format
- Image format: JPEG or PNG
- JPEG quality slider (10-100, only applies to JPEG)
Storage
- Configure screenshot directory
- Browse to select custom location
Startup
- Enable/disable "Start with Windows"
- Screenshots are stored locally on your computer
- Privacy filter prevents screenshots when sensitive applications are detected
- No data is sent to external servers
- All processing happens on your local machine
Screenshots are organized as follows:
ScreenshotDirectory/
├── 2024-01/
│ ├── 2024-01-15_14-30-45.jpg
│ ├── 2024-01-16_09-15-22.jpg
│ └── ...
├── 2024-02/
│ └── ...
└── ...
Settings are stored in:
%APPDATA%\PictureDay\config.json
F12- Take screenshot nowCtrl+S- Take screenshot nowCtrl+W- Close window (minimizes to tray)
- Check that the application is running (look for system tray icon)
- Verify your schedule settings in Settings
- Ensure you're active (screenshots only capture when user is active)
- Check if privacy filter is blocking (blocked apps or private browsing detected)
- Check the screenshot directory in Settings
- Verify the directory exists and is accessible
- Check Windows file permissions
- Ensure .NET 8.0 Runtime is installed
- Check Windows Event Viewer for error details
- Run as administrator if permission issues occur
- Framework: .NET 8.0
- UI: WPF (Windows Presentation Foundation)
- Image Format: JPEG (default) or PNG
- Storage: Local file system
- Architecture: Service-based with dependency injection
dotnet restore
dotnet build
dotnet runTo create a release package:
build-release.batThis will:
- Build the application as a self-contained release (includes .NET runtime)
- Package everything into a ZIP file named
PictureDay-v[VERSION]-Release.zip - Include README and LICENSE files
- Include PictureDayUpdater.exe for auto-update functionality
- Create a portable package that works on any Windows PC without requiring .NET installation
The ZIP file can be extracted and run on any Windows PC - Run PictureDay.exe
PictureDay/
├── Models/ # Data models (AppConfig, ScreenshotMetadata)
├── Services/ # Core services (Screenshot, Storage, Scheduler, etc.)
├── Views/ # UI views (Settings, PhotoGallery)
├── Utils/ # Utility classes
└── App.xaml.cs # Application entry point
See CHANGELOG.md for a detailed version history.
See LICENSE
Any contributions are welcome! Please use best coding practices and clearly explain what you added in pull requests!
If you find a bug, please make an issue report and describe any steps necessary to re-create the issues, if possible. The more information you give, the better I can fix issues.



