2025-05-05
// ==UserScript==
// @name Star Citizen RSI Specturm - Auto Dark Mode
// @namespace Kyan Violentmonkey Scripts
// @match *://robertsspaceindustries.com/spectrum/*
// @grant none
// @version 1.1.1
// @license MIT
// @author Kyan
// @description 2025-05-05
// ==/UserScript==
;(function () {
'use strict';
console.log("[Auto Dark Mode] Start.")
/* Functions */
const is_dark = () => document.querySelector("#app").classList.contains("theme-dark")
const is_light = () => document.querySelector("#app").classList.contains("theme-light")
const to_dark = () => {
document.querySelector("#app").classList.remove("theme-light")
document.querySelector("#app").classList.add("theme-dark")
}
const to_light = () => {
document.querySelector("#app").classList.remove("theme-dark")
document.querySelector("#app").classList.add("theme-light")
}
const is_prefer_dark = () => window.matchMedia("(prefers-color-scheme: dark)").matches
const is_prefer_light = () => window.matchMedia("(prefers-color-scheme: light)").matches
const when_ready = (callback) => {
let timer = window.setInterval(() => {
console.log("[Auto Dark Mode] Waiting")
if (document.querySelector("#app") && !document.querySelector("#app").classList.contains("loading")) {
console.log("[Auto Dark Mode] Ready")
clearInterval(timer)
callback()
}
}, 1000)
window.setTimeout(() => clearInterval(timer), 15000)
}
/* Main */
when_ready(() => {
if (is_dark() && is_prefer_light()) {
to_light()
} else if (is_light() && is_prefer_dark()) {
to_dark()
} else {
console.log(`[Auto Dark Mode] Prefer: ${is_prefer_light()?"✓":"✗"}Light, ${is_prefer_dark()?"✓":"✗"}Dark`)
console.log(`[Auto Dark Mode] Current: ${is_light()?"✓":"✗"}Light, ${is_dark()?"✓":"✗"}Dark`)
}
})
})();