diff --git a/LICENSE b/LICENSE
index ca9c873a..7aad90b3 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,21 +1,21 @@
-MIT License
-
-Copyright (c) 2019 GilbN
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+MIT License
+
+Copyright (c) 2019 GilbN
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/index.html b/index.html
index eca056ad..f1e20abf 100644
--- a/index.html
+++ b/index.html
@@ -1,451 +1,556 @@
-
-
-
-
-
-
-
-
- theme.park
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Over 45 themed apps
-
-
theme.park contains 47 themed applications, with css addons on certain themes.
-
Installation methods include custom docker mods
- for linuxserver.io containers,
-
custom scripts for select Hotio
- containers
- and multiple examples of subfiltering using webservers like Nginx and Apache
-
Get Started!
-
-
-
-
-
-
-
-
-
-
How to get started
-
-
-
-
-
-
Theme Docs
-
Head over to the documentation page for more information on each
- theme!
-
-
-
-
-
-
Find us on Github
-
Having issues with a theme? Let us know on Github!
-
-
-
-
-
-
Discord Community
-
Need live support? Head over to our Discord server!
-
-
-
-
-
-
Made with Love
-
Is it really open source if it's not made with love?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+ theme.park
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Over 40 themed applications!
+
+
theme.park contains 45 themed applications, with css addons on certain themes.
+
Installation methods include custom docker mods
+ for linuxserver.io containers,
+
custom scripts for select Hotio
+ containers
+ and multiple examples of subfiltering using webservers like Nginx and Apache
+
Choose between 9 different
+ styles! With the possibility to easily create your own themes using the defined variables .
+
Get Started!
+
+
+
+
+
+
+
+
+
+
How to get started
+
+
+
+
+
+
Theme Docs
+
Head over to the documentation page for more information on each
+ theme!
+
+
+
+
+
+
Find us on Github
+
Having issues with a theme? Let us know on Github!
+
+
+
+
+
+
Discord Community
+
Need live support? Head over to our Discord server!
+
+
+
+
+
+
+
Got a good color scheme you'd like to see added? PR it!
+
+
+
+
+
+
Made with Love
+
Is it really open source if it's not made with love?
+
+
+
+
+
+
+
+
+
Available theme options
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/themes.json b/themes.json
new file mode 100644
index 00000000..b2adb9e8
--- /dev/null
+++ b/themes.json
@@ -0,0 +1,402 @@
+{
+ "applications": {
+ "moviematch": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/moviematch/moviematch-base.css?sha=ce16cf06ce7007810a4077316303abbb790c3c55",
+ "addons": {}
+ },
+ "lazylibrarian": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/lazylibrarian/lazylibrarian-base.css?sha=addaa5fd6fce97b0fb8729480a3897674aa73f7a",
+ "addons": {}
+ },
+ "logarr": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/logarr/logarr-base.css?sha=8adf9708cc47be777c3d83754c2a9c0866800e26",
+ "addons": {}
+ },
+ "uptime-kuma": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/uptime-kuma/uptime-kuma-base.css?sha=bcf38b9b623836dce7277446a02cbb40cd670a55",
+ "addons": {}
+ },
+ "prowlarr": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/prowlarr/prowlarr-base.css?sha=bcd4651e697f670e336654dfbe1289a5de29f942",
+ "addons": {
+ "prowlarr-darker": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/prowlarr/prowlarr-darker/prowlarr-darker.css?sha=5b36960c9c385ae5f40b22919af1ad93d581afdc"
+ }
+ },
+ "webtools": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/webtools/webtools-base.css?sha=2f9297f922e16d469f4077e0e4f687046bec8168",
+ "addons": {}
+ },
+ "bitwarden": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/bitwarden/bitwarden-base.css?sha=3a40abf5a37026cf993526040ce09e7e27024050",
+ "addons": {}
+ },
+ "resilio-sync": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/resilio-sync/resilio-sync-base.css?sha=d86f22aef07e66485e297735e5943cfbb21382b1",
+ "addons": {}
+ },
+ "organizr": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/organizr/organizr-base.css?sha=5ddcc53663879d0efa099b392da9519a1c6af381",
+ "addons": {
+ "glass": {
+ "css": [
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/organizr/glass/glass-base.css?sha=056e0c4e097462b9d0ef236f40dde99453c332fa",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/organizr/glass/glass-login.css?sha=0200383709509139874da6540d8a7fc07030f172"
+ ]
+ }
+ }
+ },
+ "deluge": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/deluge/deluge-base.css?sha=89331d30f04a3988ebcb42d8404d26954778afe0",
+ "addons": {}
+ },
+ "flood": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/flood/flood-base.css?sha=c63f5330ca711d9769f51ce7259673f6a81f4d28",
+ "addons": {}
+ },
+ "rutorrent": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/rutorrent/rutorrent-base.css?sha=0305f651d4ca24f9aaa13d49689e9540e15d6c2f",
+ "addons": {}
+ },
+ "sonarr": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/sonarr/sonarr-base.css?sha=68c17914289e7ec4036fe94a40dbaea648c61a32",
+ "addons": {
+ "sonarr-darker": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/sonarr/sonarr-darker/sonarr-darker.css?sha=b1eb1ff0827684361ad596fb49baa6362cc23036",
+ "sonarr-4k-logo": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/sonarr/sonarr-4k-logo/sonarr-4k-logo.css?sha=0f0f47f170531ab1020c6211f4610e9f96c19395"
+ }
+ },
+ "ombi": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/ombi/ombi-base.css?sha=c6bd6a4e5989433989a43828da761e1dc829d77a",
+ "addons": {}
+ },
+ "netdata": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/netdata/netdata-base.css?sha=1946f5e6b338abda98a3617632f3f7bd14a8bae4",
+ "addons": {}
+ },
+ "vuetorrent": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/vuetorrent/vuetorrent-base.css?sha=15b70559a57ea5f334728b9b11425da26614814b",
+ "addons": {}
+ },
+ "unraid": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/unraid/unraid-base.css?sha=3d449282bc91581b13f580bde41fd50958b884af",
+ "addons": {
+ "login-page": {
+ "fallout": {
+ "css": [
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/fallout/dirty_terminal2.css?sha=09ab0765e89df3081abfa3229d725884cc44f7ef",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/fallout/custom.css?sha=a2f4b06d3816bf875f861b12d7f07252c2862d82",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/fallout/dirty_terminal.css?sha=1f318dd614edb2a2cd3f5fb1dbdb04cd412af9d1",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/fallout/fallout_video.css?sha=ad5db68decc504f5b920f19d65481322c97b4db3",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/fallout/terminal.css?sha=8d924fbaba139bef37c1156c3c5b32ba959bb3a5",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/fallout/fallout_base.css?sha=3a79171bff7252461e4ff5e76b507640bffcf5e1",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/fallout/terminal2.css?sha=0cdbad30781b4e56b3ed7db820a7c1e8d9da2627"
+ ]
+ },
+ "retro-terminal": {
+ "css": [
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/retro-terminal/white.css?sha=7616e7d06646356a0d99b3c7cd7db8fbd5cfe94d",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/retro-terminal/retro-terminal-base.css?sha=860f370f1b8e25b26ab9bc45a73632de58c799ce",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/retro-terminal/custom.css?sha=a2f4b06d3816bf875f861b12d7f07252c2862d82",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/retro-terminal/red.css?sha=7d250ac647db0ade37a389f59a295213d6d286b1",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/retro-terminal/green.css?sha=5fa51725eccdeb604387b5d9078325c7419b06ec",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/retro-terminal/amber.css?sha=ce3d2ec61e4d228dbf369eb9892fe4ba59814303",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/retro-terminal/blue.css?sha=11ba12dd12e7079ac6c48805db70dec0a8fe751e"
+ ]
+ },
+ "alien": {
+ "css": [
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/alien_base.css?sha=7e310e223692a1169d19ad0eec747488ece7ca4e",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/hallway4.css?sha=f747496cb1de0be4f39710bb1ee245602d6446a4",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/nightmare.css?sha=a75b65cad0455b260b1e6209b23ffc2389615b2a",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/hallway.css?sha=a0724cde5e5afaddb956eba76523dccef9515f91",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/hallway3.css?sha=85719c35385fb0589d5a18a86b6c519cbaf1f220",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/isolation_video.css?sha=7f1f89ab6d60182910b4ecf5b162057742f2b5a0",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/hallway2.css?sha=38ec4a1aa6c275d67c0c1ce35d79ca52027eb545",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/isolation.css?sha=0417009581d1933ada92ba746db761f9496d8774",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/custom.css?sha=a2f4b06d3816bf875f861b12d7f07252c2862d82",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/scanner.css?sha=73f97cb8aac3a4f3c0894e404ce7c9ef7b0c17b8"
+ ]
+ }
+ }
+ }
+ },
+ "xbackbone": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/xbackbone/xbackbone-base.css?sha=bd6ab5680a088afc78747b7e90323daac96986a1",
+ "addons": {}
+ },
+ "duplicacy": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/duplicacy/duplicacy-base.css?sha=00a671f67fde4f1f50308c283dbb29ff7c67965b",
+ "addons": {}
+ },
+ "petio": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/petio/petio-base.css?sha=98fe48edde91b9f8714918d9f6f63ea3c148dc49",
+ "addons": {}
+ },
+ "gaps": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/gaps/gaps-base.css?sha=a7bd7773f6be5ba45f092b3a8e2bc3da809359b3",
+ "addons": {}
+ },
+ "calibreweb": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/calibreweb/calibreweb-base.css?sha=1a2ed7e841069a1fa84616fb2aa66822a9f322f2",
+ "addons": {}
+ },
+ "lidarr": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/lidarr/lidarr-base.css?sha=7b465f6ce5761682d5d70b6a3048cf612fb65b03",
+ "addons": {
+ "lidarr-darker": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/lidarr/lidarr-darker/lidarr-darker.css?sha=fc479d221c05b5232d720f1c32d9cb1717f7b60b"
+ }
+ },
+ "gitea": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/gitea/gitea-base.css?sha=b333aea4e550afb6ba1532f26d3fa26edd0116d4",
+ "addons": {}
+ },
+ "plpp": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/plpp/plpp-base.css?sha=eb81cc7a36197d253ac833b9c544a87ff7e50baf",
+ "addons": {}
+ },
+ "librespeed": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/librespeed/librespeed-base.css?sha=880784b97872cf34ceb2689ec8e3d2534908c4fd",
+ "addons": {}
+ },
+ "nzbget": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/nzbget/nzbget-base.css?sha=ad3517abd49ab7313d754a77f2a61162f2872bf7",
+ "addons": {}
+ },
+ "tautulli": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/tautulli/tautulli-base.css?sha=00901e8d86a6bc1e3f5348bba0167af2c412603d",
+ "addons": {}
+ },
+ "grafana": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/grafana/grafana-base.css?sha=337e80575b9634e3058de8eaf6367816b7827fa5",
+ "addons": {}
+ },
+ "filebrowser": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/filebrowser/filebrowser-base.css?sha=a4dd3a49bb749bd819e8bdc2a3f202a121626cb0",
+ "addons": {}
+ },
+ "transmission": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/transmission/transmission-base.css?sha=988de2341b35e9830e0c32e3633b37a89b63d538",
+ "addons": {}
+ },
+ "thelounge": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/thelounge/thelounge-base.css?sha=efb54f17c4d381e7566f5b44017b8e4eb17754a8",
+ "addons": {}
+ },
+ "emby": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/emby/emby-base.css?sha=f41f2a0ee94c353ae470912e4af4b599434293c1",
+ "addons": {}
+ },
+ "bazarr": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/bazarr/bazarr-base.css?sha=b5b5ad3a8ed18b2fa6c0cea8fc46d6dd75d8bed9",
+ "addons": {
+ "bazarr-darker": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/bazarr/bazarr-darker/bazarr-darker.css?sha=29ece53bbee1995e502f54eda3bfb166448918bd",
+ "bazarr-4k-logo": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/bazarr/bazarr-4k-logo/bazarr-4k-logo.css?sha=81c8e54d0ba80c741f0f3168892c5fd8111e9bbb"
+ }
+ },
+ "plex": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/plex/plex-base.css?sha=54866b7b853135e6762653b60f93f519289345d2",
+ "addons": {
+ "overseerr-side-menu": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/plex/overseerr-side-menu/overseerr-side-menu.css?sha=b14fcec4d4226f766e3f3931b073b4b45ea416ff",
+ "plex-alt-logo": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/plex/plex-alt-logo/plex-alt-logo.css?sha=3e9bc7c76e836f8eb335431058241fe49906aa8f"
+ }
+ },
+ "monitorr": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/monitorr/monitorr-base.css?sha=04fe97f2fb536ded9c23dbc52813f74f9ed4e5b2",
+ "addons": {}
+ },
+ "jackett": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/jackett/jackett-base.css?sha=da57858a0806974e652a41ad730d0d153575d75c",
+ "addons": {}
+ },
+ "guacamole": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/guacamole/guacamole-base.css?sha=dbcdb8516d0c245edc0a8dff22e763ae90f0b16c",
+ "addons": {}
+ },
+ "pihole": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/pihole/pihole-base.css?sha=1d5290da2a5cf98fe5b63da558336036883775f7",
+ "addons": {}
+ },
+ "readarr": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/readarr/readarr-base.css?sha=cbdaeb841bc34531698f30739d6b32f98029cb99",
+ "addons": {
+ "readarr-alt-logo": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/readarr/readarr-alt-logo/readarr-alt-logo.css?sha=ca63018567194349619240a1257fcccd52fa4827",
+ "readarr-darker": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/readarr/readarr-darker/readarr-darker.css?sha=415a258cc9d1e40bf094f6f20350225c06120825"
+ }
+ },
+ "requestrr": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/requestrr/requestrr-base.css?sha=06aac76f7132b12eeb8ae6ec0ed38aece480791d",
+ "addons": {}
+ },
+ "dozzle": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/dozzle/dozzle-base.css?sha=c109aa34f0087e46b115d5ad0f80cbabca231c95",
+ "addons": {}
+ },
+ "jellyfin": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/jellyfin/jellyfin-base.css?sha=d2cbca28a9cd542f40dace2cf5eacc58b4b77479",
+ "addons": {}
+ },
+ "portainer": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/portainer/portainer-base.css?sha=5e6a400db0677dff26a75f2d4c55136c746e441a",
+ "addons": {}
+ },
+ "qbittorrent": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/qbittorrent/qbittorrent-base.css?sha=5b7b5aa50c4474d74128694512a38a8aa054c610",
+ "addons": {}
+ },
+ "sabnzbd": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/sabnzbd/sabnzbd-base.css?sha=82b95d7f894b86088ae69f47ca9253b447d155ef",
+ "addons": {}
+ },
+ "adguard": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/adguard/adguard-base.css?sha=179fda81ddf0007fe063e4324a3e314de7551c29",
+ "addons": {}
+ },
+ "nzbhydra2": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/nzbhydra2/nzbhydra2-base.css?sha=a3129d59147064229dda312179908e6431b32620",
+ "addons": {}
+ },
+ "kitana": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/kitana/kitana-base.css?sha=08b2376a93e373c37bbc77c974f8881bad762a9d",
+ "addons": {}
+ },
+ "synclounge": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/synclounge/synclounge-base.css?sha=14434e2cb3dfeb726226a5a8c2d2adf81e7bbd43",
+ "addons": {}
+ },
+ "radarr": {
+ "base_css": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/themes/radarr/radarr-base.css?sha=93373eb0c5cd67fbe7f601d6c5e0dcc4d37b2b91",
+ "addons": {
+ "radarr-4k-logo": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/radarr/radarr-4k-logo/radarr-4k-logo.css?sha=bedc13f37e392d0b17a4443c88a64ca76dff9b1a",
+ "radarr-darker": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/radarr/radarr-darker/radarr-darker.css?sha=317432984f97518011463ef62af84b04420e524d"
+ }
+ }
+ },
+ "addons": {
+ "prowlarr": {
+ "prowlarr-darker": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/prowlarr/prowlarr-darker/prowlarr-darker.css?sha=5b36960c9c385ae5f40b22919af1ad93d581afdc"
+ },
+ "organizr": {
+ "glass": {
+ "css": [
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/organizr/glass/glass-base.css?sha=056e0c4e097462b9d0ef236f40dde99453c332fa",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/organizr/glass/glass-login.css?sha=0200383709509139874da6540d8a7fc07030f172"
+ ]
+ }
+ },
+ "sonarr": {
+ "sonarr-darker": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/sonarr/sonarr-darker/sonarr-darker.css?sha=b1eb1ff0827684361ad596fb49baa6362cc23036",
+ "sonarr-4k-logo": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/sonarr/sonarr-4k-logo/sonarr-4k-logo.css?sha=0f0f47f170531ab1020c6211f4610e9f96c19395"
+ },
+ "unraid": {
+ "login-page": {
+ "fallout": {
+ "css": [
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/fallout/dirty_terminal2.css?sha=09ab0765e89df3081abfa3229d725884cc44f7ef",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/fallout/custom.css?sha=a2f4b06d3816bf875f861b12d7f07252c2862d82",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/fallout/dirty_terminal.css?sha=1f318dd614edb2a2cd3f5fb1dbdb04cd412af9d1",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/fallout/fallout_video.css?sha=ad5db68decc504f5b920f19d65481322c97b4db3",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/fallout/terminal.css?sha=8d924fbaba139bef37c1156c3c5b32ba959bb3a5",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/fallout/fallout_base.css?sha=3a79171bff7252461e4ff5e76b507640bffcf5e1",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/fallout/terminal2.css?sha=0cdbad30781b4e56b3ed7db820a7c1e8d9da2627"
+ ]
+ },
+ "retro-terminal": {
+ "css": [
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/retro-terminal/white.css?sha=7616e7d06646356a0d99b3c7cd7db8fbd5cfe94d",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/retro-terminal/retro-terminal-base.css?sha=860f370f1b8e25b26ab9bc45a73632de58c799ce",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/retro-terminal/custom.css?sha=a2f4b06d3816bf875f861b12d7f07252c2862d82",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/retro-terminal/red.css?sha=7d250ac647db0ade37a389f59a295213d6d286b1",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/retro-terminal/green.css?sha=5fa51725eccdeb604387b5d9078325c7419b06ec",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/retro-terminal/amber.css?sha=ce3d2ec61e4d228dbf369eb9892fe4ba59814303",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/retro-terminal/blue.css?sha=11ba12dd12e7079ac6c48805db70dec0a8fe751e"
+ ]
+ },
+ "alien": {
+ "css": [
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/alien_base.css?sha=7e310e223692a1169d19ad0eec747488ece7ca4e",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/hallway4.css?sha=f747496cb1de0be4f39710bb1ee245602d6446a4",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/nightmare.css?sha=a75b65cad0455b260b1e6209b23ffc2389615b2a",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/hallway.css?sha=a0724cde5e5afaddb956eba76523dccef9515f91",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/hallway3.css?sha=85719c35385fb0589d5a18a86b6c519cbaf1f220",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/isolation_video.css?sha=7f1f89ab6d60182910b4ecf5b162057742f2b5a0",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/hallway2.css?sha=38ec4a1aa6c275d67c0c1ce35d79ca52027eb545",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/isolation.css?sha=0417009581d1933ada92ba746db761f9496d8774",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/custom.css?sha=a2f4b06d3816bf875f861b12d7f07252c2862d82",
+ "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/unraid/login-page/alien/scanner.css?sha=73f97cb8aac3a4f3c0894e404ce7c9ef7b0c17b8"
+ ]
+ }
+ }
+ },
+ "lidarr": {
+ "lidarr-darker": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/lidarr/lidarr-darker/lidarr-darker.css?sha=fc479d221c05b5232d720f1c32d9cb1717f7b60b"
+ },
+ "bazarr": {
+ "bazarr-darker": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/bazarr/bazarr-darker/bazarr-darker.css?sha=29ece53bbee1995e502f54eda3bfb166448918bd",
+ "bazarr-4k-logo": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/bazarr/bazarr-4k-logo/bazarr-4k-logo.css?sha=81c8e54d0ba80c741f0f3168892c5fd8111e9bbb"
+ },
+ "plex": {
+ "overseerr-side-menu": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/plex/overseerr-side-menu/overseerr-side-menu.css?sha=b14fcec4d4226f766e3f3931b073b4b45ea416ff",
+ "plex-alt-logo": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/plex/plex-alt-logo/plex-alt-logo.css?sha=3e9bc7c76e836f8eb335431058241fe49906aa8f"
+ },
+ "readarr": {
+ "readarr-alt-logo": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/readarr/readarr-alt-logo/readarr-alt-logo.css?sha=ca63018567194349619240a1257fcccd52fa4827",
+ "readarr-darker": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/readarr/readarr-darker/readarr-darker.css?sha=415a258cc9d1e40bf094f6f20350225c06120825"
+ },
+ "radarr": {
+ "radarr-4k-logo": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/radarr/radarr-4k-logo/radarr-4k-logo.css?sha=bedc13f37e392d0b17a4443c88a64ca76dff9b1a",
+ "radarr-darker": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/addons/radarr/radarr-darker/radarr-darker.css?sha=317432984f97518011463ef62af84b04420e524d"
+ }
+ },
+ "themes": {
+ "Soul": {
+ "url": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/variables/soul.css?sha=1ce095e4b03920af4bbd70b6fa8776614b3536db"
+ },
+ "Overseerr": {
+ "url": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/variables/overseerr.css?sha=7e3a8e3ca21dd82641113cf53f071a89252c7235"
+ },
+ "Dark": {
+ "url": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/variables/dark.css?sha=dc21605e303d094fed0564a15fb983d81bcd33dd"
+ },
+ "Hotpink": {
+ "url": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/variables/hotpink.css?sha=55999afb133b62cdc067c1ce91b6dc9bd9b10102"
+ },
+ "Mind": {
+ "url": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/variables/mind.css?sha=7e39faa6f0b23f9be3e920a8edffcf600e5e555c"
+ },
+ "Space-gray": {
+ "url": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/variables/space-gray.css?sha=566e5616a8e48be2d0670d3f4d1ce106d2616ea2"
+ },
+ "Hotline": {
+ "url": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/variables/hotline.css?sha=e027feaeea0f623144af4c45b61e332a0757f5fb"
+ },
+ "Space": {
+ "url": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/variables/space.css?sha=cbd0b8beca2a4afe74d1daf4ade332d3f842ee96"
+ },
+ "Organizr-dark": {
+ "url": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/variables/organizr-dark.css?sha=6d9165e0b0208ccabd404bded0e5570c7cf129e1"
+ },
+ "Power": {
+ "url": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/variables/power.css?sha=d1be419eb6a4ae18102794ea0445f89eb2bd3734"
+ },
+ "Dracula": {
+ "url": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/variables/dracula.css?sha=5abf85508d87243007cf5f4fda34a60340583466"
+ },
+ "Plex": {
+ "url": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/variables/plex.css?sha=54a3677e798eb4d7fe331fd0887894b9b19e8978"
+ },
+ "Aquamarine": {
+ "url": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/variables/aquamarine.css?sha=5cdf3f13a57669f3732b64a7573580bcaa9ac6fc"
+ },
+ "Reality": {
+ "url": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/variables/reality.css?sha=2a5c00f303bdc8ec33f9c0f250bd03779257e504"
+ },
+ "Onedark": {
+ "url": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/variables/onedark.css?sha=cbccbf4366ab59bd2b9253c221b1f093c2e85118"
+ },
+ "Hotline-old": {
+ "url": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/variables/hotline-old.css?sha=73fce8f3f316c64b864e8b0502de0005f3883df4"
+ },
+ "Time": {
+ "url": "https://htpc.deathbybandaid.net/assets/theme.park/CSS/variables/time.css?sha=d7dd3e5ff6601ac1325218a24dc0f49944aa9a61"
+ }
+ }
+}
\ No newline at end of file
diff --git a/themes.py b/themes.py
new file mode 100644
index 00000000..32d4a207
--- /dev/null
+++ b/themes.py
@@ -0,0 +1,108 @@
+from os import listdir
+from os.path import isdir, isfile, join
+from json import dump, dumps, loads
+import subprocess
+
+
+def get_shas(output):
+ """Returns a dict of CSS files and SHAs"""
+ output_lines = output.splitlines()
+ sha_dict = {}
+ for line in output_lines:
+ line = line.decode('utf-8').replace("\t", "").split(" ")
+ sha = line[1]
+ css_file = [file for file in line[2].split("/") if "css" in file][0]
+ sha_dict.update({css_file: sha})
+ return(sha_dict)
+
+
+def create_addons_json():
+ addon_shas = subprocess.check_output(
+ ["git", "ls-files", "-s", "./CSS/addons/*.css"])
+ SHAS = get_shas(addon_shas)
+ ADDONS = {"addons": {}}
+ addon_root = './CSS/addons'
+ addon_folders = [name for name in listdir(
+ addon_root) if isdir(join(addon_root, name))]
+ for app in addon_folders:
+ app_addons = [addon for addon in listdir(f"{addon_root}/{app}")]
+ ADDONS["addons"].update({
+ app: {
+ addon: {} for addon in app_addons
+ }
+ })
+ for addon in app_addons:
+ files = [file for file in listdir(
+ f"{addon_root}/{app}/{addon}") if isfile(join(f"{addon_root}/{app}/{addon}", file))]
+ if len([f for f in files if f.endswith('.css')]) > 1:
+ ADDONS["addons"][app][addon].update({
+ "css": [f"https://{DOMAIN}/CSS/addons/{app}/{addon}/{file}?sha={SHAS.get(file)}" for file in files if file.split(".")[1] == "css"]
+ }
+ )
+ else:
+ ADDONS["addons"][app].update({
+ addon: f"https://{DOMAIN}/CSS/addons/{app}/{addon}/{file}?sha={SHAS.get(file)}" for file in files if file.split(".")[1] == "css"
+ }
+ )
+ extra_dirs = [dir for dir in listdir(
+ f"{addon_root}/{app}/{addon}") if isdir(join(f"{addon_root}/{app}/{addon}", dir))]
+ if extra_dirs:
+ for dir in extra_dirs:
+ extra_dir_files = [file for file in listdir(
+ f"{addon_root}/{app}/{addon}/{dir}") if isfile(join(f"{addon_root}/{app}/{addon}/{dir}", file))]
+ ADDONS["addons"][app][addon].update({
+ dir: {
+ "css": [f"https://{DOMAIN}/CSS/addons/{app}/{addon}/{dir}/{extra_file}?sha={SHAS.get(extra_file)}" for extra_file in extra_dir_files if extra_file.split(".")[1] == "css"]
+ }
+ }
+ )
+ return dumps(ADDONS)
+
+
+def create_json(app_folders: list = None, themes: list = None, no_sub_folders=False):
+ if no_sub_folders:
+ THEMES = {}
+ theme_shas = subprocess.check_output(
+ ["git", "ls-files", "-s", "./CSS/variables/*.css"])
+ SHAS = get_shas(theme_shas)
+ for theme in themes:
+ THEMES.update({
+ "themes": {
+ theme.split(".")[0].capitalize(): {
+ "url": f"https://{DOMAIN}/CSS/variables/{theme}?sha={SHAS.get(theme)}"
+ }for theme in themes
+ }
+ })
+ return dumps(THEMES)
+ else:
+ ADDONS = loads(create_addons_json())
+ APPS = {"applications": {}}
+ app_shas = subprocess.check_output(
+ ["git", "ls-files", "-s", "./CSS/themes/*base.css"])
+ SHAS = get_shas(app_shas)
+ for app in app_folders:
+ APPS.update({
+ "applications": {
+ app: {
+ "base_css": f"https://{DOMAIN}/CSS/themes/{app}/{app}-base.css?sha={SHAS.get(f'{app}-base.css')}",
+ "addons": ADDONS["addons"][app] if app in ADDONS["addons"] else {}
+ } for app in app_folders
+ }
+ }
+ )
+ THEMES = loads(create_json(themes=themes, no_sub_folders=True))
+ APPS.update(ADDONS)
+ APPS.update(THEMES)
+ return dumps(APPS)
+
+
+if __name__ == "__main__":
+ app_folders = [name for name in listdir(
+ './CSS/themes') if isdir(join('./CSS/themes', name))]
+ themes = [name for name in listdir(
+ './CSS/variables') if isfile(join('./CSS/variables', name))]
+ DOMAIN = open("CNAME", "rt", closefd=True).readline()
+ apps = loads(create_json(app_folders, themes))
+
+ with open("themes.json", "w") as outfile:
+ dump(apps, outfile, indent=2)