How to switch Dark/Light theme with the Terminal?

Just wanted to give my solution, this works for me :slightly_smiling_face::

#! /bin/bash

set_theme() {
    new_color_theme="$1"
    new_gtk_theme="$2"

    export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$(id -u $USER)/bus"

    current_gtk_theme=$(gsettings get org.gnome.desktop.interface gtk-theme)
    if [[ "$current_gtk_theme" != "'$new_gtk_theme'" ]]
    then
        echo "$(date): Switching from $current_gtk_theme to theme '$new_gtk_theme'"

        # https://forum.zorin.com/t/how-to-switch-dark-light-theme-with-the-terminal/48920/5
        gsettings set org.gnome.desktop.interface color-scheme ${new_color_theme}
        gsettings set org.gnome.desktop.interface gtk-theme ${new_gtk_theme}
        gsettings set org.gnome.desktop.interface icon-theme ${new_gtk_theme}
        gsettings set org.gnome.shell.extensions.user-theme name ${new_gtk_theme}
    fi
}

# dark
set_theme "prefer-dark" "ZorinGrey-Dark"

# light
# set_theme "prefer-light" "ZorinBlue-Light"

Hope I helped future users.

2 Likes