personalize laptop display with slideshow

lynn kostecki-csanyi 0 Reputation points
2026-08-24T18:00:09.85+00:00

I have thousands of photos in various folders under main photo of my pictures on my hard drive. It seems with windows 11 I can only display from one individual folder. In windows 10 it would shuffle through photos in all folders. Now only will do from one folder. How can I get this to work from all subfolders in windows 11?

Windows for home | Windows 11 | Desktop, Start, and personalization | Screen saver
0 comments No comments

2 answers

Sort by: Most helpful
  1. Kai-H 27,975 Reputation points Microsoft External Staff Moderator
    2026-08-25T08:12:51.5566667+00:00

    Hi, lynn kostecki-csanyi

    Windows 11’s desktop slideshow currently selects one folder and does not reliably include pictures stored inside its subfolders. There is no “include subfolders” switch in Settings > Personalization > Background.

    The simplest workaround is to create one new folder, for example Pictures\Desktop Slideshow, and place copies of the photos you want displayed directly inside it. Then:

    Right-click an empty area of the desktop and select Personalize.

    Select Background.

    Change Personalize your background to Slideshow.

    Select Browse, then choose the new Desktop Slideshow folder.

    Turn on Shuffle the picture order and choose how often the picture should change.

    Unfortunately, if you want every photo from thousands of existing subfolders without copying them, you would need a third-party wallpaper application or a more technical workaround using file links. It is recommended that you use the single-folder method first, since it is easier to maintain and does not alter your original photo folders.

    Thank you for your patience in reading, I hope this information has been helpful to you. 


    If the answer is helpful, please click "Yes" and kindly upvote it. If you have extra questions about this answer, please click "Comment."    

    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread. 

    Was this answer helpful?

    2 people found this answer helpful.

  2. Rohit Sharma 0 Reputation points
    2026-08-24T18:22:02.83+00:00

    If it is about wallpapers, then symbolic links are more plausible option, like a single folder contains links to the images of a folder and subfolders inside it. which can be done via PowerShell script with admin privilege. This will create link of images from source folder to destination folder while iterating subfolders. This is a one time setup and to constantly waching for new image added you can add schedular for it. and you can choose this destination folder for wallpaper shuffling.

    $Source = "C:/User/<your user name>/Downloads"
    $Destination = "C:/User/<your user name>/Images"
    
    $Extensions = @(
        ".jpg",
        ".jpeg",
        ".png",
        ".gif",
        ".webp",
        ".bmp",
        ".tif",
        ".tiff",
        ".ico",
        ".svg"
    )
    # Create destination folder
    New-Item -ItemType Directory -Path $Destination -Force | Out-Null
    function Get-UniqueName {
        param (
            [string]$Directory,
            [string]$FileName
        )
        $base = [System.IO.Path]::GetFileNameWithoutExtension($FileName)
        $ext  = [System.IO.Path]::GetExtension($FileName)
        $candidate = Join-Path $Directory $FileName
        $counter = 1
        while (Test-Path $candidate) {
            $newName = "$base ($counter)$ext"
            $candidate = Join-Path $Directory $newName
            $counter++
        }
        return $candidate
    }
    function Sync-Images {
        Write-Host "Syncing images..."
        $files = Get-ChildItem `
            -Path $Source `
            -File `
            -Recurse `
            -ErrorAction SilentlyContinue |
            Where-Object {
                $Extensions -contains $_.Extension.ToLower()
            }
        # Track original files
        $existingTargets = @{}
        foreach ($file in $files) {
            $existingLink = Get-ChildItem $Destination -File |
                Where-Object {
                    $_.LinkType -eq "SymbolicLink" -and
                    $_.Target -eq $file.FullName
                } |
                Select-Object -First 1
            if ($existingLink) {
                $existingTargets[$existingLink.FullName] = $true
                continue
            }
            $targetPath = Get-UniqueName `
                -Directory $Destination `
                -FileName $file.Name
            try {
                New-Item `
                    -ItemType SymbolicLink `
                    -Path $targetPath `
                    -Target $file.FullName `
                    -ErrorAction Stop | Out-Null
                $existingTargets[$targetPath] = $true
                Write-Host "Added: $($file.Name)"
            }
            catch {
                Write-Host "Could not create link: $($file.Name)"
            }
        }
        # Remove broken / obsolete symbolic links
        Get-ChildItem $Destination -File -ErrorAction SilentlyContinue |
            Where-Object {
                $_.LinkType -eq "SymbolicLink"
            } |
            ForEach-Object {
                if (-not (Test-Path $_.Target)) {
                    Write-Host "Removing: $($_.Name)"
                    Remove-Item $_.FullName -Force
                }
            }
        Write-Host "Sync complete."
    }
    # Initial synchronization
    Sync-Images
    # Watch Downloads
    $Watcher = New-Object System.IO.FileSystemWatcher
    $Watcher.Path = $Source
    $Watcher.IncludeSubdirectories = $true
    $Watcher.NotifyFilter = `
        [System.IO.NotifyFilters]'FileName, LastWrite, DirectoryName'
    $Watcher.EnableRaisingEvents = $true
    # Prevent multiple simultaneous syncs
    $Global:SyncRunning = $false
    function Trigger-Sync {
        if ($Global:SyncRunning) {
            return
        }
        $Global:SyncRunning = $true
        Start-Sleep -Seconds 2
        Sync-Images
        $Global:SyncRunning = $false
    }
    Register-ObjectEvent `
        -InputObject $Watcher `
        -EventName Created `
        -Action { Trigger-Sync } | Out-Null
    Register-ObjectEvent `
        -InputObject $Watcher `
        -EventName Deleted `
        -Action { Trigger-Sync } | Out-Null
    Register-ObjectEvent `
        -InputObject $Watcher `
        -EventName Changed `
        -Action { Trigger-Sync } | Out-Null
    Register-ObjectEvent `
        -InputObject $Watcher `
        -EventName Renamed `
        -Action { Trigger-Sync } | Out-Null
    Write-Host ""
    Write-Host "===================================="
    Write-Host " Download Image Sync is running"
    Write-Host "===================================="
    Write-Host ""
    Write-Host "Source:      $Source"
    Write-Host "Destination: $Destination"
    Write-Host ""
    Write-Host "Press Ctrl+C to stop."
    Write-Host ""
    while ($true) {
        Wait-Event -Timeout 10 | Out-Null
    }
    
    

    Was this answer helpful?

    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.