diff --git a/Gruvify/LICENSE b/Gruvify/LICENSE new file mode 100644 index 00000000..456c4889 --- /dev/null +++ b/Gruvify/LICENSE @@ -0,0 +1,13 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/Gruvify/README.md b/Gruvify/README.md new file mode 100644 index 00000000..f5faf3d3 --- /dev/null +++ b/Gruvify/README.md @@ -0,0 +1,30 @@ +# Gruvify +## Gruvbox spotify theme + +### What? + +A [spicetify](https://spicetify.app/) theme customized to the [gruvbox](https://github.com/gruvbox-community/gruvbox) palette. +Uses [Sass](https://sass-lang.com/) compiled down to normal CSS. +Original repository [here](https://github.com/Skaytacium/Gruvify) + +### Why? + +Eyesore. + +### And? + +~~Supports spicetify's [bookmark extension](https://spicetify.app/docs/advanced-usage/extensions/#bookmark).~~ It still does, but, on older versions (check the tricolor branch). + +The `main` branch is based on the current Spotify CSS map, the `tricolor` branch is based on the older one, it supports vim keys and bookmarks theming as well (since those extensions aren't available for the newer versions, I can't theme them). + +Last working versions (26/09/2024) + +Spotify: `1.2.47.364.gf05e5cee` +Spicetify: `2.38.3` + +### Pics? + +![image](https://github.com/user-attachments/assets/c77c84c8-16c7-400f-8ccc-5b77870e2104) +![image](https://github.com/user-attachments/assets/bcb6e7a9-8118-4520-a539-15408eeef5fd) +![image](https://github.com/user-attachments/assets/567d13b8-04a0-4378-b989-37d1fada17f7) +![image](https://github.com/user-attachments/assets/32c53395-ddd6-49d1-9fca-86aeef9d0c1f) diff --git a/Gruvify/color.ini b/Gruvify/color.ini new file mode 100644 index 00000000..3e274f55 --- /dev/null +++ b/Gruvify/color.ini @@ -0,0 +1,22 @@ +[Gruvbox] +text = d5c4a1 +subtext = d5c4a1 +button-text = 282828 +subbutton-text = d5c4a1 +main = 282828 +sidebar = 282828 +player = 282828 +card = 282828 +shadow = 282828 +selected-row = 1d2021 +sub-button = d5c4a1 +button = d5c4a1 +button-active = ebdbb2 +button-disabled = 353535 +sidebar-button = d5c4a1 +play-button = d5c4a1 +tab-active = 282828 +notification = 282828 +notification-error = 282828 +playback-bar = d5c4a1 +misc = d5c4a1 \ No newline at end of file diff --git a/Gruvify/user.css b/Gruvify/user.css new file mode 100644 index 00000000..06736d74 --- /dev/null +++ b/Gruvify/user.css @@ -0,0 +1,449 @@ +.BoxComponent-group-card-naked-isInteractive-draggable::after, +.BoxComponent-group-card-naked-isInteractive-draggable:hover::after { + inset: 3px; + background-color: var(--spice-selected-row); +} + +.main-card-imageContainer { + top: 3px !important; +} + +.main-card-imageContainer img { + border-radius: 0 !important; +} + +.main-contextMenu-menuItemButton:hover { + background-color: var(--spice-selected-row); +} + +.main-contextMenu-menu { + border: var(--spice-selected-row) 3px solid; +} + +input.x-filterBox-filterInput::-moz-placeholder { + font-size: 0; +} + +input.x-filterBox-filterInput::placeholder { + font-size: 0; +} + +div[role=menuitem] > div.x-filterBox-filterInputContainer { + left: 2px; + top: 3px; +} + +.main-coverSlotCollapsed-navAltContainer, .main-coverSlotCollapsed-navAltContainer button { + border-radius: 0; +} + +.main-coverSlotCollapsed-container { + left: -14px; + padding-right: 4px; + top: 5px; +} + +.main-nowPlayingWidget-coverArt > div { + width: 78px !important; + height: 78px !important; +} + +.main-coverSlotCollapsed-container:hover .main-coverSlotCollapsed-expandButton { + opacity: 0; +} + +.main-coverSlotCollapsed-expandButton { + top: 0; + right: 0; + width: 100%; + height: 100%; +} + +.now-playing-bar-container > div:first-child:nth-last-child(2) .playback-bar, +.main-nowPlayingBar-container > div:first-child:nth-last-child(2) .playback-bar { + bottom: 107px; +} + +.playback-bar__progress-time-elapsed { + opacity: 0; + position: absolute; + bottom: 13px; + text-align: center; + border-radius: 10px; + left: 5px; + transition-duration: 0.15s; + background-color: var(--spice-main); +} + +.main-playbackBarRemainingTime-container { + opacity: 0; + position: absolute; + bottom: 13px; + text-align: center; + border-radius: 10px; + right: 5px; + transition-duration: 0.15s; + background-color: var(--spice-main); +} + +.progress-bar { + --bg-color: var(--spice-selected-row); +} + +.playback-bar:hover .playback-bar__progress-time-elapsed, +.playback-bar:hover .main-playbackBarRemainingTime-container { + opacity: 1; +} + +.playback-bar { + width: 100%; + bottom: 80px; + position: absolute; +} + +.player-controls__buttons { + transform: translateY(6px); + align-items: center; +} + +.playback-bar .progress-bar__fg { + background-color: var(--spice-playback-bar); +} + +.progress-bar__slider { + display: none; +} + +.Button-buttonPrimary-useBrowserDefaultFocusStyle-data-is-icon-only:hover > span { + background-color: var(--spice-text) !important; +} + +.main-home-homeHeader { + background-image: none; + transition: none; + background-color: var(--spice-main) !important; +} + +div.cover-art.shadow { + box-shadow: none; +} + +.main-entityHeader-overlay { + background: none; +} + +.main-actionBarBackground-background { + background: none !important; +} + +.main-entityHeader-backgroundColor { + background: none !important; +} + +.main-nowPlayingView-contextItemInfo:before { + background: none !important; +} + +.main-globalNav-link-icon { + background-color: var(--spice-selected-row) !important; +} + +.main-home-filterChipsSection > div { + background-color: var(--spice-main) !important; +} + +.view-homeShortcutsGrid-shortcut, +.view-homeShortcutsGrid-shortcut:hover { + background-color: var(--spice-selected-row) !important; + transition: none; + -webkit-transition: none; +} + +.LayoutResizer__resize-bar.LayoutResizer__inline-start { + display: none; +} + +div[style*="--lyrics-color"] { + --lyrics-color-passed: var(--spice-text) !important; + --lyrics-color-active: #fbf1c7 !important; + --lyrics-color-inactive: var(--spice-text) !important; + --lyrics-color-background: var(--spice-main) !important; +} + +.main-globalNav-historyButtons .main-globalNav-icon:disabled { + opacity: 0 !important; +} + +.main-topBar-button, +.main-topBar-button:hover, +figure.main-avatar-avatar, +figure.main-avatar-avatar > div, +button.main-topBar-buddyFeed { + height: 48px !important; + width: 48px !important; +} + +button.main-topBar-buddyFeed > svg { + height: 24px !important; + width: 24px !important; +} + +div.notistack-CollapseWrapper div[role=status] > div div:first-child div.x-entityImage-imageContainer { + display: none; +} + +div.notistack-CollapseWrapper div[role=status] > div div:last-child button { + color: var(--spice-main) !important; + font-weight: 400 !important; + text-decoration: underline; +} + +.main-entityHeader-image { + border-radius: 0; +} + +.main-actionBar-ActionBar { + padding-top: 5px; +} + +div[aria-labelledby=listrow-title-top-artists-this-month], div[aria-labelledby=listrow-title-top-tracks-this-month] { + margin-bottom: 20px; +} + +.Root__right-sidebar { + right: -15px; +} + +.main-nowPlayingView-section, .main-nowPlayingView-aboutArtistV2TextContent { + background-color: var(--spice-selected-row); + border-radius: 4px; +} + +.main-buddyFeed-header { + display: none; +} + +.main-buddyFeed-friendActivity { + padding: 8px 0; +} + +.main-buddyFeed-avatarContainer { + top: 10px; +} + +#Desktop_LeftSidebar_Id { + left: -10px; +} + +.main-yourLibraryX-libraryRootlist { + padding: 0; +} + +div.HeaderArea > div[class*=TrailingSlot] { + width: 24px; +} + +button[aria-label="Expand folder"], button[aria-label="Collapse folder"] { + width: 100% !important; + height: 100% !important; + padding: 0 !important; + background-color: var(--spice-text); +} + +button[aria-label="Expand folder"] > span, button[aria-label="Collapse folder"] > span { + display: none !important; +} + +.x-entityImage-imageContainer { + border-radius: 0px; +} + +div#context-menu > form > div:last-child { + height: 36px; + padding: 0; + background-color: var(--spice-main); + border-radius: 0 0 4px 4px; +} + +div#context-menu > form > div:last-child > button { + font-weight: 400; + text-decoration: underline; + margin: auto; +} + +div#context-menu > form > div:last-child > button > span { + background-color: var(--spice-main); + color: var(--spice-text); + padding: 0; + left: -5px; +} + +.DquSH3YjnaIIXMZiOvwA { + background-color: var(--spice-main); + border: var(--spice-selected-row) 3px solid; + border-radius: 4px; +} + +div#context-menu > form > div:first-child, +ul[role=menu][aria-label="Add to playlist menu"] > div:first-child { + display: none; +} + +div.x-filterBox-filterInputContainer { + left: 2px; + top: 11px; +} + +div.HeaderArea p[data-encore-id=listRowTitle] { + font-size: 14px !important; + font-weight: 400 !important; +} + +div[data-encore-id=listRow][role=group] > div.HeaderSideArea { + display: none; +} + +div.BoxComponent-group-listRow-naked-minBlockSize_48px { + gap: 0; + grid-template-rows: 16px !important; + border-radius: 4px; + min-block-size: 0; + padding-block: 12px; +} + +ul[role=menu][aria-label="Add to playlist menu"] { + padding-top: 8px; +} + +form .main-topBar-searchBar { + background-color: var(--spice-selected-row) !important; +} + +form:hover .main-topBar-searchBar { + background-color: var(--spice-selected-row) !important; +} + +.IconContainer-trailing > div { + border-inline-start: none; + -webkit-border-start: none; +} + +div[data-testid=top-result-card] > div { + background-color: var(--spice-selected-row); +} + +div > button[aria-label=Remove] { + background-color: var(--spice-selected-row); +} + +span.x-toggle-indicatorWrapper { + width: 24px; + background-color: var(--spice-selected-row); +} + +input:hover:not([disabled], :active) ~ .x-toggle-indicatorWrapper { + background-color: var(--spice-selected-row); +} + +span.x-toggle-indicator { + display: none; +} + +.main-entityHeader-shadow { + box-shadow: none; +} + +.main-buddyFeed-buddyFeed { + box-shadow: none; +} + +.main-cardImage-imageWrapper { + box-shadow: none; +} + +div.main-card-PlayButtonContainer { + box-shadow: none !important; +} + +.main-contextMenu-menu { + box-shadow: none; +} + +.main-yourLibraryX-libraryContainer > div:first-child { + box-shadow: none; +} + +.x-entityImage-imageContainer { + box-shadow: none; +} + +div.notistack-CollapseWrapper div[role=status] > div { + box-shadow: none; +} + +.DquSH3YjnaIIXMZiOvwA { + box-shadow: none; +} + +.main-trackList-trackListRow:focus-within, .main-trackList-trackListRow:hover, +.main-trackList-selected, .main-trackList-selected:hover { + background-color: var(--spice-selected-row) !important; +} + +.main-trackList-trackListHeader { + background-color: var(--spice-main) !important; +} + +.main-trackList-playingIcon { + filter: brightness(0) saturate(100%) invert(89%) sepia(25%) saturate(349%) hue-rotate(351deg) brightness(89%) contrast(87%); +} + +.main-trackList-rowImage { + border-radius: 0 !important; + height: 48px; + width: 48px; +} + +.main-trackList-rowSectionEnd > button { + opacity: 1 !important; +} + +:root { + --spice-rgb-selected-row: var(--spice-text); +} + +#main { + overflow: hidden; +} + +.encore-dark-theme, .encore-light-theme, .encore-inverted-light-set { + --text-subdued: var(--spice-text); + --essential-subdued: var(--spice-text); + --background-highlight: var(--spice-selected-row) !important; +} + +div[data-testid=infinite-scroll-list] hr { + display: none; +} + +.os-scrollbar { + opacity: 0 !important; +} + +.main-topBar-background { + background-color: var(--spice-main) !important; +} + +div[aria-label="Already added"] > div { + background-color: var(--spice-main); + color: var(--spice-text); +} + +div[aria-label="Already added"] > div > div > button.main-button-tertiary { + background-color: var(--spice-text); + color: var(--spice-main); +} + +span.vim-key { + background-color: var(--spice-selected-row); +}/*# sourceMappingURL=user.css.map */ \ No newline at end of file diff --git a/Gruvify/user.css.map b/Gruvify/user.css.map new file mode 100644 index 00000000..f87b5b0f --- /dev/null +++ b/Gruvify/user.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["_cards.sass","user.css","_contextmenu.sass","_cover.sass","_duration.sass","_gradient.sass","_home.sass","_lyrics.sass","_navigator.sass","_notif.sass","_playlist.sass","_profile.sass","_rightbar.sass","_rootlist.sass","_save.sass","_search.sass","_settings.sass","_shadow.sass","_tracks.sass","user.sass"],"names":[],"mappings":"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","file":"user.css"} \ No newline at end of file