Wechsle Erscheinungsbild

Grundsätzlich

Wenn das Erscheinungsbild per AppleScript geändert wird, sieht das leider nicht sehr elegant aus, da sich jedes Fenster selbst ändert, aber nicht alle gleichzeitig, wie wenn es per Systemeinstellungen oder Kontrollzentrum geändert wird.

Dafür kann AppleScript jedoch parallel die Terminal-Einstellungen und den Schreibtischhintergrund ändern. Bei dynamischen Hintergrundbildern möchte man diese Zeile ggf. auskommentieren.

Voraussetzungen

Im Ordner “Bilder” im eigenen Benutzerordner legt man ein Hell.jpg und ein Dunkel.jpg ab, welche als Hintergrundbilder verwendet werden.

Im Terminal legt man zwei Einstellungen an und paßt die Namen hier an.

AppleScript

Dateiname: Wechsle Erscheinungsbild.scpt

Im Skripteditor öffnen

(*
Erscheinungsbild wechseln

Ändert das Erscheinungsbild (hell/dunkel) zusammen mit dem Terminal und dem Hintergrundbild

Copyright © 2024
Café MegaByte
*)


-- Hintergrundbilder festlegen
tell application "Finder"
	set wallpaperHell to file "Pictures:Hell.jpg" of home as text
	set wallpaperDunkel to file "Pictures:Dunkel.jpg" of home as text
end tell

-- Terminal Settings festlegen
set settingSetHell to "Novel"
set settingSetDunkel to "Pro"

-- Erscheinungsbild und Hintergrundbild wechseln
tell application "System Events"
	tell appearance preferences
		
		-- Zieleinstellungen festlegen
		if (dark mode) then
			set newWallpaper to wallpaperHell
			set newSettingSet to settingSetHell
		else
			set newWallpaper to wallpaperDunkel
			set newSettingSet to settingSetDunkel
		end if
		
		-- Erscheinungsbild wechseln
		set dark mode to not dark mode
	end tell
	
	-- Hintergrundbild wechseln
	tell every desktop to set picture to newWallpaper
end tell

-- Läuft Terminal schon?
set countTerminal to 0
try
	set countTerminal to do shell script "ps -cx | grep -c Terminal"
end try

-- Terminal wechseln und ggf. wieder beenden
tell application "Terminal"
	set current settings of every tab of every window to settings set newSettingSet
	set default settings to settings set newSettingSet
	
	if countTerminal = 0 then
		quit
	end if
end tell