Created
September 11, 2024 15:56
-
-
Save and7ey/99f314a20291c49757b84cef71353e1b to your computer and use it in GitHub Desktop.
Home Assistant Theme Changer - TamperMonkey script
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // ==UserScript== | |
| // @name Home Assistant Theme Changer | |
| // @namespace http://tampermonkey.net/ | |
| // @version 0.1 | |
| // @description Changes HTML tag based on minute value | |
| // @match http://192.168.1.110:8123/* | |
| // @grant none | |
| // ==/UserScript== | |
| (function() { | |
| 'use strict'; | |
| // Function to get current time and determine if it's dark mode | |
| function isDarkMode() { | |
| const now = new Date(); | |
| const hour = now.getHours(); | |
| const minute = now.getMinutes(); | |
| return (hour === 20 && minute >= 0) || (hour > 20); | |
| } | |
| // Function to set HTML tag attributes | |
| function setHtmlAttributes(isDark) { | |
| const htmlTag = document.documentElement; | |
| if (isDark) { | |
| htmlTag.setAttribute('style', ` | |
| --state-icon-error-color: var(--error-state-color, var(--error-color)); | |
| --state-unavailable-color: var(--state-icon-unavailable-color, var(--disabled-text-color)); | |
| --sidebar-text-color: var(--primary-text-color); | |
| --sidebar-background-color: var(--card-background-color); | |
| --sidebar-selected-text-color: var(--primary-color); | |
| --sidebar-selected-icon-color: var(--primary-color); | |
| --sidebar-icon-color: rgba(var(--rgb-primary-text-color), 0.6); | |
| --switch-checked-color: var(--primary-color); | |
| --switch-checked-button-color: var(--switch-checked-color, var(--primary-background-color)); | |
| --switch-checked-track-color: var(--switch-checked-color, #000000); | |
| --switch-unchecked-button-color: var(--switch-unchecked-color, var(--primary-background-color)); | |
| --switch-unchecked-track-color: var(--switch-unchecked-color, #000000); | |
| --slider-color: var(--primary-color); | |
| --slider-secondary-color: var(--light-primary-color); | |
| --slider-track-color: var(--scrollbar-thumb-color); | |
| --label-badge-background-color: var(--card-background-color); | |
| --label-badge-text-color: rgba(var(--rgb-primary-text-color), 0.8); | |
| --paper-listbox-background-color: var(--card-background-color); | |
| --paper-item-icon-color: var(--state-icon-color); | |
| --paper-item-icon-active-color: var(--state-icon-active-color); | |
| --table-header-background-color: var(--input-fill-color); | |
| --table-row-background-color: var(--primary-background-color); | |
| --table-row-alternative-background-color: var(--secondary-background-color); | |
| --data-table-background-color: var(--card-background-color); | |
| --markdown-code-background-color: var(--primary-background-color); | |
| --mdc-theme-primary: var(--primary-color); | |
| --mdc-theme-secondary: var(--accent-color); | |
| --mdc-theme-background: var(--primary-background-color); | |
| --mdc-theme-surface: var(--card-background-color); | |
| --mdc-theme-on-primary: var(--text-primary-color); | |
| --mdc-theme-on-secondary: var(--text-primary-color); | |
| --mdc-theme-on-surface: var(--primary-text-color); | |
| --mdc-theme-text-disabled-on-light: var(--disabled-text-color); | |
| --mdc-theme-text-primary-on-background: var(--primary-text-color); | |
| --mdc-theme-text-secondary-on-background: var(--secondary-text-color); | |
| --mdc-theme-text-hint-on-background: var(--secondary-text-color); | |
| --mdc-theme-text-icon-on-background: var(--secondary-text-color); | |
| --mdc-theme-error: var(--error-color); | |
| --app-header-text-color: var(--text-primary-color); | |
| --app-header-background-color: var(--primary-color); | |
| --app-theme-color: var(--app-header-background-color); | |
| --mdc-checkbox-unchecked-color: rgba(var(--rgb-primary-text-color), 0.54); | |
| --mdc-checkbox-disabled-color: var(--disabled-text-color); | |
| --mdc-radio-unchecked-color: rgba(var(--rgb-primary-text-color), 0.54); | |
| --mdc-radio-disabled-color: var(--disabled-text-color); | |
| --mdc-tab-text-label-color-default: var(--primary-text-color); | |
| --mdc-button-disabled-ink-color: var(--disabled-text-color); | |
| --mdc-button-outline-color: var(--outline-color); | |
| --mdc-dialog-scroll-divider-color: var(--divider-color); | |
| --mdc-dialog-heading-ink-color: var(--primary-text-color); | |
| --mdc-dialog-content-ink-color: var(--primary-text-color); | |
| --mdc-text-field-idle-line-color: var(--input-idle-line-color); | |
| --mdc-text-field-hover-line-color: var(--input-hover-line-color); | |
| --mdc-text-field-disabled-line-color: var(--input-disabled-line-color); | |
| --mdc-text-field-outlined-idle-border-color: var(--input-outlined-idle-border-color); | |
| --mdc-text-field-outlined-hover-border-color: var(--input-outlined-hover-border-color); | |
| --mdc-text-field-outlined-disabled-border-color: var(--input-outlined-disabled-border-color); | |
| --mdc-text-field-fill-color: var(--input-fill-color); | |
| --mdc-text-field-disabled-fill-color: var(--input-disabled-fill-color); | |
| --mdc-text-field-ink-color: var(--input-ink-color); | |
| --mdc-text-field-label-ink-color: var(--input-label-ink-color); | |
| --mdc-text-field-disabled-ink-color: var(--input-disabled-ink-color); | |
| --mdc-select-idle-line-color: var(--input-idle-line-color); | |
| --mdc-select-hover-line-color: var(--input-hover-line-color); | |
| --mdc-select-outlined-idle-border-color: var(--input-outlined-idle-border-color); | |
| --mdc-select-outlined-hover-border-color: var(--input-outlined-hover-border-color); | |
| --mdc-select-outlined-disabled-border-color: var(--input-outlined-disabled-border-color); | |
| --mdc-select-fill-color: var(--input-fill-color); | |
| --mdc-select-disabled-fill-color: var(--input-disabled-fill-color); | |
| --mdc-select-ink-color: var(--input-ink-color); | |
| --mdc-select-label-ink-color: var(--input-label-ink-color); | |
| --mdc-select-disabled-ink-color: var(--input-disabled-ink-color); | |
| --mdc-select-dropdown-icon-color: var(--input-dropdown-icon-color); | |
| --mdc-select-disabled-dropdown-icon-color: var(--input-disabled-ink-color); | |
| --ha-assist-chip-filled-container-color: rgba(var(--rgb-primary-text-color),0.15); | |
| --ha-assist-chip-active-container-color: rgba(var(--rgb-primary-color),0.15); | |
| --chip-background-color: rgba(var(--rgb-primary-text-color), 0.15); | |
| --material-body-text-color: var(--primary-text-color); | |
| --material-background-color: var(--card-background-color); | |
| --material-secondary-background-color: var(--secondary-background-color); | |
| --material-secondary-text-color: var(--secondary-text-color); | |
| --state-cover-garage_door-open-color: #ff0000; | |
| --rgb-state-cover-garage_door-open-color: 255,0,0; | |
| background-color: rgb(250, 250, 250); | |
| --simple-tooltip-delay-in: 0ms; | |
| `); | |
| } else { | |
| htmlTag.setAttribute('style', ` | |
| --state-icon-error-color: var(--error-state-color, var(--error-color)); | |
| --state-unavailable-color: var(--state-icon-unavailable-color, var(--disabled-text-color)); | |
| --sidebar-text-color: var(--primary-text-color); | |
| --sidebar-background-color: var(--card-background-color); | |
| --sidebar-selected-text-color: var(--primary-color); | |
| --sidebar-selected-icon-color: var(--primary-color); | |
| --sidebar-icon-color: rgba(var(--rgb-primary-text-color), 0.6); | |
| --switch-checked-color: var(--primary-color); | |
| --switch-checked-button-color: var(--switch-checked-color, var(--primary-background-color)); | |
| --switch-checked-track-color: var(--switch-checked-color, #000000); | |
| --switch-unchecked-button-color: #999999; | |
| --switch-unchecked-track-color: #9b9b9b; | |
| --slider-color: var(--primary-color); | |
| --slider-secondary-color: var(--light-primary-color); | |
| --slider-track-color: var(--scrollbar-thumb-color); | |
| --label-badge-background-color: var(--card-background-color); | |
| --label-badge-text-color: rgba(var(--rgb-primary-text-color), 0.8); | |
| --paper-listbox-background-color: var(--card-background-color); | |
| --paper-item-icon-color: var(--state-icon-color); | |
| --paper-item-icon-active-color: var(--state-icon-active-color); | |
| --table-header-background-color: var(--input-fill-color); | |
| --table-row-background-color: var(--primary-background-color); | |
| --table-row-alternative-background-color: var(--secondary-background-color); | |
| --data-table-background-color: var(--card-background-color); | |
| --markdown-code-background-color: var(--primary-background-color); | |
| --mdc-theme-primary: var(--primary-color); | |
| --mdc-theme-secondary: var(--accent-color); | |
| --mdc-theme-background: var(--primary-background-color); | |
| --mdc-theme-surface: var(--card-background-color); | |
| --mdc-theme-on-primary: var(--text-primary-color); | |
| --mdc-theme-on-secondary: var(--text-primary-color); | |
| --mdc-theme-on-surface: var(--primary-text-color); | |
| --mdc-theme-text-disabled-on-light: var(--disabled-text-color); | |
| --mdc-theme-text-primary-on-background: var(--primary-text-color); | |
| --mdc-theme-text-secondary-on-background: var(--secondary-text-color); | |
| --mdc-theme-text-hint-on-background: var(--secondary-text-color); | |
| --mdc-theme-text-icon-on-background: var(--secondary-text-color); | |
| --mdc-theme-error: var(--error-color); | |
| --app-header-text-color: #e1e1e1; | |
| --app-header-background-color: #101e24; | |
| --app-theme-color: var(--app-header-background-color); | |
| --mdc-checkbox-unchecked-color: rgba(var(--rgb-primary-text-color), 0.54); | |
| --mdc-checkbox-disabled-color: var(--disabled-text-color); | |
| --mdc-radio-unchecked-color: rgba(var(--rgb-primary-text-color), 0.54); | |
| --mdc-radio-disabled-color: var(--disabled-text-color); | |
| --mdc-tab-text-label-color-default: var(--primary-text-color); | |
| --mdc-button-disabled-ink-color: var(--disabled-text-color); | |
| --mdc-button-outline-color: var(--outline-color); | |
| --mdc-dialog-scroll-divider-color: var(--divider-color); | |
| --mdc-dialog-heading-ink-color: var(--primary-text-color); | |
| --mdc-dialog-content-ink-color: var(--primary-text-color); | |
| --mdc-text-field-idle-line-color: var(--input-idle-line-color); | |
| --mdc-text-field-hover-line-color: var(--input-hover-line-color); | |
| --mdc-text-field-disabled-line-color: var(--input-disabled-line-color); | |
| --mdc-text-field-outlined-idle-border-color: var(--input-outlined-idle-border-color); | |
| --mdc-text-field-outlined-hover-border-color: var(--input-outlined-hover-border-color); | |
| --mdc-text-field-outlined-disabled-border-color: var(--input-outlined-disabled-border-color); | |
| --mdc-text-field-fill-color: var(--input-fill-color); | |
| --mdc-text-field-disabled-fill-color: var(--input-disabled-fill-color); | |
| --mdc-text-field-ink-color: var(--input-ink-color); | |
| --mdc-text-field-label-ink-color: var(--input-label-ink-color); | |
| --mdc-text-field-disabled-ink-color: var(--input-disabled-ink-color); | |
| --mdc-select-idle-line-color: var(--input-idle-line-color); | |
| --mdc-select-hover-line-color: var(--input-hover-line-color); | |
| --mdc-select-outlined-idle-border-color: var(--input-outlined-idle-border-color); | |
| --mdc-select-outlined-hover-border-color: var(--input-outlined-hover-border-color); | |
| --mdc-select-outlined-disabled-border-color: var(--input-outlined-disabled-border-color); | |
| --mdc-select-fill-color: var(--input-fill-color); | |
| --mdc-select-disabled-fill-color: var(--input-disabled-fill-color); | |
| --mdc-select-ink-color: var(--input-ink-color); | |
| --mdc-select-label-ink-color: var(--input-label-ink-color); | |
| --mdc-select-disabled-ink-color: var(--input-disabled-ink-color); | |
| --mdc-select-dropdown-icon-color: var(--input-dropdown-icon-color); | |
| --mdc-select-disabled-dropdown-icon-color: var(--input-disabled-ink-color); | |
| --ha-assist-chip-filled-container-color: rgba(var(--rgb-primary-text-color),0.15); | |
| --ha-assist-chip-active-container-color: rgba(var(--rgb-primary-color),0.15); | |
| --chip-background-color: rgba(var(--rgb-primary-text-color), 0.15); | |
| --material-body-text-color: var(--primary-text-color); | |
| --material-background-color: var(--card-background-color); | |
| --material-secondary-background-color: var(--secondary-background-color); | |
| --material-secondary-text-color: var(--secondary-text-color); | |
| --state-cover-garage_door-open-color: #ff0000; | |
| --rgb-state-cover-garage_door-open-color: 255,0,0; | |
| background-color: rgb(17, 17, 17); | |
| --simple-tooltip-delay-in: 0ms; | |
| --rgb-switch-unchecked-button-color: 153,153,153; | |
| --rgb-switch-unchecked-track-color: 155,155,155; | |
| --rgb-app-header-text-color: 225,225,225; | |
| --rgb-app-header-background-color: 16,30,36; | |
| --primary-background-color: #111111; | |
| --rgb-primary-background-color: 17,17,17; | |
| --card-background-color: #1c1c1c; | |
| --rgb-card-background-color: 28,28,28; | |
| --secondary-background-color: #282828; | |
| --rgb-secondary-background-color: 40,40,40; | |
| --clear-background-color: #111111; | |
| --rgb-clear-background-color: 17,17,17; | |
| --primary-text-color: #e1e1e1; | |
| --rgb-primary-text-color: 225,225,225; | |
| --secondary-text-color: #9b9b9b; | |
| --rgb-secondary-text-color: 155,155,155; | |
| --disabled-text-color: #6f6f6f; | |
| --rgb-disabled-text-color: 111,111,111; | |
| --divider-color: rgba(225, 225, 225, .12); | |
| --outline-color: rgba(225, 225, 225, .12); | |
| --outline-hover-color: rgba(225, 225, 225, .24); | |
| --mdc-ripple-color: #AAAAAA; | |
| --rgb-mdc-ripple-color: 170,170,170; | |
| --mdc-linear-progress-buffer-color: rgba(255, 255, 255, 0.1); | |
| --input-idle-line-color: rgba(255, 255, 255, 0.42); | |
| --input-hover-line-color: rgba(255, 255, 255, 0.87); | |
| --input-disabled-line-color: rgba(255, 255, 255, 0.06); | |
| --input-outlined-idle-border-color: rgba(255, 255, 255, 0.38); | |
| --input-outlined-hover-border-color: rgba(255, 255, 255, 0.87); | |
| --input-outlined-disabled-border-color: rgba(255, 255, 255, 0.06); | |
| --input-fill-color: rgba(255, 255, 255, 0.05); | |
| --input-disabled-fill-color: rgba(255, 255, 255, 0.02); | |
| --input-ink-color: rgba(255, 255, 255, 0.87); | |
| --input-label-ink-color: rgba(255, 255, 255, 0.6); | |
| --input-disabled-ink-color: rgba(255, 255, 255, 0.37); | |
| --input-dropdown-icon-color: rgba(255, 255, 255, 0.54); | |
| --codemirror-keyword: #C792EA; | |
| --rgb-codemirror-keyword: 199,146,234; | |
| --codemirror-operator: #89DDFF; | |
| --rgb-codemirror-operator: 137,221,255; | |
| --codemirror-variable: #f07178; | |
| --rgb-codemirror-variable: 240,113,120; | |
| --codemirror-variable-2: #EEFFFF; | |
| --rgb-codemirror-variable-2: 238,255,255; | |
| --codemirror-variable-3: #DECB6B; | |
| --rgb-codemirror-variable-3: 222,203,107; | |
| --codemirror-builtin: #FFCB6B; | |
| --rgb-codemirror-builtin: 255,203,107; | |
| --codemirror-atom: #F78C6C; | |
| --rgb-codemirror-atom: 247,140,108; | |
| --codemirror-number: #FF5370; | |
| --rgb-codemirror-number: 255,83,112; | |
| --codemirror-def: #82AAFF; | |
| --rgb-codemirror-def: 130,170,255; | |
| --codemirror-string: #C3E88D; | |
| --rgb-codemirror-string: 195,232,141; | |
| --codemirror-string-2: #f07178; | |
| --rgb-codemirror-string-2: 240,113,120; | |
| --codemirror-comment: #545454; | |
| --rgb-codemirror-comment: 84,84,84; | |
| --codemirror-tag: #FF5370; | |
| --rgb-codemirror-tag: 255,83,112; | |
| --codemirror-meta: #FFCB6B; | |
| --rgb-codemirror-meta: 255,203,107; | |
| --codemirror-attribute: #C792EA; | |
| --rgb-codemirror-attribute: 199,146,234; | |
| --codemirror-property: #C792EA; | |
| --rgb-codemirror-property: 199,146,234; | |
| --codemirror-qualifier: #DECB6B; | |
| --rgb-codemirror-qualifier: 222,203,107; | |
| --codemirror-type: #DECB6B; | |
| --rgb-codemirror-type: 222,203,107; | |
| --energy-grid-return-color: #a280db; | |
| --rgb-energy-grid-return-color: 162,128,219; | |
| --map-filter: invert(.9) hue-rotate(170deg) brightness(1.5) contrast(1.2) saturate(.3); | |
| --disabled-color: #464646; | |
| --rgb-disabled-color: 70,70,70; | |
| `); | |
| } | |
| } | |
| // Initial setup | |
| setHtmlAttributes(isDarkMode()); | |
| // Update every minute | |
| setInterval(() => { | |
| setHtmlAttributes(isDarkMode()); | |
| }, 60000); | |
| })(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment