Egyszerű világos/sötét téma váltó Powershell segítségével

Hirdetés

A Windows 10-ben már régóta elérhető a világos/sötét téma (vagy ahogy a neten találkozni vele: dark mode), csak épp a mindennapokban kicsit kényelmetlen elérni. Ráadásul a Windows 10 frankó, automatikus éjszakai fény módjával (ami a kék fényt csökkenti a monitoron) ellentétben nem időzíthető.

Előbbire tökéletes egy Powershell script, aztán ezt kicsit megspékeljük pár extra kényelmi funkcióval, pl. időzítjük.

Így néz ki a Windows 10 beépített számológépe világos és sötét témában:

Számológép

A Powershell script maga

Az alábbi kódot másoljuk be bármilyen szövegszerkesztőbe, és mentsük el DarkMode.ps1 néven. Ha az egyszerűbb nekünk, akkor erről a GitHub linkről magát a scriptet le is tölthetjük.

##############################################################################
# DARKMODE POWERSHELL SCRIPT
# The easiest way to set dark/light theme or switch between of those
# Prerequisites: PowerShell 5.0 or later
# Version: 1.0
# Author: Iminetsoft
# GitHub: https://github.com/iminet/DarkMode
# License: CreativeCommons (CC BY 4.0)
# Usage: DarkMode.ps1 [status|dark|light|toggle] 
#        (without the optional switches, the toggle command will be performed)
##############################################################################

$regkey = "HKCU:SOFTWAREMicrosoftWindowsCurrentVersionThemesPersonalize"
$property = "AppsUseLightTheme"
$darkvalue = 0
$lightvalue = 1
function  SetDark 
{
    Set-ItemProperty -Path $regkey -Name $property -Value $darkvalue
}

function  SetLight 
{
    Set-ItemProperty -Path $regkey -Name $property -Value $lightvalue
}

function IsDark
{
    if ($(Get-ItemPropertyValue -Path $regkey -Name $property) -eq $darkvalue)
    {
        return $true
    }
    else
    {
        return $false    
    }
}

function Toggle
{
    if (IsDark -eq $true) { SetLight }
    else { SetDark }
}

if ($args.Count -ge 1 -and $args[0] -eq "dark") { SetDark }
elseif ($args.Count -ge 1 -and $args[0] -eq "light") { SetLight }
elseif ($args.Count -ge 1 -and $args[0] -eq "status") { Write-Host $(if (IsDark -eq $true) { "Dark theme" } else { "Light theme" } ) }
=======
##############################################################################
# DARKMODE POWERSHELL SCRIPT
# The easiest way to set dark/light theme or switch between of those
# Prerequisites: PowerShell 5.0 or later
# Version: 1.0
# Author: Iminetsoft
# GitHub: https://github.com/iminet/DarkMode
# License: CreativeCommons (CC BY 4.0)
# Usage: DarkMode.ps1 [status|dark|light|toggle] 
#        (without the optional switches, the toggle command will be performed)
##############################################################################

$regkey = "HKCU:SOFTWAREMicrosoftWindowsCurrentVersionThemesPersonalize"
$property = "AppsUseLightTheme"
$darkvalue = 0
$lightvalue = 1
function  SetDark 
{
    Set-ItemProperty -Path $regkey -Name $property -Value $darkvalue
}

function  SetLight 
{
    Set-ItemProperty -Path $regkey -Name $property -Value $lightvalue
}

function IsDark
{
    if ($(Get-ItemPropertyValue -Path $regkey -Name $property) -eq $darkvalue)
    {
        return $true
    }
    else
    {
        return $false    
    }
}

function Toggle
{
    if (IsDark -eq $true) { SetLight }
    else { SetDark }
}

if ($args.Count -ge 1 -and $args[0] -eq "dark") { SetDark }
elseif ($args.Count -ge 1 -and $args[0] -eq "light") { SetLight }
elseif ($args.Count -ge 1 -and $args[0] -eq "status") { Write-Host $(if (IsDark -eq $true) { "Dark theme" } else { "Light theme" } ) }
>>>>>>> 345d11e52f667be4e06c990f35c19b3143d8e82c
else { Toggle }

A script használata

Használat előtt feltétlenül tegyük a letöltött/elmentett fájlt a saját Dokumentumok mappánkba.

