Sous Windows 10, il existe une fonctionnalité qui permet de mettre un joli fond d’écran au niveau de l’écran de verrouillage de session : Windows Spotlight. Ce dernier est proposé automatiquement par Microsoft et changé chaque jour avec quelque-chose de nouveau (ou plus régulièrement si l’actuelle ne vous plaît pas puisque vous avez la possibilité d’évaluer chaque fond).
Il s’agit d’une fonctionnalité propre à Windows 10 mais qui ne change pas l’arrière-plan du bureau mais uniquement celui du verrouillage (lorsque vous faîtes WIN + L où que vous fermez votre session). En fait, c’est un peu comme l’application Bing Desktop… sauf qu’il n’y a pas la partie Bing 😉 !
Personnellement, je trouve que les images sont plutôt très sympas alors j’ai voulu les récupérer afin de les utiliser également comme fond d’écran.
Etape 1 – Activer l’option, localiser les images et procéder manuellement
Première étape, vous devez activer l’option sur votre PC : Paramètres > Personnalisation puis Ecran de verrouillage et choisissez Windows Spotlight dans le menu déroulant.
Une fois que c’est fait, vous devriez pouvoir accéder au dossier caché suivant :
%localappdata%\Packages\
Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\
LocalState\Assets
(rassemblez les lignes, c’est simplement pour éviter de casser le formatage du site)
C’est le dossier dans lequel sont stockées les images. Pour y accéder, copiez-collez le chemin précédent dans votre Explorateur Windows ou directement dans la fenêtre qui apparaît lorsque vous appuyez sur WINDOWS + R.
Vous devez voir un dossier similaire avec des fichiers étranges :
Bien que ces fichiers ne s’ouvrent pas, il s’agit bien des images utilisées par Windows Spotlight.
Créez un nouveau dossier de travail sur votre bureau (ou ailleurs) et copiez-collez y tous ces fichiers.
Appuyez maintenant sur SHIFT + cliquez sur le bouton gauche de votre souris. Dans le menu contextuel qui apparaît, choisissez l’option Open command window here / Ouvrir commandes Windows ici.
Exécutez la commande suivante :
Ren *.* *.jpg
Pas de stress, on ne fait rien de grave. On renomme simplement tous les fichiers de notre dossier de travail en ajoutant à la fin l’extension .JPG. De cette façon, nos fichiers seront bien identifiés par le système comme des images et nous pourrons alors les ouvrir.
Il vous reste maintenant à :
- Faire le tri entre les images et les résidus non souhaités comme le logo du jeu de bonbons (dont le nom de me revient pas au moment où j’écris cet article), celui de Flipboard, la tête d’oiseau (dont on se demande ce qu’il fait là), etc.
- Différencier les images qui sont au format Portrait ou Paysage. En effet, vous trouverez des images au format Portrait qui sont utilisées pour Windows Spotlight sur Windows Phone mais qui ne donneront rien de bon sur votre Windows 10 de bureau ! 😉
Une fois que c’est bon, il vous suffit de vous créer un dossier dans vos Documents et d’y mettre toutes les images que vous souhaitez conserver comme fonds d’écran possibles.
Ensuite, il ne vous reste plus qu’à activer l’option dans les paramètres :
Activez l’option Slideshow puis définissez votre dossier qui contient toutes les images (que j’ai appelé personnellement Wallpapers_PC).
De cette façon, votre écran de verrouillage de session et votre fond d’écran utilisent désormais le même lot d’images qui provient de Windows Spotlight.
C’est terminé ! 🙂
Concrètement ça marche, mais le désavantage de cette solution et que vous devrez régulièrement aller récupérer les images dans le dossier caché de Windows Spotlight, puis les copier-coller dans votre dossier, puis ajouter l’extension JPG afin de pouvoir utiliser les nouvelles images… Sinon, vous n’aurez que les images disponibles à l’instant où vous avez réalisé la manipulation. 🙁
Etape 2 – Automatiser la récupération des images en PowerShell
Heureusement, il est possible d’automatiser cela.
Créez-vous un dossier Windows_Spotlight dans lequel vous allez créer 2 nouveaux dossiers : PC et Smartphone.
$me = $env:username
$source = "C:\Users\$me\AppData\Local\Packages\
Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets"
$target_pc = "C:\Users\$me\Pictures\Windows_Spotlight\PC"
$target_phone = "C:\Users\$me\Pictures\Windows_Spotlight\Phone"
Write-Host "[DEBUG] - Starting importing Windows Spotlight wallpapers..."
# Testing if the folder Windows Spotlight Exists
if ((Test-Path $target_pc) -eq $false)
{
# Creating the folder if not exist
Write-Host "[ERROR] - Check folder creation"
Break
}
# Get all the images in the hidden folder of Windows Spotlight
$images = Get-ChildItem $source
# For each image
foreach ($wallpaper in $images)
{
# If the file has NOT been already imported by previous script execution
# We will : import/copy it, then rename it by adding the jpg extension
if ((Test-Path $target_pc\$wallpaper.jpg) -eq $false)
{
# Copy
Copy-Item $source\$wallpaper -Destination $target_pc
# Rename
Rename-Item $target_pc\$wallpaper -NewName $target_pc\$wallpaper.jpg
# Log
Write-Host "$wallpaper copied and added JPG extension into $target_pc folder !"
}
else
{
Write-Host "$wallpaper has been already imported !"
}
# Clearing the images that are probably not true image that can be used as wallpapers
# In fact, removing all the files under 100 000 bytes
if ((Get-Item $target_pc\$wallpaper.jpg).Length -lt 100000)
{
Write-Host "$wallpaper removed (probably not wallpapers)"
Remove-Item $target_pc\$wallpaper.jpg
}
# At this step, we have only true images that can be used for PC but also for Phone !
# We will get the Height / Width details of each picture
# Only if the image exists
if ((Test-Path $target_pc\$wallpaper.jpg) -eq $true)
{
$image_details = Get-Image $target_pc\$wallpaper.jpg
# If, Width is larger that Height therefore is landscape / paysage
if ($image_details.Height -le $image_details.Width)
{
Write-Host "$wallpaper is a Landscape - We keep it in the current folder"
}
# Otherwise height is Larger than Width - It's for Phone
else
{
Write-Host "$wallpaper is a Portrait - Moved for Phone usage"
# File has been already move in previous import - so its removed
if ((Test-Path $target_phone\$wallpaper.jpg) -eq $true)
{
Remove-Item $target_pc\$wallpaper.jpg
}
# New file, we move it in phone folder
else
{
Move-Item -Path $target_pc\$wallpaper.jpg -Destination $target_phone
}
}
}
}
# Ending script execution
Write-Host "Import of Windows Spotlight Wallpapers Done !"
Write-Host ("Number of Available Elements for PC Wallpapers : " + (Get-ChildItem $target_pc).Count)
Write-Host ("Number of Available Elements for Phone Wallpapers : " + (Get-ChildItem $target_phone).Count)
En gros, que fait-on :
-
- On vérifie que notre dossier de travail est bien créé. Par défaut : C:\Users\vous\Pictures\Windows_Spotlight\PC
-
- On récupère la liste de tous les fichiers disponibles dans le dossier caché de Windows Spotlight
-
- Pour chaque fichier :
-
- Si le fichier n’existe pas déjà (lors d’un précédent import), on copie le fichier dans notre dossier Windows_Spotlight\PC,
-
- On le renomme en ajoutant l’extension de fichier .jpg à la fin,
-
- On supprime tous les fichiers dont la taille est inférieure ou égale à 100 000 bytes car à priori il s’agira des logos et autres résidus comme je les ai appelés précédemment,
- Si l’image n’a pas été supprimée, on récupère maintenant les dimensions height / width pour chaque image (pour cette partie j’utilise la fonction Get-Image extraite de PSImageTools – voir note à la fin).
-
- Si l’image a une hauteur moins importante que la largeur, il s’agit donc d’une image au format paysage, nous gardons donc le fichier dans notre dossier de travail Windows_Spotlight\PC
- Sinon (la hauteur est plus importante) et c’est donc une image au format portrait. Nous déplaçons donc le fichier dans le dossier Windows_Spotlight\Phone (si cela n’a pas encore été fait dans un précédent import).
-
-
- Pour chaque fichier :
- A la fin, on affiche le nombre d’images disponibles pour chaque dossier.
On voit bien que nous n’avons plus que des images fonctionnelles et utilisables et que chacun a été positionnée dans le répertoire qui lui convient en fonction de son format (paysage pour PC et portrait pour smartphone). 🙂
Etape 3 – Pour aller plus loin
Vous pouvez maintenant choisir de positionner votre dossier Windows_Spotlight dans votre DropBox ou dans OneDrive (ou autre). De cette façon, toutes les images seront disponibles depuis tous vos ordinateurs et/ou smartphone.
Mieux encore, vous pouvez également automatiser l’exécution de ce script via les tâches planifiées afin d’exécuter et faire une copie chaque jour des nouvelles images proposées par Microsoft ! 😉
N’hésitez pas à personnaliser le code selon vos besoins car même si ça fait le boulot, il y a moyen d’améliorer ça. Par exemple, vous pourriez créer les dossiers automatiquement (là où j’ai choisi de Break si jamais le dossier n’est pas conforme).
La fonction Get-Image que j’utilise provient du pack PSImageTools disponible sur GitHub. Elle n’a pas du tout été modifiée et je l’utilise telle que fournit pas son auteur. Plus d’informations sur GitHub. Merci à lui ! 🙂
Téléchargement : spotlight_wallpapers v2 blog
Ou directement sur GitHub via le lien suivant.
Merci !!
De rien 🙂
Merci pour cet astuce
Une question, concernant le script PowerShell, on doit l’executer à chaque fois?
PS: je sais que le sujet date un peu, mais ça sert encore comme quoi…
Pas de souci, c’est toujours sympa si ça intéresse d’autres personnes. Moi, j’ai simplement activé le script dans tâche planifiée. Comme cela le script s’exécute une fois par jour et j’ai ainsi les nouvelles images au fil du temps.
avec PowerShell, c’est un peu plus compliqué 😉 La commande ren *.* *.jpg est trop « basique »
Pour renommer les images collectées dans un dossier il faut utiliser la commande suivante :
Dir | Rename-Item -NewName { [io.path]::ChangeExtension($_.name, « jpg ») }