diff --git a/README.md b/README.md index 2879544..84cb2be 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,27 @@

Retroblur

-

Spicetify theme with lots of blur and retro elements.
+

Spicetify theme with lots of blur, animations, hacks, gradients and retro elements.
Based on https://github.com/schnensch0/ziro
-Copyright © 2022 Motschen - MIT License
+Copyright © 2023 Motschen - MIT License
-![Home](preview/home.png) +![Dream](preview/dream.png) -![Playlist](preview/playlist.png) +![Water](preview/water.png) -![Synced Lyrics](preview/synced_lyrics.png) +![Lush](preview/lush.png) + +![Sun](preview/sun.png) + +![Sunset](preview/sunset.png) + +![Mercy](preview/mercy.png) ![Missing Lyrics](preview/missing_lyrics.gif)

-[Preview of the color variations](COLORS.md)

-To change the color of the background, edit the link on the first line of user.css
+To change the color of the background, edit the link at the start of user.css
It's sadly not possible to change the background together with the color scheme automatically due to the limitations of CSS.

diff --git a/assets/background_#111111.jpg b/assets/background_#111111.jpg deleted file mode 100644 index 0840c85..0000000 Binary files a/assets/background_#111111.jpg and /dev/null differ diff --git a/color.ini b/color.ini index fb30d8c..314d7ba 100644 --- a/color.ini +++ b/color.ini @@ -8,7 +8,7 @@ ; button-disabled = volume & seekbar background, scrollbar handle, borders ; everything else = self-explanatory -[purple] +[dream] text = ffffff subtext = f70bff main = 0c0e14 @@ -25,7 +25,75 @@ notification = 1a181e notification-error = fb7c7c misc = 0c0e14 -[red] +[water] +text = ffffff +subtext = 1d7af5 +main = 0c0e14 +sidebar = 0c0e14 +player = 0c0e14 +card = 1a181e +shadow = 1a181e +selected-row = 00bbff +button = 00bbff +button-active = 00bbff +button-disabled = 302b36 +tab-active = 00bbff +notification = 1a181e +notification-error = fb7c7c +misc = 0c0e14 + +[summer] +text = ffffff +subtext = 68fdab +main = 0c0e14 +sidebar = 0c0e14 +player = 0c0e14 +card = 1a181e +shadow = 1a181e +selected-row = b0fd68 +button = b0fd68 +button-active = b0fd68 +button-disabled = 302b36 +tab-active = b0fd68 +notification = 1a181e +notification-error = fb7c7c +misc = 0c0e14 + +[sun] +text = ffffff +subtext = ebc726 +main = 0c0e14 +sidebar = 0c0e14 +player = 0c0e14 +card = 1a181e +shadow = 1a181e +selected-row = ceeb26 +button = ceeb26 +button-active = ceeb26 +button-disabled = 302b36 +tab-active = ceeb26 +notification = 1a181e +notification-error = fb7c7c +misc = 0c0e14 + +[sunset] +text = ffffff +subtext = f54e4e +main = 0c0e14 +sidebar = 0c0e14 +player = 0c0e14 +card = 1a181e +shadow = 1a181e +selected-row = ebb726 +button = ebb726 +button-active = ebb726 +button-disabled = 302b36 +tab-active = ebb726 +notification = 1a181e +notification-error = fb7c7c +misc = 0c0e14 + +[mercy] text = ffffff subtext = ff0105 main = 0c0e14 @@ -42,74 +110,6 @@ notification = 1a181e notification-error = fb7c7c misc = 0c0e14 -[orange] -text = ffffff -subtext = ff8800 -main = 0c0e14 -sidebar = 0c0e14 -player = 0c0e14 -card = 1a181e -shadow = 1a181e -selected-row = ff7300 -button = ff7300 -button-active = ff7300 -button-disabled = 302b36 -tab-active = ff7300 -notification = 1a181e -notification-error = fb7c7c -misc = 0c0e14 - -[green] -text = ffffff -subtext = 00bd00 -main = 0c0e14 -sidebar = 0c0e14 -player = 0c0e14 -card = 1a181e -shadow = 1a181e -selected-row = 00aa00 -button = 00aa00 -button-active = 00aa00 -button-disabled = 302b36 -tab-active = 00aa00 -notification = 1a181e -notification-error = fb7c7c -misc = 0c0e14 - -[yellow] -text = ffffff -subtext = 918500 -main = 0c0e14 -sidebar = 0c0e14 -player = 0c0e14 -card = 1a181e -shadow = 1a181e -selected-row = c8b700 -button = c8b700 -button-active = c8b700 -button-disabled = 302b36 -tab-active = c8b700 -notification = 1a181e -notification-error = fb7c7c -misc = 0c0e14 - -[blue] -text = ffffff -subtext = 00bbff -main = 0c0e14 -sidebar = 0c0e14 -player = 0c0e14 -card = 1a181e -shadow = 1a181e -selected-row = 0055ff -button = 0055ff -button-active = 0055ff -button-disabled = 302b36 -tab-active = 0055ff -notification = 1a181e -notification-error = fb7c7c -misc = 0c0e14 - [Xresources] text = ${xrdb:foreground} subtext = ${xrdb:color1} diff --git a/manifest.json b/manifest.json index b37055a..863d17d 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "name": "Retroblur", - "description": "Theme with a background, blur, animations and reflections.", - "preview": "preview/playlist.png", + "description": "Theme with a background, blur, animations, gradients and reflections.", + "preview": "preview/dream.png", "usercss": "user.css", "schemes": "color.ini", "readme": "README.md" diff --git a/preview/blue.png b/preview/blue.png deleted file mode 100644 index 73377d3..0000000 Binary files a/preview/blue.png and /dev/null differ diff --git a/preview/dream.jpg b/preview/dream.jpg new file mode 100644 index 0000000..fe02183 Binary files /dev/null and b/preview/dream.jpg differ diff --git a/preview/green.png b/preview/green.png deleted file mode 100644 index 7099c2d..0000000 Binary files a/preview/green.png and /dev/null differ diff --git a/preview/home.png b/preview/home.png deleted file mode 100644 index 59079fa..0000000 Binary files a/preview/home.png and /dev/null differ diff --git a/preview/lush.jpg b/preview/lush.jpg new file mode 100644 index 0000000..ed73a14 Binary files /dev/null and b/preview/lush.jpg differ diff --git a/preview/mercy.jpg b/preview/mercy.jpg new file mode 100644 index 0000000..0d8e970 Binary files /dev/null and b/preview/mercy.jpg differ diff --git a/preview/orange.png b/preview/orange.png deleted file mode 100644 index 1e395a8..0000000 Binary files a/preview/orange.png and /dev/null differ diff --git a/preview/playlist.png b/preview/playlist.png deleted file mode 100644 index ca953e7..0000000 Binary files a/preview/playlist.png and /dev/null differ diff --git a/preview/red.png b/preview/red.png deleted file mode 100644 index a89d3fa..0000000 Binary files a/preview/red.png and /dev/null differ diff --git a/preview/sun.jpg b/preview/sun.jpg new file mode 100644 index 0000000..75a5f4e Binary files /dev/null and b/preview/sun.jpg differ diff --git a/preview/sunset.jpg b/preview/sunset.jpg new file mode 100644 index 0000000..9631868 Binary files /dev/null and b/preview/sunset.jpg differ diff --git a/preview/synced_lyrics.png b/preview/synced_lyrics.png deleted file mode 100644 index 4932aea..0000000 Binary files a/preview/synced_lyrics.png and /dev/null differ diff --git a/preview/water.jpg b/preview/water.jpg new file mode 100644 index 0000000..ac9fd50 Binary files /dev/null and b/preview/water.jpg differ diff --git a/user.css b/user.css index 2f50461..b189060 100644 --- a/user.css +++ b/user.css @@ -1,34 +1,53 @@ :root { - --sidebar-y-offset: 10px; + --sidebar-y-offset: 0px; --border-radius-1: 10px; --border-radius-2: 8px; --border-radius-3: 4px; --scrollbars: unset; - --green: #1db954; --spice-main: transparent; --spice-misc: rgba(30, 30, 30, 0.8); - --spice-player: rgba(30, 30, 30, 0.4); - --bg: url(--spice-wallpaper); + --spice-player: rgba(30, 30, 30, 0.5); } /* - Set the wallpaper to the one matching your color scheme - Source: https://wallpapercave.com/wp/wp5003466.jpg - Purple: https://github.com/Motschen/Retroblur/blob/main/assets/background_purple.jpg?raw=true - Red: https://github.com/Motschen/Retroblur/blob/main/assets/background_red.jpg?raw=true - Green: https://github.com/Motschen/Retroblur/blob/main/assets/background_green.jpg?raw=true - Yellow: https://github.com/Motschen/Retroblur/blob/main/assets/background_yellow.jpg?raw=true - Blue: https://github.com/Motschen/Retroblur/blob/main/assets/background_blue.jpg?raw=true - Beach (Blue): https://wallpapercave.com/wp/wp5922621.jpg - Forest (Green): https://i.imgur.com/hnpaDeR.jpg + Set the wallpaper to one matching your color scheme + -> Here are some cartoon wallpapers that suit their theme well: + Bridge (Dream): https://github.com/Motschen/Retroblur/blob/main/assets/background_purple.jpg?raw=true + Bridge (Mercy): https://github.com/Motschen/Retroblur/blob/main/assets/background_red.jpg?raw=true + Bridge (Summer): https://github.com/Motschen/Retroblur/blob/main/assets/background_green.jpg?raw=true + Bridge (Sun): https://github.com/Motschen/Retroblur/blob/main/assets/background_yellow.jpg?raw=true + Bridge (Water: https://github.com/Motschen/Retroblur/blob/main/assets/background_blue.jpg?raw=true + Bridge Wallpaper Source: https://wallpapercave.com/wp/wp5003466.jpg + Forest (Summer): https://i.imgur.com/hnpaDeR.jpg + + -> Here are some real life wallpapers that suit their theme well: + Beach (Sun): https://wallpapercave.com/wp/wp5922621.jpg + Lamborghini (Mercy): https://i.etsystatic.com/26226621/r/il/acca86/4880827253/il_794xN.4880827253_4ig6.jpg + Source: https://www.etsy.com/de/listing/1464786817/lamborghini-digitale-kunst + Rose (Mercy): https://4kwallpapers.com/images/walls/thumbs_3t/10670.jpg + Source: https://4kwallpapers.com/flowers/red-flower-red-rose-10670.html + Evening Clouds (Sunset): https://4kwallpapers.com/images/walls/thumbs_3t/4928.jpg + Source: https://4kwallpapers.com/nature/sunset-mountain-range-silhouette-landscape-orange-sky-4928.html + Waterfalls (Summer): https://images3.alphacoders.com/356/35627.jpg + Source: https://wall.alphacoders.com/big.php?i=35627 + Surfing (Sun): https://images.unsplash.com/photo-1516370873344-fb7c61054fa9?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1170&q=80 + Source: https://unsplash.com/de/fotos/xarhNpLSHTk + Surfing (Water): https://images.unsplash.com/photo-1502933691298-84fc14542831?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1170&q=80 + Source: https://unsplash.com/de/fotos/TII6axq3eo4 */ body { + /* Set the wallpaper link below */ + /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */ background-image: url("https://github.com/Motschen/Retroblur/blob/main/assets/background_purple.jpg?raw=true") !important; + /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */ background-repeat: no-repeat; background-size: 100%; } -/* Fixed navbar overlaping on top Spotify's menu in Windows */ -.main-navBar-entryPoints { - margin-top: 20px; +/* Fixed navbar overlapping on top Spotify's menu in Windows */ +.spotify__os--is-linux.spotify__container--is-desktop:not(.fullscreen) .main-navBar-entryPoints { + padding-top: var(--sidebar-y-offset); +} +.spotify__os--is-linux.spotify__container--is-desktop:not(.fullscreen) .main-navBar-navBar { + padding-top: 10px; } /* Playing track's title in playlist */ .main-trackList-trackListRow.main-trackList-active .main-trackList-rowTitle, .main-trackList-trackListRow.main-trackList-active .main-trackList-rowMarker { @@ -37,21 +56,33 @@ body { .main-trackList-trackListRow.main-trackList-active:hover .main-trackList-rowTitle { color: var(--spice-button); } +/* Fixes blur looking weird on home page shortcuts */ +.view-homeShortcutsGrid-shortcut .view-homeShortcutsGrid-imageContainer > div > img { + border-top-right-radius: 0px !important; + border-bottom-right-radius: 0px !important; +} /* Explicit content black */ .main-tag-container { color: black; + background-color: var(--spice-text); } /* Disable upgrade button */ .main-topBar-UpgradeButton { display: none; } +.search-icon { + color: var(--spice-text); +} +.main-topBar-historyButtons .main-topBar-button { + margin-right: 5px; +} /* Fix the navbar icons not showing when selected */ .home-active-icon, .search-active-icon, .collection-active-icon { - color: white; - fill: white; + color: black; + fill: black; } /* Make the friend list transparent and blured */ @@ -140,9 +171,6 @@ div[aria-selected="true"] > div > div.main-trackList-rowSectionStart > div > div .main-view-container, .Root__main-view, .os-host-overflow, .os-resize-observer, .os-resize-observer-host, .os-host-overflow>.os-padding { overflow: hidden !important; } -.spotify__container--is-desktop:not(.fullscreen) .main-navBar-entryPoints, .main-navBar-navBar, .main-rootlist-rootlistPlaylistsScrollNode, .main-createPlaylistButton-button { - padding-top: var(--sidebar-y-offset); -} .Root__now-playing-bar { backdrop-filter: blur(14px) !important; background-color: rgba(30, 30, 30, 0.6) !important; @@ -153,7 +181,9 @@ div[aria-selected="true"] > div > div.main-trackList-rowSectionStart > div > div @keyframes fadingGlowWhite { from {} to { filter: drop-shadow(0 0 6px); } } -.gSLhUO:hover, .main-playButton-PlayButton.main-playButton-primary:hover, .main-pageErrorTemplate-errorButton:hover, div.GlueDropTarget.personal-library >*.active:hover, .main-rootlist-rootlistItemLink.main-rootlist-rootlistItemLinkActive:hover, .main-navBar-navBarLinkActive:hover, .control-button-heart:hover, .gHYQaG:hover, .iaAUvZ:hover { +.gSLhUO:hover, .main-playButton-PlayButton.main-playButton-primary:hover, .main-pageErrorTemplate-errorButton:hover, +.main-rootlist-rootlistItemLink.main-rootlist-rootlistItemLinkActive:hover, .main-navBar-navBarLinkActive:hover, +.control-button-heart:hover, .gHYQaG:hover, .iaAUvZ:hover { animation: fadingGlow 1s ease 0.5 forwards !important; } a:hover, .main-trackList-rowPlayPauseButton:hover, svg:hover { @@ -202,6 +232,7 @@ div.GlueDropTarget.personal-library { .playback-bar .progress-bar__slider { filter: drop-shadow(0 0 6px var(--spice-button)); } +/* Shows a reflection of the big cover image */ .main-coverSlotExpanded-container { -webkit-box-reflect: below; } @@ -235,8 +266,9 @@ div.GlueDropTarget.personal-library { .main-entityHeader-backgroundColor { background: transparent; } -/* remove dividers */ +/* Remove dividers at playlist top & style header */ .main-trackList-trackListHeaderRow, .main-trackCreditsModal-header { + border-radius: 5px; border-bottom: none; background-color: rgba(30, 30, 30, 0.4) !important; backdrop-filter: blur(14px) !important; @@ -395,10 +427,6 @@ button.switch { .main-rootlist-rootlistItemLinkActive, .main-rootlist-rootlistItemLinkActive:hover, .VBBDTqhWgM6gWFAMJSUV, .VBBDTqhWgM6gWFAMJSUV:hover { background-color: var(--spice-selected-row); } -.ac0df040748287f39652cc42e3b762ba-scss._926f2bd73c2ddb23fb86b430a2f48707-scss, .main-collectionLinkButton-selected, .main-collectionLinkButton-collectionLinkButton.active { - background: var(--spice-selected-row) !important; - color: var(--spice-shadow) !important; -} div.GlueDropTarget.personal-library >*.active > div.main-rootlist-statusIcons > button { color: var(--spice-shadow) !important; } @@ -465,7 +493,7 @@ div.GlueDropTarget.personal-library >*.active > div.main-rootlist-statusIcons > border-bottom: none; } .main-trackList-statusChangeUp { - color: var(--green); + color: #1db954; } /* big thanks to CharlieS and harbassan for providing the svg */ .main-trackList-playingIcon { @@ -684,7 +712,7 @@ input:hover:not([disabled]):not(:active)~.x-toggle-indicatorWrapper { .playback-bar__progress-time, .playback-bar__progress-time-elapsed, .main-playbackBarRemainingTime-container { position: absolute; bottom: -48px; - right: 250px; + right: 270px; color: var(--spice-text) !important; filter: drop-shadow(0 0 6px var(--spice-text)) !important; } @@ -857,3 +885,103 @@ CANVAS!!! #spicetify-sticky-list > div.GlueDropTarget.GlueDropTarget--albums.GlueDropTarget--tracks.GlueDropTarget--local-tracks.GlueDropTarget--episodes.personal-library { margin-top: -15px; } +/* Purple glow, gradient and animation for progress bar, volume bar, + play button and selected sidebar items */ +@keyframes gradientFade { + /* Animation is done using this technique: https://stackoverflow.com/a/33938639 */ + from { + background-position: 0% 100%; + } + to { + background-position: 100% 0%; + } +} +.playback-bar .x-progressBar-fillColor, .volume-bar .x-progressBar-fillColor { + background: linear-gradient(45deg, var(--spice-selected-row), 40%, var(--spice-subtext), 80%, var(--spice-selected-row)); + background-position: 0% 100%; + background-size: 200% 200%; + animation: gradientFade 3s linear infinite alternate; +} +.ButtonInner-lg-iconOnly, +.playlist-item__img.folder, +.main-rootlist-rootlistItemLinkActive, .main-rootlist-rootlistItemLinkActive:hover, .VBBDTqhWgM6gWFAMJSUV, .VBBDTqhWgM6gWFAMJSUV:hover, +.ac0df040748287f39652cc42e3b762ba-scss._926f2bd73c2ddb23fb86b430a2f48707-scss, .main-collectionLinkButton-selected, .main-collectionLinkButton-collectionLinkButton.active, +.main-navBar-navBarLinkActive, .main-navBar-navBarLinkActive:hover, .main-navBar-navBarLinkActive:active, .main-navBar-navBarLinkActive:focus { + background-image: linear-gradient(69deg, var(--spice-selected-row), 40%, var(--spice-subtext), 80%, var(--spice-selected-row)) !important; + background-position: 0% 100%; + background-size: 200% 200% !important; + animation: gradientFade 3s ease infinite alternate; +} +.main-rootlist-rootlistItemLinkActive, .main-rootlist-rootlistItemLinkActive:hover, .VBBDTqhWgM6gWFAMJSUV, .VBBDTqhWgM6gWFAMJSUV:hover, +.ac0df040748287f39652cc42e3b762ba-scss._926f2bd73c2ddb23fb86b430a2f48707-scss, .main-collectionLinkButton-selected, .main-collectionLinkButton-collectionLinkButton.active, +.main-navBar-navBarLinkActive, .main-navBar-navBarLinkActive:hover, .main-navBar-navBarLinkActive:active, .main-navBar-navBarLinkActive:focus { + box-shadow: 0px 0px 3px 1px var(--spice-subtext); + color: black !important; +} +/* Darken less important buttons */ +.main-skipBackButton-button > svg > path, .main-skipForwardButton-button > svg > path, .control-button > svg > path, +.playlist-item__img.folder { + filter: brightness(90%); +} +/* Better look for YourEpisodes & LocalFiles cards */ +.main-yourEpisodes-coverIcon, .Svg-img-textBrightAccent-64-icon { + color: var(--spice-text); + fill: var(--spice-text); +} +.main-yourEpisodes-coverContainer { + background: linear-gradient(36deg, #056952, 70%, #0caf27); +} +.fRZRXRIV2YBCFLYgwDAr { + background: linear-gradient(36deg, #202f72, 70%, #34c8d3); +} +/* Fix your podcasts items having no background */ +.TT1tIewS2iI8Uz8kLuQB { + backdrop-filter: blur(10px); + background: var(--spice-player); + border-radius: 10px; +} +.TT1tIewS2iI8Uz8kLuQB:hover { + background: var(--spice-misc); +} +/* Fixes marketplace readmes & settings screen having no background */ +#marketplace-readme, .x-settings-container { + border-radius: 10px; + backdrop-filter: blur(10px); + background: var(--spice-player) !important; +} +#marketplace-readme a { + color: var(--spice-text) !important; +} +/* Makes context menus transparent & blurred */ +.main-contextMenu-menu { + background-color: var(--spice-misc); + backdrop-filter: blur(10px); +} +/* Fixes playlist icon shadow being cut off */ +.main-entityHeader-shadow { + -webkit-box-shadow: 0 4px 29px rgba(var(--spice-rgb-shadow),.5); + box-shadow: 0 4px 29px rgba(var(--spice-rgb-shadow),.5); +} +/* Fixes image placeholders icon line color & line width */ +.main-entityHeader-imagePlaceholder { + border-radius: 7px; + color: var(--spice-text); + stroke: currentcolor; + stroke-width: 2px; +} +/* Add a gradient to the artists name in playlists & now playing */ +.main-trackList-rowSubTitle a, .main-trackInfo-artists a:link, .main-trackInfo-artists a:visited { + background: linear-gradient(5deg, var(--spice-selected-row), 40%, var(--spice-subtext), 80%, var(--spice-selected-row)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + display: inline-block; +} +.main-trackList-trackListRow.main-trackList-selected .main-trackList-rowSubTitle a, .main-trackList-trackListRow.main-trackList-selected:hover .main-trackList-rowSubTitle a { + background: transparent; + -webkit-text-fill-color: white; +} +.Button-sm-16-buttonTertiary-iconOnly-isUsingKeyboard-useBrowserDefaultFocusStyle, +.Button-sm-16-buttonTertiary-iconOnly-useBrowserDefaultFocusStyle, .main-shuffleButton-button.main-shuffleButton-active, +.control-button { + color: var(--spice-subtext) !important; +} \ No newline at end of file