Mivel Powershellről van szó, nyilvánvaló, hogy ehhez szükségünk van a Powershellre. Indítsuk el úgy, hogy balra lent megnyomjuk a Start menüt, majd elkezdjük gépelni, hogy powershell. Amikor felbukkan a jellegzetes kék (újabb verziónál fekete) hátterű ikon, nyomjuk meg azt.

Ha feltárult elénk a Powershell ablaka, akkor menjünk is be a Dokumentumok mappánkba, ahol a script is található:

cd ([environment]::getfolderpath("mydocuments")

Próbaképp ellenőrizzük, hogy minden működik-e:

DarkMode.ps1 status

Ha a fenti parancs begépelése után a program visszajelzése az, hogy "Light theme" (vagy nyilván, ha már most sötét módot haszálunk, akkor "Dark theme"), akkor minden jól működik.

Próbáljuk ki a téma váltást:

DarkMode.ps1 toggle

Ezt a parancsot bármennyiszer kiadhatjuk, hatása az, hogy ellenkezőjére vált a téma: világosból sötét, sötétből világos lesz.

A toggle helyett használhatjuk a light vagy a dark kapcsolót is, ebben az esetben a kívánttal megegyező téma esetén nem fog történni semmi. Ha világos témánál kiadjuk azt, hogy light, akkor nem fogunk változást észrevenni.

Powershell

Időzített témázás

Ez eddig tök jó, de csak keveset nyertünk vele, hisz ugyanúgy kézzel kell kiadni a parancsot. Most jön az igazi móka, automatizáljuk a fent megismert parancsokat. Ehhez segítségünkre lesz a Windowsba beépített Feladatütemező (Task scheduler).

Feladatütemező indítása

Indítsuk el úgy, hogy a Start menüt megnyitva elkezdjük gépelni azt, hogy Feladatütemező. Amikor megjelenik találatként az ikonja, kattintsunk rá.

Aki nem ismerné még ezt a remek programot, az elsőre megijedhet, annyi minden van benne, már alapesetben is. De mi most nem fogjuk ezt megismerni, nem célunk.

Feladat létrehozása

A felső menü Művelet menüpontját lenyitva válasszuk a Feladat létrehozása alpontot. Kapunk egy űrlapot, több füllel. Nem lesz mindenre szükségünk.

Az Általános lapon csak a nevet töltsük ki. Ez bármi lehet, de azért legyen egyértelmű, mit is csinál ez a feladat. Legyen pl. Automatikus téma - világos a neve.

Feladatütemező

Az Indítás fülön Kattintsunk az Új gombra. Itt legyen kiválasztva a Naponta, a napot hagyjuk alapértelmezetten (ez a mai dátum lesz), az időt pedig állítsuk arra a reggeli időpontra, amikor világos témára váltanánk. Pl. 6:00. Kattintsunk az Ok gombra.

Feladatütemező

A Műveletek fül kicsit érdekesebb, itt adjuk meg, hogy pontosan mit is csináljon az ütemező, ha elérkezett a fentebb kiválasztott időpont. Az Új művelet gomb megnyomása után a Program/Parancsfájl alatti mezőbe írjuk be, hogy powershell.

Az alatta lévő (Argumentumok hozzáadása) mezőbe pedig:

-Command "& 'C:Users[FELHASZNÁLÓ-]DokumentumokDarkMode.ps1' light"

Feladatütemező

Figyelem, itt a [FELHASZNÁLÓ-] helyére írjuk be a saját felhasználói nevünket. A teszteléskor használt Powershell ablakban ezt pontosan láthatjuk is. De ha mégse, akkor adjuk ki az alábbi parancsot egy üres Powershell ablakban, és másoljuk onnan ki:

[environment]::getfolderpath("mydocuments")

Kattintunk az Ok gombra, majd a Feladat létrehozása ablakban is az Ok gombra.

Az esti sötét módhoz csinájuk végig a fentieket, az alábbi módosításokkal:

  • Az ütemezési időpont legyen valamilyen esti, pl. 19:30
  • A feladat nevében legyen benne a "sötét", pl. Automatikus téma - sötét
  • az Argumentum mezőben a light helyett dark szerepeljen

Végeredmény, konklúzió

És ennyi... Ezek után reggel és este is lefut a megfelelő parancs. A dolog szépséghibája, hogy futáskor egy pillanatra felbukkan a Powershell ablaka, majd el is tűnik. Később kiegészítjük a scriptet, hogy abszolút a háttérben fusson, felvillanás nélkül.