diff --git a/css/addons/prowlarr/prowlarr-text-logo/prowlarr-text-logo.css b/css/addons/prowlarr/prowlarr-text-logo/prowlarr-text-logo.css
new file mode 100644
index 00000000..1e9eeb84
--- /dev/null
+++ b/css/addons/prowlarr/prowlarr-text-logo/prowlarr-text-logo.css
@@ -0,0 +1,23 @@
+@media (min-width: 752px) {
+ [class*="PageHeader-logo-"] {
+ content: url("/theme.park/css/addons/prowlarr/prowlarr-text-logo/prowlarr-text-logo.png");
+ margin-left: 15px;
+ width: auto;
+ height: 30px;
+ }
+}
+
+[class*="LoadingPage-logoFull-"] {
+ content: url("/theme.park/css/addons/prowlarr/prowlarr-text-logo/prowlarr-text-logo.png");
+ margin-top: 50px;
+ margin-right: auto;
+ margin-left: auto;
+ width: auto;
+ height: 30px;
+ opacity: 1;
+}
+
+.panel-header > img.logo {
+ content: url("/theme.park/css/addons/prowlarr/prowlarr-text-logo/prowlarr-text-logo.png");
+ width: auto;
+}
diff --git a/css/addons/prowlarr/prowlarr-text-logo/prowlarr-text-logo.png b/css/addons/prowlarr/prowlarr-text-logo/prowlarr-text-logo.png
new file mode 100644
index 00000000..5b73c8f9
Binary files /dev/null and b/css/addons/prowlarr/prowlarr-text-logo/prowlarr-text-logo.png differ
diff --git a/css/addons/prowlarr/prowlarr-text-logo/prowlarr-text-logo.psd b/css/addons/prowlarr/prowlarr-text-logo/prowlarr-text-logo.psd
new file mode 100644
index 00000000..63523c61
Binary files /dev/null and b/css/addons/prowlarr/prowlarr-text-logo/prowlarr-text-logo.psd differ
diff --git a/css/addons/radarr/radarr-4k-favicon/android-chrome-192x192.png b/css/addons/radarr/radarr-4k-favicon/android-chrome-192x192.png
new file mode 100644
index 00000000..bc718769
Binary files /dev/null and b/css/addons/radarr/radarr-4k-favicon/android-chrome-192x192.png differ
diff --git a/css/addons/radarr/radarr-4k-favicon/android-chrome-512x512.png b/css/addons/radarr/radarr-4k-favicon/android-chrome-512x512.png
new file mode 100644
index 00000000..414ab5f5
Binary files /dev/null and b/css/addons/radarr/radarr-4k-favicon/android-chrome-512x512.png differ
diff --git a/css/addons/radarr/radarr-4k-favicon/apple-touch-icon.png b/css/addons/radarr/radarr-4k-favicon/apple-touch-icon.png
new file mode 100644
index 00000000..18c77c2e
Binary files /dev/null and b/css/addons/radarr/radarr-4k-favicon/apple-touch-icon.png differ
diff --git a/css/addons/radarr/radarr-4k-favicon/browserconfig.xml b/css/addons/radarr/radarr-4k-favicon/browserconfig.xml
new file mode 100644
index 00000000..5811d97a
--- /dev/null
+++ b/css/addons/radarr/radarr-4k-favicon/browserconfig.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+ #da532c
+
+
+
diff --git a/css/addons/radarr/radarr-4k-favicon/favicon-16x16.png b/css/addons/radarr/radarr-4k-favicon/favicon-16x16.png
new file mode 100644
index 00000000..233ece50
Binary files /dev/null and b/css/addons/radarr/radarr-4k-favicon/favicon-16x16.png differ
diff --git a/css/addons/radarr/radarr-4k-favicon/favicon-32x32.png b/css/addons/radarr/radarr-4k-favicon/favicon-32x32.png
new file mode 100644
index 00000000..f5f256d9
Binary files /dev/null and b/css/addons/radarr/radarr-4k-favicon/favicon-32x32.png differ
diff --git a/css/addons/radarr/radarr-4k-favicon/favicon.ico b/css/addons/radarr/radarr-4k-favicon/favicon.ico
new file mode 100644
index 00000000..5606461b
Binary files /dev/null and b/css/addons/radarr/radarr-4k-favicon/favicon.ico differ
diff --git a/css/addons/radarr/radarr-4k-favicon/mstile-144x144.png b/css/addons/radarr/radarr-4k-favicon/mstile-144x144.png
new file mode 100644
index 00000000..d5e57bd4
Binary files /dev/null and b/css/addons/radarr/radarr-4k-favicon/mstile-144x144.png differ
diff --git a/css/addons/radarr/radarr-4k-favicon/mstile-150x150.png b/css/addons/radarr/radarr-4k-favicon/mstile-150x150.png
new file mode 100644
index 00000000..d63f3fa6
Binary files /dev/null and b/css/addons/radarr/radarr-4k-favicon/mstile-150x150.png differ
diff --git a/css/addons/radarr/radarr-4k-favicon/mstile-310x150.png b/css/addons/radarr/radarr-4k-favicon/mstile-310x150.png
new file mode 100644
index 00000000..e62bede9
Binary files /dev/null and b/css/addons/radarr/radarr-4k-favicon/mstile-310x150.png differ
diff --git a/css/addons/radarr/radarr-4k-favicon/mstile-310x310.png b/css/addons/radarr/radarr-4k-favicon/mstile-310x310.png
new file mode 100644
index 00000000..6d6d80a9
Binary files /dev/null and b/css/addons/radarr/radarr-4k-favicon/mstile-310x310.png differ
diff --git a/css/addons/radarr/radarr-4k-favicon/mstile-70x70.png b/css/addons/radarr/radarr-4k-favicon/mstile-70x70.png
new file mode 100644
index 00000000..5d707017
Binary files /dev/null and b/css/addons/radarr/radarr-4k-favicon/mstile-70x70.png differ
diff --git a/css/addons/radarr/radarr-4k-favicon/safari-pinned-tab.svg b/css/addons/radarr/radarr-4k-favicon/safari-pinned-tab.svg
new file mode 100644
index 00000000..28fa53aa
--- /dev/null
+++ b/css/addons/radarr/radarr-4k-favicon/safari-pinned-tab.svg
@@ -0,0 +1,86 @@
+
+
+
diff --git a/css/addons/radarr/radarr-4k-favicon/site.webmanifest b/css/addons/radarr/radarr-4k-favicon/site.webmanifest
new file mode 100644
index 00000000..4271884c
--- /dev/null
+++ b/css/addons/radarr/radarr-4k-favicon/site.webmanifest
@@ -0,0 +1,18 @@
+{
+ "name": "",
+ "short_name": "",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff"
+}
diff --git a/css/addons/radarr/radarr-anime-favicon/android-chrome-192x192.png b/css/addons/radarr/radarr-anime-favicon/android-chrome-192x192.png
new file mode 100644
index 00000000..d0f11a2a
Binary files /dev/null and b/css/addons/radarr/radarr-anime-favicon/android-chrome-192x192.png differ
diff --git a/css/addons/radarr/radarr-anime-favicon/android-chrome-512x512.png b/css/addons/radarr/radarr-anime-favicon/android-chrome-512x512.png
new file mode 100644
index 00000000..e8137cd0
Binary files /dev/null and b/css/addons/radarr/radarr-anime-favicon/android-chrome-512x512.png differ
diff --git a/css/addons/radarr/radarr-anime-favicon/apple-touch-icon.png b/css/addons/radarr/radarr-anime-favicon/apple-touch-icon.png
new file mode 100644
index 00000000..c0e4ff36
Binary files /dev/null and b/css/addons/radarr/radarr-anime-favicon/apple-touch-icon.png differ
diff --git a/css/addons/radarr/radarr-anime-favicon/browserconfig.xml b/css/addons/radarr/radarr-anime-favicon/browserconfig.xml
new file mode 100644
index 00000000..5811d97a
--- /dev/null
+++ b/css/addons/radarr/radarr-anime-favicon/browserconfig.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+ #da532c
+
+
+
diff --git a/css/addons/radarr/radarr-anime-favicon/favicon-16x16.png b/css/addons/radarr/radarr-anime-favicon/favicon-16x16.png
new file mode 100644
index 00000000..0a0c4d6d
Binary files /dev/null and b/css/addons/radarr/radarr-anime-favicon/favicon-16x16.png differ
diff --git a/css/addons/radarr/radarr-anime-favicon/favicon-32x32.png b/css/addons/radarr/radarr-anime-favicon/favicon-32x32.png
new file mode 100644
index 00000000..957ef206
Binary files /dev/null and b/css/addons/radarr/radarr-anime-favicon/favicon-32x32.png differ
diff --git a/css/addons/radarr/radarr-anime-favicon/favicon.ico b/css/addons/radarr/radarr-anime-favicon/favicon.ico
new file mode 100644
index 00000000..e147a59d
Binary files /dev/null and b/css/addons/radarr/radarr-anime-favicon/favicon.ico differ
diff --git a/css/addons/radarr/radarr-anime-favicon/mstile-144x144.png b/css/addons/radarr/radarr-anime-favicon/mstile-144x144.png
new file mode 100644
index 00000000..4e7d29b7
Binary files /dev/null and b/css/addons/radarr/radarr-anime-favicon/mstile-144x144.png differ
diff --git a/css/addons/radarr/radarr-anime-favicon/mstile-150x150.png b/css/addons/radarr/radarr-anime-favicon/mstile-150x150.png
new file mode 100644
index 00000000..61486140
Binary files /dev/null and b/css/addons/radarr/radarr-anime-favicon/mstile-150x150.png differ
diff --git a/css/addons/radarr/radarr-anime-favicon/mstile-310x150.png b/css/addons/radarr/radarr-anime-favicon/mstile-310x150.png
new file mode 100644
index 00000000..84f2d8df
Binary files /dev/null and b/css/addons/radarr/radarr-anime-favicon/mstile-310x150.png differ
diff --git a/css/addons/radarr/radarr-anime-favicon/mstile-310x310.png b/css/addons/radarr/radarr-anime-favicon/mstile-310x310.png
new file mode 100644
index 00000000..2a95d0c1
Binary files /dev/null and b/css/addons/radarr/radarr-anime-favicon/mstile-310x310.png differ
diff --git a/css/addons/radarr/radarr-anime-favicon/mstile-70x70.png b/css/addons/radarr/radarr-anime-favicon/mstile-70x70.png
new file mode 100644
index 00000000..2ad426ac
Binary files /dev/null and b/css/addons/radarr/radarr-anime-favicon/mstile-70x70.png differ
diff --git a/css/addons/radarr/radarr-anime-favicon/safari-pinned-tab.svg b/css/addons/radarr/radarr-anime-favicon/safari-pinned-tab.svg
new file mode 100644
index 00000000..54bb9f87
--- /dev/null
+++ b/css/addons/radarr/radarr-anime-favicon/safari-pinned-tab.svg
@@ -0,0 +1,126 @@
+
+
+
diff --git a/css/addons/radarr/radarr-anime-favicon/site.webmanifest b/css/addons/radarr/radarr-anime-favicon/site.webmanifest
new file mode 100644
index 00000000..4271884c
--- /dev/null
+++ b/css/addons/radarr/radarr-anime-favicon/site.webmanifest
@@ -0,0 +1,18 @@
+{
+ "name": "",
+ "short_name": "",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff"
+}
diff --git a/css/addons/radarr/radarr-anime-logo/radarr-anime-logo.css b/css/addons/radarr/radarr-anime-logo/radarr-anime-logo.css
new file mode 100644
index 00000000..33e72fbe
--- /dev/null
+++ b/css/addons/radarr/radarr-anime-logo/radarr-anime-logo.css
@@ -0,0 +1,32 @@
+@media (min-width: 752px) {
+ [class*="PageHeader-logoFull-"] {
+ content: url("/theme.park/css/addons/radarr/radarr-anime-logo/radarr-anime.png");
+ margin-left: 15px;
+ width: 120px;
+ height: 40px;
+ }
+}
+
+@media only screen and (max-width: 768px) {
+ [class*="PageHeader-logo-"] {
+ width: 32px;
+ height: 32px;
+ margin-left: 0px;
+ content: url("/theme.park/css/addons/radarr/radarr-anime-logo/radarr-anime-mobile.png");
+ }
+}
+
+[class*="LoadingPage-logoFull-"] {
+ content: url("/theme.park/css/addons/radarr/radarr-anime-logo/radarr-anime.png");
+ margin-top: 50px;
+ margin-right: auto;
+ margin-left: auto;
+ width: 120px;
+ height: 40px;
+ opacity: 1;
+}
+
+.panel-header > img.logo {
+ content: url("/theme.park/css/addons/radarr/radarr-anime-logo/radarr-anime.png");
+ width: auto;
+}
\ No newline at end of file
diff --git a/css/addons/radarr/radarr-anime-logo/radarr-anime-mobile.png b/css/addons/radarr/radarr-anime-logo/radarr-anime-mobile.png
new file mode 100644
index 00000000..0b4d6e36
Binary files /dev/null and b/css/addons/radarr/radarr-anime-logo/radarr-anime-mobile.png differ
diff --git a/css/addons/radarr/radarr-anime-logo/radarr-anime.png b/css/addons/radarr/radarr-anime-logo/radarr-anime.png
new file mode 100644
index 00000000..f9c26a90
Binary files /dev/null and b/css/addons/radarr/radarr-anime-logo/radarr-anime.png differ
diff --git a/css/addons/radarr/radarr-logo.md b/css/addons/radarr/radarr-logo.md
new file mode 100644
index 00000000..38ec1151
--- /dev/null
+++ b/css/addons/radarr/radarr-logo.md
@@ -0,0 +1,49 @@
+# radarr-anime-logo
+
+I hope to find the .psd file used as the source, so I can upload it someday.
+
+2. [radarr-anime.png](radarr-anime-logo/radarr-anime.png) contains 900x292 `.png` file.
+
+ The version on a white background isn't great, but neither is the one for 4K.
+
+1. [radarr-anime-mobile.png](radarr-anime-logo/radarr-anime-mobile.png) contains 900x900 `.png` file.
+
+ Even here, the version on a white background isn't great, but mine is a bit better than the 4K one. 😅.
+
+
+Preview:
+
+
+
+ | radarr-4k-v3-logo |
+  |
+  |
+  |
+  |
+
+
+ | radarr-anime-logo |
+  |
+  |
+  |
+  |
+
+
+
+
+
+ | radarr-4K-logo |
+  |
+  |
+  |
+  |
+
+
+ | sonarr-anime-logo |
+  |
+  |
+  |
+  |
+
+
+
diff --git a/css/addons/readarr/readarr-alt-favicon/android-chrome-192x192.png b/css/addons/readarr/readarr-alt-favicon/android-chrome-192x192.png
new file mode 100644
index 00000000..baebe5b7
Binary files /dev/null and b/css/addons/readarr/readarr-alt-favicon/android-chrome-192x192.png differ
diff --git a/css/addons/readarr/readarr-alt-favicon/android-chrome-512x512.png b/css/addons/readarr/readarr-alt-favicon/android-chrome-512x512.png
new file mode 100644
index 00000000..ff6b443c
Binary files /dev/null and b/css/addons/readarr/readarr-alt-favicon/android-chrome-512x512.png differ
diff --git a/css/addons/readarr/readarr-alt-favicon/apple-touch-icon.png b/css/addons/readarr/readarr-alt-favicon/apple-touch-icon.png
new file mode 100644
index 00000000..141b558d
Binary files /dev/null and b/css/addons/readarr/readarr-alt-favicon/apple-touch-icon.png differ
diff --git a/css/addons/readarr/readarr-alt-favicon/browserconfig.xml b/css/addons/readarr/readarr-alt-favicon/browserconfig.xml
new file mode 100644
index 00000000..5811d97a
--- /dev/null
+++ b/css/addons/readarr/readarr-alt-favicon/browserconfig.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+ #da532c
+
+
+
diff --git a/css/addons/readarr/readarr-alt-favicon/favicon-16x16.png b/css/addons/readarr/readarr-alt-favicon/favicon-16x16.png
new file mode 100644
index 00000000..c06a5097
Binary files /dev/null and b/css/addons/readarr/readarr-alt-favicon/favicon-16x16.png differ
diff --git a/css/addons/readarr/readarr-alt-favicon/favicon-32x32.png b/css/addons/readarr/readarr-alt-favicon/favicon-32x32.png
new file mode 100644
index 00000000..e81c70a2
Binary files /dev/null and b/css/addons/readarr/readarr-alt-favicon/favicon-32x32.png differ
diff --git a/css/addons/readarr/readarr-alt-favicon/favicon.ico b/css/addons/readarr/readarr-alt-favicon/favicon.ico
new file mode 100644
index 00000000..5d33da71
Binary files /dev/null and b/css/addons/readarr/readarr-alt-favicon/favicon.ico differ
diff --git a/css/addons/readarr/readarr-alt-favicon/mstile-144x144.png b/css/addons/readarr/readarr-alt-favicon/mstile-144x144.png
new file mode 100644
index 00000000..ce659826
Binary files /dev/null and b/css/addons/readarr/readarr-alt-favicon/mstile-144x144.png differ
diff --git a/css/addons/readarr/readarr-alt-favicon/mstile-150x150.png b/css/addons/readarr/readarr-alt-favicon/mstile-150x150.png
new file mode 100644
index 00000000..cf012046
Binary files /dev/null and b/css/addons/readarr/readarr-alt-favicon/mstile-150x150.png differ
diff --git a/css/addons/readarr/readarr-alt-favicon/mstile-310x150.png b/css/addons/readarr/readarr-alt-favicon/mstile-310x150.png
new file mode 100644
index 00000000..a49a11c4
Binary files /dev/null and b/css/addons/readarr/readarr-alt-favicon/mstile-310x150.png differ
diff --git a/css/addons/readarr/readarr-alt-favicon/mstile-310x310.png b/css/addons/readarr/readarr-alt-favicon/mstile-310x310.png
new file mode 100644
index 00000000..d5f984fd
Binary files /dev/null and b/css/addons/readarr/readarr-alt-favicon/mstile-310x310.png differ
diff --git a/css/addons/readarr/readarr-alt-favicon/mstile-70x70.png b/css/addons/readarr/readarr-alt-favicon/mstile-70x70.png
new file mode 100644
index 00000000..7115f923
Binary files /dev/null and b/css/addons/readarr/readarr-alt-favicon/mstile-70x70.png differ
diff --git a/css/addons/readarr/readarr-alt-favicon/safari-pinned-tab.svg b/css/addons/readarr/readarr-alt-favicon/safari-pinned-tab.svg
new file mode 100644
index 00000000..b3a9b9ac
--- /dev/null
+++ b/css/addons/readarr/readarr-alt-favicon/safari-pinned-tab.svg
@@ -0,0 +1,72 @@
+
+
+
diff --git a/css/addons/readarr/readarr-alt-favicon/site.webmanifest b/css/addons/readarr/readarr-alt-favicon/site.webmanifest
new file mode 100644
index 00000000..4271884c
--- /dev/null
+++ b/css/addons/readarr/readarr-alt-favicon/site.webmanifest
@@ -0,0 +1,18 @@
+{
+ "name": "",
+ "short_name": "",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff"
+}
diff --git a/css/addons/readarr/readarr-text-logo.psd b/css/addons/readarr/readarr-text-logo.psd
new file mode 100644
index 00000000..76a9a8bb
Binary files /dev/null and b/css/addons/readarr/readarr-text-logo.psd differ
diff --git a/css/addons/readarr/readarr-text-logo/readarr-text-logo.css b/css/addons/readarr/readarr-text-logo/readarr-text-logo.css
new file mode 100644
index 00000000..1c416616
--- /dev/null
+++ b/css/addons/readarr/readarr-text-logo/readarr-text-logo.css
@@ -0,0 +1,24 @@
+@media (min-width: 752px) {
+ [class*="PageHeader-logo-"] {
+ content: url("/theme.park/css/addons/readarr/readarr-text-logo/readarr-text-logo.png");
+ margin-left: 15px;
+ width: auto;
+ height: 40px;
+ }
+}
+
+[class*="LoadingPage-logoFull-"] {
+ content: url("/theme.park/css/addons/readarr/readarr-text-logo/readarr-text-logo.png");
+ margin-top: 50px;
+ margin-right: auto;
+ margin-left: auto;
+ width: auto;
+ height: 40px;
+ opacity: 1;
+}
+
+.panel-header > img.logo {
+ content: url("/theme.park/css/addons/readarr/readarr-text-logo/readarr-text-logo.png");
+ width: auto;
+}
+
diff --git a/css/addons/readarr/readarr-text-logo/readarr-text-logo.png b/css/addons/readarr/readarr-text-logo/readarr-text-logo.png
new file mode 100644
index 00000000..7783d61a
Binary files /dev/null and b/css/addons/readarr/readarr-text-logo/readarr-text-logo.png differ
diff --git a/css/addons/sonarr/sonarr-4k-favicon/android-chrome-192x192.png b/css/addons/sonarr/sonarr-4k-favicon/android-chrome-192x192.png
new file mode 100644
index 00000000..ad91ac9a
Binary files /dev/null and b/css/addons/sonarr/sonarr-4k-favicon/android-chrome-192x192.png differ
diff --git a/css/addons/sonarr/sonarr-4k-favicon/android-chrome-512x512.png b/css/addons/sonarr/sonarr-4k-favicon/android-chrome-512x512.png
new file mode 100644
index 00000000..39dccbc6
Binary files /dev/null and b/css/addons/sonarr/sonarr-4k-favicon/android-chrome-512x512.png differ
diff --git a/css/addons/sonarr/sonarr-4k-favicon/apple-touch-icon.png b/css/addons/sonarr/sonarr-4k-favicon/apple-touch-icon.png
new file mode 100644
index 00000000..aa43c23d
Binary files /dev/null and b/css/addons/sonarr/sonarr-4k-favicon/apple-touch-icon.png differ
diff --git a/css/addons/sonarr/sonarr-4k-favicon/browserconfig.xml b/css/addons/sonarr/sonarr-4k-favicon/browserconfig.xml
new file mode 100644
index 00000000..5811d97a
--- /dev/null
+++ b/css/addons/sonarr/sonarr-4k-favicon/browserconfig.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+ #da532c
+
+
+
diff --git a/css/addons/sonarr/sonarr-4k-favicon/favicon-16x16.png b/css/addons/sonarr/sonarr-4k-favicon/favicon-16x16.png
new file mode 100644
index 00000000..afeff17e
Binary files /dev/null and b/css/addons/sonarr/sonarr-4k-favicon/favicon-16x16.png differ
diff --git a/css/addons/sonarr/sonarr-4k-favicon/favicon-32x32.png b/css/addons/sonarr/sonarr-4k-favicon/favicon-32x32.png
new file mode 100644
index 00000000..0a907aa4
Binary files /dev/null and b/css/addons/sonarr/sonarr-4k-favicon/favicon-32x32.png differ
diff --git a/css/addons/sonarr/sonarr-4k-favicon/favicon.ico b/css/addons/sonarr/sonarr-4k-favicon/favicon.ico
new file mode 100644
index 00000000..2146fd9e
Binary files /dev/null and b/css/addons/sonarr/sonarr-4k-favicon/favicon.ico differ
diff --git a/css/addons/sonarr/sonarr-4k-favicon/mstile-144x144.png b/css/addons/sonarr/sonarr-4k-favicon/mstile-144x144.png
new file mode 100644
index 00000000..6b556def
Binary files /dev/null and b/css/addons/sonarr/sonarr-4k-favicon/mstile-144x144.png differ
diff --git a/css/addons/sonarr/sonarr-4k-favicon/mstile-150x150.png b/css/addons/sonarr/sonarr-4k-favicon/mstile-150x150.png
new file mode 100644
index 00000000..ae1cb368
Binary files /dev/null and b/css/addons/sonarr/sonarr-4k-favicon/mstile-150x150.png differ
diff --git a/css/addons/sonarr/sonarr-4k-favicon/mstile-310x150.png b/css/addons/sonarr/sonarr-4k-favicon/mstile-310x150.png
new file mode 100644
index 00000000..95e69b49
Binary files /dev/null and b/css/addons/sonarr/sonarr-4k-favicon/mstile-310x150.png differ
diff --git a/css/addons/sonarr/sonarr-4k-favicon/mstile-310x310.png b/css/addons/sonarr/sonarr-4k-favicon/mstile-310x310.png
new file mode 100644
index 00000000..26cee9c0
Binary files /dev/null and b/css/addons/sonarr/sonarr-4k-favicon/mstile-310x310.png differ
diff --git a/css/addons/sonarr/sonarr-4k-favicon/mstile-70x70.png b/css/addons/sonarr/sonarr-4k-favicon/mstile-70x70.png
new file mode 100644
index 00000000..169003e5
Binary files /dev/null and b/css/addons/sonarr/sonarr-4k-favicon/mstile-70x70.png differ
diff --git a/css/addons/sonarr/sonarr-4k-favicon/safari-pinned-tab.svg b/css/addons/sonarr/sonarr-4k-favicon/safari-pinned-tab.svg
new file mode 100644
index 00000000..2ab11e0b
--- /dev/null
+++ b/css/addons/sonarr/sonarr-4k-favicon/safari-pinned-tab.svg
@@ -0,0 +1,76 @@
+
+
+
diff --git a/css/addons/sonarr/sonarr-4k-favicon/site.webmanifest b/css/addons/sonarr/sonarr-4k-favicon/site.webmanifest
new file mode 100644
index 00000000..4271884c
--- /dev/null
+++ b/css/addons/sonarr/sonarr-4k-favicon/site.webmanifest
@@ -0,0 +1,18 @@
+{
+ "name": "",
+ "short_name": "",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff"
+}
diff --git a/css/addons/sonarr/sonarr-anime-blue-favicon/android-chrome-192x192.png b/css/addons/sonarr/sonarr-anime-blue-favicon/android-chrome-192x192.png
new file mode 100644
index 00000000..034b9fe0
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-blue-favicon/android-chrome-192x192.png differ
diff --git a/css/addons/sonarr/sonarr-anime-blue-favicon/android-chrome-512x512.png b/css/addons/sonarr/sonarr-anime-blue-favicon/android-chrome-512x512.png
new file mode 100644
index 00000000..67c55f1c
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-blue-favicon/android-chrome-512x512.png differ
diff --git a/css/addons/sonarr/sonarr-anime-blue-favicon/apple-touch-icon.png b/css/addons/sonarr/sonarr-anime-blue-favicon/apple-touch-icon.png
new file mode 100644
index 00000000..e77a0e0d
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-blue-favicon/apple-touch-icon.png differ
diff --git a/css/addons/sonarr/sonarr-anime-blue-favicon/browserconfig.xml b/css/addons/sonarr/sonarr-anime-blue-favicon/browserconfig.xml
new file mode 100644
index 00000000..5811d97a
--- /dev/null
+++ b/css/addons/sonarr/sonarr-anime-blue-favicon/browserconfig.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+ #da532c
+
+
+
diff --git a/css/addons/sonarr/sonarr-anime-blue-favicon/favicon-16x16.png b/css/addons/sonarr/sonarr-anime-blue-favicon/favicon-16x16.png
new file mode 100644
index 00000000..22bea2fb
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-blue-favicon/favicon-16x16.png differ
diff --git a/css/addons/sonarr/sonarr-anime-blue-favicon/favicon-32x32.png b/css/addons/sonarr/sonarr-anime-blue-favicon/favicon-32x32.png
new file mode 100644
index 00000000..a2cd786a
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-blue-favicon/favicon-32x32.png differ
diff --git a/css/addons/sonarr/sonarr-anime-blue-favicon/favicon.ico b/css/addons/sonarr/sonarr-anime-blue-favicon/favicon.ico
new file mode 100644
index 00000000..f1ed35eb
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-blue-favicon/favicon.ico differ
diff --git a/css/addons/sonarr/sonarr-anime-blue-favicon/mstile-144x144.png b/css/addons/sonarr/sonarr-anime-blue-favicon/mstile-144x144.png
new file mode 100644
index 00000000..b61b1013
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-blue-favicon/mstile-144x144.png differ
diff --git a/css/addons/sonarr/sonarr-anime-blue-favicon/mstile-150x150.png b/css/addons/sonarr/sonarr-anime-blue-favicon/mstile-150x150.png
new file mode 100644
index 00000000..73eca21f
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-blue-favicon/mstile-150x150.png differ
diff --git a/css/addons/sonarr/sonarr-anime-blue-favicon/mstile-310x150.png b/css/addons/sonarr/sonarr-anime-blue-favicon/mstile-310x150.png
new file mode 100644
index 00000000..19e7ddf2
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-blue-favicon/mstile-310x150.png differ
diff --git a/css/addons/sonarr/sonarr-anime-blue-favicon/mstile-310x310.png b/css/addons/sonarr/sonarr-anime-blue-favicon/mstile-310x310.png
new file mode 100644
index 00000000..cda7e03c
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-blue-favicon/mstile-310x310.png differ
diff --git a/css/addons/sonarr/sonarr-anime-blue-favicon/mstile-70x70.png b/css/addons/sonarr/sonarr-anime-blue-favicon/mstile-70x70.png
new file mode 100644
index 00000000..29ec9f29
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-blue-favicon/mstile-70x70.png differ
diff --git a/css/addons/sonarr/sonarr-anime-blue-favicon/safari-pinned-tab.svg b/css/addons/sonarr/sonarr-anime-blue-favicon/safari-pinned-tab.svg
new file mode 100644
index 00000000..1f8b344e
--- /dev/null
+++ b/css/addons/sonarr/sonarr-anime-blue-favicon/safari-pinned-tab.svg
@@ -0,0 +1,135 @@
+
+
+
diff --git a/css/addons/sonarr/sonarr-anime-blue-favicon/site.webmanifest b/css/addons/sonarr/sonarr-anime-blue-favicon/site.webmanifest
new file mode 100644
index 00000000..4271884c
--- /dev/null
+++ b/css/addons/sonarr/sonarr-anime-blue-favicon/site.webmanifest
@@ -0,0 +1,18 @@
+{
+ "name": "",
+ "short_name": "",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff"
+}
diff --git a/css/addons/sonarr/sonarr-anime-favicon/android-chrome-192x192.png b/css/addons/sonarr/sonarr-anime-favicon/android-chrome-192x192.png
new file mode 100644
index 00000000..1a950902
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-favicon/android-chrome-192x192.png differ
diff --git a/css/addons/sonarr/sonarr-anime-favicon/android-chrome-512x512.png b/css/addons/sonarr/sonarr-anime-favicon/android-chrome-512x512.png
new file mode 100644
index 00000000..cb3dc344
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-favicon/android-chrome-512x512.png differ
diff --git a/css/addons/sonarr/sonarr-anime-favicon/apple-touch-icon.png b/css/addons/sonarr/sonarr-anime-favicon/apple-touch-icon.png
new file mode 100644
index 00000000..2f00d0cc
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-favicon/apple-touch-icon.png differ
diff --git a/css/addons/sonarr/sonarr-anime-favicon/browserconfig.xml b/css/addons/sonarr/sonarr-anime-favicon/browserconfig.xml
new file mode 100644
index 00000000..5811d97a
--- /dev/null
+++ b/css/addons/sonarr/sonarr-anime-favicon/browserconfig.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+ #da532c
+
+
+
diff --git a/css/addons/sonarr/sonarr-anime-favicon/favicon-16x16.png b/css/addons/sonarr/sonarr-anime-favicon/favicon-16x16.png
new file mode 100644
index 00000000..03d4e422
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-favicon/favicon-16x16.png differ
diff --git a/css/addons/sonarr/sonarr-anime-favicon/favicon-32x32.png b/css/addons/sonarr/sonarr-anime-favicon/favicon-32x32.png
new file mode 100644
index 00000000..852344a7
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-favicon/favicon-32x32.png differ
diff --git a/css/addons/sonarr/sonarr-anime-favicon/favicon.ico b/css/addons/sonarr/sonarr-anime-favicon/favicon.ico
new file mode 100644
index 00000000..e2c9ef90
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-favicon/favicon.ico differ
diff --git a/css/addons/sonarr/sonarr-anime-favicon/mstile-144x144.png b/css/addons/sonarr/sonarr-anime-favicon/mstile-144x144.png
new file mode 100644
index 00000000..b6773e89
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-favicon/mstile-144x144.png differ
diff --git a/css/addons/sonarr/sonarr-anime-favicon/mstile-150x150.png b/css/addons/sonarr/sonarr-anime-favicon/mstile-150x150.png
new file mode 100644
index 00000000..7a2a2d20
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-favicon/mstile-150x150.png differ
diff --git a/css/addons/sonarr/sonarr-anime-favicon/mstile-310x150.png b/css/addons/sonarr/sonarr-anime-favicon/mstile-310x150.png
new file mode 100644
index 00000000..1e6b4e51
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-favicon/mstile-310x150.png differ
diff --git a/css/addons/sonarr/sonarr-anime-favicon/mstile-310x310.png b/css/addons/sonarr/sonarr-anime-favicon/mstile-310x310.png
new file mode 100644
index 00000000..6878ed36
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-favicon/mstile-310x310.png differ
diff --git a/css/addons/sonarr/sonarr-anime-favicon/mstile-70x70.png b/css/addons/sonarr/sonarr-anime-favicon/mstile-70x70.png
new file mode 100644
index 00000000..d33cd540
Binary files /dev/null and b/css/addons/sonarr/sonarr-anime-favicon/mstile-70x70.png differ
diff --git a/css/addons/sonarr/sonarr-anime-favicon/safari-pinned-tab.svg b/css/addons/sonarr/sonarr-anime-favicon/safari-pinned-tab.svg
new file mode 100644
index 00000000..b7b03f30
--- /dev/null
+++ b/css/addons/sonarr/sonarr-anime-favicon/safari-pinned-tab.svg
@@ -0,0 +1,135 @@
+
+
+
diff --git a/css/addons/sonarr/sonarr-anime-favicon/site.webmanifest b/css/addons/sonarr/sonarr-anime-favicon/site.webmanifest
new file mode 100644
index 00000000..4271884c
--- /dev/null
+++ b/css/addons/sonarr/sonarr-anime-favicon/site.webmanifest
@@ -0,0 +1,18 @@
+{
+ "name": "",
+ "short_name": "",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff"
+}
diff --git a/css/base/audiobookshelf/audiobookshelf-base.css b/css/base/audiobookshelf/audiobookshelf-base.css
index bc89d2de..b220b258 100644
--- a/css/base/audiobookshelf/audiobookshelf-base.css
+++ b/css/base/audiobookshelf/audiobookshelf-base.css
@@ -33,6 +33,7 @@ a:hover{
background: var(--transparency-dark-40) !important;
}
body, .bg-bg, #bookshelf, #app-content, #page-wrapper{
+ background-image:none !important;
background: var(--main-bg-color);
background-repeat: repeat, no-repeat;
background-attachment: fixed, fixed;
diff --git a/css/base/sonarr/sonarr-base.css b/css/base/sonarr/sonarr-base.css
index bae4cc21..18bb9447 100644
--- a/css/base/sonarr/sonarr-base.css
+++ b/css/base/sonarr/sonarr-base.css
@@ -71,6 +71,11 @@
background-color: rgb(var(--accent-color)) !important;
}
+/* SERIES Table View */
+[class*="SeriesIndexTable-row-"]:hover {
+ background-color: var(--transparency-light-10);
+}
+
/* OVERVIEW PAGE */
[class*="SeriesIndexOverviews-container-"],
[class*="SeriesIndexOverviews-container-"]:hover {
diff --git a/css/defaults/servarr-base.css b/css/defaults/servarr-base.css
index ae1b391a..1fdf4eeb 100644
--- a/css/defaults/servarr-base.css
+++ b/css/defaults/servarr-base.css
@@ -756,6 +756,13 @@ a:hover {
color: #ff902b;
}
+/* SETTINGS - Tags */
+
+[class*="AutoTaggings-center-"], [class*="EditAutoTaggingModalContent-center-"] {
+ border: 1px solid transparent;
+ background-color: transparent;
+}
+
/* MEDIA MANAGEMENT - FILE NAME TOKENS */
[class*="NamingOption-small-"] {
border: 1px solid transparent;
diff --git a/docker-mods/radarr/root/etc/cont-init.d/98-themepark b/docker-mods/radarr/root/etc/cont-init.d/98-themepark
index 0ea86540..a45b57ff 100644
--- a/docker-mods/radarr/root/etc/cont-init.d/98-themepark
+++ b/docker-mods/radarr/root/etc/cont-init.d/98-themepark
@@ -14,10 +14,13 @@ echo -e "Variables set:\\n\
APP_FILEPATH='/app/radarr/bin/UI/index.html'
LOGIN_FILEPATH='/app/radarr/bin/UI/login.html'
+APP_ICON_FILEPATH='/app/radarr/bin/UI/Content/Images/Icons'
+
if [ "${TP_HOTIO}" = true ]; then
echo 'Changing to Hotio file path!'
APP_FILEPATH='/app/bin/UI/index.html'
LOGIN_FILEPATH='/app/bin/UI/login.html'
+ APP_ICON_FILEPATH='/app/bin/UI/Content/Images/Icons'
fi
# Set default
@@ -47,6 +50,18 @@ if [[ -z ${TP_THEME} ]]; then
TP_THEME='organizr'
fi
+# Function to download files for a given addon
+download_favicon_files() {
+ local addon=$1
+ local urls=$(curl -s "${TP_SCHEME}://${TP_DOMAIN}/themes.json" | jq -r ".addons.radarr[\"$addon\"].files[]?")
+ for url in $urls; do
+ # Remove the query parameters from the URL
+ clean_url="${url%%\?*}"
+ wget -O "${APP_ICON_FILEPATH}/$(basename "${clean_url}")" "${clean_url}"
+ printf 'Downloaded favicon: %s\n' "${clean_url}"
+ done
+}
+
# Adding stylesheets
if ! grep -q "${TP_DOMAIN}/css/base" "${APP_FILEPATH}"; then
echo '---------------------------'
@@ -61,6 +76,11 @@ if ! grep -q "${TP_DOMAIN}/css/base" "${APP_FILEPATH}"; then
if [[ -n ${TP_ADDON} ]]; then
for addon in $(echo "$TP_ADDON" | tr "|" " "); do
sheets="${sheets} "
+ # If the addon variable has "favicon" in it, download all the favicon files from the themes.json file.
+ if [[ ${addon} == *"favicon"* ]]; then
+ echo 'Downloading favicon files...'
+ download_favicon_files "$addon"
+ fi
printf 'Added custom addon: %s\n\n' "${addon}"
done
fi
diff --git a/docker-mods/radarr/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run b/docker-mods/radarr/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run
index bacd704f..6a8ba8c7 100644
--- a/docker-mods/radarr/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run
+++ b/docker-mods/radarr/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run
@@ -14,10 +14,13 @@ echo -e "Variables set:\\n\
APP_FILEPATH='/app/radarr/bin/UI/index.html'
LOGIN_FILEPATH='/app/radarr/bin/UI/login.html'
+APP_ICON_FILEPATH='/app/radarr/bin/UI/Content/Images/Icons'
+
if [ "${TP_HOTIO}" = true ]; then
echo 'Changing to Hotio file path!'
APP_FILEPATH='/app/bin/UI/index.html'
LOGIN_FILEPATH='/app/bin/UI/login.html'
+ APP_ICON_FILEPATH='/app/bin/UI/Content/Images/Icons'
fi
# Set default
@@ -47,6 +50,18 @@ if [[ -z ${TP_THEME} ]]; then
TP_THEME='organizr'
fi
+# Function to download files for a given addon
+download_favicon_files() {
+ local addon=$1
+ local urls=$(curl -s "${TP_SCHEME}://${TP_DOMAIN}/themes.json" | jq -r ".addons.radarr[\"$addon\"].files[]?")
+ for url in $urls; do
+ # Remove the query parameters from the URL
+ clean_url="${url%%\?*}"
+ wget -O "${APP_ICON_FILEPATH}/$(basename "${clean_url}")" "${clean_url}"
+ printf 'Downloaded favicon: %s\n' "${clean_url}"
+ done
+}
+
# Adding stylesheets
if ! grep -q "${TP_DOMAIN}/css/base" "${APP_FILEPATH}"; then
echo '---------------------------'
@@ -61,6 +76,11 @@ if ! grep -q "${TP_DOMAIN}/css/base" "${APP_FILEPATH}"; then
if [[ -n ${TP_ADDON} ]]; then
for addon in $(echo "$TP_ADDON" | tr "|" " "); do
sheets="${sheets} "
+ # If the addon variable has "favicon" in it, download all the favicon files from the themes.json file.
+ if [[ ${addon} == *"favicon"* ]]; then
+ echo 'Downloading favicon files...'
+ download_favicon_files "$addon"
+ fi
printf 'Added custom addon: %s\n\n' "${addon}"
done
fi
diff --git a/docker-mods/readarr/root/etc/cont-init.d/98-themepark b/docker-mods/readarr/root/etc/cont-init.d/98-themepark
index 1036e99d..c2803590 100644
--- a/docker-mods/readarr/root/etc/cont-init.d/98-themepark
+++ b/docker-mods/readarr/root/etc/cont-init.d/98-themepark
@@ -14,10 +14,13 @@ echo -e "Variables set:\\n\
APP_FILEPATH='/app/readarr/bin/UI/index.html'
LOGIN_FILEPATH='/app/readarr/bin/UI/login.html'
+APP_ICON_FILEPATH='/app/readarr/bin/UI/Content/Images/Icons'
+
if [ "${TP_HOTIO}" = true ]; then
echo 'Changing to Hotio file path!'
APP_FILEPATH='/app/bin/UI/index.html'
LOGIN_FILEPATH='/app/bin/UI/login.html'
+ APP_ICON_FILEPATH='/app/bin/UI/Content/Images/Icons'
fi
# Set default
@@ -47,6 +50,18 @@ if [[ -z ${TP_THEME} ]]; then
TP_THEME='organizr'
fi
+# Function to download files for a given addon
+download_favicon_files() {
+ local addon=$1
+ local urls=$(curl -s "${TP_SCHEME}://${TP_DOMAIN}/themes.json" | jq -r ".addons.readarr[\"$addon\"].files[]?")
+ for url in $urls; do
+ # Remove the query parameters from the URL
+ clean_url="${url%%\?*}"
+ wget -O "${APP_ICON_FILEPATH}/$(basename "${clean_url}")" "${clean_url}"
+ printf 'Downloaded favicon: %s\n' "${clean_url}"
+ done
+}
+
# Adding stylesheets
if ! grep -q "${TP_DOMAIN}/css/base" "${APP_FILEPATH}"; then
echo '---------------------------'
@@ -61,6 +76,11 @@ if ! grep -q "${TP_DOMAIN}/css/base" "${APP_FILEPATH}"; then
if [[ -n ${TP_ADDON} ]]; then
for addon in $(echo "$TP_ADDON" | tr "|" " "); do
sheets="${sheets} "
+ # If the addon variable has "favicon" in it, download all the favicon files from the themes.json file.
+ if [[ ${addon} == *"favicon"* ]]; then
+ echo 'Downloading favicon files...'
+ download_favicon_files "$addon"
+ fi
printf 'Added custom addon: %s\n\n' "${addon}"
done
fi
diff --git a/docker-mods/readarr/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run b/docker-mods/readarr/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run
index 10bc8c52..12ac47f9 100644
--- a/docker-mods/readarr/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run
+++ b/docker-mods/readarr/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run
@@ -14,10 +14,13 @@ echo -e "Variables set:\\n\
APP_FILEPATH='/app/readarr/bin/UI/index.html'
LOGIN_FILEPATH='/app/readarr/bin/UI/login.html'
+APP_ICON_FILEPATH='/app/readarr/bin/UI/Content/Images/Icons'
+
if [ "${TP_HOTIO}" = true ]; then
echo 'Changing to Hotio file path!'
APP_FILEPATH='/app/bin/UI/index.html'
LOGIN_FILEPATH='/app/bin/UI/login.html'
+ APP_ICON_FILEPATH='/app/bin/UI/Content/Images/Icons'
fi
# Set default
@@ -47,6 +50,18 @@ if [[ -z ${TP_THEME} ]]; then
TP_THEME='organizr'
fi
+# Function to download files for a given addon
+download_favicon_files() {
+ local addon=$1
+ local urls=$(curl -s "${TP_SCHEME}://${TP_DOMAIN}/themes.json" | jq -r ".addons.readarr[\"$addon\"].files[]?")
+ for url in $urls; do
+ # Remove the query parameters from the URL
+ clean_url="${url%%\?*}"
+ wget -O "${APP_ICON_FILEPATH}/$(basename "${clean_url}")" "${clean_url}"
+ printf 'Downloaded favicon: %s\n' "${clean_url}"
+ done
+}
+
# Adding stylesheets
if ! grep -q "${TP_DOMAIN}/css/base" "${APP_FILEPATH}"; then
echo '---------------------------'
@@ -61,6 +76,11 @@ if ! grep -q "${TP_DOMAIN}/css/base" "${APP_FILEPATH}"; then
if [[ -n ${TP_ADDON} ]]; then
for addon in $(echo "$TP_ADDON" | tr "|" " "); do
sheets="${sheets} "
+ # If the addon variable has "favicon" in it, download all the favicon files from the themes.json file.
+ if [[ ${addon} == *"favicon"* ]]; then
+ echo 'Downloading favicon files...'
+ download_favicon_files "$addon"
+ fi
printf 'Added custom addon: %s\n\n' "${addon}"
done
fi
diff --git a/docker-mods/sonarr/root/etc/cont-init.d/98-themepark b/docker-mods/sonarr/root/etc/cont-init.d/98-themepark
index 4f107e1a..7d5633d9 100644
--- a/docker-mods/sonarr/root/etc/cont-init.d/98-themepark
+++ b/docker-mods/sonarr/root/etc/cont-init.d/98-themepark
@@ -14,10 +14,13 @@ echo -e "Variables set:\\n\
APP_FILEPATH='/app/sonarr/bin/UI/index.html'
LOGIN_FILEPATH='/app/sonarr/bin/UI/login.html'
+APP_ICON_FILEPATH='/app/sonarr/bin/UI/Content/Images/Icons'
+
if [ "${TP_HOTIO}" = true ]; then
echo 'Changing to Hotio file path!'
APP_FILEPATH='/app/bin/UI/index.html'
LOGIN_FILEPATH='/app/bin/UI/login.html'
+ APP_ICON_FILEPATH='/app/bin/UI/Content/Images/Icons'
fi
# Set default
@@ -47,6 +50,18 @@ if [[ -z ${TP_THEME} ]]; then
TP_THEME='organizr'
fi
+# Function to download files for a given addon
+download_favicon_files() {
+ local addon=$1
+ local urls=$(curl -s "${TP_SCHEME}://${TP_DOMAIN}/themes.json" | jq -r ".addons.sonarr[\"$addon\"].files[]?")
+ for url in $urls; do
+ # Remove the query parameters from the URL
+ clean_url="${url%%\?*}"
+ wget -O "${APP_ICON_FILEPATH}/$(basename "${clean_url}")" "${clean_url}"
+ printf 'Downloaded favicon: %s\n' "${clean_url}"
+ done
+}
+
# Adding stylesheets
if ! grep -q "${TP_DOMAIN}/css/base" "${APP_FILEPATH}"; then
echo '---------------------------'
@@ -61,6 +76,11 @@ if ! grep -q "${TP_DOMAIN}/css/base" "${APP_FILEPATH}"; then
if [[ -n ${TP_ADDON} ]]; then
for addon in $(echo "$TP_ADDON" | tr "|" " "); do
sheets="${sheets} "
+ # If the addon variable has "favicon" in it, download all the favicon files from the themes.json file.
+ if [[ ${addon} == *"favicon"* ]]; then
+ echo 'Downloading favicon files...'
+ download_favicon_files "$addon"
+ fi
printf 'Added custom addon: %s\n\n' "${addon}"
done
fi
diff --git a/docker-mods/sonarr/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run b/docker-mods/sonarr/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run
index b7b0b135..6998b966 100644
--- a/docker-mods/sonarr/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run
+++ b/docker-mods/sonarr/root/etc/s6-overlay/s6-rc.d/init-mod-themepark/run
@@ -14,10 +14,13 @@ echo -e "Variables set:\\n\
APP_FILEPATH='/app/sonarr/bin/UI/index.html'
LOGIN_FILEPATH='/app/sonarr/bin/UI/login.html'
+APP_ICON_FILEPATH='/app/sonarr/bin/UI/Content/Images/Icons'
+
if [ "${TP_HOTIO}" = true ]; then
echo 'Changing to Hotio file path!'
APP_FILEPATH='/app/bin/UI/index.html'
LOGIN_FILEPATH='/app/bin/UI/login.html'
+ APP_ICON_FILEPATH='/app/bin/UI/Content/Images/Icons'
fi
# Set default
@@ -47,6 +50,18 @@ if [[ -z ${TP_THEME} ]]; then
TP_THEME='organizr'
fi
+# Function to download files for a given addon
+download_favicon_files() {
+ local addon=$1
+ local urls=$(curl -s "${TP_SCHEME}://${TP_DOMAIN}/themes.json" | jq -r ".addons.sonarr[\"$addon\"].files[]?")
+ for url in $urls; do
+ # Remove the query parameters from the URL
+ clean_url="${url%%\?*}"
+ wget -O "${APP_ICON_FILEPATH}/$(basename "${clean_url}")" "${clean_url}"
+ printf 'Downloaded favicon: %s\n' "${clean_url}"
+ done
+}
+
# Adding stylesheets
if ! grep -q "${TP_DOMAIN}/css/base" "${APP_FILEPATH}"; then
echo '---------------------------'
@@ -61,6 +76,11 @@ if ! grep -q "${TP_DOMAIN}/css/base" "${APP_FILEPATH}"; then
if [[ -n ${TP_ADDON} ]]; then
for addon in $(echo "$TP_ADDON" | tr "|" " "); do
sheets="${sheets} "
+ # If the addon variable has "favicon" in it, download all the favicon files from the themes.json file.
+ if [[ ${addon} == *"favicon"* ]]; then
+ echo 'Downloading favicon files...'
+ download_favicon_files "$addon"
+ fi
printf 'Added custom addon: %s\n\n' "${addon}"
done
fi
diff --git a/themes.py b/themes.py
index 83c11ee3..1314aea0 100644
--- a/themes.py
+++ b/themes.py
@@ -47,12 +47,17 @@ def create_addons_json() -> str:
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"{scheme}://{DOMAIN}/css/addons/{app}/{addon}/{file}?sha={get_md5_hash(join(getcwd(),'css','addons',app,addon,file))}" for file in files if file.split(".")[1] == "css"]
+ "css": [f"{scheme}://{DOMAIN}/theme.park/css/addons/{app}/{addon}/{file}?sha={get_md5_hash(join(getcwd(),'css','addons',app,addon,file))}" for file in files if file.split(".")[1] == "css"]
}
)
else:
+ if len([f for f in files if not f.endswith('.css')]) >= 1:
+ ADDONS["addons"][app][addon].update({
+ "files": [f"{scheme}://{DOMAIN}/theme.park/css/addons/{app}/{addon}/{file}?sha={get_md5_hash(join(getcwd(),'css','addons',app,addon,file))}" for file in files]
+ }
+ )
ADDONS["addons"][app].update({
- addon: f"{scheme}://{DOMAIN}/css/addons/{app}/{addon}/{file}?sha={get_md5_hash(join(getcwd(),'css','addons',app,addon,file))}" for file in files if file.split(".")[1] == "css"
+ addon: f"{scheme}://{DOMAIN}/theme.park/css/addons/{app}/{addon}/{file}?sha={get_md5_hash(join(getcwd(),'css','addons',app,addon,file))}" for file in files if file.split(".")[1] == "css"
}
)
extra_dirs = [dir for dir in listdir(
@@ -63,8 +68,9 @@ def create_addons_json() -> str:
f"{addon_root}/{app}/{addon}/{dir}") if isfile(join(f"{addon_root}/{app}/{addon}/{dir}", file))]
ADDONS["addons"][app][addon].update({
dir: {
- "css": [f"{scheme}://{DOMAIN}/css/addons/{app}/{addon}/{dir}/{extra_file}?sha={get_md5_hash(join(getcwd(),'css','addons',app,addon,dir,extra_file))}" for extra_file in extra_dir_files if extra_file.split(".")[1] == "css"]
- }
+ "css": [f"{scheme}://{DOMAIN}/theme.park/css/addons/{app}/{addon}/{dir}/{extra_file}?sha={get_md5_hash(join(getcwd(),'css','addons',app,addon,dir,extra_file))}" for extra_file in extra_dir_files if extra_file.split(".")[1] == "css"],
+ "files": [f"{scheme}://{DOMAIN}/theme.park/css/addons/{app}/{addon}/{dir}/{extra_file}?sha={get_md5_hash(join(getcwd(),'css','addons',app,addon,dir,extra_file))}" for extra_file in extra_dir_files if extra_file.split(".")[1] != "css"]
+ },
}
)
return dumps(ADDONS, sort_keys=True)
@@ -79,12 +85,12 @@ def create_json(app_folders: list = None, themes: list = None, community_themes:
#COMMUNITY_THEME_SHAS = get_shas(community_theme_shas)
THEMES = {
theme.split(".")[0].capitalize(): {
- "url": f"{scheme}://{DOMAIN}/css/theme-options/{theme}?sha={get_md5_hash(join(getcwd(),'css','theme-options', theme))}"
+ "url": f"{scheme}://{DOMAIN}/theme.park/css/theme-options/{theme}?sha={get_md5_hash(join(getcwd(),'css','theme-options', theme))}"
}for theme in themes if themes
}
COMMUNITY_THEMES = {
theme.split(".")[0].capitalize(): {
- "url": f"{scheme}://{DOMAIN}/css/community-theme-options/{theme}?sha={get_md5_hash(join(getcwd(),'css','community-theme-options', theme))}"
+ "url": f"{scheme}://{DOMAIN}/theme.park/css/community-theme-options/{theme}?sha={get_md5_hash(join(getcwd(),'css','community-theme-options', theme))}"
}for theme in community_themes if community_themes
}
THEMES_DICT.update(dict(sorted({
@@ -107,7 +113,7 @@ def create_json(app_folders: list = None, themes: list = None, community_themes:
APPS.update(dict(sorted({
"applications": {
app: {
- "base_css": f"{scheme}://{DOMAIN}/css/base/{app}/{app}-base.css?sha={get_md5_hash(join('css','base', app, f'{app}-base.css'))}",
+ "base_css": f"{scheme}://{DOMAIN}/theme.park/css/base/{app}/{app}-base.css?sha={get_md5_hash(join('css','base', app, f'{app}-base.css'))}",
"addons": ADDONS["addons"][app] if app in ADDONS["addons"] else {}
} for app in app_folders if not isfile(f'./css/base/{app}/.deprecated')
}
@@ -115,7 +121,7 @@ def create_json(app_folders: list = None, themes: list = None, community_themes:
APPS.update(dict(sorted({
"deprecated": {
app: {
- "base_css": f"{scheme}://{DOMAIN}/css/base/{app}/{app}-base.css?sha={get_md5_hash(join('css','base', app, f'{app}-base.css'))}",
+ "base_css": f"{scheme}://{DOMAIN}/theme.park/css/base/{app}/{app}-base.css?sha={get_md5_hash(join('css','base', app, f'{app}-base.css'))}",
"addons": ADDONS["addons"][app] if app in ADDONS["addons"] else {}
} for app in app_folders if isfile(f'./css/base/{app}/.deprecated')
}
@@ -153,7 +159,6 @@ def create_theme_options() -> None:
for theme in community_themes:
create_css(theme,theme_type="community")
-env_domain = env.get('TP_DOMAIN')
scheme = env.get('TP_SCHEME','https') if env.get('TP_SCHEME') else 'https'
if __name__ == "__main__":
@@ -161,13 +166,15 @@ if __name__ == "__main__":
themes = [name for name in listdir('./css/theme-options') if isfile(join('./css/theme-options', name))]
docker_mods = [name for name in listdir('./docker-mods')] if isdir('./docker-mods') else []
community_themes = [name for name in listdir('./css/community-theme-options') if isfile(join('./css/community-theme-options', name))]
- develop = True if isdir(".git") and subprocess.check_output(["git", "symbolic-ref", "--short", "HEAD"]).decode('ascii').strip() == "develop" else False
- if env_domain:
- DOMAIN = env_domain
+ branch: str | None = subprocess.check_output(["git", "symbolic-ref", "--short", "HEAD"]).decode('ascii').strip() if isdir(".git") else None
+
+ if env.get('TP_DOMAIN'):
+ DOMAIN = env.get('TP_DOMAIN')
else:
with open("CNAME", "rt", closefd=True) as cname:
CNAME = cname.readline()
- DOMAIN = CNAME if not develop else f"develop.{CNAME}"
+
+ DOMAIN = f"{branch}.{CNAME}" if branch not in ["master","main"] else CNAME
apps = loads(create_json(app_folders=app_folders, themes=themes, community_themes=community_themes, docker_mods=docker_mods))
with open("themes.json", "w") as outfile:
dump(apps, outfile, indent=2, sort_keys=True)