Theme Switch Kavo UI
Key RequiredUniversal

Theme Switch Kavo UI

Universal ScriptNeptuneM500FanNeptuneM500Fan 1.6K views 30 executesUpdated Aug 13, 2025
Unrated
00
Lua Script•243 lines (8543 chars)
-- Kavo UI Theme Changer with Rainbow Support (made by thebiggestpro01, on GitHub!


-- Implement this to your script! Instructions:
-- 1. Copy all the local functions including the rainbowCycle function, which makes the rainbow cycle work (do NOT put the delayed function on the top, it is supposed to be on the VERRYYYYY bottom of the script to make sure the UI loads succesfully) , and paste them all on the top of your script, right after you create the window.

-- 2. The only themes supported are those on the "local themes" function, each table uses the premade theme's from the library RGB scheme, (SchemeColor, Background, Header, TextColor etc), to add one that you want, copy another theme table and add your own RGB stuff, make sure to add the extra } on your new theme, and remove the extra } on other theme tables that are NOT the last table on the function list, and then add your theme button, with the applyTheme("theme name") argument in your script. 


-- 3. Make sure the ThemesSection and Tab for the themes are the LAST ones made, to isolate any errors the buttons might cause, making the rest of the script function right, but making so the Themes stuff won't load in any case of error, like a infinite unexpected loop.

-- 4. If you don't want a function to save or load a saved theme from the written files, do this:
-- Remove "themeSaveFile"
-- Remove the saveTheme function
-- Remove the saveTheme argument from every theme button
-- And other arguments and functions, like loadSavedTheme()
-- ULTRA RECOMMENDED: REMOVE THE FUNCTION WITH A 0.01 DELAY FULLY, OR ELSE IT MIGHT HALT THE WHOLE SCRIPT OR MIGHT CRASH THE LIBRARY

-- Now here's a example you can use


local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/thebiggestpro01/Nexusoritation/refs/heads/main/KNOLib2"))()
local Window = Library.CreateLib("Kavo UI - Theme Changer", "DarkTheme")
local Tab = Window:NewTab("Themes")
local ThemesSection = Tab:NewSection("Choose a theme")
local themeSaveFile = "SavedTheme.txt"

local themes = {
    Private = {
        SchemeColor = Color3.fromRGB(255, 215, 0),
        Background = Color3.fromRGB(31, 41, 43),
        Header = Color3.fromRGB(22, 29, 31),
        TextColor = Color3.fromRGB(255,255,255),
        ElementColor = Color3.fromRGB(22, 29, 31)
    },
    DarkTheme = {
        SchemeColor = Color3.fromRGB(64, 64, 64),
        Background = Color3.fromRGB(0, 0, 0),
        Header = Color3.fromRGB(0, 0, 0),
        TextColor = Color3.fromRGB(255, 255, 255),
        ElementColor = Color3.fromRGB(20, 20, 20)
    },
    LightTheme = {
        SchemeColor = Color3.fromRGB(150, 150, 150),
        Background = Color3.fromRGB(255, 255, 255),
        Header = Color3.fromRGB(200, 200, 200),
        TextColor = Color3.fromRGB(0, 0, 0),
        ElementColor = Color3.fromRGB(224, 224, 224)
    },
    BloodTheme = {
        SchemeColor = Color3.fromRGB(227, 27, 27),
        Background = Color3.fromRGB(10, 10, 10),
        Header = Color3.fromRGB(5, 5, 5),
        TextColor = Color3.fromRGB(255, 255, 255),
        ElementColor = Color3.fromRGB(20, 20, 20)
    },
    GrapeTheme = {
        SchemeColor = Color3.fromRGB(166, 71, 214),
        Background = Color3.fromRGB(64, 50, 71),
        Header = Color3.fromRGB(36, 28, 41),
        TextColor = Color3.fromRGB(255, 255, 255),
        ElementColor = Color3.fromRGB(74, 58, 84)
    },
    Ocean = {
        SchemeColor = Color3.fromRGB(86, 76, 251),
        Background = Color3.fromRGB(26, 32, 58),
        Header = Color3.fromRGB(38, 45, 71),
        TextColor = Color3.fromRGB(200, 200, 200),
        ElementColor = Color3.fromRGB(38, 45, 71)
    },
    Sentinel = {
        SchemeColor = Color3.fromRGB(230, 35, 69),
        Background = Color3.fromRGB(32, 32, 32),
        Header = Color3.fromRGB(24, 24, 24),
        TextColor = Color3.fromRGB(119, 209, 138),
        ElementColor = Color3.fromRGB(24, 24, 24)
    },
    Synapse = {
        SchemeColor = Color3.fromRGB(46, 48, 43),
        Background = Color3.fromRGB(13, 15, 12),
        Header = Color3.fromRGB(36, 38, 35),
        TextColor = Color3.fromRGB(152, 99, 53),
        ElementColor = Color3.fromRGB(24, 24, 24)
    },
    Serpent = {
        SchemeColor = Color3.fromRGB(0, 166, 58),
        Background = Color3.fromRGB(31, 41, 43),
        Header = Color3.fromRGB(22, 29, 31),
        TextColor = Color3.fromRGB(255, 255, 255),
        ElementColor = Color3.fromRGB(22, 29, 31)
    },
    Midnight = {
        SchemeColor = Color3.fromRGB(26, 189, 158),
        Background = Color3.fromRGB(44, 62, 82),
        Header = Color3.fromRGB(57, 81, 105),
        TextColor = Color3.fromRGB(255, 255, 255),
        ElementColor = Color3.fromRGB(52, 74, 95)
    },
    Rainbow = {
        SchemeColor = Color3.fromHSV(0, 1, 1),
        Background = Color3.fromRGB(31, 41, 43),
        Header = Color3.fromRGB(22, 29, 31),
        TextColor = Color3.fromRGB(255, 255, 255),
        ElementColor = Color3.fromRGB(22, 29, 31)
    }
}

local function applyTheme(theme)
    if themes[theme] then
        for prop, val in pairs(themes[theme]) do
            Library:ChangeColor(prop, val)
        end
    end
end

local function saveTheme(themeName)
    if writefile then
        writefile(themeSaveFile, themeName)
    elseif pcall(function() setclipboard(themeName) end) then end
end

local function loadSavedTheme()
    if isfile and isfile(themeSaveFile) then
        local savedTheme = readfile(themeSaveFile)
        if themes[savedTheme] then
            return savedTheme
        end
    end
    return "Private"
end

local rainbowRunning = false
local rainbowSpeed = 1
local currentHue = 0
local rainbowConnection

local function startRainbow()
    rainbowRunning = true
    rainbowConnection = game:GetService("RunService").RenderStepped:Connect(function()
        if rainbowRunning then
            currentHue = (currentHue + rainbowSpeed / 360) % 1
            local rainbowColor = Color3.fromHSV(currentHue, 1, 1)
            Library:ChangeColor("SchemeColor", rainbowColor)
        end
    end)
end

local function stopRainbow()
    rainbowRunning = false
    if rainbowConnection then
        rainbowConnection:Disconnect()
        rainbowConnection = nil
    end
end

ThemesSection:NewLabel("Credits to thebiggestpro01 on GitHub")
ThemesSection:NewButton("Golden", "Apply Golden Theme", function()
stopRainbow()
    applyTheme("Private")
    saveTheme("Private")
end)

ThemesSection:NewButton("DarkTheme", "Apply Dark Theme", function()
stopRainbow()
    applyTheme("DarkTheme")
    saveTheme("DarkTheme")
end)

ThemesSection:NewButton("LightTheme", "Apply Light Theme", function()
stopRainbow()
    applyTheme("LightTheme")
    saveTheme("LightTheme")
end)

ThemesSection:NewButton("BloodTheme", "Apply Blood Theme", function()
stopRainbow()
    applyTheme("BloodTheme")
    saveTheme("BloodTheme")
end)

ThemesSection:NewButton("GrapeTheme", "Apply Grape Theme", function()
stopRainbow()
    applyTheme("GrapeTheme")
    saveTheme("BloodTheme")
end)

ThemesSection:NewButton("Ocean", "Apply Ocean Theme", function()
stopRainbow()
    applyTheme("Ocean")
    saveTheme("Ocean")
end)

ThemesSection:NewButton("Sentinel", "Apply Sentinel Theme", function()
stopRainbow()
    applyTheme("Sentinel")
    saveTheme("Sentinel")
end)

ThemesSection:NewButton("Synapse", "Apply Synapse Theme", function()
stopRainbow()
    applyTheme("Synapse")
    saveTheme("Synapse")
end)

ThemesSection:NewButton("Serpent", "Apply Serpent Theme", function()
    stopRainbow()
    applyTheme("Serpent")
    saveTheme("Serpent")
end)
ThemesSection:NewButton("Midnight", "Apply Midnight Theme", function()
    stopRainbow()
    applyTheme("Midnight")
    saveTheme("Midnight")
end)
-- Rainbow Theme Button
ThemesSection:NewButton("Rainbow", "Start Rainbow Theme", function()
    stopRainbow()
    applyTheme("Rainbow")
    saveTheme("Rainbow")
    startRainbow()
end)

-- Rainbow Speed TextBox
ThemesSection:NewTextBox("Rainbow Speed (e.g. 1)", "Sets how fast the rainbow cycles", function(input)
    input = input:gsub(",", ".")
    local num = tonumber(input)
    if num and num > 0 and num <= 100 then
        rainbowSpeed = num
    else
        print("Invalid rainbow speed. Must be a number between 0 and 100.")
    end
end)

-- Auto-load saved theme
delay(0.01, function()
    local savedTheme = loadSavedTheme()
    stopRainbow()
    applyTheme(savedTheme)
    print("Loaded saved theme:" .. savedTheme)
    if savedTheme == "Rainbow" then
        startRainbow()
    end
end)

Features & Information

A library from Kavo UI so you can drag on mobile and change themes. (Includes theme saving)

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts