Compare commits

..

96 Commits

Author SHA1 Message Date
ffd9a441fd update nvim 2025-11-18 12:50:11 +01:00
f7916cb9db add another arch ascii art, but with lower resolution to be usable in a tty 2025-11-18 12:50:11 +01:00
96d02aae9e flip flop java prime 2025-11-18 12:50:11 +01:00
7e14d394f7 define an alias for info 2025-11-18 12:50:11 +01:00
54fbef9b9e use command for detection over which 2025-11-18 12:50:11 +01:00
2584c9384e write comment 2025-11-18 12:45:16 +01:00
4731b849ee add shrug to xcompose 2025-11-18 12:45:07 +01:00
11bd26b123 add indentical to sybol to xcompose 2025-11-18 12:45:02 +01:00
0b7fff402a rework volume control 2025-11-18 12:44:46 +01:00
286357aa72 edit editorconfig to have JSON have tab width of eight 2025-11-13 12:13:35 +01:00
547ff80288 fix keybind to open 2025-11-13 10:48:52 +01:00
57b8fd050f update submodules 2025-11-12 12:10:06 +01:00
8672c1710a update lazygit 2025-11-12 12:09:58 +01:00
d89afea793 add LF configuration 2025-11-12 12:09:40 +01:00
f36f089d83 add roman numerals to xcompose 2025-10-17 12:16:38 +02:00
5a0b23c862 update i3 2025-10-17 12:16:32 +02:00
12124fd9aa add W.I.P. projection for europe. 2025-10-16 23:31:06 +02:00
2d779645f5 update i3 2025-10-16 23:30:51 +02:00
9d68e5b149 fix typo in satalite wp update 2025-10-16 23:30:48 +02:00
d4c61e5fbc update nvim 2025-10-16 23:30:27 +02:00
e14e17e340 comment out rando lines in actrc 2025-10-13 14:33:27 +02:00
5c1a53fc17 add lines to fastfetch 2025-10-13 14:33:17 +02:00
6388ef5e14 set a font size in kitty to what I am comfortable with
Kitty did not have a font size set, and I kept accedentally zooming in,
and then not knowing what it was set as and what I was comfortable with.
This ensures the window always opens with my preffered scale.
2025-10-13 14:33:07 +02:00
b954326d72 update i3 2025-10-13 14:32:11 +02:00
6bab7c7dc8 update nvim 2025-10-13 14:32:06 +02:00
41cc28dc03 update clang-format to be more in line with my current preferences / guidelines 2025-10-13 14:31:59 +02:00
932ce683af show the cursor in the the shell prompt 2025-10-13 14:31:20 +02:00
9e766b53af fix: spelling 2025-10-13 14:31:06 +02:00
b7ed739b2f fix: MULTI+.+= does not give DOT OPERATOR, as I expected, but BULLET. BULLET has been moved to ** and DOT OPERATOR set at .= 2025-10-13 14:30:58 +02:00
cd8e5fd322 fix: OMEGA is using the wrong UTF code 2025-10-13 14:30:07 +02:00
d22940e0db minor symbol name fixes 2025-10-13 14:29:56 +02:00
d1283e2e0a expand the greek alphabet, now all symbols have been added.
note: I thought I did this last time.
2025-10-13 14:29:22 +02:00
2ff35a55ef set NVIDIA as primary gpu 2025-09-18 14:19:38 +02:00
0553463958 modify inputrc to have completions to be coloured, and case-insensitive. 2025-09-18 14:19:27 +02:00
39a83a3398 remove setting the tab width for makefile to four 2025-09-18 14:18:48 +02:00
da521004c0 comment out the java-prime exported envs, since we're now running on just dedicated graphics 2025-09-18 14:18:34 +02:00
19e0dab102 update nvim 2025-09-18 14:17:52 +02:00
e3040bde7b rewrite polybar networks once again 2025-09-18 14:17:47 +02:00
21814db5b3 removal of hyfetch, and preferring to use a more customised fastfetch configuration 2025-09-03 13:32:13 +02:00
b2720b485e add lls alias 2025-08-28 16:05:11 +02:00
57785b6bab modify history settings 2025-08-28 10:02:59 +02:00
d6cc49e142 update submodules 2025-08-27 10:37:40 +02:00
c5ddc45f58 fix: polybar ethernet connections 2025-08-24 12:31:35 +02:00
ad29f488c9 update cpusetcores binary 2025-08-23 22:13:39 +02:00
22aa216945 update nvim 2025-08-23 22:13:32 +02:00
4160333b7d update feh on errors with satalite-wp-update 2025-08-23 22:13:26 +02:00
67d6dc8b14 add another definition for USB ethernet device 2025-08-13 13:43:51 +02:00
a4cd6d8f47 update submodules 2025-08-13 13:42:45 +02:00
9f076891a5 fix double comment 2025-08-13 12:47:35 +02:00
caef66b501 add an alias for rm to set -I, which is less intruisive than -i 2025-08-11 11:34:40 +02:00
e8f7f5fb37 fix: formatting 2025-08-11 10:38:24 +02:00
5304603970 enable globstar in bashrc 2025-08-11 10:37:41 +02:00
b37fe4cded update i3 2025-08-05 22:19:19 +02:00
cf34e15de2 fix: submodule paths were incorrect 2025-08-05 22:19:15 +02:00
30aa878adf fix: git modules url's weren't reflective of what they actually are 2025-08-05 22:19:15 +02:00
369cd2cd49 change projection settings to be better parameterised 2025-08-05 14:17:37 +02:00
8ef17d634d update nvim 2025-08-05 14:17:18 +02:00
84b9538547 make UTF-8 and LF uppercase 2025-08-02 01:28:53 +02:00
85123cc3cd add some extra languages around the C-based languages 2025-08-02 01:28:41 +02:00
147a26986a remove redundant indent_size=tab 2025-08-02 01:28:15 +02:00
7ee6cb61ae add comments 2025-08-02 01:28:03 +02:00
5a3dedb5eb update nvim 2025-08-02 01:01:07 +02:00
27f3e12eb2 add cs to the forcibly use category 2025-08-02 01:00:59 +02:00
5b9dd92c6f add a comment for a forces 4 spaces catagory 2025-08-02 01:00:44 +02:00
a68e286e1c correct definition order 2025-08-02 00:58:39 +02:00
24753d9d0c split apart the web languages into it's own definition 2025-08-02 00:54:31 +02:00
b990c56e44 remove markdown from the json/jsonc/css/scss column 2025-08-02 00:53:35 +02:00
680b94d2eb set tab width to 4 for those that were <4 2025-08-02 00:52:47 +02:00
5283050311 edit clang-format to be on-par with my current preferred style 2025-07-24 12:50:14 +02:00
d51ce2986f add notifications for audio (they're rubbish, but eh) 2025-07-21 14:38:29 +02:00
1bd89db726 move some desktop i3 behaviour into different shell scripts 2025-07-21 13:20:38 +02:00
9b51e31f1a make shell scripts more POSIX-compatible, and use tabs instead of spaces 2025-07-21 12:49:11 +02:00
aefe0e6dce we don't need to specify user 2025-07-18 11:07:17 +02:00
28877b9e9e remove include header warnings, as they're often incorrect 2025-07-18 11:06:43 +02:00
b34c71a440 add some clang-tidy options to clangd config 2025-07-18 11:06:13 +02:00
4178678640 add parameters to be able to fill the whole screen 2025-07-15 22:59:04 +02:00
1192fff9c6 modify parameters to fit within my monitor 2025-07-15 22:55:15 +02:00
0a18c01d69 parameterise the projection settings 2025-07-15 22:55:15 +02:00
84fad656ab set the output directory to static due to cronnie problems 2025-07-15 21:47:24 +02:00
5fed9922fb update submodules 2025-07-15 21:47:24 +02:00
8023ecebe9 make background image transparent 2025-07-14 15:58:01 +02:00
6ad8382023 convert is deprecated, use magick 2025-07-14 15:44:27 +02:00
cb80d0f1d8 add background removal 2025-07-14 13:58:00 +02:00
c9e06bfc28 update satalite-wp-update script to use the proper API ends 2025-07-14 13:56:38 +02:00
3a84c55afc update nvim 2025-07-14 11:43:38 +02:00
4041a9bd39 add jsonc to editorconfig 2025-07-14 11:41:56 +02:00
6ecd64652f change default tab_width to 8 2025-07-14 11:41:25 +02:00
05e375dd5b remove inconsistent tab widths form editorconfig 2025-07-14 11:41:11 +02:00
e8855a231d add gitea key to SSH_AUTH_SOCK 2025-07-14 11:40:51 +02:00
3e9446dc89 configure gitconfig to only use gpgSign on tags. 2025-07-07 15:36:11 +02:00
e52d797f42 update nvim 2025-07-03 14:08:18 +02:00
e124e07715 update clang format formatting rules to be up to par with my current preferences 2025-07-03 10:43:21 +02:00
2e82fc5ff4 strip end of line comments from clang-format 2025-07-03 10:07:31 +02:00
f8c8caa447 include xprofile 2025-07-03 10:02:47 +02:00
ba471b2ee5 remove localtmp 2025-07-03 10:02:36 +02:00
f79789fd27 write satalite connect script 2025-06-27 11:40:20 +02:00
112 changed files with 3455 additions and 1337 deletions

View File

@@ -1,42 +0,0 @@
#!/bin/bash
#
# ~/.bash_aliases
# this file is sourced in ~/.bashrc and defines aliases used by the shell.
#
# replace some default tools with different ones
alias grep='rg'
alias ls='eza -Abhg --colour=auto'
# set default options
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
alias diff='diff --color'
alias info='info --vi-keys'
alias make='make -j'
alias ip='ip -c'
# aliases to avoid mistakes
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -I'
# aliases for quitting
alias :qa='exit'
alias :q='exit'
alias qa='exit'
alias q='exit'
alias quit='exit'
# alternate versions of writing the same thing
alias lls='ls -l'
alias ll='ls -l'
# aliases basically for things that I am too lazy to type fully
alias py3='python3'
alias batman='bat -l man'
alias icat='kitten icat'
alias ..='cd ..'
alias ....='cd ../..'
alias ......='cd ../../..'
alias ........='cd ../../../..'

View File

@@ -1,4 +1,4 @@
#!/bin/sh
# shellcheck shell=bash
#
# ~/.bash_logout
# sourced when an interactive login shell exits, or a non-interactive login shell executes `exit`

View File

@@ -1,4 +1,4 @@
#!/bin/sh
# shellcheck shell=bash
# shellcheck disable=1091
#
# ~/.bash_profile
@@ -6,14 +6,14 @@
#
# https://specifications.freedesktop.org/basedir-spec/latest/
export XDG_CONFIG_HOME="$HOME/.config" # configuration files are stored (default: ~/.config)
export XDG_DATA_HOME="$HOME/.local/share" # data files are stored (default: ~/.local/share)
export XDG_BIN_HOME="$HOME/.local/bin" # binary executable files, not within the specification, but added for consistency
export XDG_STATE_HOME="$HOME/.var/lib" # state data that should persist between (application) restarts, but not important enough to be stored in XDG_DATA_HOME (default: ~/.local/state)
export XDG_CACHE_HOME="$HOME/.var/cache" # user-specific non-essential (cached) data.
export PATH="$XDG_BIN_HOME:$PATH" # add our bin in front of PATH, making it take precedence
export XDG_CONFIG_HOME="$HOME/etc" # configuration files are stored (default: ~/.config)
export XDG_DATA_HOME="$HOME/usr/share" # data files are stored (default: ~/.local/share)
export XDG_BIN_HOME="$HOME/usr/bin" # binary executable files, not within the specification, but added for consistency
export XDG_STATE_HOME="$HOME/var/lib" # state data that should persist between (application) restarts, but not important enough to be stored in XDG_DATA_HOME (default: ~/.local/state)
export XDG_CACHE_HOME="$HOME/var/cache" # user-specific non-essential (cached) data.
export PATH="$XDG_BIN_HOME:$PATH" # add our bin in front of PATH, making it take precedence
if command -v nvim >/dev/null; then
if command -v nvim &>/dev/null; then
export EDITOR=nvim # use neovim as an editor
export VISUAL=nvim # use neovim for visual-based editors
export MANPAGER='nvim +Man!' # use neovim as a manual pager
@@ -22,17 +22,14 @@ fi
# coloured GCC warnings and errors
export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
# Microsoft bullshit
# export Microsoft's bullshit outta here
export DOTNET_CLI_TELEMETRY_OPTOUT=1
export VCPKG_DISABLE_METRICS=1
export VCPKG_ROOT="$XDG_DATA_HOME/vcpkg"
export PATH="$PATH:$VCPKG_ROOT"
export PATH+=":$VCPKG_ROOT"
# if executing interactively
# execute .bashrc in the current login context
case $- in
*i*) ;;
*) return ;;
esac
[ -z "${PS1-}" ] && return
[ -f "$HOME/.bashrc" ] && . "$HOME/.bashrc"
[[ $- != *i* ]] && return
[[ -z ${PS1-} ]] && retrun
[[ -f $HOME/.bashrc ]] && . "$HOME/.bashrc"

136
.bashrc
View File

@@ -1,81 +1,109 @@
#!/bin/bash
# shellcheck disable=SC1091,SC2155
# shellcheck shell=bash
# shellcheck disable=SC1090,SC1091
#
# ~/.bashrc
# sourced upon launch of an interactive shell, which isn't a login shell has been executed
#
case $- in
*i*) ;;
*) return ;;
esac
[ -z "${PS1-}" ] && return
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
[[ -z "${PS1-}" ]] && return
# wrapper for lazily loading __git_ps1 whenever it is actually needed
_lazy_git_ps1() {
if [[ -z $__GIT_PROMPT_SOURCED ]]; then
. /usr/share/bash-completion/completions/git &>/dev/null
. /usr/share/git/completion/git-prompt.sh &>/dev/null
if [ -d .git ] || git worktree list &>/dev/null; then
export __GIT_PROMPT_SOURCED=1
__git_ps1 "$@"
fi
else
__git_ps1 "$@"
fi
}
# lazy loading of ssh agents
__lazy_ssh_agent() {
if [ -z "$SSH_AUTH_SOCK" ]; then
eval "$(ssh-agent -s)" >/dev/null
ssh-add "$HOME/.ssh/github" >/dev/null 2>&1
ssh-add "$HOME/.ssh/gitea" >/dev/null 2>&1
ssh-add "$HOME/.ssh/admin@homeserver" >/dev/null 2>&1
_lazy_ssh() {
if [[ -z $SSH_AUTH_SOCK ]]; then
eval "$(ssh-agent -s)" &>/dev/null
ssh-add "$HOME/.ssh/github" &>/dev/null
ssh-add "$HOME/.ssh/gitea" &>/dev/null
ssh-add "$HOME/.ssh/admin@homeserver" &>/dev/null
fi
}
# aliases so the function is called beforehand
alias ssh='__lazy_ssh_agent; ssh'
alias sudo='__lazy_ssh_agent; sudo'
alias ssh='_lazy_ssh; ssh'
alias sudo='_lazy_ssh; sudo'
# colourises make output, so when it prints via
# $(warning) or $(error), it is formatted properly
__colour_make() {
# alias to colourise make output
_make() {
make "$@" 2> >(sed -E \
-e "s/^([Mm]akefile:[0-9]+:.*)/\x1b[33m\1\x1b[0m/" \
-e "s/^.*error.*$/\x1b[31m&\x1b[0m/I" >&2)
}
alias make='__colour_make'
# lazily loads the git utilities, to prevent slowdowns
__lazy_git_ps1() {
if [ -z "$__GIT_PROMPT_SOURCED__" ]; then
if [ -d .git ] || git worktree list &>/dev/null; then
. /usr/share/bash-completion/completions/git &>/dev/null
. /usr/share/git/completion/git-prompt.sh &>/dev/null
export __GIT_PROMPT_SOURCED__=1
__git_ps1
fi
else __git_ps1; fi
return 0
}
# regenerates the PS1 prompt
__regenprompt() {
local err=$? # acquire the error code of the last executed command
local git=$(__lazy_git_ps1)
# Format the error code to be in the last column of the terminal
# this shall be printed as non-printable characters, so won't effect text wrapping.
if [ $err -ne 0 ]; then
err="\033[$((COLUMNS - 4))G\033[01;31m${err}\033[0G"
else unset err; fi
PS1="\[$err\]" # error code
PS1="$PS1\[\033[?25h\]" # show cursor
PS1="$PS1\[\033[01;35m\]\u@\h" # user@host
PS1="$PS1\[\033[00m\]:" # separator
PS1="$PS1\[\033[01;34m\]\w" # working directory
PS1="$PS1\[\033[01;93m\]${git}" # git branch
PS1="$PS1\[\033[00m\]\$ " # shell sign
}
PROMPT_COMMAND=__regenprompt
#
# envs
#
# set PS1
PS1='\[\033[?25h\]' # show cursor
PS1="$PS1"'\[\033[01;35m\]\u@\h' # user@host
PS1="$PS1"'\[\033[00m\]:' # separator
PS1="$PS1"'\[\033[01;34m\]\w' # working directory
PS1="$PS1"'\[\033[01;93m\]$(_lazy_git_ps1)' # github branch
PS1="$PS1"'\[\033[00m\]\$ ' # shell sign
# history settings
HISTSIZE=2048
HISTCONTROL=erasedups:ignoredups:ignorespace
HISTIGNORE='exit*:clear*:\:*:echo*'
#
# bash completion
#
. /home/user/.local/share/vcpkg/scripts/vcpkg_completion.bash &>/dev/null # fucking vcpkg
shopt -s checkwinsize # check the window size after each command (and if necessary, the values of LINES and COLUMNS)
shopt -s globstar # enable globstar (**/*)
[ -f "$HOME/.bash_aliases" ] && . "$HOME/.bash_aliases"
#
# aliases
#
# aliases for colour
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
alias ls='eza -Abhg --colour=auto'
alias grep='rg'
alias diff='diff --color'
alias ip='ip -c'
# application aliases
alias ncdu='ncdu --color=dark -t 16'
alias bat='bat --wrap never --tabs 4 --theme gruvbox-dark'
alias make='_make -j'
# aliases to avoid mistakes
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -I'
alias :qa='exit'
alias qa='exit'
alias :q='exit'
alias q='exit'
alias py3='python3'
alias info='info --vi-keys'
alias batman='bat -l man'
# quality of life short-hands
alias ..='cd ..'
alias ....='cd ../..'
alias ......='cd ../../..'
alias ........='cd ../../../..'
alias lls="ls -l"
alias ll="ls -l"
# cute lil hyfetch :3
[ "$TERM" == "xterm-kitty" ] && fastfetch
[[ $TERM == "xterm-kitty" ]] && fastfetch

View File

@@ -16,7 +16,6 @@ Checks:
- '-bugprone-easily-swappable-parameters'
- '-clang-analyzer-security.insecureAPI.*'
- '-misc-include-cleaner'
- '-bugprone-reserved-identifier'
WarningsAsErrors: ''
HeaderFileExtensions:
- ''

View File

@@ -1,21 +0,0 @@
# define modifier keys
set $mod mod4
set $alt mod1
# define workspaces
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
set $ws11 "11"
set $ws12 "12"
# include different modules (may not include definitions shared across multiple units)
include $XDG_CONFIG_HOME/i3/config.d/*.conf
exec --no-startup-id i3-msg 'workspace $ws1'

View File

@@ -1,29 +0,0 @@
# assign custom classes to specific workspaces
# to more easily assign apps to specific workspaces temporarily
assign [class="app-ws1"] $ws1
assign [class="app-ws2"] $ws2
assign [class="app-ws3"] $ws3
assign [class="app-ws4"] $ws4
assign [class="app-ws5"] $ws5
assign [class="app-ws6"] $ws6
assign [class="app-ws7"] $ws7
assign [class="app-ws8"] $ws8
assign [class="app-ws9"] $ws9
assign [class="app-ws10"] $ws10
assign [class="app-ws11"] $ws11
assign [class="app-ws12"] $ws12
# assign applications to specific workspaces
# TODO: I'd prefer to switch to the designated workspace when it's launched in another workspace.
# assign [class="Spotify"] $ws8
assign [class="vesktop"] $ws9
# autostart applications on a specific workspace
exec --no-startup-id i3-msg 'workspace $ws3; exec thunderbird'
exec --no-startup-id i3-msg 'workspace $ws2; exec firefox --new-window'
exec --no-startup-id i3-msg 'workspace $ws1; exec kitty --single-instance'
# autostart applications in general (usually always assigned to a workspace)
exec --no-startup-id flatpak run dev.vencord.Vesktop
# exec --no-startup-id spotify
exec --no-startup-id blueman-applet

View File

@@ -1,36 +0,0 @@
# set the font
font pango:JetBrainsMonoNLNerdFont-Regular 10
# launch polybar
exec_always --no-startup-id $XDG_CONFIG_HOME/polybar/launch.sh
# set the border width (and remove title bars)
default_orientation vertical
for_window [class=".*"] border pixel 1
# for_window [floating] border pixel 5
for_window [class=".*"] split toggle
set $scr1 "eDP-1"
set $scr2 "HDMI-1"
# set xrandr settings
exec_always xrandr --auto \
--output $scr1 --dpi 96 --primary \
--output $scr2 --dpi 96 --above $scr1
# attach each workspace to a specific screen
workspace $ws1 output $scr1
workspace $ws2 output $scr1
workspace $ws3 output $scr1
workspace $ws4 output $scr1
workspace $ws5 output $scr1
workspace $ws6 output $scr1
workspace $ws7 output $scr1
workspace $ws8 output $scr1
workspace $ws9 output $scr1
workspace $ws10 output $scr2
workspace $ws11 output $scr2
workspace $ws12 output $scr2
# update the satellite render
exec_always satallite-wp-update

View File

@@ -1,79 +0,0 @@
#
# OS-shortcuts
#
# workspace navigation
bindsym $mod+ctrl+h workspace prev
# TODO: multi-monitor setup using J/K?
bindsym $mod+ctrl+l workspace next
# window navigation
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
# move windows
bindsym $mod+shift+h move left
bindsym $mod+shift+j move down
bindsym $mod+shift+k move up
bindsym $mod+shift+l move right
# closing windows (kill uses WM_DELETE, if available) (split is toggled for quasi alternating layout)
bindsym $mod+q split toggle kill
bindsym $alt+F4 split toggle kill
# toggle between the different possible splits
bindsym $mod+F10 fullscreen toggle
bindsym $mod+e layout toggle split
# system commands
bindsym $mod+shift+c reload
bindsym $mod+shift+r restart
bindsym $mod+shift+e exit
bindsym $mod+shift+f floating toggle
bindsym $mod+o exec --no-startup-id xlock -mode petri -delay 20000 -size 2 -ncolors 16 -saturation 0.4 -echokeys -echokey '*' -usefirst
#
# XF86 key actions
#
# volume control
bindsym XF86AudioRaiseVolume exec --no-startup-id x-volume up
bindsym XF86AudioLowerVolume exec --no-startup-id x-volume down
bindsym XF86AudioMute exec --no-startup-id x-volume mute
bindsym XF86AudioMicMute exec --no-startup-id x-mic-mute
# brightness control
bindsym XF86MonBrightnessUp exec --no-startup-id x-brightness up
bindsym XF86MonBrightnessDown exec --no-startup-id x-brightness down
# media controls
bindsym XF86AudioPlay exec playerctl play-pause
bindsym XF86AudioPause exec playerctl play-pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous
# app launchers and such
bindsym XF86Calculator exec --no-startup-id kitty -e 'calc'
#
# apps
#
# pickers
bindsym $mod+F5 exec --no-startup-id rofi -show window
bindsym $mod+space exec --no-startup-id rofi -show drun
bindsym $mod+period exec --no-startup-id rofi -show emoji -config emoji
# terminal
bindsym $mod+Return exec --no-startup-id kitty --single-instance
bindsym $mod+t exec --no-startup-id kitty --single-instance
bindsym $mod+backslash exec --no-startup-id kitty --single-instance
# internet browser
bindsym $mod+b exec --no-startup-id firefox --new-window
bindsym $mod+shift+b exec --no-startup-id firefox --new-window --private-window
# screenshot
bindsym $mod+shift+s exec --no-startup-id maim -f png -s | xclip -selection clipboard -t image/png
bindsym Print exec --no-startup-id maim -f png | xclip -selection clipboard -t image/png
bindsym $mod+ctrl+shift+s exec --no-startup-id maim -f png -s > $(xdg-user-dir PICTURES)/screenshot.png
bindsym $mod+Print+s exec --no-startup-id maim -f png > $(xdg-user-dir PICTURES)/screenshot.png

View File

@@ -1,27 +0,0 @@
# workspace switch keybinds
bindsym $mod+1 workspace $ws1
bindsym $mod+2 workspace $ws2
bindsym $mod+3 workspace $ws3
bindsym $mod+4 workspace $ws4
bindsym $mod+5 workspace $ws5
bindsym $mod+6 workspace $ws6
bindsym $mod+7 workspace $ws7
bindsym $mod+8 workspace $ws8
bindsym $mod+9 workspace $ws9
bindsym $mod+0 workspace $ws10
bindsym $mod+minus workspace $ws11
bindsym $mod+equal workspace $ws12
# move containers to workspaces
bindsym $mod+shift+1 move container to workspace $ws1
bindsym $mod+shift+2 move container to workspace $ws2
bindsym $mod+shift+3 move container to workspace $ws3
bindsym $mod+shift+4 move container to workspace $ws4
bindsym $mod+shift+5 move container to workspace $ws5
bindsym $mod+shift+6 move container to workspace $ws6
bindsym $mod+shift+7 move container to workspace $ws7
bindsym $mod+shift+8 move container to workspace $ws8
bindsym $mod+shift+9 move container to workspace $ws9
bindsym $mod+shift+0 move container to workspace $ws10
bindsym $mod+shift+minus move container to workspace $ws11
bindsym $mod+shift+equal move container to workspace $ws12

View File

@@ -1,11 +0,0 @@
[*]
charset = UTF-8
end_of_line = LF
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = tab
indent_size = tab
[*.lua]
indent_style = tab
indent_size = tab

View File

@@ -1,5 +0,0 @@
.luarc.json
nvim
*.vim
lazy-lock.json

View File

@@ -1,13 +0,0 @@
# Quinn's NeoVim configuration
### Required/Recommended tools:
- cURL
- git
- C compiler
- Rust toolchain
- lf
- fd
- clang-format
- rustfmt
- shfmt
- yq
- lua5.1

View File

@@ -1,10 +0,0 @@
# TODO
- [X] keybind to edit multiple lines at once (have multiple cursors)
- [ ] keybind to rename symbol
- [ ] have TAB in insert mode automatically bring me up to the right indentation.
- [X] debugger
- [X] launch on f5
- [x] breakpoints
- [X] can set breakpoints
- [X] breakpoints look nice
- [ ] plugin for markdown to make taking notes like these easier?

View File

@@ -1,12 +0,0 @@
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
Autocmd = vim.api.nvim_create_autocmd
Map = vim.keymap.set
---@module 'gruvbox'
---@class userdata
---@field palette GruvboxPalette
_G.userdat = {}
require('config')

View File

@@ -1,73 +0,0 @@
-- highlight when yanking text
Autocmd('TextYankPost', {
desc = 'highlight when yanking text',
group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
callback = function()
vim.highlight.on_yank()
end,
})
-- disable new line comment
Autocmd("BufEnter", {
desc = "disable bew line comment",
callback = function()
vim.opt.formatoptions:remove({ "c", "r", "o" })
end,
})
-- go to last location when opening a buffer
Autocmd("BufReadPost", {
desc = "go to last location when opening a buffer",
callback = function()
local mark = vim.api.nvim_buf_get_mark(0, '"')
local lcount = vim.api.nvim_buf_line_count(0)
if mark[1] > 0 and mark[1] <= lcount then
pcall(vim.api.nvim_win_set_cursor, 0, mark)
end
end,
})
-- close certain windows with q
Autocmd('FileType', {
desc = 'close certain windows with q',
pattern = { 'help', 'man', 'qf', 'query', 'messages', 'netrw' },
callback = function(evt)
vim.bo[evt.buf].buflisted = false
Map('n', 'q', '<cmd>close<cr>')
end
})
-- disable spellcheck in terminal
Autocmd('TermOpen', {
callback = function()
vim.opt.spell = false
end,
})
-- closes the first buffer if it is empty
Autocmd('BufEnter', {
pattern = '*',
callback = function()
local bufs = vim.api.nvim_list_bufs()
-- check if the first buffer is an empty one
if #bufs == 0 and vim.api.nvim_get_option_value('buftype', { buf = bufs[1] }) and vim.api.nvim_buf_get_name(bufs[1]) then
vim.api.nvim_buf_delete(bufs[1], {})
end
end,
})
---@type table<string, string>
local filemap = {
['*.h'] = 'c',
['*/i3/**.conf'] = 'i3config'
}
for pat, file in pairs(filemap) do
Autocmd('BufRead', {
pattern = pat,
callback = function()
vim.bo.filetype = file
end
})
end

View File

@@ -1,4 +0,0 @@
require('config.opts')
require('config.maps')
require('config.autocmds')
require('config.lazy')

View File

@@ -1,24 +0,0 @@
-- bootstrap lazy
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath }
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ 'Failed to clone lazy.nvim:\n', 'ErrorMsg' },
{ out, 'WarningMsg' },
}, true, {})
return 1
end
end
vim.opt.rtp:prepend(lazypath)
require('lazy').setup({
change_detection = { enabled = false },
defaults = {
lazy = true,
},
spec = { { import = 'plugin' } },
})
Map('n', '<leader>L', '<cmd>Lazy<cr>', { desc = 'open Lazy' })

View File

@@ -1,51 +0,0 @@
-- unmap arrow keys in non-insert modes
Map({ 'n', 'v' }, '<up>', '<nop>')
Map({ 'n', 'v' }, '<down>', '<nop>')
Map({ 'n', 'v' }, '<left>', '<nop>')
Map({ 'n', 'v' }, '<right>', '<nop>')
-- tab management / navigation
Map('n', '<c-t>', '<cmd>enew<cr>', { desc = 'create a new buffer' })
Map('n', '<tab>', '<cmd>bnext<cr>', { desc = 'move to next buffer' })
Map('n', '<s-tab>', '<cmd>bprevious<cr>', { desc = 'move to previous buffer' })
Map('n', '<c-w>', '<cmd>bd<cr>', { desc = 'close buffer' })
Map('n', '<c-f4>', '<cmd>bd<cr>', { desc = 'close buffer' })
-- for help exiting certain modes
Map({ 'n', 'i' }, '<esc>', '<cmd>nohlsearch<cr><esc>', { desc = 'cancel search highlighting and escape' })
Map('t', '<c-esc>', '<c-\\><c-n>', { desc = 'exit terminal mode' })
-- window management
Map('n', '<m-s>', '<cmd>wincmd s<cr>', { desc = 'horizontal split' })
Map('n', '<m-v>', '<cmd>wincmd v<cr>', { desc = 'vertical split' })
Map('n', '<c-h>', '<cmd>wincmd h<cr>', { desc = 'move focus to the left window' })
Map('n', '<c-l>', '<cmd>wincmd l<cr>', { desc = 'move focus to the right window' })
Map('n', '<c-j>', '<cmd>wincmd j<cr>', { desc = 'move focus to the lower window' })
Map('n', '<c-k>', '<cmd>wincmd k<cr>', { desc = 'move focus to the upper window' })
Map('n', '<m-H>', '<cmd>wincmd H<cr>', { desc = 'move window to left' })
Map('n', '<m-L>', '<cmd>wincmd L<cr>', { desc = 'move window to right' })
Map('n', '<m-K>', '<cmd>wincmd K<cr>', { desc = 'move window to top' })
Map('n', '<m-J>', '<cmd>wincmd J<cr>', { desc = 'move window to bottom' })
-- diagnostic / lsp key bindings
Map('n', 'K', vim.lsp.buf.hover, { desc = 'symbol hover' })
Map('n', '<F2>', vim.lsp.buf.rename, { desc = 'rename symbol' })
Map('n', '<leader>lm', vim.diagnostic.open_float, { desc = 'view line\'s diagnostic messages' })
Map('n', '<leader>q', vim.lsp.buf.code_action, { desc = 'view quickfix list' })
Map('n', 'gd', vim.lsp.buf.definition, { desc = "Go to the definition" })
Map('n', 'gr', vim.lsp.buf.references, { desc = "Go to the reference" })
-- smart tabulation
Map('i', '<tab>', function()
local _, col = unpack(vim.api.nvim_win_get_cursor(0)) -- get cursor position
local isindent = vim.api.nvim_get_current_line():sub(1, col):match('^%s*$')
local tabexpnd = vim.bo.expandtab
local tabwidth = vim.bo.shiftwidth > 0 and vim.bo.shiftwidth or vim.bo.tabstop
if not tabexpnd and isindent then
return '\t'
else
local spaces = tabwidth - col % tabwidth
return string.rep(' ', spaces == 0 and tabwidth or spaces)
end
end, { expr = true, desc = "smart tabulation" })

View File

@@ -1,45 +0,0 @@
local o = vim.opt
-- set options
o.clipboard = "unnamedplus" -- keep the clipboard in sync with the one provided by the OS
o.cursorline = true -- highlight the current line
o.ignorecase = true -- whether case should be ignored whilst searching
o.list = true -- shows invisible characters
o.listchars = { -- whitespace characters
eol = nil,
trail = '~',
extends = nil,
precedes = '<',
tab = '•-',
space = '·',
nbsp = '',
}
o.number = true -- show line numbers
o.relativenumber = true -- whether line numbers are relative to the cursor
o.sessionoptions = 'buffers,curdir,folds,help,localoptions,tabpages,terminal'
o.shiftwidth = 8 -- spaces for auto-indent
o.showmode = false -- don't show mode as this is already in the status line
o.signcolumn = 'yes' -- always show the signcolumn, otherwise it shifts text all the time
o.smartcase = true -- overrides the above option if contains capital letters
o.smartindent = true -- behave a bit more nuanced with when to indent
o.spell = true -- whether spell checking is enabled
o.spellfile = vim.fn.stdpath('config') .. '/spell/user.utf-8.add'
o.spelllang = 'en_gb,nl' -- set the spell languages
o.termguicolors = true -- allows for colour in the terminal
o.timeoutlen = 300 -- number of MS to wait for a mapped sequence to complete
o.ttimeoutlen = 0 -- number of MS to wait for a key sequence to complete
o.undodir = vim.fn.stdpath('cache') .. '/undo' -- directory for undo files
o.undofile = true -- for saving the undo history
o.undolevels = 1024 -- the amount of changes that can be undone
o.updatetime = 250 -- number of MS of nothing typed to write a swap file to disk.
o.wrap = false -- whether to wrap text to a new line when it goes off-screen
vim.diagnostic.config({
underline = true, -- use underline for diagnostics
virtual_text = true, -- shows diagnostics at the end of the line
virtual_lines = false, -- shows one diagnostic per line
severity_sort = true, -- sort diagnostics by severity
update_in_insert = true, -- update diagnostics whilst in insert mode
float = true, -- options for floating windows
signs = true,
})

View File

@@ -1,44 +0,0 @@
---@type LazySpec
return {
"rmagatti/auto-session",
lazy = false,
priority = 100,
---@module "auto-session"
---@type AutoSession.Config
opts = {
enabled = true,
auto_save = true,
auto_create = true,
auto_restore = true,
auto_restore_last_session = false,
cwd_change_handling = true,
single_session_mode = false,
close_unsupported_windows = true,
suppressed_dirs = { '~/', '~/software/', '~/downloads/', '~/desktop/', '/etc/' },
close_filetypes_on_save = { 'checkhealth', 'man', 'oil' },
bypass_save_filetypes = { 'netrw', 'oil' },
auto_delete_empty_sessions = true,
purge_after_minutes = 14 * 24 * 60,
lazy_support = true,
legacy_cmds = false,
args_allow_single_directory = true,
args_allow_files_auto_save = false,
-- log_level = 'debug',
show_auto_restore_notif = true,
},
init = function()
local path = vim.fn.argv(0)
if not path or type(path) ~= 'string' then return end
local realpath = vim.uv.fs_realpath(path)
if not realpath then return end
if vim.fn.isdirectory(realpath) ~= 1 then return end
vim.fn.chdir(realpath)
vim.notify("loaded directory: '" .. realpath .. "'", vim.log.levels.INFO)
end,
}

View File

@@ -1,69 +0,0 @@
---@module 'lazy'
---@type LazySpec
return { {
'saghen/blink.cmp',
event = 'InsertEnter',
version = '*',
build = 'cargo build --release',
dependencies = {
'saghen/blink.compat',
},
---@module 'blink.cmp'
---@type blink.cmp.Config
opts = {
keymap = {
preset = 'none',
['<tab>'] = { 'accept', 'fallback' }, -- accept the snippet
['<c-space>'] = { 'show', 'show_documentation', 'hide_documentation' }, -- toggle auto-cmp manually
['<c-k>'] = { 'show_signature', 'hide_signature', 'fallback' }, -- toggle signature
['<c-n>'] = { 'select_next', 'fallback' }, -- next item
['<c-p>'] = { 'select_prev', 'fallback' }, -- previous item
['<c-f>'] = { 'scroll_documentation_down', 'fallback' }, -- forwards into the docs
['<c-b>'] = { 'scroll_documentation_up', 'fallback' }, -- backwards into the docs
['<c-e>'] = { 'cancel', 'fallback' }, -- keybind for cancelling completion
},
snippets = { preset = 'luasnip' },
sources = {
default = { 'lsp', 'path', 'snippets' },
},
completion = {
menu = {
auto_show = true, -- whether to automatically show the window when new completion items are available
border = 'rounded',
draw = {
columns = { { "kind_icon" }, { "label", "label_description", gap = 1 }, { 'kind' } },
treesitter = { 'lsp', 'snippets' },
},
},
documentation = {
auto_show = true, -- whether documentation is automatically shown when selecting a completion item
auto_show_delay_ms = 250,
treesitter_highlighting = true,
window = { border = "rounded" },
},
list = { selection = { preselect = true, auto_insert = true } },
trigger = {
show_on_insert_on_trigger_character = true,
show_on_accept_on_trigger_character = true,
show_in_snippet = false,
},
ghost_text = {
enabled = true,
show_with_selection = false, -- whether the ghost text is shown when an item is selected
show_without_selection = true, -- whether the ghost text is shown when no item is selected
show_with_menu = true, -- show ghost text when the menu is open
show_without_menu = true, -- show ghost text when the menu is closed
}
},
fuzzy = {
use_proximity = true,
frecency = { enabled = true, },
prebuilt_binaries = {
download = false, -- we are building from source
}
}
},
config = function(_, opts)
require("blink.cmp").setup(opts)
end
} }

View File

@@ -1,38 +0,0 @@
---@module 'lazy'
---@type LazySpec
return { {
'stevearc/conform.nvim', -- allows you to format a buffer
event = { 'BufWritePre' },
cmd = { 'ConformInfo' },
keys = {
{
'<leader>f',
function()
require('conform').format { async = true, lsp_format = 'fallback' } -- execute the formatter
-- vim.cmd [[keepjumps keeppatterns %s/\s\+$//e]] -- removes trailing whitespace
end,
mode = 'n',
desc = '[f]ormat buffer',
},
},
---@type conform.setupOpts
opts = {
notify_on_error = true,
formatters_by_ft = {
c = { 'clang-format' },
h = { 'clang-format' },
cpp = { 'clang-format' },
hpp = { 'clang-format' },
glsl = { 'clang-format', lsp_format = "first" },
typescript = { 'clang-format', lsp_format = "first" },
css = { 'clang-format' },
rust = { 'rustfmt' },
sh = { 'shfmt' },
python = { 'isort' },
-- json = { 'jq' },
-- yaml = { 'yq' },
toml = { 'yq' },
xml = { 'yq' },
},
}
} }

View File

@@ -1,32 +0,0 @@
---@module 'lazy'
---@type LazySpec
return { {
'ellisonleao/gruvbox.nvim',
lazy = false,
priority = 1000,
---@module 'gruvbox'
---@type GruvboxConfig
opts = {
styles = {
comments = { italic = true }
}
},
config = function(_, opts)
local colour = require('gruvbox')
colour.setup(opts)
vim.cmd.colorscheme('gruvbox')
_G.userdat.palette = colour.palette
-- non-essential configuration should be put in here
Autocmd('VimEnter', {
callback =
function()
-- spell highlight must be grey
for _, spell in pairs { 'SpellBad', 'SpellCap', 'SpellRare', 'SpellLocal' } do
vim.api.nvim_set_hl(0, spell,
{ fg = nil, bg = nil, sp = _G.userdat.palette.gray, undercurl = true })
end
end
})
end
} }

View File

@@ -1,12 +0,0 @@
---@module 'lazy'
---@type LazySpec
return { {
'folke/lazydev.nvim', -- provides the lua LSP for the neovim config.
event = 'VeryLazy',
ft = 'lua',
opts = {
library = {
{ path = '${3rd}/luv/library', words = { 'vim%.uv' } }, -- load luvit types when the `vim.uv` word is found
},
},
}, }

View File

@@ -1,5 +0,0 @@
---@type LazySpec
return { {
'ray-x/lsp_signature.nvim',
opts = { always_trigger = false }
} }

View File

@@ -1,51 +0,0 @@
---@module 'lazy'
---@type LazySpec
return { {
'neovim/nvim-lspconfig',
event = { "BufReadPre", "BufNewFile" },
dependencies = { 'saghen/blink.cmp' },
---@type table<string, boolean|vim.lsp.Config>
opts = {
['clangd'] = true,
['ccls'] = false,
['glsl_analyzer'] = true,
['rust_analyzer'] = true,
['omnisharp'] = false,
['lua_ls'] = true,
['html'] = true,
['cssls'] = true,
['ts_ls'] = true,
['jsonls'] = true,
['yamlls'] = {
settings = {
yaml = {
schemas = {
["https://json.schemastore.org/github-workflow.json"] =
"/.github/workflows/*",
["https://json.schemastore.org/clang-format"] = ".clang-format",
["https://json.schemastore.org/clang-tidy"] = ".clang-tidy",
},
},
},
},
},
---@param opts table<string,boolean|vim.lsp.Config>
config = function(_, opts)
-- store the default capabilities
local capabilities = require('blink.cmp').get_lsp_capabilities()
-- enable the LSP
for server, config in pairs(opts) do
if type(config) == 'boolean' then
vim.lsp.enable(server, config)
else
vim.lsp.enable(server, true)
vim.lsp.config[server] = vim.tbl_deep_extend('force', {}, vim.lsp.config[server],
config or {})
end
vim.lsp.config[server].capabilities = capabilities
end
end
} }

View File

@@ -1,5 +0,0 @@
return { {
'L3MON4D3/LuaSnip',
build = 'make install_jsregexp',
version = "v2.*",
} }

View File

@@ -1,150 +0,0 @@
-- Clone 'mini.nvim' manually in a way that it gets managed by 'mini.deps'
local path_package = vim.fn.stdpath('data') .. '/site/'
local mini_path = path_package .. 'pack/deps/start/mini.nvim'
if not (vim.uv or vim.loop).fs_stat(mini_path) then
vim.cmd('echo "Installing [`mini.nvim`](../doc/mini-nvim.qmd#mini.nvim)" | redraw')
local clone_cmd = {
'git', 'clone', '--filter=blob:none',
'https://github.com/nvim-mini/mini.nvim', mini_path
}
vim.fn.system(clone_cmd)
vim.cmd('packadd mini.nvim | helptags ALL')
vim.cmd('echo "Installed [`mini.nvim`](../doc/mini-nvim.qmd#mini.nvim)" | redraw')
end
require('mini.deps').setup({ path = { package = path_package } })
require('mini.ai').setup() -- enhances the use of a/i textobjects
require('mini.align').setup() -- utility to align text in various ways
require('mini.comment').setup() -- for toggling comments inline
require('mini.move').setup() -- moving lines
require('mini.operators').setup() -- duplicating lines and evaluating equations inline
require('mini.pairs').setup() -- automatic closing pairs
require('mini.surround').setup() -- surround stuff
require('mini.clue').setup({ -- shows available keybinds when performing keybind actions
window = { delay = 50 },
triggers = {
-- Leader triggers
{ mode = 'n', keys = '<Leader>' },
{ mode = 'x', keys = '<Leader>' },
-- Built-in completion
{ mode = 'i', keys = '<C-x>' },
-- `g` key
{ mode = 'n', keys = 'g' },
{ mode = 'x', keys = 'g' },
-- Marks
{ mode = 'n', keys = "'" },
{ mode = 'n', keys = '`' },
{ mode = 'x', keys = "'" },
{ mode = 'x', keys = '`' },
-- Registers
{ mode = 'n', keys = '"' },
{ mode = 'x', keys = '"' },
{ mode = 'i', keys = '<C-r>' },
{ mode = 'c', keys = '<C-r>' },
-- Window commands
{ mode = 'n', keys = '<C-w>' },
-- `z` key
{ mode = 'n', keys = 'z' },
{ mode = 'x', keys = 'z' },
},
clues = {
-- Enhance this by adding descriptions for <Leader> mapping groups
require('mini.clue').gen_clues.builtin_completion(),
require('mini.clue').gen_clues.g(),
require('mini.clue').gen_clues.marks(),
require('mini.clue').gen_clues.registers(),
require('mini.clue').gen_clues.windows(),
require('mini.clue').gen_clues.z(),
},
})
require('mini.diff').setup({ -- shows git diffs in the file
view = {
style = 'sign',
}
})
require('mini.files').setup() -- file browser
Map('n', '<leader>o', MiniFiles.open, { desc = "Open mini file browser" })
require('mini.jump').setup() -- extends f,F,t,T to work across multiple lines
require('mini.cursorword').setup() -- highlight words beneath the cursor
require('mini.icons').setup()
require('mini.indentscope').setup({
draw = {
delay = 50, -- delay in MS before writing the indicator
animation = require('mini.indentscope').gen_animation.none(),
},
})
MiniDeps.later(function()
vim.api.nvim_set_hl(0, 'MiniIndentscopeSymbol', { link = 'Whitespace' })
end)
-- TODO: show history
require('mini.notify').setup() -- has more noticeable / utilitarian / aesthetically pleasing notifications
-- Custom `^V` and `^S` symbols to make this file appropriate for copy-paste
-- (otherwise those symbols are not displayed).
local CTRL_S = vim.api.nvim_replace_termcodes('<C-S>', true, true, true)
local CTRL_V = vim.api.nvim_replace_termcodes('<C-V>', true, true, true)
local modes = setmetatable({
['n'] = { long = 'NORMAL', short = 'N', hl = 'MiniStatuslineModeNormal' },
['v'] = { long = 'VISUAL', short = 'V', hl = 'MiniStatuslineModeVisual' },
['V'] = { long = 'V-LINE', short = 'V-L', hl = 'MiniStatuslineModeVisual' },
[CTRL_V] = { long = 'V-BLOCK', short = 'V-B', hl = 'MiniStatuslineModeVisual' },
['s'] = { long = 'SELECT', short = 'S', hl = 'MiniStatuslineModeVisual' },
['S'] = { long = 'S-LINE', short = 'S-L', hl = 'MiniStatuslineModeVisual' },
[CTRL_S] = { long = 'S-BLOCK', short = 'S-B', hl = 'MiniStatuslineModeVisual' },
['i'] = { long = 'INSERT', short = 'I', hl = 'MiniStatuslineModeInsert' },
['R'] = { long = 'REPLACE', short = 'R', hl = 'MiniStatuslineModeReplace' },
['c'] = { long = 'COMMAND', short = 'C', hl = 'MiniStatuslineModeCommand' },
['r'] = { long = 'PROMPT', short = 'P', hl = 'MiniStatuslineModeOther' },
['!'] = { long = 'SHELL', short = 'Sh', hl = 'MiniStatuslineModeOther' },
['t'] = { long = 'TERMINAL', short = 'T', hl = 'MiniStatuslineModeOther' },
}, {
-- By default return 'Unknown' but this shouldn't be needed
__index = function()
return { long = 'Unknown', short = 'U', hl = '%#MiniStatuslineModeOther#' }
end,
})
require('mini.statusline').setup({
content = {
active = function()
local mode_info = modes[vim.fn.mode()]
local mode = MiniStatusline.is_truncated(120) and mode_info.short or mode_info.long
local mode_hl = mode_info.hl
local git = MiniStatusline.section_git({ trunc_width = 40 })
local diff = MiniStatusline.section_diff({ trunc_width = 75 })
local diagnostics = MiniStatusline.section_diagnostics({ trunc_width = 75 })
local lsp = MiniStatusline.section_lsp({ trunc_width = 75 })
local filename = MiniStatusline.section_filename({ trunc_width = 140 })
local fileinfo = MiniStatusline.section_fileinfo({ trunc_width = 120 })
return MiniStatusline.combine_groups({
{ hl = mode_hl, strings = { mode } },
{ hl = 'MiniStatuslineDevinfo', strings = { git, diff, diagnostics, lsp } },
'%<', -- general truncation point
{ hl = 'MiniStatuslineFilename', strings = { filename } },
'%=', -- align right
{ hl = 'MiniStatuslineFileInfo', strings = { fileinfo } },
{ hl = mode_hl, strings = { '%3l:%-3c' } }
})
end,
inactive = function()
return MiniStatusline.combine_groups({
{},
})
end
},
use_icons = true,
set_vim_settings = true,
})
require('mini.tabline').setup() -- shows buffers that are open
require('mini.trailspace').setup() -- trailing space indication and removal.
---@module 'lazy'
---@type LazySpec
return {}

View File

@@ -1,59 +0,0 @@
---@module 'lazy'
---@type LazySpec
return { {
'mfussenegger/nvim-lint',
event = { 'BufWritePost', 'BufReadPost', 'TextChanged' },
---@module 'lint'
opts = {
---@type table<string, string[]>
linters_by_ft = {
c = { 'clangtidy' },
cpp = { 'clangtidy' },
sh = { 'shellcheck' },
glsl = { 'glslang' },
},
linters = {
glslang = {
cmd = 'glslangValidator',
stdin = false,
args = { '-C' },
ignore_exitcode = true,
parser = function(output)
local diags = {}
for _, line in ipairs(vim.split(output, '\n')) do
local f, lnum, sev, msg = line:match(
'^([^:]+):(%d+):%s+([^:]+):%s+(.+)$') -- file:line: severity: message
if not f then sev, f, lnum, msg = line:match(
'^(%w+):%s+([^:]+):(%d+):%s+(.+)$') end -- severity: file:line: message
if lnum then
local s = sev:lower() == 'error'
and vim.diagnostic.severity.ERROR
or vim.diagnostic.severity.WARN
table.insert(diags, {
lnum = tonumber(lnum) - 1,
col = 0,
message = msg,
source = 'glslang',
severity = s
})
end
end
return diags
end
}
}
},
config = function(_, opts)
local lint = require('lint')
lint.linters_by_ft = opts.linters_by_ft
for name, linter in pairs(opts.linters) do
lint.linters[name] = linter
end
-- autocommand for linting
Autocmd({ 'BufWritePost', 'BufWinEnter', 'TextChanged' },
{ callback = function() lint.try_lint() end });
end
} }

View File

@@ -1,74 +0,0 @@
---@module 'lazy'
---@type LazySpec
return { {
'nvim-treesitter/nvim-treesitter', -- highlight, edit, and navigate code
event = 'BufReadPre',
build = ':TSUpdate',
main = 'nvim-treesitter.configs', -- set main module to use for opts
opts = {
ensure_installed = {
'bash', 'c', 'make', 'rust', 'diff',
'markdown', 'markdown_inline', 'latex',
'vim', 'vimdoc', 'lua', 'luadoc', 'regex',
},
auto_install = true, -- auto-install languages that are not installed
highlight = {
enable = true,
additional_vim_regex_highlighting = { 'ruby' }, -- some languages depend on vim's regex highlighting system for indent rules
},
indent = { enable = true, disable = { 'ruby' } },
},
config = function(_, opts)
require('nvim-treesitter.configs').setup(opts)
-- set the keybind for appending in front of a comment, rather than behind.
Map('n', 'A', function()
local ts = vim.treesitter -- get reference to treesitter
local buf = vim.api.nvim_get_current_buf() -- get the current buffer id
local row, col = unpack(vim.api.nvim_win_get_cursor(0)) -- get cursor position
-- ensure the parser exists
local res = nil
repeat
-- get the parser
if not ts.language.get_lang(vim.bo[buf].filetype) then break end
local parser = ts.get_parser(buf, nil, { error = false })
if not parser then break end
-- query the buffer using the parser
local root = parser:parse()[1]:root()
local ok, dat = pcall(ts.query.parse, parser:lang(), [[(comment) @comment]])
if not ok or not dat then break end
-- set the result
res = { query = dat, root = root }
until true
-- check if we successfully made a query
if res then
-- loop through the captures from the query
for _, node in res.query:iter_captures(res.root, buf, row - 1, row) do
-- ensure the comment is on the same row as the cursor and after the cursor's column
local srow, scol, _, _ = node:range() -- extract the starting row and starting column
if srow ~= row - 1 or col >= scol then goto continue end
-- get the line text and remove trailing whitespace
local txt = vim.api.nvim_buf_get_lines(buf, srow, srow + 1, true)[1]:sub(0, scol)
txt = txt:gsub("%s*$", "")
local len = txt:len()
-- check if we found a match
if len > 0 then
vim.api.nvim_win_set_cursor(0, { row, len })
vim.cmd [[startinsert]]
return
end
::continue:: -- lua is stupid
end
end
-- no comment start was found, behave like normal (moves cursor to the end of the line)
vim.cmd [[startinsert!]]
end, { desc = 'append end of line' })
end,
} }

View File

@@ -1,72 +0,0 @@
---@module 'lazy'
---@type LazySpec
return { {
'nvim-telescope/telescope.nvim', -- fuzzy finder (files, lsp, etc)
event = 'VeryLazy',
branch = '0.1.x',
dependencies = {
{ 'nvim-lua/plenary.nvim' }, -- contains lua functions for neovim, apparently
{ 'nvim-telescope/telescope-ui-select.nvim' }, -- allows neovim core stuff to enter the telescope picker
{ 'nvim-tree/nvim-web-devicons' },
{
'nvim-telescope/telescope-fzf-native.nvim',
build = 'make', -- used for when the plugin is installed/updated
cond = function() return vim.fn.executable 'make' == 1 end, -- condition for whether the plugin should be loaded / installed
},
},
opts = {
pickers = {
find_files = {
find_command = { 'fd', '-t', 'f', '-HE', '/.git', '--strip-cwd-prefix' },
},
},
extensions = {
file_browser = {
hijack_netrw = true,
},
},
},
config = function(_, opts)
local tel = require('telescope')
local std = require("telescope.builtin")
local ext = tel.extensions
require('telescope').setup(opts)
-- load telescope extensions, if they are installed
pcall(tel.load_extension, 'fzf')
pcall(tel.load_extension, 'ui-select')
-- set the telescope keymaps
Map({ 'n' }, '<C-g>', std.live_grep, { desc = 'Search by Grep' })
Map({ 'n' }, '<C-s>', std.resume, { desc = 'Search Resume' })
Map({ 'n', 'i' }, '<C-p>', std.find_files, { desc = 'Search Project' })
Map({ 'n' }, '<leader>p', std.find_files, { desc = 'Search Project' })
Map({ 'n' }, '<leader>gf', std.git_status, { desc = 'Search through Git status Files' })
Map({ 'n' }, '<leader>sq', std.quickfix, { desc = 'Search Quickfix' })
Map({ 'n' }, '<leader>sh', std.help_tags, { desc = 'Search Help' })
Map({ 'n' }, '<leader>sk', std.keymaps, { desc = 'Search Keymaps' })
Map({ 'n' }, '<leader>sf', std.find_files, { desc = 'Search Files' })
Map({ 'n' }, '<leader>ss', std.builtin, { desc = 'Sarch Select telescope' })
Map({ 'n' }, '<leader>sw', std.grep_string, { desc = 'Search current Word' })
Map({ 'n' }, '<leader>sg', std.live_grep, { desc = 'Search by Grep' })
Map({ 'n' }, '<leader>sd', std.diagnostics, { desc = 'Search Diagnostics' })
Map({ 'n' }, '<leader>sr', std.resume, { desc = 'Search Resume' })
Map({ 'n' }, '<leader>s.', std.oldfiles, { desc = 'Search recent Files ("." for repeat)' })
Map({ 'n' }, '<leader><leader>', std.buffers, { desc = 'find existing buffers' })
-- for fuzzily searching in the current buffer
Map('n', '<leader>/', function()
std.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { winblend = 10, previewer = false })
end, { desc = 'fuzzily search in current buffer' })
-- for executing grep
Map('n', '<leader>s/', function()
std.live_grep { grep_open_files = true, prompt_title = 'Live Grep in Open Files' }
end, { desc = 'Search in open files' })
-- shortcut for searching neovim config files
Map('n', '<leader>sn', function()
std.find_files { cwd = vim.fn.stdpath 'config' }
end, { desc = 'Search Neovim files' })
end,
} }

View File

@@ -1,22 +0,0 @@
---@module 'lazy'
---@type LazySpec
return { {
'folke/todo-comments.nvim', -- for highlighting TODO and stuff comments
event = 'VeryLazy',
dependencies = { 'nvim-lua/plenary.nvim' },
---@module 'todo-comments'
---@type TodoOptions
opts = {
signs = false,
colors = {
hint = { "Comment" }
},
},
config = function(_, opts)
local todo = require 'todo-comments'
todo.setup(opts)
Map('n', '<leader>st', '<cmd>TodoTelescope keywords=TODO,FIX,BUG,WARN<cr>',
{ desc = '[S]earch [T]odos]' })
end,
} }

View File

@@ -1,53 +0,0 @@
---@module 'lazy'
---@type LazySpec
return { {
'akinsho/toggleterm.nvim', -- allows to toggle the terminal rather than open one in a separate window
event = 'VeryLazy',
---@type ToggleTermConfig
---@diagnostic disable-next-line: missing-fields
opts = { open_mapping = [[<C-\>]] },
config = function(_, opts)
local tt = require('toggleterm')
local term = require('toggleterm.terminal')
tt.setup(opts)
local term_lazygit = term.Terminal:new({ cmd = "lazygit", hidden = true, direction = 'float' })
-- Set mappings to toggle the above
Map({ 'n' }, '<leader>gg', function() term_lazygit:toggle() end)
-- Add a keymap for executing makefiles, or launch scripts
Map({ 'n', 't', 'v' }, '<c-b>', function()
local cwd = vim.fn.getcwd()
local cmd = nil
local launchcfg = cwd .. '/.launch.sh'
-- If the path is readable, the attached command is executed and no more is checked.
for _, obj in ipairs({
{ launchcfg, launchcfg },
{ cwd .. '/Makefile', 'make -C ' .. cwd },
{ cwd .. '/makefile', 'make -C ' .. cwd },
}) do
local pat = obj[1]
local exec = obj[2]
if (vim.fn.filereadable(pat) == 1) then
cmd = '\r' .. exec -- use \r to override text if it's present
break
end
end
-- If cmd still hasn't been set; edit the file
if (not cmd) then
local buf = vim.api.nvim_create_buf(true, false) -- listed, not scratch
vim.api.nvim_set_current_buf(buf)
vim.api.nvim_buf_set_name(buf, launchcfg)
vim.api.nvim_buf_set_text(0, 0, 0, 0, 0, { '#!/usr/bin/env sh', 'exec ' })
vim.bo.ft = 'sh'
return
end
-- Execute the command in terminal 1
tt.exec(cmd, 1, nil, nil, nil, nil, false, true)
end, { desc = 'compile the program using .buildcofig placed in PWD' })
end
} }

Binary file not shown.

Binary file not shown.

View File

@@ -1,56 +0,0 @@
binary-formatted
calc
config
const
double-precision
editorconfig
entry-point
github
gitignore
gitlab
half-precision
if
init
inputted
JSON
keymap
LLM
lsp
malloc'd
neovim
non-zero
null-terminated
numlock
nvidia
nvidia-settings
nvim-cmp
OR'd
overworld
parsable
Quinn
re-enable
regex
res
SDL
shader
shaders
single-precision
startup
stderr
stdout
system-wide
TODO
undefine
whitespace
ˣ
xorg
zero-initialise
zero-out
θ
π
τ
φ
ψ
timestamp
tetromino
μs

6
.gitmodules vendored Normal file
View File

@@ -0,0 +1,6 @@
[submodule "etc/nvim"]
path = etc/nvim
url = git@thepigeongenerator.xyz:thepigeongenerator/nvim-conf.git
[submodule "etc/i3"]
path = etc/i3
url = git@thepigeongenerator.xyz:thepigeongenerator/i3-conf.git

19
.gtkrc-2.0 Normal file
View File

@@ -0,0 +1,19 @@
# DO NOT EDIT! This file will be overwritten by LXAppearance.
# Any customization should be done in ~/.gtkrc-2.0.mine instead.
include "/home/furry/.gtkrc-2.0.mine"
gtk-theme-name="Gruvbox-Dark"
gtk-icon-theme-name="Gruvbox-Plus-Dark"
gtk-font-name="NotoSans Nerd Font 11"
gtk-cursor-theme-name="Breeze"
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_BOTH
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=1
gtk-menu-images=1
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=1
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle="hintfull"
gtk-xft-rgba="none"

View File

@@ -1,6 +1,5 @@
# for backward searching the history
"\e[A": history-search-backward
"\e[B": history-search-forward
set completion-ignore-case on # ignore completion case
set colored-completion-prefix on # colour in what it has been able to complete
set completion-ignore-case on
set colored-completion-prefix on

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,27 +0,0 @@
#!/usr/bin/env sh
[ -z "$AMOUNT" ] && AMOUNT=5
notify() {
notify-send "$@" -h string:x-dunst-stack-tag:'brightnessctl' -a 'brightnessctl'
}
max=$(brightnessctl max)
br=$(brightnessctl get)
brp=$((100 * br / max))
case "$1" in
up) brp=$((brp + AMOUNT)) ;;
down) brp=$((brp - AMOUNT)) ;;
*)
echo 'E: could not decide what brightness action to perform!' >&2
notify 'could not decide what audio action to perform!' -u critical -t 5000
exit 1
;;
esac
brp=$((brp - (brp % AMOUNT)))
[ $brp -gt 100 ] && brp=100
brightnessctl set $brp%
ico=display-brightness-symbolic
notify -u low -i "$ico" -h "int:value:$brp" "brightness: $brp%"

2
.nv/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
# do not track NVIDIA cache
/ComputeCache/

View File

@@ -0,0 +1,45 @@
{
"rules": [
{
"pattern": {
"feature": "true",
"matches": "java"
},
"profile": "games"
},
{
"pattern": {
"feature": "true",
"matches": "steam"
},
"profile": "games"
}
],
"profiles": [
{
"name": "games",
"settings": [
{
"key": "GLSyncToVblank",
"value": true
},
{
"key": "GLThreadedOptimizations",
"value": true
},
{
"key": "GLShaderDiskCache",
"value": true
},
{
"key": "GLGSYNCAllowed",
"value": true
},
{
"key": "GLAllowFXAAUsage",
"value": true
}
]
}
]
}

View File

@@ -0,0 +1,45 @@
{
"rules": [
{
"pattern": {
"feature": "true",
"matches": "Java"
},
"profile": "games"
},
{
"pattern": {
"feature": "true",
"matches": "steam"
},
"profile": "games"
}
],
"profiles": [
{
"name": "games",
"settings": [
{
"key": "GLSyncToVblank",
"value": true
},
{
"key": "GLThreadedOptimizations",
"value": true
},
{
"key": "GLShaderDiskCache",
"value": true
},
{
"key": "GLGSYNCAllowed",
"value": true
},
{
"key": "GLAllowFXAAUsage",
"value": true
}
]
}
]
}

21
.nvidia-settings-rc Normal file
View File

@@ -0,0 +1,21 @@
#
# /home/user/.nvidia-settings-rc
#
# Configuration file for nvidia-settings - the NVIDIA Settings utility
# Generated on Tue Apr 22 22:08:51 2025
#
# ConfigProperties:
RcFileLocale = C
DisplayStatusBar = Yes
SliderTextEntries = Yes
IncludeDisplayNameInConfigFile = No
UpdateRulesOnProfileNameChange = Yes
Timer = PowerMizer_Monitor_(GPU_0),Yes,1000
Timer = Thermal_Monitor_(GPU_0),Yes,1000
Timer = Memory_Used_(GPU_0),Yes,3000
# Attributes:
[GPU:0]/GPUPowerMizerMode=2

4
.xprofile Normal file
View File

@@ -0,0 +1,4 @@
#!/bin/bash
# shellcheck disable=1091
[[ -f $HOME/.bash_profile ]] && source "$HOME/.bash_profile"

View File

@@ -20,4 +20,3 @@ Diagnostics:
- bugprone-implicit-widening-of-multiplication-result
- bugprone-switch-missing-default-case
- bugprone-easily-swappable-parameters
- bugprone-reserved-identifier

1
etc/i3 Submodule

Submodule etc/i3 added at c59f51a0a9

View File

@@ -13,12 +13,7 @@ git:
pagers:
- colorArg: always
pager: diff-so-fancy
useConfig: false
overrideGpg: true
update:
method: never
customCommands:
- key: 'P'
command: "git push {{.SelectedRemote.Name}} {{.SelectedLocalCommit.Sha}}:{{.SelectedLocalBranch.Name}}"
context: "commits"
loadingText: "Pushing commit..."
description: "Push a specific commit (and any preceding)"

1
etc/nvim Submodule

Submodule etc/nvim added at 6da6d4ffb9

12
etc/rofi/qpurple.rasi Normal file
View File

@@ -0,0 +1,12 @@
@theme "/usr/share/rofi/themes/purple.rasi"
configuration {
drun-display-format: "{icon} {name}";
modi: "window,run,drun";
show-icons: true;
}
element-icon {
size: 25;
padding: 0 5 0 0;
}

View File

@@ -1,5 +1,7 @@
MIT License
Copyright (c) 2021 okarin001
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

View File

@@ -0,0 +1,74 @@
[dark]
; onepunch dark mode
text = d5c4a1
subtext = b8bb26
extratext = fabd2f
main = 1d2021
main-elevated = 1d2021
highlight-elevated = 32302f
highlight = 32302f
sidebar = 1d2021
player = 1d2021
sec-player = 32302f
card = 32302f
sec-card = fb4934
shadow = 1d2021
selected-row = d3869b
button = 8ec07c
button-active = 8ec07c
button-disabled = 665c54
tab-active = fb4934
notification = fb4934
notification-error = cc2418
misc = 83a598
[light]
; onepunch light mode
text = 504945
subtext = 79740e
extratext = b57614
main = f9f5d7
main-elevated = f9f5d7
highlight-elevated = f2e5bc
highlight = f2e5bc
sidebar = f9f5d7
player = f9f5d7
sec-player = f2e5bc
card = f2e5bc
sec-card = 9d0006
shadow = f9f5d7
selected-row = b16286
button = 427b58
button-active = 427b58
button-disabled = bdae93
tab-active = 9d0006
notification = 9d0006
notification-error = cc2418
misc = 076678
[legacy]
; onepunch legacy colors
text = b8bb26
subtext = d5c4a1
extratext = fabd2f
main = 16191a
main-elevated = 16191a
highlight-elevated = 32302f
highlight = 32302f
sidebar = 16191a
player = 16191a
sec-player = 16191a
card = 32302f
sec-card = fb4934
shadow = 16191a
selected-row = d5c4a1
button = 8ec07c
button-active = 8ec07c
button-disabled = 665c54
tab-active = fb4934
notification = 32302f
notification-error = cc2418
misc = 83a598

View File

@@ -0,0 +1,625 @@
/* sidebar edits */
.main-navBar-navBarLinkActive,
.main-navBar-navBarLinkActive:focus,
.logo {
background-color: var(--spice-sec-card) !important;
color: var(--spice-main) !important;
}
.main-likedSongsButton-likedSongsIcon,
.main-createPlaylistButton-createPlaylistIcon,
.main-yourEpisodesButton-yourEpisodesIcon {
background: var(--spice-text) !important;
border-radius: unset !important;
color: var(--spice-main) !important;
}
.main-collectionLinkButton-collectionLinkButton {
color: var(--spice-main) !important;
}
.main-collectionLinkButton-collectionLinkButton
.main-collectionLinkButton-collectionLinkText,
.main-createPlaylistButton-button,
.main-rootlist-rootlistItemLink,
.main-rootlist-rootlistItemLink:visited {
color: var(--spice-text) !important;
}
.main-rootlist-rootlistItemLinkActive,
.main-rootlist-rootlistItemLink:hover,
.main-rootlist-textWrapper:hover {
color: var(--spice-subtext) !important;
}
.main-collectionLinkButton-collectionLinkButton
.main-collectionLinkButton-selected
.main-collectionLinkButton-icon {
opacity: 0.7 !important;
}
.main-rootlist-rootlistDividerGradient {
background: linear-gradient(180deg, var(--spice-main), transparent);
}
.main-rootlist-rootlistDivider {
background-color: unset !important;
}
/* top queue */
.queue-tabBar-active {
background-color: var(--spice-card) !important;
}
.queue-tabBar-headerItemLink {
color: var(--spice-text) !important;
}
/* header colored backgrounds */
.main-home-homeHeader,
.x-441-entityHeader-overlay,
.main-actionBarBackground-background,
.main-entityHeader-overlay,
.main-entityHeader-backgroundColor,
.x-914-entityHeader-overlay,
.x-entityHeader-overlay,
.x-914-actionBarBackground-background,
.x-actionBarBackground-background {
background-color: unset !important;
background-image: unset !important;
}
/* play button in main page */
.main-playButton-PlayButton.main-playButton-primary {
color: var(--spice-main);
background-color: var(--spice-button);
}
.connect-title,
.connect-header {
display: none;
}
/* Topbar visibility bug */
.main-topBar-topbarContent:not(.main-topBar-topbarContentFadeIn) > * {
opacity: unset !important;
}
.main-entityHeader-topbarContent:not(.main-entityHeader-topbarContentFadeIn)
> * {
opacity: 0 !important;
}
.main-topBar-overlay,
.x-441-actionBarBackground-background {
background-color: var(--spice-main) !important;
}
.main-entityHeader-shadow {
box-shadow: 0 0 4px 0 rgba(var(--spice-rgb-shadow), 0.5);
}
.main-trackList-playingIcon {
filter: hue-rotate(270deg);
}
span.artist-artistVerifiedBadge-badge svg:nth-child(1) {
fill: black;
}
/* details metadata */
.main-entityTitle-subtitle.main-entityTitle-gray,
.main-entityHeader-metaDataText {
color: var(--spice-text) !important;
}
.main-duration-container {
color: var(--spice-subtext);
}
/* artist page edits*/
.artist-artistOverview-artistOverviewContent {
box-shadow: 0 -2px 5px 0 rgba(var(--spice-rgb-shadow), 0.7);
}
.main-entityHeader-background.main-entityHeader-gradient {
opacity: 0.4;
}
.main-entityHeader-background.main-entityHeader-overlay:after {
background-image: linear-gradient(transparent, transparent),
linear-gradient(var(--spice-main), var(--spice-main));
}
.artist-artistPick-pickComment {
background: var(--spice-sec-player) !important;
border-radius: 25px !important;
border-bottom: solid 2px var(--spice-sec-player) !important;
color: var(--spice-text) !important;
}
.artist-artistSavedTracks-imageContainer .artist-artistSavedTracks-heartIcon {
color: var(--spice-card);
}
/* home screen edits */
.view-homeShortcutsGrid-name {
color: var(--spice-text);
}
.main-shelf-title {
color: var(--spice-subtext);
}
.view-homeShortcutsGrid-shortcut,
.view-homeShortcutsGrid-shortcut .view-homeShortcutsGrid-imageWrapper,
.main-cardImage-imageWrapper,
.main-cardImage-imagePlaceholder,
.main-cardImage-image {
border-radius: 10px !important;
}
.view-homeShortcutsGrid-shortcut .view-homeShortcutsGrid-image {
border-radius: 10px 0 0 10px !important;
}
.main-cardImage-circular,
.main-entityHeader-circle {
border-radius: 50% !important;
}
.main-entityHeader-image {
border-radius: 10px;
}
/* inside a page edits */
.main-trackList-trackListRow.main-trackList-active .main-trackList-rowMarker,
.main-trackList-trackListRow.main-trackList-active .main-trackList-rowTitle {
color: var(--spice-subtext) !important;
}
.main-trackList-rowTitle {
color: var(--spice-text) !important;
}
/* friend activity */
.main-buddyFeed-activityMetadata .main-buddyFeed-artistAndTrackName a,
.main-buddyFeed-activityMetadata .main-buddyFeed-playbackContext a,
.main-buddyFeed-activityMetadata .main-buddyFeed-usernameAndTimestamp a {
color: var(--spice-text) !important;
}
.main-buddyFeed-activityMetadata .main-buddyFeed-username a {
color: var(--spice-subtext) !important;
}
.main-avatar-avatar.main-avatar-withBadge:after {
background: var(--spice-extratext);
}
/* setting page */
.x-settings-container {
margin: 16px 180px !important;
}
.x-settings-title {
color: var(--spice-subtext) !important;
}
.main-dropDown-dropDown {
border: 0;
border-radius: 10px;
}
.main-dropDown-dropDown {
background-color: var(--spice-button-disabled) !important;
color: var(--spice-text) !important;
}
.x-toggle-indicator {
background: var(--spice-button) !important;
box-shadow: 0 2px 4px 0 rgba(var(--spice-rgb-shadow), 0.5);
}
input:checked ~ .x-toggle-indicatorWrapper .x-toggle-indicator {
background-color: var(--spice-button) !important;
box-shadow: 0 2px 4px 0 rgba(var(--spice-rgb-shadow), 0.5);
}
input:hover:not([disabled]):not(:active) ~ .x-toggle-indicatorWrapper {
background-color: rgba(var(--spice-rgb-button-disabled), 0.7) !important;
}
input:checked ~ .x-toggle-indicatorWrapper {
background-color: rgba(var(--spice-rgb-button), 0.6) !important;
}
input:checked:hover:not([disabled]):not(:active) ~ .x-toggle-indicatorWrapper {
background-color: rgba(var(--spice-rgb-button), 0.4) !important;
}
/* queue, album, recent, playlist, page edits */
.queue-queue-container,
.queue-playHistory-container {
margin: 40px 60px !important;
}
.main-actionBar-ActionBar,
.x-actionBar-ActionBar {
margin: 0 40px !important;
}
.queue-queuePage-queuePage h2 {
color: var(--spice-extratext);
}
/* podcast edits */
.x-hTMLDescription-HTMLDescription,
.x-expandableDescription-paragraph {
color: var(--spice-text) !important;
}
.x-seeMore-button,
.x-expandableDescription-button {
color: var(--spice-button) !important;
}
.main-type-minuetBold {
color: var(--spice-extratext) !important;
}
.main-entityTitle-subtitle,
.main-entityTitle-subtitle.main-entityTitle-large,
.main-entityTitle-subtitle.main-entityTitle-bold {
color: var(--spice-subtext) !important;
}
/* search page edits */
input {
background-color: unset !important;
border-bottom: solid 2px var(--spice-text) !important;
border-radius: 0 !important;
color: var(--spice-text) !important;
}
.x-833-searchInput-searchInputSearchIcon {
color: var(--spice-text) !important;
}
.x-833-heroCategoryCard-heroTitle,
.x-833-categoryCard-title {
color: var(--spice-main) !important;
}
/* menu and dropdown menus including the user menu */
.main-type-mesto,
.x-533-dropDown-dropDown {
color: var(--spice-text) !important;
}
.main-userWidget-box {
background-color: var(--spice-card) !important;
border: unset !important;
color: var(--spice-subtext) !important;
}
/* card edits */
.main-card-card div:first-child {
color: var(--spice-extratext);
}
.main-card-card:hover,
.main-card-card[data-context-menu-open="true"] {
background-color: rgba(var(--spice-rgb-sec-card), 0.3) !important;
}
.main-contextMenu-menu,
.main-card-card:focus-within,
.main-deletePlaylistDialog-container,
.main-aboutRecsModal-container {
background-color: var(--spice-card) !important;
}
.main-deletePlaylistDialog-secondaryButton {
color: var(--spice-text) !important;
}
.main-button-primary {
background-color: var(--spice-sec-card) !important;
color: var(--spice-card) !important;
}
.main-deletePlaylistDialog-title {
color: var(--spice-subtext) !important;
}
.main-keyboardShortcutsHelpModal-container,
.main-trackCreditsModal-container {
background-color: var(--spice-card) !important;
color: var(--spice-text) !important;
}
.main-keyboardShortcutsHelpModal-header,
.main-trackCreditsModal-header {
color: var(--spice-subtext) !important;
}
.main-type-canon {
color: var(--spice-extratext) !important;
}
/* profile page edits */
.main-cardImage-imageWrapper {
background-color: var(--spice-card) !important;
}
/* now playing bar edits */
.Root__now-playing-bar {
background-color: var(--spice-sec-player) !important;
box-shadow: 0 -2px 5px 0 rgba(var(--spice-rgb-shadow), 0.5) !important;
border-radius: 15px 15px 0 0 !important;
}
.main-nowPlayingBar-container {
background-color: var(--spice-sec-player) !important;
border-radius: 15px 15px 0 0 !important;
}
.main-connectBar-connectBar.main-connectBar-FullscreenModeButtonEnabled.main-type-mesto {
color: var(--spice-sidebar) !important;
}
.progress-bar {
--progress-bar-height: 5px !important;
}
.progress-bar__bg {
background-color: rgba(var(--spice-rgb-button-disabled), 0.7) !important;
}
.progress-bar--is-active .progress-bar__fg,
:not(.no-focus-outline) .progress-bar:focus-within .progress-bar__fg {
background-color: var(--fg-color);
}
.main-shuffleButton-button.main-shuffleButton-on,
.main-repeatButton-button.main-repeatButton-on {
color: var(--spice-button) !important;
}
.cover-art--with-auto-height {
border: solid var(--spice-sec-player) 5px !important;
}
.cover-art,
.cover-art .cover-art-image {
border-radius: 10px !important;
background-color: var(--spice-sec-player) !important;
}
.main-nowPlayingBar-extraControls {
gap: 5px;
}
.main-addButton-button,
.main-nowPlayingBar-extraControls button {
color: rgba(var(--spice-rgb-selected-row), 0.7);
}
/* replace icons */
.main-navBar-mainNav a[href="/"] path {
d: path(
"M4.5 14.0L13.2 6.9Q13.4 6.8 13.5 6.8Q13.7 6.8 13.9 6.9L13.9 6.9L22.5 14.0L22.5 21.7Q22.5 22.1 22.3 22.3Q22.1 22.5 21.8 22.5L21.8 22.5L16.5 22.5Q16.2 22.5 16.0 22.2Q15.8 22.0 15.8 21.7L15.8 21.7L15.8 17.2Q15.8 17.0 15.7 16.9Q15.6 16.7 15.4 16.6Q15.2 16.5 15.0 16.5L15.0 16.5L12.0 16.5Q11.7 16.5 11.5 16.7Q11.3 16.9 11.3 17.2L11.3 17.2L11.3 21.7Q11.3 22.0 11.1 22.2Q10.9 22.5 10.5 22.5L10.5 22.5L5.3 22.5Q5.0 22.5 4.8 22.3Q4.5 22.1 4.5 21.7L4.5 21.7L4.5 14.0ZM22.9 8.6L26.9 11.7Q27.0 11.9 27.0 12.2L27.0 12.2Q27.0 12.4 26.9 12.5L26.9 12.5L25.7 14.0Q25.5 14.2 25.3 14.2L25.3 14.2Q25.1 14.2 24.9 14.1L24.9 14.1L13.9 5.0Q13.7 4.9 13.6 4.9Q13.4 4.9 13.2 5.0L13.2 5.0L2.2 14.1Q2.0 14.2 1.8 14.2L1.8 14.2Q1.5 14.2 1.4 14.0L1.4 14.0L0.2 12.5Q0.0 12.4 0.0 12.2L0.0 12.2Q0.0 11.9 0.2 11.7L0.2 11.7L12.1 2.0Q12.8 1.5 13.5 1.5Q14.3 1.5 15.0 2.0L15.0 2.0L19.2 5.5L19.2 2.0Q19.2 1.8 19.3 1.6Q19.5 1.5 19.7 1.5L19.7 1.5L22.4 1.5Q22.6 1.5 22.8 1.6Q22.9 1.8 22.9 2.0L22.9 2.0L22.9 8.6Z"
) !important;
transform: scaleX(0.9);
}
.main-navBar-mainNav a[href="/search"] path {
d: path(
"M19.0 16.1L23.7 20.7Q24 21.1 24 21.5Q24 22.0 23.7 22.3L23.7 22.3L22.4 23.6Q22.0 24.0 21.6 24.0Q21.1 24.0 20.8 23.6L20.8 23.6L16.1 19.0Q15.8 18.6 15.8 18.2L15.8 18.2L15.8 17.4Q13.1 19.5 9.8 19.5L9.8 19.5Q5.7 19.5 2.9 16.6Q0 13.8 0 9.7Q0 5.7 2.9 2.8Q5.7-0.0 9.8-0.0Q13.8-0.0 16.6 2.8Q19.5 5.7 19.5 9.7L19.5 9.7Q19.5 13.1 17.4 15.7L17.4 15.7L18.2 15.7Q18.7 15.7 19.0 16.1L19.0 16.1ZM5.5 13.9L5.5 13.9Q7.3 15.7 9.7 15.7Q12.2 15.7 14.0 14.0Q15.8 12.2 15.8 9.7Q15.8 7.2 14.0 5.5Q12.2 3.7 9.8 3.7Q7.3 3.7 5.5 5.5Q3.8 7.2 3.8 9.7Q3.8 12.2 5.5 13.9Z"
) !important;
}
.main-navBar-mainNav a[href="/collection"] path,
.main-yourLibraryX-header .main-yourLibraryX-collapseButtonWrapper path {
d: path(
"M23.3 4.9L23.3 4.9L23.3 6.0L0.8 6.0L0.8 4.9Q0.8 4.4 1.1 4.1Q1.5 3.7 1.9 3.7L1.9 3.7L22.2 3.7Q22.7 3.7 23.0 4.1Q23.3 4.4 23.3 4.9ZM22.5 1.1L22.5 1.1L22.5 2.2L1.5 2.2L1.5 1.1Q1.5 0.6 1.9 0.3Q2.2-0.0 2.7-0.0L2.7-0.0L21.4-0.0Q21.9-0.0 22.2 0.3Q22.5 0.6 22.5 1.1ZM11.1 15.5L11.1 15.5Q11.5 15.3 12.1 15.3Q12.6 15.3 13.0 15.6Q13.5 15.9 13.5 16.3Q13.5 16.7 13.0 17.0Q12.6 17.3 12.0 17.3Q11.5 17.3 11.1 17.0Q10.6 16.7 10.6 16.3Q10.6 15.9 11.1 15.5ZM1.5 7.5L22.5 7.5Q23.2 7.5 23.6 7.9Q24.0 8.4 24.0 9.0L24.0 9.0Q24.0 9.0 24.0 9.1L24.0 9.1L22.8 22.6Q22.8 23.2 22.3 23.6Q21.9 24.0 21.3 24.0L21.3 24.0L2.8 24.0Q2.2 24.0 1.8 23.6Q1.3 23.2 1.3 22.6L1.3 22.6L0.0 9.1Q0.0 9.0 0.0 9.0L0.0 9.0Q0.0 8.4 0.5 7.9Q0.9 7.5 1.5 7.5L1.5 7.5ZM12.0 22.1L12.0 22.1Q13.7 22.1 15.2 21.7Q16.7 21.2 17.8 20.4Q18.9 19.7 19.6 18.6Q20.3 17.5 20.4 16.3L20.4 16.3Q20.6 13.6 18.2 11.7Q15.7 9.8 12.0 9.8Q8.4 9.8 5.9 11.7Q3.5 13.6 3.7 16.3L3.7 16.3Q3.8 17.9 4.9 19.2Q6.1 20.6 8.0 21.4Q9.8 22.1 12.0 22.1Z"
) !important;
}
.main-navBar-mainNav a[href="/lyrics-plus"] path {
d: path(
"M160 95.8L168 95.8Q171.5 95.8 173.8 98Q176 100.3 176 103.8L176 103.8L176 127.8Q176 160.8 154.3 185.6Q132.5 210.4 100.1 214.8L100.1 214.8L100.1 231.8L128 231.8Q131.5 231.8 133.8 234Q136 236.3 136 239.8L136 239.8L136 247.8Q136 251.3 133.8 253.5Q131.5 255.8 128 255.8L128 255.8L48 255.8Q44.5 255.8 42.3 253.6Q40 251.4 40 247.8L40 247.8L40 239.8Q40 236.3 42.3 234Q44.5 231.8 48 231.8L48 231.8L76.1 231.8L76.1 214.8Q43.6 210.3 21.8 184Q0 157.8 0 123.8L0 123.8L0 103.8Q0 100.3 2.3 98Q4.5 95.8 8 95.8L8 95.8L16 95.8Q19.5 95.8 21.8 98Q24 100.3 24 103.8L24 103.8L24 124.8Q24 150.3 40.5 169.8Q57 189.3 81.5 191.3L81.5 191.3Q110 194.3 131 175Q152 155.8 152 127.8L152 127.8L152 103.8Q152 100.3 154.3 98Q156.5 95.8 160 95.8L160 95.8ZM122 161.9L122 161.9Q108 175.9 88.1 175.8Q68.1 175.8 54.1 161.8Q40 147.8 40 127.8L40 127.8L40 47.8Q40 27.6 54.1 13.7Q68.1-0.3 88.1-0.3Q108.1-0.3 122.1 13.8Q136 27.8 136 47.8L136 47.8L93.5 47.8Q88 47.8 88 51.8L88 51.8L88 59.8Q88 63.9 93.5 63.8L93.5 63.8L136 63.8L136 79.8L93.5 79.8Q88 79.8 88 83.8L88 83.8L88 91.8Q88 95.9 93.5 95.8L93.5 95.8L136 95.8L136 111.8L93.5 111.8Q88 111.8 88 115.8L88 115.8L88 123.8Q88 127.9 93.5 127.8L93.5 127.8L136 127.8Q136 147.8 122 161.9Z"
) !important;
transform: translate(35px, 0) !important;
}
.main-navBar-mainNav a[href="/marketplace"] path {
d: path(
"M0 20.2L0 20.2L0 12.0L27 12.0L27 20.2Q27 21.2 26.3 21.8Q25.7 22.5 24.8 22.5L24.8 22.5L2.3 22.5Q1.3 22.5 0.7 21.8Q0 21.2 0 20.2ZM9 17.0L9 17.0L9 18.9Q9 19.5 9.6 19.5L9.6 19.5L15.9 19.5Q16.5 19.5 16.5 18.9L16.5 18.9L16.5 17.0Q16.5 16.5 15.9 16.5L15.9 16.5L9.6 16.5Q9 16.5 9 17.0ZM3 17.0L3 17.0L3 18.9Q3 19.5 3.6 19.5L3.6 19.5L6.9 19.5Q7.5 19.5 7.5 18.9L7.5 18.9L7.5 17.0Q7.5 16.5 6.9 16.5L6.9 16.5L3.6 16.5Q3 16.5 3 17.0ZM27 3.7L27 3.7L27 6.0L0 6.0L0 3.7Q0 2.8 0.7 2.1Q1.3 1.5 2.3 1.5L2.3 1.5L24.8 1.5Q25.7 1.5 26.3 2.1Q27 2.8 27 3.7Z"
) !important;
transform: translate(0) scale(2.8) !important;
}
.main-navBar-mainNav a[href="/new-releases"] path {
d: path(
"M134.5 246.3L134.5 246.3Q125 255.8 112 255.8Q99 255.8 89.5 246.3Q80 236.8 80 223.8L80 223.8L144 223.8Q144 236.8 134.5 246.3ZM219.5 180.8L219.5 180.8Q224 185.4 224 191.8L224 191.8Q224 198.3 219.5 203Q215 207.8 208 207.8L208 207.8L16 207.8Q9 207.8 4.5 203Q0 198.3 0 191.8Q0 185.4 4.5 180.8L4.5 180.8Q5 180.3 6 178.9L6 178.9Q13.5 171.4 17.8 165.3Q22 159.3 27 142.5Q32 125.8 32 103.8L32 103.8Q32 74.8 50.1 53.3Q68.1 31.8 96 26.4L96 26.4L96 15.8Q96 9.3 100.8 4.5Q105.5-0.3 112-0.3Q118.5-0.3 123.3 4.6Q128 9.4 128 15.8L128 15.8L128 26.4Q146.5 29.8 161 40.8Q175.5 51.8 183.8 68.3Q192 84.8 192 103.8L192 103.8Q192 125.8 197 142.5Q202 159.3 206.3 165.3Q210.5 171.4 218 178.9L218 178.9Q219 180.3 219.5 180.8ZM101 170.9L101 170.9Q105.6 175.9 112.1 175.8Q118.5 175.8 123.3 171Q128 166.3 128 159.8Q128 153.4 123.3 148.6Q118.5 143.8 112 143.8Q105.5 143.8 100.8 148.6Q96 153.4 96 159.8Q96 166.3 101 170.9ZM124.5 120.9L124.5 120.9L131 72.9Q131 72.4 131 71.8L131 71.8Q131 68.3 128.8 66Q126.5 63.8 123 63.8L123 63.8L101 63.8Q97.6 63.8 95.3 66Q93 68.3 93 71.8L93 71.8Q93 72.3 93 72.9L93 72.9L99.5 120.9Q99.5 123.8 102 125.8Q104.5 127.8 107 127.8L107 127.8L117 127.8Q118.5 127.8 120.3 126.8Q122 125.8 123.3 124.3Q124.5 122.9 124.5 120.9Z"
) !important;
transform: translate(20px, 0);
}
.main-navBar-mainNav a[href="/reddit"] path {
d: path(
"M 89.998 45.604 c -0.201 -5.442 -4.77 -9.691 -10.229 -9.506 c -2.419 0.084 -4.719 1.075 -6.466 2.737 c -7.693 -5.24 -16.729 -8.113 -26.017 -8.314 L 51.67 9.442 l 14.461 3.041 c 0.402 3.712 3.728 6.4 7.44 5.996 c 3.712 -0.402 6.4 -3.728 5.996 -7.44 c -0.404 -3.712 -3.728 -6.4 -7.44 -5.996 c -2.134 0.218 -4.048 1.461 -5.105 3.309 L 50.461 5.043 c -1.125 -0.252 -2.251 0.453 -2.503 1.596 c 0 0.017 0 0.017 0 0.033 L 42.97 30.119 c -9.406 0.152 -18.559 3.041 -26.352 8.314 c -3.964 -3.728 -10.212 -3.544 -13.94 0.437 c -3.728 3.964 -3.544 10.212 0.437 13.94 c 0.773 0.722 1.662 1.344 2.653 1.781 c -0.068 0.991 -0.068 1.982 0 2.973 c 0 15.133 17.636 27.444 39.386 27.444 c 21.75 0 39.386 -12.295 39.386 -27.444 c 0.068 -0.991 0.068 -1.982 0 -2.973 C 87.932 52.894 90.066 49.4 89.998 45.604 z"
) !important;
}
.main-useDropTarget-folder .x-entityImage-imageContainer path,
.main-useDropTarget-folder .main-entityHeader-imagePlaceholder path {
d: path(
"M12.8 6.0L21.8 6.0Q22.7 6.0 23.3 6.6Q24 7.3 24 8.2L24 8.2L24 18.7Q24 19.7 23.3 20.3Q22.7 21.0 21.8 21.0L21.8 21.0L2.3 21.0Q1.3 21.0 0.7 20.3Q0 19.7 0 18.7L0 18.7L0 5.2Q0 4.3 0.7 3.6Q1.3 3.0 2.3 3.0L2.3 3.0L9.8 3.0L12.8 6.0Z"
) !important;
}
.main-rootlist-expandArrow path,
.main-yourLibraryX-listItemGroup .main-yourLibraryX-isFlattened path {
d: path(
"M13.5 2.5L13.5 2.5Q15.8 4.8 15.8 8.0Q15.8 11.2 13.5 13.5Q11.2 15.7 8 15.7Q4.8 15.7 2.5 13.5Q0.3 11.2 0.3 8.0Q0.3 4.8 2.5 2.5Q4.8 0.2 8 0.2Q11.2 0.2 13.5 2.5ZM8.5 11.6L8.5 11.6L12.8 7.3Q13 7.1 13 6.8Q13 6.5 12.8 6.2L12.8 6.2L12.3 5.7Q12 5.5 11.7 5.5Q11.4 5.5 11.2 5.7L11.2 5.7L8 8.9L4.8 5.7Q4.6 5.5 4.3 5.5Q4.0 5.5 3.8 5.7L3.8 5.7L3.3 6.2Q3 6.5 3 6.8Q3 7.1 3.3 7.3L3.3 7.3L7.5 11.6Q7.7 11.8 8 11.8Q8.3 11.8 8.5 11.6Z"
) !important;
}
.main-topBar-button[aria-label="Go back"] path {
d: path(
"M13.5 13.5L13.5 13.5Q11.2 15.7 8 15.7Q4.8 15.7 2.5 13.5Q0.3 11.2 0.3 8.0Q0.3 4.8 2.5 2.5Q4.8 0.2 8 0.2Q11.2 0.2 13.5 2.5Q15.8 4.8 15.8 8.0Q15.8 11.2 13.5 13.5ZM4.4 8.5L4.4 8.5L8.7 12.7Q8.9 13.0 9.2 13.0Q9.5 13.0 9.8 12.7L9.8 12.7L10.3 12.2Q10.5 12.0 10.5 11.7Q10.5 11.4 10.3 11.2L10.3 11.2L7.1 8.0L10.3 4.8Q10.5 4.6 10.5 4.3Q10.5 4.0 10.3 3.7L10.3 3.7L9.8 3.2Q9.5 3.0 9.2 3.0Q8.9 3.0 8.7 3.2L8.7 3.2L4.4 7.5Q4.2 7.7 4.2 8.0Q4.2 8.3 4.4 8.5Z"
) !important;
}
.main-topBar-button[aria-label="Go forward"] path {
d: path(
"M2.5 2.5L2.5 2.5Q4.8 0.2 8.0 0.2Q11.2 0.2 13.5 2.5Q15.8 4.8 15.8 8.0Q15.8 11.2 13.5 13.5Q11.2 15.7 8 15.7Q4.8 15.7 2.5 13.5Q0.3 11.2 0.3 8.0Q0.3 4.8 2.5 2.5ZM11.6 7.5L11.6 7.5L7.3 3.2Q7.1 3.0 6.8 3.0Q6.5 3.0 6.3 3.2L6.3 3.2L5.8 3.7Q5.5 4.0 5.5 4.3Q5.5 4.6 5.8 4.8L5.8 4.8L8.9 8.0L5.8 11.2Q5.5 11.4 5.5 11.7Q5.5 12.0 5.8 12.2L5.8 12.2L6.3 12.7Q6.5 13.0 6.8 13.0Q7.1 13.0 7.3 12.7L7.3 12.7L11.6 8.5Q11.8 8.3 11.8 8.0Q11.8 7.7 11.6 7.5Z"
) !important;
}
.main-topBar-container button[aria-label="Friend Activity"] path {
d: path(
"M4.4 6.4L4.4 6.4Q3.8 7.0 3 7.0Q2.2 7.0 1.6 6.4Q1 5.8 1 5.0Q1 4.2 1.6 3.6Q2.2 3.0 3 3.0Q3.8 3.0 4.4 3.6Q5 4.2 5 5.0Q5 5.8 4.4 6.4ZM18.4 6.4L18.4 6.4Q17.8 7.0 17 7.0Q16.2 7.0 15.6 6.4Q15 5.8 15 5.0Q15 4.2 15.6 3.6Q16.2 3.0 17 3.0Q17.8 3.0 18.4 3.6Q19 4.2 19 5.0Q19 5.8 18.4 6.4ZM16 8.0L18 8.0Q18.8 8.0 19.4 8.6Q20 9.2 20 10.0L20 10.0L20 11.0Q20 11.4 19.7 11.7Q19.4 12.0 19 12.0L19 12.0L16.9 12.0Q16.8 11.3 16.5 10.6Q16.2 10.0 15.7 9.4Q15.2 8.9 14.6 8.6L14.6 8.6Q15.2 8.0 16 8.0L16 8.0ZM12.5 7.0L12.5 7.0Q11.4 8.0 10 8.0Q8.6 8.0 7.5 7.0Q6.5 5.9 6.5 4.5Q6.5 3.1 7.5 2.0Q8.6 1.0 10 1.0Q11.4 1.0 12.5 2.0Q13.5 3.1 13.5 4.5Q13.5 5.9 12.5 7.0ZM12.1 9.0L12.4 9.0Q13.9 9.0 15.0 10.0Q16 11.1 16 12.6L16 12.6L16 13.5Q16 14.1 15.6 14.5Q15.1 15.0 14.5 15.0L14.5 15.0L5.5 15.0Q4.9 15.0 4.4 14.6Q4 14.1 4 13.5L4 13.5L4 12.6Q4 11.1 5.0 10.0Q6.1 9.0 7.6 9.0L7.6 9.0L7.9 9.0Q8.9 9.5 10 9.5Q11.1 9.5 12.1 9.0L12.1 9.0ZM5.4 8.6L5.4 8.6Q4.5 9.1 3.8 10.0Q3.2 10.9 3.1 12.0L3.1 12.0L1 12.0Q0.6 12.0 0.3 11.7Q0 11.4 0 11.0L0 11.0L0 10.0Q0 9.2 0.6 8.6Q1.2 8.0 2 8.0L2 8.0L4 8.0Q4.8 8.0 5.4 8.6Z"
) !important;
transform: scale(0.8);
}
.main-userWidget-box path {
d: path(
"M13.5 2.5L13.5 2.5Q15.8 4.8 15.8 8.0Q15.8 11.2 13.5 13.5Q11.2 15.7 8 15.7Q4.8 15.7 2.5 13.5Q0.3 11.2 0.3 8.0Q0.3 4.8 2.5 2.5Q4.8 0.2 8 0.2Q11.2 0.2 13.5 2.5ZM8.5 11.6L8.5 11.6L12.8 7.3Q13 7.1 13 6.8Q13 6.5 12.8 6.2L12.8 6.2L12.3 5.7Q12 5.5 11.7 5.5Q11.4 5.5 11.2 5.7L11.2 5.7L8 8.9L4.8 5.7Q4.6 5.5 4.3 5.5Q4.0 5.5 3.8 5.7L3.8 5.7L3.3 6.2Q3 6.5 3 6.8Q3 7.1 3.3 7.3L3.3 7.3L7.5 11.6Q7.7 11.8 8 11.8Q8.3 11.8 8.5 11.6Z"
) !important;
}
.main-userWidget-box[data-context-menu-open="true"] path {
d: path(
"M2.5 13.5L2.5 13.5Q0.3 11.2 0.3 8.0Q0.3 4.8 2.5 2.5Q4.8 0.2 8 0.2Q11.2 0.2 13.5 2.5Q15.8 4.8 15.8 8.0Q15.8 11.2 13.5 13.5Q11.2 15.7 8.0 15.7Q4.8 15.7 2.5 13.5ZM7.5 4.4L7.5 4.4L3.3 8.7Q3 8.9 3 9.2Q3 9.5 3.3 9.7L3.3 9.7L3.8 10.2Q4 10.5 4.3 10.5Q4.6 10.5 4.8 10.2L4.8 10.2L8 7.1L11.2 10.2Q11.4 10.5 11.7 10.5Q12.0 10.5 12.3 10.2L12.3 10.2L12.8 9.7Q13 9.5 13 9.2Q13 8.9 12.8 8.7L12.8 8.7L8.5 4.4Q8.3 4.2 8 4.2Q7.7 4.2 7.5 4.4Z"
) !important;
}
.player-controls__left,
.player-controls__right {
height: 30px;
align-self: flex-end;
}
.main-shuffleButton-button path:nth-child(1) {
d: path(
"M13.3 8.7L15.8 11.2Q16 11.4 16 11.7Q16 12.1 15.8 12.3L15.8 12.3L13.3 14.8Q12.9 15.1 12.5 14.9Q12 14.7 12 14.2L12 14.2L12 13.0L10.2 13.0Q10 13.0 9.9 12.9L9.9 12.9L7.7 10.5L9.3 8.7L11 10.5L12 10.5L12 9.2Q12 8.7 12.5 8.5Q12.9 8.4 13.3 8.7L13.3 8.7ZM3 5.5L0.4 5.5Q0 5.5 0 5.1L0 5.1L0 3.4Q0 3.0 0.4 3.0L0.4 3.0L3.8 3.0Q4 3.0 4.1 3.1L4.1 3.1L6.3 5.5L4.7 7.3L3 5.5ZM12 6.7L12 5.5L11 5.5L4.1 12.9Q4 13.0 3.8 13.0L3.8 13.0L0.4 13.0Q0 13.0 0 12.6L0 12.6L0 10.9Q0 10.5 0.4 10.5L0.4 10.5L3 10.5L9.9 3.1Q10 3.0 10.2 3.0L10.2 3.0L12 3.0L12 1.7Q12 1.2 12.5 1.0Q12.9 0.9 13.3 1.2L13.3 1.2L15.8 3.7Q16 3.9 16 4.2Q16 4.6 15.8 4.8L15.8 4.8L13.3 7.3Q12.9 7.6 12.5 7.4Q12 7.2 12 6.7L12 6.7Z"
) !important;
}
.main-shuffleButton-button path:nth-child(2) {
display: none;
}
.main-skipBackButton-button path {
d: path(
"M7 7.5L7 7.5L11.3 3.2Q11.5 3.0 11.8 3.0Q12.1 3.0 12.3 3.2L12.3 3.2L13 3.9Q13.2 4.1 13.2 4.5Q13.2 4.8 13 5.0L13 5.0L10 8.0L13 11.0Q13.2 11.1 13.2 11.3Q13.3 11.5 13.2 11.7Q13.2 11.9 13 12.1L13 12.1L12.3 12.8Q12.1 13.0 11.8 13.0Q11.5 13.0 11.3 12.8L11.3 12.8L7 8.5Q6.8 8.3 6.8 8.0Q6.8 7.7 7 7.5ZM5.3 12.8L1 8.5Q0.8 8.3 0.8 8.0Q0.8 7.7 1 7.5L1 7.5L5.3 3.2Q5.5 3.0 5.8 3.0Q6.1 3.0 6.3 3.2L6.3 3.2L7 3.9Q7.2 4.1 7.2 4.5Q7.2 4.8 7 5.0L7 5.0L4 8.0L7 11.0Q7.2 11.2 7.2 11.5Q7.2 11.8 7 12.1L7 12.1L6.3 12.8Q6.1 13.0 5.8 13.0Q5.5 13.0 5.3 12.8L5.3 12.8Z"
) !important;
}
.main-skipForwardButton-button path {
d: path(
"M7 8.5L7 8.5L2.8 12.8Q2.5 13.0 2.2 13.0Q1.9 13.0 1.7 12.8L1.7 12.8L1 12.1Q0.8 11.8 0.8 11.5Q0.8 11.2 1 11.0L1 11.0L4 8.0L1 5.0Q0.8 4.8 0.8 4.5Q0.8 4.1 1 3.9L1 3.9L1.7 3.2Q1.9 3.0 2.2 3.0Q2.5 3.0 2.8 3.2L2.8 3.2L7 7.5Q7.2 7.7 7.2 8.0Q7.2 8.3 7 8.5ZM8.8 3.2L13 7.5Q13.2 7.7 13.2 8.0Q13.2 8.3 13 8.5L13 8.5L8.8 12.8Q8.5 13.0 8.2 13.0Q7.9 13.0 7.7 12.8L7.7 12.8L7 12.1Q6.8 11.8 6.8 11.5Q6.8 11.2 7 11.0L7 11.0L10 8.0L7 5.0Q6.8 4.8 6.8 4.5Q6.8 4.1 7 3.9L7 3.9L7.7 3.2Q7.8 3.1 7.9 3.1Q8.1 3.0 8.2 3.0Q8.4 3.0 8.5 3.1Q8.7 3.1 8.8 3.2L8.8 3.2Z"
) !important;
}
.main-repeatButton-button path {
d: path(
"M16 8.0L16 8.0Q16 10.0 14.5 11.5Q13.1 13.0 11 13.0L11 13.0L5.3 13.0L6.4 14.0Q6.6 14.2 6.6 14.5Q6.6 14.9 6.4 15.1L6.4 15.1L6.1 15.4Q5.8 15.6 5.5 15.6Q5.2 15.6 5 15.4L5 15.4L2.1 12.5Q1.9 12.3 1.9 12.0Q1.9 11.7 2.1 11.5L2.1 11.5L5 8.6Q5.2 8.3 5.5 8.3Q5.8 8.3 6.1 8.6L6.1 8.6L6.4 8.9Q6.6 9.1 6.6 9.4Q6.6 9.8 6.4 10.0L6.4 10.0L5.3 11.0L11 11.0Q12.3 11.0 13.1 10.1Q14 9.2 14 8.0L14 8.0Q14 7.3 13.8 6.8L13.8 6.8Q13.5 6.3 13.9 5.9L13.9 5.9L14.3 5.6Q14.5 5.3 14.9 5.3Q15.3 5.4 15.5 5.7L15.5 5.7Q16 6.8 16 8.0ZM2.3 9.2L2.3 9.2Q2.5 9.7 2.1 10.1L2.1 10.1L1.7 10.4Q1.5 10.7 1.1 10.6Q0.7 10.6 0.5 10.2L0.5 10.2Q0 9.2 0 8.0L0 8.0Q0 5.9 1.5 4.5Q2.9 3.0 5 3.0L5 3.0L10.7 3.0L9.6 2.0Q9.4 1.8 9.4 1.4Q9.4 1.1 9.6 0.9L9.6 0.9L9.9 0.6Q10.2 0.3 10.5 0.3Q10.8 0.3 11 0.6L11 0.6L13.9 3.5Q14.1 3.7 14.1 4.0Q14.1 4.3 13.9 4.5L13.9 4.5L11 7.4Q10.8 7.6 10.5 7.6Q10.2 7.6 9.9 7.4L9.9 7.4L9.6 7.1Q9.4 6.9 9.4 6.5Q9.4 6.2 9.6 6.0L9.6 6.0L10.7 5.0L5 5.0Q3.8 5.0 2.9 5.9Q2 6.7 2 8.0L2 8.0Q2 8.6 2.3 9.2Z"
) !important;
}
.main-repeatButton-button[aria-checked="mixed"] path {
d: path(
"M16 8.0L16 8.0Q16 10.0 14.5 11.5Q13.1 13.0 11 13.0L11 13.0L5.3 13.0L6.4 14.0Q6.6 14.2 6.6 14.5Q6.6 14.9 6.4 15.1L6.4 15.1L6.1 15.4Q5.8 15.6 5.5 15.6Q5.2 15.6 5 15.4L5 15.4L2.1 12.5Q1.9 12.3 1.9 12.0Q1.9 11.7 2.1 11.5L2.1 11.5L4.6 9.0Q4.8 8.7 5.2 8.7Q5.5 8.7 5.7 9.0L5.7 9.0L6.0 9.3Q6.3 9.5 6.3 9.8Q6.3 10.1 6 10.4L6 10.4L5.3 11.0L11 11.0Q12.3 11.0 13.1 10.1Q14 9.2 14 8.0L14 8.0Q14 7.3 13.8 6.8L13.8 6.8Q13.5 6.3 13.9 5.9L13.9 5.9L14.3 5.6Q14.5 5.3 14.9 5.3Q15.3 5.4 15.5 5.7L15.5 5.7Q16 6.8 16 8.0ZM2.3 9.2L2.3 9.2Q2.5 9.7 2.1 10.1L2.1 10.1L1.7 10.4Q1.5 10.7 1.1 10.6Q0.7 10.6 0.5 10.2L0.5 10.2Q0 9.2 0 8.0L0 8.0Q0 5.9 1.5 4.5Q2.9 3.0 5 3.0L5 3.0L10.7 3.0L9.6 2.0Q9.4 1.8 9.4 1.4Q9.4 1.1 9.6 0.9L9.6 0.9L9.9 0.6Q10.2 0.3 10.5 0.3Q10.8 0.3 11 0.6L11 0.6L13.9 3.5Q14.1 3.7 14.1 4.0Q14.1 4.3 13.9 4.5L13.9 4.5L11.4 7.0Q11.2 7.2 10.8 7.2Q10.5 7.2 10.3 7.0L10.3 7.0L10.0 6.7Q9.8 6.5 9.8 6.1Q9.8 5.8 10 5.6L10 5.6L10.7 5.0L5 5.0Q3.8 5.0 2.9 5.9Q2 6.7 2 8.0L2 8.0Q2 8.6 2.3 9.2ZM7.1 9.6L7.1 9.4Q7.1 9.0 7.5 9.0L7.5 9.0L7.9 9.0L7.9 7.7L8.0 7.4L7.9 7.4Q7.9 7.5 7.8 7.5L7.8 7.5Q7.6 7.8 7.4 7.5L7.4 7.5L7.2 7.3Q6.9 7.1 7.2 6.8L7.2 6.8L7.9 6.2Q8.1 6.0 8.3 6.0L8.3 6.0L8.7 6.0Q9.1 6.0 9.1 6.4L9.1 6.4L9.1 9.0L9.6 9.0Q9.9 9.0 9.9 9.4L9.9 9.4L9.9 9.6Q9.9 10.0 9.6 10.0L9.6 10.0L7.5 10.0Q7.1 10.0 7.1 9.6L7.1 9.6Z"
) !important;
}
.main-nowPlayingBar-lyricsButton path {
d: path(
"M6.2 1.3L6.2 1.3Q7.3 0.7 8.5 0.7Q9.7 0.7 10.8 1.3Q11.8 1.9 12.4 2.9Q13 3.9 13 5.2L13 5.2Q13 6.0 12.7 6.8Q12.4 7.6 11.8 8.2Q11.3 8.7 10.6 9.1Q9.8 9.5 9.0 9.6L9.0 9.6L4.8 14.6Q4.4 15.0 3.8 15.0L3.8 15.0Q3.4 15.0 3.1 14.8L3.1 14.8L2.5 14.5Q2.1 14.2 1.9 13.8Q1.8 13.3 2.0 12.8L2.0 12.8L4.5 7.2Q4 6.2 4 5.2L4 5.2Q4 3.9 4.6 2.9Q5.2 1.9 6.2 1.3ZM4.0 13.9L4.0 13.9L7.7 9.6Q6.2 9.3 5.2 8.1L5.2 8.1L2.9 13.2Q2.9 13.3 2.9 13.4Q2.9 13.6 3.0 13.6L3.0 13.6L3.6 14.0Q3.7 14.0 3.8 14.0Q4.0 14.0 4.0 13.9ZM6.0 7.6L6.0 7.6Q7.1 8.7 8.5 8.7Q9.9 8.7 11.0 7.6Q12 6.6 12 5.2Q12 3.7 11.0 2.7Q9.9 1.7 8.5 1.7Q7.1 1.7 6.0 2.7Q5 3.7 5 5.2Q5 6.6 6.0 7.6Z"
) !important;
}
.main-nowPlayingBar-extraControls button[aria-label="Queue"] path {
d: path(
"M8.5 8.0L0.5 8.0Q0.3 8.0 0.1 7.8Q0 7.7 0 7.5L0 7.5L0 6.5Q0 6.3 0.1 6.1Q0.3 6.0 0.5 6.0L0.5 6.0L8.5 6.0Q8.7 6.0 8.9 6.1Q9 6.3 9 6.5L9 6.5L9 7.5Q9 7.7 8.9 7.8Q8.7 8.0 8.5 8.0L8.5 8.0ZM8.5 4.0L0.5 4.0Q0.3 4.0 0.1 3.8Q0 3.7 0 3.5L0 3.5L0 2.5Q0 2.3 0.1 2.1Q0.3 2.0 0.5 2.0L0.5 2.0L8.5 2.0Q8.7 2.0 8.9 2.1Q9 2.3 9 2.5L9 2.5L9 3.5Q9 3.7 8.9 3.8Q8.7 4.0 8.5 4.0L8.5 4.0ZM0.5 10.0L4.5 10.0Q4.7 10.0 4.9 10.1Q5 10.3 5 10.5L5 10.5L5 11.5Q5 11.7 4.9 11.8Q4.7 12.0 4.5 12.0L4.5 12.0L0.5 12.0Q0.3 12.0 0.1 11.8Q0 11.7 0 11.5L0 11.5L0 10.5Q0 10.3 0.1 10.1Q0.3 10.0 0.5 10.0L0.5 10.0ZM11.7 0.9L14.7 0.0Q14.8-0.0 15-0.0L15-0.0Q15.4-0.0 15.7 0.3Q16 0.6 16 1.0L16 1.0L16 3.0Q16 3.3 15.8 3.6Q15.6 3.9 15.3 4.0L15.3 4.0L13 4.6L13 13.5Q13 14.5 12.0 15.3Q10.9 16.0 9.5 16.0Q8.1 16.0 7.0 15.3Q6 14.5 6 13.5Q6 12.5 7.0 11.7Q8.1 11.0 9.5 11.0L9.5 11.0Q10.3 11.0 11 11.2L11 11.2L11 1.9Q11 1.6 11.2 1.3Q11.4 1.0 11.7 0.9L11.7 0.9Z"
) !important;
}
.main-devicePicker-controlButton path {
d: path(
"M4 13.0L9 13.0L9 13.5Q9 14.3 9.5 15.0L9.5 15.0L4 15.0Q3.6 15.0 3.3 14.7Q3 14.4 3 14.0Q3 13.6 3.3 13.3Q3.6 13.0 4 13.0L4 13.0ZM0 10.5L0 2.5Q0 1.9 0.4 1.4Q0.9 1.0 1.5 1.0L1.5 1.0L9.5 1.0Q9 1.6 9 2.5L9 2.5L9 3.0L2 3.0L2 10.0L9 10.0L9 12.0L1.5 12.0Q0.9 12.0 0.4 11.6Q0 11.1 0 10.5L0 10.5ZM11.5 1.0L18.5 1.0Q19.1 1.0 19.6 1.4Q20 1.9 20 2.5L20 2.5L20 13.5Q20 14.1 19.6 14.5Q19.1 15.0 18.5 15.0L18.5 15.0L11.5 15.0Q10.9 15.0 10.4 14.6Q10 14.1 10 13.5L10 13.5L10 2.5Q10 1.9 10.4 1.4Q10.9 1.0 11.5 1.0L11.5 1.0ZM15.7 3.3L15.7 3.3Q15.4 3.0 15.0 3.0Q14.6 3.0 14.3 3.3Q14 3.6 14 4.0Q14 4.4 14.3 4.7Q14.6 5.0 15 5.0Q15.4 5.0 15.7 4.7Q16 4.4 16 4.0Q16 3.6 15.7 3.3ZM12.9 12.1L12.9 12.1Q13.8 13.0 15.0 13.0Q16.3 13.0 17.1 12.1Q18 11.2 18 10.0Q18 8.7 17.1 7.9Q16.3 7.0 15.0 7.0Q13.8 7.0 12.9 7.9Q12 8.7 12 10.0Q12 11.2 12.9 12.1ZM13.6 8.6L13.6 8.6Q14.2 8.0 15 8.0Q15.8 8.0 16.4 8.6Q17 9.2 17 10.0Q17 10.8 16.4 11.4Q15.8 12.0 15 12.0Q14.2 12.0 13.6 11.4Q13 10.8 13 10.0Q13 9.2 13.6 8.6Z"
) !important;
transform: scaleX(0.8);
}
.main-nowPlayingBar-extraControls svg[aria-label="Volume off"] path {
d: path(
"M3.9 5.0L6.7 2.2Q7.1 1.9 7.5 2.0Q8 2.2 8 2.7L8 2.7L8 13.2Q8 13.7 7.5 13.9Q7.1 14.1 6.7 13.8L6.7 13.8L3.9 11.0L0.8 11.0Q0.4 11.0 0.2 10.8Q0 10.6 0 10.2L0 10.2L0 5.7Q0 5.4 0.2 5.2Q0.4 5.0 0.8 5.0L0.8 5.0L3.9 5.0ZM15.8 6.6L14.4 8.0L15.8 9.4Q16.2 9.8 15.8 10.1L15.8 10.1L15.1 10.8Q14.8 11.2 14.4 10.8L14.4 10.8L13 9.4L11.6 10.8Q11.2 11.2 10.9 10.8L10.9 10.8L10.2 10.1Q9.8 9.8 10.2 9.4L10.2 9.4L11.6 8.0L10.2 6.6Q9.8 6.2 10.2 5.9L10.2 5.9L10.9 5.1Q11.2 4.8 11.6 5.1L11.6 5.1L13 6.6L14.4 5.1Q14.8 4.8 15.1 5.1L15.1 5.1L15.8 5.9Q16.2 6.2 15.8 6.6L15.8 6.6Z"
) !important;
}
.main-nowPlayingBar-extraControls svg[aria-label="Volume low"] path {
d: path(
"M3.9 5.0L6.7 2.2Q7.1 1.9 7.5 2.1Q8 2.3 8 2.8L8 2.8L8 13.3Q8 13.8 7.5 14.0Q7.1 14.1 6.7 13.8L6.7 13.8L3.9 11.0L0.8 11.0Q0.4 11.0 0.2 10.8Q0 10.6 0 10.3L0 10.3L0 5.8Q0 5.5 0.2 5.2Q0.4 5.0 0.8 5.0L0.8 5.0L3.9 5.0ZM10.6 5.6L10.6 5.6Q11.2 6.0 11.6 6.6Q12 7.3 12 8.0Q12 8.8 11.6 9.4Q11.2 10.1 10.6 10.4L10.6 10.4Q10.3 10.6 10.0 10.5Q9.7 10.4 9.5 10.1Q9.4 9.9 9.5 9.6Q9.6 9.3 9.8 9.1L9.8 9.1Q10.5 8.7 10.5 8.0Q10.5 7.3 9.8 6.9L9.8 6.9Q9.6 6.8 9.5 6.5Q9.4 6.2 9.5 5.9Q9.7 5.6 10.0 5.6Q10.3 5.5 10.6 5.6Z"
) !important;
}
.main-nowPlayingBar-extraControls svg[aria-label="Volume medium"] path {
d: path(
"M3.9 5.0L6.7 2.2Q7.1 1.9 7.5 2.0Q8 2.2 8 2.7L8 2.7L8 13.2Q8 13.7 7.5 13.9Q7.1 14.1 6.7 13.8L6.7 13.8L3.9 11.0L0.8 11.0Q0.4 11.0 0.2 10.8Q0 10.6 0 10.2L0 10.2L0 5.7Q0 5.4 0.2 5.2Q0.4 5.0 0.8 5.0L0.8 5.0L3.9 5.0ZM14.3 5.2L14.3 5.2Q15 6.5 15 8.0Q15 9.5 14.3 10.8Q13.6 12.1 12.3 12.9L12.3 12.9Q12.0 13.0 11.7 13.0Q11.4 12.9 11.3 12.6L11.3 12.6Q11.1 12.4 11.2 12.1Q11.3 11.8 11.5 11.6L11.5 11.6Q12.1 11.2 12.6 10.6Q13.0 10.1 13.3 9.4Q13.5 8.7 13.5 8.0Q13.5 7.3 13.3 6.6Q13.0 5.9 12.6 5.3Q12.1 4.8 11.5 4.4L11.5 4.4Q11.3 4.2 11.2 3.9Q11.1 3.6 11.3 3.4Q11.4 3.1 11.8 3.0Q12.1 2.9 12.3 3.1L12.3 3.1Q13.6 3.9 14.3 5.2ZM10.6 5.6L10.6 5.6Q11.2 6.0 11.6 6.6Q12 7.2 12 8.0Q12 8.7 11.6 9.4Q11.2 10.0 10.6 10.4L10.6 10.4Q10.3 10.5 10.0 10.5Q9.7 10.4 9.5 10.1Q9.4 9.8 9.5 9.5Q9.6 9.2 9.8 9.1L9.8 9.1Q10.5 8.7 10.5 8.0Q10.5 7.3 9.8 6.9L9.8 6.9Q9.6 6.7 9.5 6.4Q9.4 6.1 9.5 5.9Q9.7 5.6 10.0 5.5Q10.3 5.4 10.6 5.6Z"
) !important;
}
.main-nowPlayingBar-extraControls svg[aria-label="Volume high"] path {
d: path(
"M3.9 5.0L6.7 2.2Q7.1 1.9 7.5 2.0Q8 2.2 8 2.7L8 2.7L8 13.2Q8 13.7 7.5 13.9Q7.1 14.1 6.7 13.8L6.7 13.8L3.9 11.0L0.8 11.0Q0.4 11.0 0.2 10.8Q0 10.6 0 10.2L0 10.2L0 5.7Q0 5.4 0.2 5.2Q0.4 5.0 0.8 5.0L0.8 5.0L3.9 5.0ZM14.3 5.2L14.3 5.2Q15 6.5 15 8.0Q15 9.5 14.3 10.8Q13.6 12.1 12.3 12.9L12.3 12.9Q12.0 13.0 11.7 13.0Q11.4 12.9 11.3 12.6L11.3 12.6Q11.1 12.4 11.2 12.1Q11.3 11.8 11.5 11.6L11.5 11.6Q12.1 11.2 12.6 10.6Q13.0 10.1 13.3 9.4Q13.5 8.7 13.5 8.0Q13.5 7.3 13.3 6.6Q13.0 5.9 12.6 5.3Q12.1 4.8 11.5 4.4L11.5 4.4Q11.3 4.2 11.2 3.9Q11.1 3.6 11.3 3.4Q11.4 3.1 11.8 3.0Q12.1 2.9 12.3 3.1L12.3 3.1Q13.6 3.9 14.3 5.2ZM10.6 5.6L10.6 5.6Q11.2 6.0 11.6 6.6Q12 7.2 12 8.0Q12 8.7 11.6 9.4Q11.2 10.0 10.6 10.4L10.6 10.4Q10.3 10.5 10.0 10.5Q9.7 10.4 9.5 10.1Q9.4 9.8 9.5 9.5Q9.6 9.2 9.8 9.1L9.8 9.1Q10.5 8.7 10.5 8.0Q10.5 7.3 9.8 6.9L9.8 6.9Q9.6 6.7 9.5 6.4Q9.4 6.1 9.5 5.9Q9.7 5.6 10.0 5.5Q10.3 5.4 10.6 5.6Z"
) !important;
}
.main-nowPlayingBar-extraControls button[aria-label="Full screen"] path {
d: path(
"M15.5 0.7L15.5 0.7Q15.5 0.7 15.5 0.7Q15.5 0.8 15.5 0.8L15.5 0.8Q15.5 0.8 15.5 0.9L15.5 0.9L15.5 3.9Q15.5 4.1 15.4 4.2Q15.2 4.4 15 4.4Q14.8 4.4 14.6 4.2Q14.5 4.1 14.5 3.9L14.5 3.9L14.5 2.1L11.9 4.7Q11.7 4.9 11.5 4.9Q11.3 4.9 11.1 4.7L11.1 4.7Q11 4.6 11 4.4Q11 4.2 11.1 4.0L11.1 4.0L13.8 1.4L12 1.4Q11.8 1.4 11.6 1.2Q11.5 1.1 11.5 0.9Q11.5 0.7 11.6 0.5Q11.8 0.4 12 0.4L12 0.4L15 0.4Q15.1 0.4 15.1 0.4L15.1 0.4Q15.1 0.4 15.1 0.4Q15.1 0.4 15.1 0.4L15.1 0.4Q15.2 0.4 15.2 0.4L15.2 0.4L15.2 0.4Q15.2 0.4 15.3 0.4Q15.3 0.5 15.3 0.5L15.3 0.5Q15.4 0.5 15.4 0.6L15.4 0.6Q15.4 0.6 15.4 0.6Q15.4 0.6 15.4 0.6L15.4 0.6Q15.5 0.7 15.5 0.7L15.5 0.7Q15.5 0.7 15.5 0.7ZM1.5 13.7L4.1 11.0Q4.3 10.9 4.5 10.9Q4.7 10.9 4.9 11.0L4.9 11.0Q5 11.2 5 11.4Q5 11.6 4.9 11.7L4.9 11.7L2.2 14.4L4 14.4Q4.2 14.4 4.4 14.5Q4.5 14.7 4.5 14.9Q4.5 15.1 4.4 15.2Q4.2 15.4 4 15.4L4 15.4L1 15.4Q0.9 15.4 0.9 15.4L0.9 15.4Q0.9 15.4 0.9 15.3Q0.9 15.3 0.9 15.3L0.9 15.3Q0.8 15.3 0.8 15.3L0.8 15.3L0.8 15.3Q0.8 15.3 0.7 15.3Q0.7 15.3 0.7 15.3L0.7 15.3Q0.6 15.2 0.6 15.1L0.6 15.1Q0.6 15.1 0.6 15.1Q0.6 15.1 0.6 15.1L0.6 15.1L0.5 15.1Q0.5 15.0 0.5 15.0L0.5 15.0Q0.5 15 0.5 15.0Q0.5 15.0 0.5 15.0L0.5 15.0Q0.5 14.9 0.5 14.9L0.5 14.9L0.5 11.9Q0.5 11.7 0.6 11.5Q0.8 11.4 1 11.4Q1.2 11.4 1.4 11.5Q1.5 11.7 1.5 11.9L1.5 11.9L1.5 13.7Z"
) !important;
}
/* ylx */
.Root {
--panel-gap: 0 !important;
overflow: hidden;
}
.spotify__container--is-desktop .Root__top-container {
padding-top: 32px !important;
}
.main-nowPlayingBar-nowPlayingBar {
height: 90px;
padding: 0 16px !important;
}
[dir="ltr"] .main-coverSlotCollapsed-navAltContainer {
transform: none;
}
.main-yourLibraryX-navItem:has(.main-yourLibraryX-navLinkActive) {
padding: 0;
}
.main-yourLibraryX-navLinkActive {
color: var(--spice-sidebar) !important;
background-color: var(--spice-sec-card);
border-radius: 10px;
padding: 24px 12px;
}
.main-yourLibraryX-navLinkActive .home-active-icon,
.main-yourLibraryX-navLinkActive .search-active-icon {
color: var(--spice-sidebar) !important;
}
.link-subtle {
transition: none;
}
.spotify__container--is-desktop .Root__top-container {
padding-top: calc(24px + var(--panel-gap)-3);
background-color: var(--spice-main);
}
.main-yourLibraryX-navItems {
background-color: var(--spice-sidebar);
}
.main-yourLibraryX-libraryRootlist {
background-color: var(--spice-sidebar);
}
.main-yourLibraryX-header {
background-color: var(--spice-sidebar);
}
.main-yourLibraryX-filterArea {
background-color: var(--spice-sidebar);
}
.LayoutResizer__inline-end {
inset-inline-end: 8px;
}
.LayoutResizer__inline-start {
inset-inline-start: 8px;
}
.LayoutResizer__resize-bar {
width: 8px;
}

View File

@@ -0,0 +1,436 @@
[Wealthy]
; Green on dark grey background
text = 8bc34a
subtext = b4b4b4
nav-active-text = 202020
main = 202020
sidebar = 202020
player = 242424
card = 242424
shadow = 000000
main-secondary = 171717
button = 8bc34a
button-secondary = 6a913d
button-active = 98da4b
button-disabled = 353535
nav-active = 8bc34a
play-button = 8bc34a
tab-active = 171717
notification = 242424
notification-error = 242424
playback-bar = 8bc34a
misc = FFFFFF
[Cherry]
; Pink on dark blue background
text = d98ba1
subtext = d7d7d7
nav-active-text = 131c26
main = 131c26
sidebar = 131c26
player = 131c26
card = 131c26
shadow = 0e0e13
main-secondary = 09111b
button = d98ba1
button-secondary = d98ba1
button-active = ff84ac
button-disabled = 192531
nav-active = ff84ac
play-button = d98ba1
tab-active = 09111b
notification = 192531
notification-error = 192531
playback-bar = d98ba1
misc = FFFFFF
[Coral]
; Salmon on dark blue background
text = f88379
subtext = d7d7d7
nav-active-text = 131c26
main = 131c26
sidebar = 131c26
player = 131c26
card = 131c26
shadow = 0e0e13
main-secondary = 09111b
button = f88379
button-secondary = f88379
button-active = fb958b
button-disabled = 192531
nav-active = fb958b
play-button = f88379
tab-active = 09111b
notification = 192531
notification-error = 192531
playback-bar = f88379
misc = FFFFFF
[Deep]
; White on dark blue background
text = ffffff
subtext = ffffff
nav-active-text = ffffff
main = 020816
sidebar = 051024
player = 030b1e
card = 0a1527
shadow = 000000
main-secondary = 06142d
button = 1464b5
button-secondary = ffffff
button-active = 4a99e9
button-disabled = 21282f
nav-active = 37b778
play-button = 37b778
tab-active = 0a1527
notification = 051024
notification-error = 051024
playback-bar = 37b778
misc = FFFFFF
[Greener]
; White on dark and green background
text = ffffff
subtext = ffffff
nav-active-text = ffffff
main = 020816
sidebar = 020816
player = 020816
card = 020816
shadow = 000000
main-secondary = 216d48
button = 37b778
button-secondary = ffffff
button-active = 37b778
button-disabled = 21282f
nav-active = 37b778
play-button = 37b778
tab-active = 2c9260
notification = 051024
notification-error = 051024
playback-bar = 37b778
misc = FFFFFF
[Deeper]
; Light blue on dark background
text = 4f9a87
subtext = 4f9a87
nav-active-text = 4f9a87
main = 040614
sidebar = 0F111A
player = 0F111A
card = 0C1C19
shadow = 000000
main-secondary = 131520
button = 4f9a87
button-secondary = 4f9a87
button-active = 4a99e9
button-disabled = 0C1C19
nav-active = 040614
play-button = 4f9a87
tab-active = 0a1527
notification = 051024
notification-error = 051024
playback-bar = 4f9a87
misc = FFFFFF
[Psycho]
; Red on dark grey background
text = c20000
subtext = ffffff
nav-active-text = 101010
main = 101010
sidebar = 171717
player = 171717
card = 171717
shadow = 000000
main-secondary = 1f1f1f
button = c20000
button-secondary = a20606
button-active = c20000
button-disabled = 404040
nav-active = 9f0909
play-button = c20000
tab-active = 171717
notification = 5e0000
notification-error = 5e0000
playback-bar = c20000
misc = FFFFFF
[UltraBlack]
; White on black background
text = FFFFFF
subtext = DEDEDE
nav-active-text = 000000
main = 000000
sidebar = 000000
player = 000000
card = 000000
shadow = 000000
main-secondary = 292929
button = 1DB954
button-secondary = DEDEDE
button-active = 1DB954
button-disabled = 2f2f2f
nav-active = DEDEDE
play-button = DEDEDE
tab-active = 292929
notification = 292929
notification-error = 292929
playback-bar = DEDEDE
misc = FFFFFF
[Nord]
; Light grey on blue background
text = D8DEE9
subtext = E5E9F0
nav-active-text = D8DEE9
main = 2E3440
sidebar = 2E3440
player = 2E3440
card = 2E3440
shadow = 1d2128
main-secondary = 434c5e
button = 5E81AC
button-secondary = D8DEE9
button-active = 81A1C1
button-disabled = 434C5E
nav-active = 4c566a
play-button = 5E81AC
tab-active = 3b4252
notification = 3b4252
notification-error = 3b4252
playback-bar = DEDEDE
misc = FFFFFF
[Futura]
; Cyan on dark background
text = 34ad7e
subtext = DEDEDE
nav-active-text = 2E2837
main = 2E2837
sidebar = 2E2837
player = 2E2837
card = 2E2837
shadow = 000000
main-secondary = 51485b
button = 34ad7e
button-secondary = 34ad7e
button-active = 00bf76
button-disabled = 3f3c45
nav-active = 34ad7e
play-button = 34ad7e
tab-active = 51485b
notification = 51485b
notification-error = 51485b
playback-bar = 34ad7e
misc = FFFFFF
[Elementary]
; Purple and pink on dark background
text = c59dff
subtext = dedede
nav-active-text = 1d1821
main = 1f1f29
sidebar = 1d1821
player = 1d1821
card = 2E2837
shadow = 000000
main-secondary = 1d1821
button = d4516f
button-secondary = c59dff
button-active = f16d8c
button-disabled = 2E303E
nav-active = d4516f
play-button = d4516f
tab-active = 1d1821
notification = 2E2837
notification-error = 2E2837
playback-bar = c59dff
misc = FFFFFF
[BladeRunner]
; Yellow, pink and blue on dark background
text = dcd88c
subtext = 9fbfb7
nav-active-text = 1d1821
main = 181b1e
sidebar = 181b1e
player = 181b1e
card = 17191d
shadow = 000000
main-secondary = 0b0d0e
button = f6867c
button-secondary = dcd88c
button-active = f6867c
button-disabled = 242a2e
nav-active = f6867c
play-button = f6867c
tab-active = 131417
notification = 131417
notification-error = 131417
playback-bar = dcd88c
misc = FFFFFF
[Dracula]
; https://draculatheme.com/contribute
text = 50fa7b
subtext = bd93f9
nav-active-text = 282a36
main = 282a36
sidebar = 282a36
player = 282a36
card = 282a36
shadow = 000000
main-secondary = 1c1e26
button = 50fa7b
button-secondary = ff79c6
button-active = 00bf76
button-disabled = 3f3c45
nav-active = 50fa7b
play-button = 50fa7b
tab-active = 1c1e26
notification = 1c1e26
notification-error = 1c1e26
playback-bar = 50fa7b
misc = FFFFFF
[VantaBlack]
; Gray on black background
text = 666666
subtext = 666666
nav-active-text = 666666
main = 000000
sidebar = 000000
player = 000000
card = 000000
shadow = 333333
main-secondary = 000000
button = 000000
button-secondary = 000000
button-active = 333333
button-disabled = 000000
nav-active = 333333
play-button = 000000
tab-active = 333333
notification = 000000
notification-error = 000000
playback-bar = 000000
misc = 000000
[RosePine]
; https://rosepinetheme.com/palette
text = e0def4
subtext = 908caa
nav-active-text = ebbcba
main = 191724
sidebar = 191724
player = 191724
card = 1f1d2e
shadow = 191724
main-secondary = 1f1d2e
button = ebbcba
button-secondary = 6e6a86
button-active = ebbcba
button-disabled = 26233a
nav-active = 1f1d2e
play-button = ebbcba
tab-active = 1f1d2e
notification = 26233a
notification-error = eb6f92
playback-bar = 6e6a86
misc = FFFFFF
[Eldritch]
; https://github.com/eldritch-theme/eldritch
text = 37f499
subtext = 04d1f9
nav-active-text = 323449
main = 212337
sidebar = 212337
player = 212337
card = 212337
shadow = 212337
main-secondary = 323449
button = 37f499
button-secondary = 04d1f9
button-active = 37f499
button-disabled = 323449
nav-active = 37f499
play-button = 37f499
tab-active = a48cf2
notification = 212337
notification-error = 212337
playback-bar = 37f499
misc = ebfafa
[Catppuccin]
; https://catppuccin.com/palette
text = cba6f7
subtext = 7c7f93
nav-active-text = fab387
main = 11111b
sidebar = 11111b
player = 11111b
card = 1e1e2e
shadow = 11111b
main-secondary = 1e1e2e
button = a6e3a1
button-secondary = 74c7ec
button-active = f9e2af
button-disabled = 181825
nav-active = 11111b
play-button = ca9ee6
tab-active = 45475a
notification = 11111b
notification-error = 11111b
playback-bar = dc8a78
misc = f4dbd6
[AyuDark]
; https://github.com/ayu-theme/ayu-colors
text = bfbdb6
subtext = 565b66
nav-active-text = e6b450
main = 0b0e14
sidebar = 0b0e14
player = 0b0e14
card = 0b0e14
shadow = 000000
main-secondary = 0b0e14
button = 475266
button-secondary = 74c7ec
button-active = e6b450
button-disabled = 181825
nav-active = 0d1017
play-button = e6b450
tab-active = 0b0e14
notification = 0b0e14
notification-error = 0b0e14
playback-bar = e6b450
misc = f4dbd6
; Description
; text = main text, playlist names in main field, name of playlist selected in sidebar, headings
; subtext = text in main buttons in sidebar, playlist names in sidebar, artist names, and mini infos
; nav-active-text = text in main buttons in sidebar when active
; main = main bg
; main-secondary = bg color of selected song rows, bg color of artist/track cards
; sidebar = sidebar bg
; player = player bg
; card = popup-card bg
; shadow = all shadows
; button = playlist buttons bg in sidebar, drop-down menus, now playing song, like button
; button-secondary = download and options button
; button-active = hover on song selected
; button-disabled = seekbar bg, volume bar bg, scrollbar
; nav-active = sidebar buttons bg
; play-button = color of main play button in main field
; tab-active = button bg in main field (playlists, podcasts, artists, albums)
; notification = notification ('Added to liked songs' etc.)
; playback-bar = seekbar fg, volume bar fg, main play/pause button
; misc = miscellaneous

View File

@@ -0,0 +1,725 @@
:root {
--spice-main-elevated: var(--spice-main);
--spice-highlight: var(--spice-main-secondary);
--spice-highlight-elevated: var(--spice-main-secondary);
}
/*
-------------
TOPBAR
-------------
*/
/* unset colors of history buttons */
.main-topBar-historyButtons .main-topBar-button {
background-color: unset;
}
/* change appearance of icons on search tab input */
.x-searchInput-searchInputSearchIcon svg {
color: var(--spice-text);
height: 17px;
}
.x-searchInput-searchInputClearButton svg {
color: var(--spice-text);
height: 17px;
}
/* topbar navigation items*/
.main-topBar-topbarContentWrapper a {
transition-duration: 0.3s;
border-radius: 8px;
}
/* smooth topbar background colour */
.main-topBar-background {
background-image: linear-gradient(var(--spice-main) 5%, 75%, transparent);
background-color: unset !important;
}
.main-topBar-overlay {
background-color: var(--spice-main);
}
/* simplify profile menu */
.main-userWidget-displayName,
.main-userWidget-notificationIndicator {
display: none;
}
.main-avatar-userIcon {
color: white;
}
.main-userWidget-box {
color: var(--spice-subtext);
background-color: transparent !important;
}
.main-userWidget-chevron {
display: none;
}
/*
-------------
NAVBAR
-------------
*/
/* remove divider gradient */
.main-rootlist-rootlistDividerGradient {
display: none;
}
/* change color of divider */
.main-rootlist-rootlistDivider {
background-color: var(--spice-sidebar);
}
/* add gradient to navbar */
.Root__nav-bar {
background-image: linear-gradient(to bottom left, var(--spice-sidebar) 0%, var(--spice-player) 100%) !important;
}
/* change color of navbar playing icon */
[aria-label="Playing"] {
color: var(--spice-text);
}
.main-navBar-entryPoints [data-id="/add"] {
margin-top: 20px;
}
.main-createPlaylistButton-button {
color: var(--spice-text);
}
.main-createPlaylistButton-createPlaylistIcon {
background-color: var(--spice-text);
}
/* change color of navbar icons */
.main-likedSongsButton-likedSongsIcon {
background: var(--spice-text);
color: var(--spice-sidebar);
}
.main-yourEpisodesButton-yourEpisodesIcon {
background: var(--spice-text);
}
.main-yourEpisodesButton-yourEpisodesIcon path {
fill: var(--spice-sidebar);
}
/* remove opacity of navbar buttons */
.main-collectionLinkButton-collectionLinkButton .main-collectionLinkButton-icon,
.main-collectionLinkButton-collectionLinkButton .main-collectionLinkButton-collectionLinkText,
.main-createPlaylistButton-button {
opacity: unset;
}
.main-collectionLinkButton-collectionLinkButton {
color: var(--spice-subtext);
}
/* change colors of active tab */
.main-yourLibraryX-navLink {
border-radius: 8px;
margin: 6px 0;
padding: 0 10px;
}
.main-yourLibraryX-navItem {
padding: 0;
}
.main-navBar-navBarLinkActive,
.main-navBar-navBarLinkActive:focus,
.main-navBar-navBarLinkActive:hover,
.main-collectionLinkButton-selected,
.main-collectionLinkButton-selected svg,
.main-yourLibraryX-navLinkActive,
.main-yourLibraryX-navLinkActive .home-active-icon,
.main-yourLibraryX-navLinkActive .search-active-icon {
color: var(--spice-nav-active-text) !important;
background-color: var(--spice-nav-active);
}
/* color of navbar icons */
.collection-icon,
.premiumSpotifyIcon,
.search-icon {
color: var(--spice-subtext);
}
.main-navBar-navBarLink {
transition: none;
}
.main-navBar-navBarLink:not(.main-navBar-navBarLinkActive):hover svg {
color: var(--spice-text);
}
.main-yourLibraryX-entryPoints {
background-color: var(--spice-sidebar);
}
.main-yourLibraryX-isScrolled {
-webkit-box-shadow: 0 20px 10px -10px var(--spice-sidebar);
box-shadow: 0 20px 10px -10px var(--spice-sidebar);
}
/* traclists and playlists loading placeholder */
.main-trackList-placeholder,
.Pns6F5g4OEwEpdmOWTLg,
.eldivguzYznZgQoShJbe {
background-color: var(--background-base);
background-blend-mode: color-dodge;
}
/*
---------------
PLAYBACK BAR
---------------
*/
/* playback progress bar moves smoothly */
.x-progressBar-fillColor {
transition: transform 1s linear;
}
.progress-bar__slider {
transition: left 1s linear;
}
.progress-bar--isDragging .x-progressBar-fillColor, .progress-bar--isDragging .progress-bar__slider {
transition: none;
}
/* round cover art when collapsed */
.main-coverSlotCollapsed-container .cover-art-image {
border-radius: 8px;
transition-duration: 0.15s;
}
.main-coverSlotExpandedCollapseButton-collapseButton {
right: 10px !important;
top: 10px !important;
}
/* hide and move progress time location */
.playback-bar__progress-time-elapsed {
opacity: 0;
position: absolute;
bottom: 13px;
left: 0;
transition-duration: 0.3s;
background-color: rgba(var(--spice-rgb-sidebar),.5);
box-shadow: 0 0 20px 20px rgba(var(--spice-rgb-sidebar),.5);
border-radius: 8px;
z-index: -1;
}
.main-playbackBarRemainingTime-container {
opacity: 0;
position: absolute;
bottom: 13px;
right: 0;
transition-duration: 0.3s;
background-color: rgba(var(--spice-rgb-sidebar),.5);
box-shadow: 0 0 20px 20px rgba(var(--spice-rgb-sidebar),.5);
border-radius: 8px;
z-index: -1;
}
/* show time on hover & better visibility */
.playback-bar:hover .playback-bar__progress-time-elapsed,
.playback-bar:hover .main-playbackBarRemainingTime-container {
opacity: 1;
}
/* move progress bar */
html:not(.fullscreen) .playback-bar {
width: 100%;
bottom: 83px;
position: absolute;
left: 0px;
}
.main-nowPlayingBar-nowPlayingBar:nth-last-child(2) .playback-bar {
bottom: 107px;
}
.player-controls__buttons {
transform: translateY(3px);
align-items: center;
}
/* change progress bar color */
.playback-bar .x-progressBar-fillColor {
background-color: var(--spice-playback-bar);
}
/* change appearance of play-button */
.main-playPauseButton-button {
background-color: inherit;
color: var(--spice-play-button);
transition-duration: 0.3s !important;
}
.main-playPauseButton-button svg {
height: 19px;
width: 19px;
}
html.fullscreen .main-playPauseButton-button svg {
height: 32px;
width: 32px;
}
.main-playPauseButton-button:focus,
.main-playPauseButton-button:hover {
transform: none !important;
}
/* change progress bar slider color */
.progress-bar__slider {
background-color: var(--spice-subtext);
}
.x-progressBar-progressBarBg {
background-color: var(--spice-button-disabled);
border-radius: 0px;
}
/* matching button colors */
.main-nowPlayingBar-extraControls button {
color: rgba(var(--spice-rgb-selected-row),.7);
}
/*
---------------
BUDDY FEED
---------------
*/
/* change text color */
.main-buddyFeed-activityMetadata .main-buddyFeed-artistAndTrackName a,
.main-buddyFeed-activityMetadata .main-buddyFeed-username a,
.main-buddyFeed-activityMetadata .main-buddyFeed-playbackContextLink,
p.main-buddyFeed-timestamp.main-type-finale,
.main-buddyFeed-findFriendsButton .main-buddyFeed-findFriendsIcon {
color: var(--spice-subtext);
}
.spotify__os--is-windows .main-buddyFeed-header {
padding-left: 0;
padding-right: 5px;
}
/* add gradient */
.main-buddyFeed-friendsFeedContainer {
background-image: linear-gradient(to bottom left, var(--spice-sidebar) 0%, var(--spice-player) 100%) !important;
}
/* hide buddyfeed scrollbar */
.main-buddyFeed-scrollableArea > .os-scrollbar {
display: none;
}
.main-avatar-avatar.BzunmwrVMyWGpopPJRt2:after {
background: var(--spice-button);
}
/*
---------------
MAIN VIEW
---------------
*/
/* hide banner ads */
.main-leaderboardComponent-container {
display: none;
}
.WiPggcPDzbwGxoxwLWFf.contentSpacing {
display: none;
}
.desktoproutes-homepage-takeover-ad-hptoComponent-parentContainer,
.desktoproutes-homepage-takeover-ad-hptoComponent-container {
display: none !important;
}
/* hide upgrade button */
.main-topBar-UpgradeButton {
display: none;
}
/* change input box appearance */
input {
background-color: var(--spice-main-secondary) !important;
border-radius: 8px !important;
padding: 6px 10px 6px 48px;
color: var(--spice-text) !important;
}
::placeholder {
color: var(--spice-subtext) !important;
}
/* remove background color from main headers */
.main-home-homeHeader,
.x-441-entityHeader-overlay,
.main-actionBarBackground-background,
.main-entityHeader-overlay,
.main-entityHeader-backgroundColor {
background-color: unset !important;
background-image: unset !important;
}
/* change playlist image shadow */
.main-entityHeader-shadow {
box-shadow: 0 5px 10px rgba(var(--spice-rgb-shadow), 0.5) !important;
}
/* change playlist image border-radius */
.main-entityHeader-image {
border-radius: 8px;
}
/* change playing icon from gif to svg */
.main-trackList-playingIcon {
-webkit-mask-image: url("data:image/svg+xml,%3Csvg id='playing-icon' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 24'%3E%3Cdefs%3E%3Cstyle%3E %23playing-icon %7B fill: %2320BC54; %7D @keyframes play %7B 0%25 %7Btransform: scaleY(1);%7D 3.3%25 %7Btransform: scaleY(0.9583);%7D 6.6%25 %7Btransform: scaleY(0.9166);%7D 9.9%25 %7Btransform: scaleY(0.8333);%7D 13.3%25 %7Btransform: scaleY(0.7083);%7D 16.6%25 %7Btransform: scaleY(0.5416);%7D 19.9%25 %7Btransform: scaleY(0.4166);%7D 23.3%25 %7Btransform: scaleY(0.25);%7D 26.6%25 %7Btransform: scaleY(0.1666);%7D 29.9%25 %7Btransform: scaleY(0.125);%7D 33.3%25 %7Btransform: scaleY(0.125);%7D 36.6%25 %7Btransform: scaleY(0.1666);%7D 39.9%25 %7Btransform: scaleY(0.1666);%7D 43.3%25 %7Btransform: scaleY(0.2083);%7D 46.6%25 %7Btransform: scaleY(0.2916);%7D 49.9%25 %7Btransform: scaleY(0.375);%7D 53.3%25 %7Btransform: scaleY(0.5);%7D 56.6%25 %7Btransform: scaleY(0.5833);%7D 59.9%25 %7Btransform: scaleY(0.625);%7D 63.3%25 %7Btransform: scaleY(0.6666);%7D 66.6%25 %7Btransform: scaleY(0.6666);%7D 69.9%25 %7Btransform: scaleY(0.6666);%7D 73.3%25 %7Btransform: scaleY(0.6666);%7D 76.6%25 %7Btransform: scaleY(0.7083);%7D 79.9%25 %7Btransform: scaleY(0.75);%7D 83.3%25 %7Btransform: scaleY(0.8333);%7D 86.6%25 %7Btransform: scaleY(0.875);%7D 89.9%25 %7Btransform: scaleY(0.9166);%7D 93.3%25 %7Btransform: scaleY(0.9583);%7D 96.6%25 %7Btransform: scaleY(1);%7D %7D %23bar1 %7B transform-origin: bottom; animation: play 0.9s -0.51s infinite; %7D %23bar2 %7B transform-origin: bottom; animation: play 0.9s infinite; %7D %23bar3 %7B transform-origin: bottom; animation: play 0.9s -0.15s infinite; %7D %23bar4 %7B transform-origin: bottom; animation: play 0.9s -0.75s infinite; %7D %3C/style%3E%3C/defs%3E%3Ctitle%3Eplaying-icon%3C/title%3E%3Crect id='bar1' class='cls-1' width='4' height='24'/%3E%3Crect id='bar2' class='cls-1' x='6' width='4' height='24'/%3E%3Crect id='bar3' class='cls-1' x='12' width='4' height='24'/%3E%3Crect id='bar4' class='cls-1' x='18' width='4' height='24'/%3E%3C/svg%3E");
background: var(--spice-button);
content-visibility: hidden;
-webkit-mask-repeat: no-repeat;
}
/* recolor animated liked or heart button on click */
#_R_G *:not([fill="none"]) {
fill: var(--spice-button-active) !important;
}
#_R_G *:not([stroke="none"]) {
stroke: var(--spice-button-active);
}
/* change appearance of 'playlist' tag */
.main-entityHeader-subtitle.main-entityHeader-small.main-entityHeader-uppercase.main-entityHeader-bold {
border: 2px var(--spice-text) solid;
border-radius: 8px;
width: fit-content;
display: inline;
text-align: center;
padding: 3px 7px;
}
/* change appearance of 'follow' button */
.artist-artistOverview-overview .main-actionBar-ActionBarRow > button:first-of-type {
border-radius: 8px;
border: 2px solid var(--spice-button);
}
/* change scrollbar appearance */
.os-theme-spotify.os-host-transition > .os-scrollbar-vertical > .os-scrollbar-track > .os-scrollbar-handle {
border-radius: 4px;
width: 6px;
background-color: var(--spice-button-disabled);
}
.os-theme-spotify.os-host-transition > .os-scrollbar-vertical > .os-scrollbar-track {
width: 6px;
}
/* add smooth shadow under headers */
.main-trackList-trackListHeaderStuck.main-trackList-trackListHeader,
.artist-artistDiscography-topBar.artist-artistDiscography-topBarScrolled {
background-color: var(--spice-main);
border-bottom: none;
-webkit-box-shadow: 0 0 50px 50px var(--spice-main);
box-shadow: 0 0 50px 50px var(--spice-main);
transition: box-shadow 0.2s;
}
.search-searchCategory-SearchCategory {
-webkit-box-shadow: 0 0 20px 20px var(--spice-main);
box-shadow: 0 0 20px 20px var(--spice-main);
z-index: 3;
}
/* play button */
.main-home-home .main-playButton-PlayButton > button > span {
inline-size: 42px;
block-size: 42px;
min-block-size: auto;
}
.main-home-home .main-playButton-PlayButton svg {
width: 24px;
height: 24px;
}
.main-home-home .main-playButton-PlayButton > button > span > span {
position: initial;
height: 24px;
}
.main-actionBar-ActionBar .main-playButton-PlayButton svg {
width: 30px;
height: 30px;
}
.main-actionBar-ActionBar .main-playButton-PlayButton > button > span > span {
position: initial;
height: 30px;
}
/* change text color on category cards in 'search' tab */
a.x-categoryCard-CategoryCard,
a.x-heroCategoryCard-HeroCategoryCard {
color: var(--spice-subtext);
}
/* recolor sub-buttons */
.main-moreButton-button {
color: var(--spice-button-secondary);
}
.x-downloadButton-button,
.x-contributorButton-button svg,
.main-actionBar-ActionBarRow .main-addButton-button {
color: var(--spice-button-secondary) !important;
}
.main-entityHeader-metaDataText,
.x-filterBox-searchIconContainer {
color: var(--spice-button-secondary);
}
.main-entityHeader-metaDataText span {
color: var(--spice-button-secondary);
}
.x-sortBox-sortDropdown {
background-color: var(--spice-main-secondary) !important;
border-radius: 8px;
}
[dir="ltr"] .main-actionBar-ActionBarRow > :first-child {
margin-right: 40px;
}
.x-filterBox-expandButton:focus,
.x-filterBox-expandButton:hover {
background-color: var(--spice-main-secondary) !important;
border-radius: 8px;
}
.x-sortBox-sortDropdown,
.x-filterBox-expandButton {
color: var(--spice-text) !important;
}
/* change background color of 'home' tab shortcut items */
.view-homeShortcutsGrid-shortcut {
background-color: rgba(var(--spice-rgb-main-secondary), 0.5) !important;
}
.view-homeShortcutsGrid-shortcut:focus-within,
.view-homeShortcutsGrid-shortcut:hover,
.view-homeShortcutsGrid-shortcut[data-context-menu-open="true"] {
background-color: var(--spice-main-secondary) !important;
}
.main-card-card {
background-color: rgba(var(--spice-rgb-main-secondary), 0.5) !important;
}
.main-card-card:focus-within,
.main-card-card:hover {
background-color: var(--spice-main-secondary) !important;
}
/* card background color for editing playlist details */
.main-playlistEditDetailsModal-descriptionTextarea {
background: var(--spice-main-secondary);
}
.main-playlistEditDetailsModal-textElementLabel {
display: none;
}
/* change color of search icon for new playlists */
.playlist-inlineSearchBox-searchIcon {
fill: var(--spice-text) !important;
}
/* change appearance of verified artist badge */
.main-entityHeader-headerText > span:first-child {
border: 0.25em solid var(--spice-text);
border-radius: 0.5em;
width: fit-content;
gap: 0px;
text-align: center;
padding: 0.25em 0.75em;
--font-family: CircularSp,CircularSp-Arab,CircularSp-Hebr,CircularSp-Cyrl,CircularSp-Grek,CircularSp-Deva,var(--fallback-fonts,sans-serif),sans-serif;
}
.main-entityHeader-headerText > span:first-child > span {
font-weight: bold;
text-transform: uppercase;
font-size: 0.75rem;
}
.main-entityHeader-headerText > span:first-child svg,
.main-entityHeader-headerText > span:first-child div {
display: none;
}
/* change text color of hero card on 'library' tab */
.main-heroCard-card,
.collection-collectionEntityHeroCard-descriptionContainer {
color: var(--spice-subtext) !important;
}
/*
--------------
CONTEXT MENU
--------------
*/
/* change hover color when selecting in context menu */
.main-contextMenu-menuItemButton:not(.main-contextMenu-disabled):focus,
.main-contextMenu-menuItemButton:not(.main-contextMenu-disabled):hover {
background-color: rgba(0, 0, 0, 0.2) !important;
}
.main-contextMenu-menuItemButton[aria-expanded="true"] {
background-color: rgba(0, 0, 0, 0.2) !important;
}
/* disabled options */
.main-contextMenu-disabled > span {
color: rgba(var(--spice-button-disabled), 0.5);
}
/* dividers between option subgroups */
.main-contextMenu-menuItem:not(:first-child) > .main-contextMenu-dividerBefore:before {
border-bottom: 1px solid var(--spice-button-disabled);
}
/*
-------------
TRACKS GRID
-------------
*/
/* change color of track titles */
.main-trackList-rowTitle {
color: var(--spice-subtext);
}
/* change color of 'explicit' badge */
.main-tag-container {
background-color: var(--spice-subtext);
}
/* change background color of selected row */
.main-trackList-trackListRow.main-trackList-selected,
.main-trackList-trackListRow.main-trackList-selected:hover {
background-color: var(--spice-main-secondary) !important;
}
.main-trackList-trackListRow:focus-within,
.main-trackList-trackListRow:hover {
background-color: rgba(var(--spice-rgb-main-secondary), 0.5);
}
/* When song is currently playing */
.main-trackList-active .main-type-mesto,
.main-trackList-active .main-trackList-rowSubTitle,
.main-trackList-active .main-trackList-rowSubTitle a,
.main-trackList-active .main-trackList-rowMarker,
.main-trackList-active .main-trackList-rowSectionVariable,
.main-trackList-active .main-trackList-rowSectionVariable a,
.main-trackList-active .main-trackList-rowSectionVariable span,
.main-trackList-active .main-trackList-rowMarker,
.main-trackList-active .main-trackList-rowDuration {
color: var(--spice-button) !important;
}
.main-trackList-active .main-tag-container {
background-color: var(--spice-button);
}
/* When song is hovered/selected */
.main-trackList-trackListRow.main-trackList-selected:not(.main-trackList-active) .main-tag-container,
.main-trackList-trackListRow:hover:not(.main-trackList-disabled):not(.main-trackList-active) .main-tag-container {
background-color: var(--spice-text);
}
.main-trackList-trackListRow:hover:not(.main-trackList-disabled) .main-addButton-button,
.main-trackList-trackListRow:focus-within:not(.main-trackList-disabled) .main-addButton-button {
color: var(--spice-text);
}
.main-trackList-trackListRow.main-trackList-selected:not(.main-trackList-active) .main-trackList-rowTitle,
.main-trackList-trackListRow:hover:not(.main-trackList-disabled):not(.main-trackList-active) .main-trackList-rowTitle {
color: var(--spice-text);
}
.main-trackList-trackListRow.main-trackList-selected:not(.main-trackList-active) .main-trackList-rowSubTitle,
.main-trackList-trackListRow:hover:not(.main-trackList-disabled):not(.main-trackList-active) .main-trackList-rowSubTitle {
color: var(--spice-text) !important;
}
/* color of selected row infos */
.main-trackList-rowSectionVariable span,
.main-trackList-rowSectionEnd div {
color: inherit;
}
/*
---------------
NEW HOME LAYOUT
---------------
*/
.main-topBar-navLinks a {
border-radius: 8px;
color: var(--spice-text);
background-color: var(--spice-main-secondary);
}
.main-topBar-navLinks a:hover {
color: var(--spice-button-active);
background-color: var(--spice-main-secondary);
}
.main-topBar-navLinks a.main-topBar-buttonActive {
background-color: var(--spice-button-active);
color: var(--spice-main);
}
.nav-alt .x-searchInput-searchInputInput:focus {
box-shadow: none;
}
/*
-------
TOGGLE
-------
*/
.x-toggle-indicatorWrapper {
background-color: transparent;
height: 20px !important;
width: 40px !important;
box-shadow: 0 0 0 1px var(--spice-subtext);
}
input:hover:not([disabled], :active) ~ .x-toggle-indicatorWrapper {
background-color: var(--spice-main-secondary);
}
input:checked ~ .x-toggle-indicatorWrapper {
background-color: var(--spice-button);
box-shadow: none;
}
.x-toggle-indicator {
background-color: var(--spice-subtext);
height: 12px;
width: 12px;
top: 4px;
left: 3px;
}
input:not([disabled]) ~ .x-toggle-indicatorWrapper:hover .x-toggle-indicator {
transform: scale(1.2);
}
input:checked ~ .x-toggle-indicatorWrapper .x-toggle-indicator {
background-color: var(--spice-main);
right: 4px;
}

View File

@@ -0,0 +1,270 @@
; note: most of the accent colors are set to the green of that color scheme, feel free to change it to your preferred color
[Spotify]
accent = 1db954
accent-active = 1ed760
accent-inactive = 121212
banner = 1ed760
border-active = 1ed760
border-inactive = 535353
header = 535353
highlight = 1a1a1a
main = 121212
notification = 4687d6
notification-error = e22134
subtext = b3b3b3
text = FFFFFF
[Spicetify]
accent = 00e089
accent-active = 00e089
accent-inactive = 2E2837
banner = 00e089
border-active = 00e089
border-inactive = 483b5b
header = 483b5b
highlight = 483b5b
main = 2E2837
notification = 00e089
notification-error = e22134
subtext = DEDEDE
text = FFFFFF
[CatppuccinMocha]
;https://github.com/catppuccin/catppuccin
accent = a6e3a1
accent-active = a6e3a1
accent-inactive = 1e1e2e
banner = a6e3a1
border-active = a6e3a1
border-inactive = 313244
header = 585b70
highlight = 585b70
main = 1e1e2e
notification = 89b4fa
notification-error = f38ba8
subtext = a6adc8
text = cdd6f4
[CatppuccinMacchiato]
;https://github.com/catppuccin/catppuccin
accent = a6da95
accent-active = a6da95
accent-inactive = 24273a
banner = a6da95
border-active = a6da95
border-inactive = 363a4f
header = 5b6078
highlight = 5b6078
main = 24273a
notification = 8aadf4
notification-error = ed8796
subtext = a5adcb
text = cad3f5
[CatppuccinLatte]
;https://github.com/catppuccin/catppuccin
accent = a6d189
accent-active = a6d189
accent-inactive = 303446
banner = a6d189
border-active = a6d189
border-inactive = 414559
header = 626880
highlight = 626880
main = 303446
notification = 8caaee
notification-error = e78284
subtext = a5adce
text = c6d0f5
[Dracula]
;https://github.com/dracula/dracula-theme
accent = 50fa7b
accent-active = 50fa7b
accent-inactive = 282a36
banner = 50fa7b
border-active = 50fa7b
border-inactive = 44475a
header = 44475a
highlight = 44475a
main = 282a36
notification = 8be9fd
notification-error = ff5555
subtext = 6272a4
text = f8f8f2
[Gruvbox]
;https://github.com/morhetz/gruvbox/
accent = 98971a
accent-active = b8bb26
accent-inactive = 282828
banner = b8bb26
border-active = b8bb26
border-inactive = 3c3836
header = 665c54
highlight = 7c6f64
main = 282828
notification = 458588
notification-error = cc241d
subtext = bdae93
text = fbf1c7
[Kanagawa]
;https://github.com/rebelot/kanagawa.nvim
accent = 76946A
accent-active = 98BB6C
accent-inactive = 1F1F28
banner = 98BB6C
border-active = 98BB6C
border-inactive = 2A2A37
header = 54546D
highlight = 363646
main = 1F1F28
notification = 7E9CD8
notification-error = E82424
subtext = C8C093
text = DCD7BA
[Nord]
;https://github.com/nordtheme/nord
accent = 88c0d0
accent-active = 8fbcbb
accent-inactive = 2e3440
banner = 8fbcbb
border-active = 8fbcbb
border-inactive = 3b4252
header = 4c566a
highlight = 4c566a
main = 2e3440
notification = 5e81ac
notification-error = bf616a
subtext = d8dee9
text = eceff4
[Rigel]
;https://github.com/Rigellute/rigel/
accent = 00cccc
accent-active = 00ffff
accent-inactive = 00384d
banner = 00ffff
border-active = 00cccc
border-inactive = 517f8d
header = 517f8d
highlight = 00384d
main = 002635
notification = 7eb2dd
notification-error = ff5a67
subtext = 77929e
text = b7cff9
[RosePine]
;https://github.com/rose-pine/rose-pine-theme
accent = ebbcba
accent-active = ebbcba
accent-inactive = 1f1d2e
banner = ebbcba
border-active = ebbcba
border-inactive = 26233a
header = 6e6a86
highlight = 403d52
main = 191724
notification = 31748f
notification-error = eb6f92
subtext = 908caa
text = e0def4
[RosePineMoon]
;https://github.com/rose-pine/rose-pine-theme
accent = ea9a97
accent-active = ea9a97
accent-inactive = 2a273f
banner = ea9a97
border-active = ea9a97
border-inactive = 393552
header = 6e6a86
highlight = 44415a
main = 232136
notification = 3e8fb0
notification-error = eb6f92
subtext = 908caa
text = e0def4
[RosePineDawn]
;https://github.com/rose-pine/rose-pine-theme
accent = d7827e
accent-active = d7827e
accent-inactive = fffaf3
banner = d7827e
border-active = d7827e
border-inactive = f2e9e1
header = 9893a5
highlight = dfdad9
main = faf4ed
notification = 286983
notification-error = b4637a
subtext = 797593
text = 575279
[Solarized]
;https://github.com/altercation/solarized
accent = 859900
accent-active = 859900
accent-inactive = 073642
banner = 859900
border-active = 859900
border-inactive = 073642
header = 586e75
highlight = 073642
main = 002b36
notification = 268bd2
notification-error = dc322f
subtext = 586e75
text = 839496
[TokyoNight]
;https://github.com/enkia/tokyo-night-vscode-theme
accent = 9ece6a
accent-active = 9ece6a
accent-inactive = 1a1b26
banner = 9ece6a
border-active = 9ece6a
border-inactive = 24283b
header = 565f89
highlight = 24283b
main = 1a1b26
notification = 7aa2f7
notification-error = f7768e
subtext = 565f89
text = a9b1d6
[TokyoNightStorm]
;https://github.com/enkia/tokyo-night-vscode-theme
accent = 9ece6a
accent-active = 9ece6a
accent-inactive = 24283b
banner = 9ece6a
border-active = 9ece6a
border-inactive = 414868
header = 9aa5ce
highlight = 414868
main = 24283b
notification = 7aa2f7
notification-error = f7768e
subtext = 9aa5ce
text = c0caf5
[ForestGreen]
accent = 939393
accent-active = 939393
accent-inactive = 3e3e29
banner = 939393
border-active = 939393
border-inactive = 515235
header = 656641
highlight = 656641
main = 3e3e29
notification = 8c8e59
notification-error = 787a4d
subtext = 838383
text = a3a3a3

View File

@@ -0,0 +1,905 @@
/* ================================
ROOT
================================ */
/* import */
/* find more in https://fonts.google.com/?category=Monospace&sort=popularity */
@import url("https://fonts.googleapis.com/css2?family=Anonymous+Pro:ital,wght@0,400;0,700;1,400;1,700&family=Azeret+Mono:ital,wght@0,100..900;1,100..900&family=B612+Mono:ital,wght@0,400;0,700;1,400;1,700&family=Courier+Prime:ital,wght@0,400;0,700;1,400;1,700&family=Cousine:ital,wght@0,400;0,700;1,400;1,700&family=Cutive+Mono&family=DM+Mono:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&family=Fira+Code:wght@300..700&family=Fira+Mono:wght@400;500;700&family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&family=M+PLUS+1+Code:wght@100..700&family=Nova+Mono&family=Overpass+Mono:wght@300..700&family=Oxygen+Mono&family=PT+Mono&family=Roboto+Mono:ital,wght@0,100..700;1,100..700&family=Share+Tech+Mono&family=Sometype+Mono:ital,wght@0,400..700;1,400..700&family=Sono:wght@200..800&family=Source+Code+Pro:ital,wght@0,200..900;1,200..900&family=Space+Mono:ital,wght@0,400;0,700;1,400;1,700&family=Syne+Mono&family=Ubuntu+Mono:ital,wght@0,400;0,700;1,400;1,700&family=VT323&family=Xanh+Mono:ital@0;1&display=swap");
@import url("https://fonts.cdnfonts.com/css/asciid");
/* user settings */
:root {
--font-family: "JetBrains Mono", monospace;
/*
--font-family: 'Anonymous Pro', monospace;
--font-family: 'Azeret Mono', monospace;
--font-family: 'B612 Mono', monospace;
--font-family: 'Courier Prime', monospace;
--font-family: 'Cousine', monospace;
--font-family: 'Cutive Mono', monospace;
--font-family: 'DM Mono', monospace;
--font-family: 'Fira Code', monospace;
--font-family: 'Fira Mono', monospace;
--font-family: 'IBM Plex Mono', monospace;
--font-family: 'JetBrains Mono', monospace;
--font-family: 'M PLUS 1 Code', monospace;
--font-family: 'Major Mono Display', monospace;
--font-family: 'Monofett', monospace;
--font-family: 'Nova Mono', monospace;
--font-family: 'Overpass Mono', monospace;
--font-family: 'Oxygen Mono', monospace;
--font-family: 'PT Mono', monospace;
--font-family: 'Roboto Mono', monospace;
--font-family: 'Share Tech Mono', monospace;
--font-family: 'Sometype Mono', monospace;
--font-family: 'Sono', monospace;
--font-family: 'Source Code Pro', monospace;
--font-family: 'Space Mono', monospace;
--font-family: 'Syne Mono', monospace;
--font-family: 'Ubuntu Mono', monospace;
--font-family: 'VT323', monospace;
--font-family: 'Xanh Mono', monospace;
*/
--font-size: 14px;
--font-weight: 400; /* 200 : 900 */
--line-height: 1.2;
--font-size-lyrics: 14px; /* 1.5em (default) */
--font-family-header: "asciid";
--font-size-multiplier-header: 4;
--display-card-image: block; /* none | block */
--display-coverart-image: none; /* none | block */
--display-header-image: none; /* none | block */
--display-sidebar-image: block; /* none | block */
--display-tracklist-image: none; /* none | block */
--display-spicetify-banner-ascii: block; /* none | block */
--display-music-banner-ascii: none; /* none | block */
--border-radius: 0px;
--border-width: 1px;
--border-style: solid; /* dotted | dashed | solid | double | groove | ridge | inset | outset */
--border-transition: 0.2s ease; /* 'none' to disable */
}
/* font */
*:not([style*="lyric" i] *, [class*="lyric" i], .main-entityHeader-title) {
font-family: var(--font-family) !important;
font-size: var(--font-size) !important;
font-weight: var(--font-weight) !important;
line-height: var(--line-height) !important;
}
.lyrics-lyrics-container *,
.main-nowPlayingView-lyricsContent * {
font-family: var(--font-family);
font-size: var(--font-size-lyrics);
font-weight: var(--font-weight);
line-height: var(--line-height);
}
.main-entityHeader-title h1 {
font-family: var(--font-family-header) !important;
font-size: calc(
var(--font-size) * var(--font-size-multiplier-header)
) !important;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
line-clamp: 2;
}
/* images */
.main-card-imageContainer img,
.view-homeShortcutsGrid-imageContainer img {
display: var(--display-card-image) !important;
}
.main-coverSlotCollapsed-container {
display: var(--display-coverart-image);
}
.main-entityHeader-imageContainer,
.under-main-view,
.main-entityHeader-creatorWrapper .main-avatar-avatar,
.main-entityHeader-imageContainer,
.playlist-playlist-playlistImageContainer,
.profile-userOverview-imageContainer {
display: var(--display-header-image);
}
.x-entityImage-imageContainer img,
.main-avatar-image {
display: var(--display-sidebar-image);
}
.main-trackList-rowImage {
display: var(--display-tracklist-image);
}
/* fix */
:root {
--content-max-width: 100% !important;
}
.Root__globalNav {
padding: 8px 16px !important;
height: unset;
}
.spotify__container--is-desktop.spotify__os--is-windows .Root__globalNav,
.spotify__container--is-desktop.spotify__os--is-macos .Root__globalNav {
margin: 40px 0 0;
}
.spotify__container--is-desktop.spotify__os--is-linux .Root__globalNav {
margin: 8px 0 0;
}
.Root__top-container {
--panel-gap: 16px !important;
}
.Root__top-bar {
border: var(--border-width) solid transparent;
}
.Root__nav-bar,
.Root__now-playing-bar {
overflow: visible;
}
.main-view-container {
overflow: hidden;
}
section:has(> .main-entityHeader-container),
div:has(> .main-entityHeader-container) {
margin-top: 0;
}
.main-entityHeader-container {
height: unset !important;
min-height: unset !important;
}
.main-entityHeader-imageContainerNew {
height: 128px;
width: 128px;
}
.main-topBar-background {
background-color: var(--spice-main);
}
.main-topBar-overlay,
.main-entityHeader-container > div,
.main-entityHeader-container + div[style*="background-color"],
.main-entityHeader-container + div > div[style*="background-color"],
.main-home-homeHeader,
.main-home-filterChipsSection,
.main-home-filterChipsSection::after {
background-color: transparent !important;
background-image: none !important;
background: transparent !important;
}
.LayoutResizer__resize-bar {
cursor: w-resize;
}
.LayoutResizer__inline-end:after,
.LayoutResizer__inline-start:after {
background-color: var(--spice-border-inactive);
}
.LayoutResizer__resize-bar--resizing.LayoutResizer__inline-start:after,
.LayoutResizer__resize-bar--resizing.LayoutResizer__inline-end:after {
background-color: var(--spice-border-active);
}
/* fullscreen */
.spotifyinternal-artistnpv .npv-what-is-playing .npv-cover-art,
.spotifyinternal-artistnpv .npv-what-is-playing .npv-track {
bottom: 18em;
}
.spotifyinternal-artistnpv .npv-what-is-playing .npv-cover-art {
-webkit-transform: scale(0.34375);
transform: scale(0.34375);
}
.spotifyinternal-artistnpv .npv-what-is-playing .npv-track {
-webkit-transform: none;
transform: none;
}
.npv-main-container .playback-bar {
position: unset;
width: auto;
}
.npv-nowPlayingBar-controls {
height: auto;
}
/* recolor */
:root {
--spice-main-elevated: var(--spice-main);
--spice-highlight-elevated: var(--spice-main);
--spice-sidebar: var(--spice-main);
--spice-player: var(--spice-main);
--spice-card: var(--spice-main);
--spice-shadow: var(--spice-main);
--spice-selected-row: var(--spice-subtext);
--spice-button: var(--spice-accent);
--spice-button-active: var(--spice-accent-active);
--spice-button-disabled: var(--spice-accent-inactive);
--spice-tab-active: var(--spice-main);
--spice-rgb-main-elevated: var(--spice-rgb-main);
--spice-rgb-highlight-elevated: var(--spice-rgb-main);
--spice-rgb-sidebar: var(--spice-rgb-main);
--spice-rgb-player: var(--spice-rgb-main);
--spice-rgb-card: var(--spice-rgb-main);
--spice-rgb-shadow: var(--spice-rgb-main);
--spice-rgb-selected-row: var(--spice-rgb-subtext);
--spice-rgb-button: var(--spice-rgb-accent);
--spice-rgb-button-active: var(--spice-rgb-accent-active);
--spice-rgb-button-disabled: var(--spice-rgb-accent-inactive);
--spice-rgb-tab-active: var(--spice-rgb-main);
}
.encore-dark-theme,
.encore-dark-theme .encore-base-set {
--background-elevated-press: var(--spice-main-elevated);
--essential-subdued: var(--spice-border-inactive);
--decorative-subdued: var(--spice-accent-inactive);
}
.encore-dark-theme .encore-bright-accent-set {
--background-highlight: var(--spice-button-active) !important;
--background-elevated-base: var(--spice-button-active) !important;
--background-elevated-highlight: var(--spice-button-active) !important;
--background-press: var(--spice-button-active) !important;
--background-elevated-press: var(--spice-button-active) !important;
}
.Root__top-container,
.Root__nav-bar {
background-color: var(--spice-main);
}
.main-playPauseButton-button {
background-color: transparent;
color: var(--spice-subtext);
}
.main-playPauseButton-button:focus,
.main-playPauseButton-button:hover {
transform: none;
color: var(--spice-text);
}
#_R_G *:not([fill="none"]) {
fill: var(--spice-button-active) !important;
}
#_R_G *:not([stroke="none"]) {
stroke: var(--spice-button-active);
}
.view-homeShortcutsGrid-equaliser,
.main-devicePicker-nowPlayingActiveIcon,
.main-trackList-playingIcon {
filter: grayscale(1) opacity(0.2)
drop-shadow(0 0 0 var(--spice-button-active))
drop-shadow(0 0 0 var(--spice-button-active))
drop-shadow(0 0 0 var(--spice-button-active));
}
::placeholder {
color: var(--spice-subtext);
}
.main-entityHeader-background,
.main-entityHeader-backgroundColor,
.main-entityHeader-overlay,
.main-actionBarBackground-background,
.main-buddyFeed-container,
.main-nowPlayingView-content.main-nowPlayingView-gradient {
background-color: transparent !important;
background-image: none;
}
.progress-bar {
--fg-color: var(--spice-button-active);
--bg-color: var(--spice-button-disabled);
}
.playback-bar__progress-time-elapsed,
.main-playbackBarRemainingTime-container {
mix-blend-mode: difference;
color: var(--spice-button-active);
}
.main-trackList-placeholder {
background-color: var(--background-base);
background-blend-mode: color-dodge;
}
.main-trackList-trackListHeaderStuck.main-trackList-trackListHeader {
background: var(--spice-main);
}
.main-trackList-trackListRow:focus-within,
.main-trackList-trackListRow:hover,
.main-contextMenu-menuItemButton:hover,
.main-contextMenu-menuItemButton:not([aria-checked="true"]):focus,
.main-card-card:hover,
.main-card-card[data-context-menu-open="true"],
[class*="BoxComponent-group-card"]:hover::after,
[class*="BoxComponent-group-listRow"]:hover::after {
background-color: rgba(var(--spice-rgb-highlight), 0.5);
}
.main-trackList-trackListRow.main-trackList-selected,
.main-trackList-trackListRow.main-trackList-selected:hover {
background-color: var(--spice-highlight);
}
.x-entityImage-imageContainer,
.main-card-imageContainer > div:first-child {
background-color: var(--card-color, var(--spice-border-inactive));
}
.main-avatar-avatar {
background-color: var(--spice-border-inactive) !important;
}
.main-entityHeader-title h1 {
color: var(--spice-banner);
}
div[style*="--text-subdued: rgba(255, 255, 255, 0.7);"] {
--text-subdued: var(--spice-subtext) !important;
}
/* pane borders */
.Root__globalNav,
.main-yourLibraryX-entryPoints,
.Root__main-view,
.Root__now-playing-bar,
.Root__right-sidebar:has(aside:not(:empty)) {
border: var(--border-width) var(--border-style);
border-color: var(--spice-border-inactive);
border-radius: var(--border-radius);
background-color: var(--spice-main);
transition: border-color var(--border-transition);
}
.Root__globalNav:hover,
.main-yourLibraryX-entryPoints:hover,
.Root__main-view:hover,
.Root__now-playing-bar:hover,
.Root__right-sidebar:has(aside:not(:empty)):hover {
border: var(--border-width) var(--border-style);
border-color: var(--spice-border-active);
}
/* pane headers */
.Root__nav-bar .main-yourLibraryX-entryPoints {
overflow-x: visible !important;
}
.Root__globalNav::before,
.main-globalNav-searchContainer
form
div:has(> .main-topBar-searchBar:focus)::before,
.Root__nav-bar
.main-yourLibraryX-entryPoints:has(.main-yourLibraryX-navItems)::before,
.Root__nav-bar
.main-yourLibraryX-entryPoints:has(
.main-yourLibraryX-libraryContainer
)::before,
.Root__main-view::before,
.Root__now-playing-bar::before,
.Root__right-sidebar:has(aside:not(:empty))::before {
color: var(--spice-header);
position: absolute;
margin: -10px 4px;
background: var(--spice-main);
padding: 0 3px;
z-index: 3;
transition: color var(--border-transition);
}
.Root__globalNav::before {
content: "Nav";
top: 0;
left: 0;
}
.main-globalNav-searchContainer
form
div:has(> .main-topBar-searchBar:focus)::before {
content: "Search";
color: var(--spice-border-active) !important;
}
.Root__nav-bar
.main-yourLibraryX-entryPoints:has(.main-yourLibraryX-navItems)::before {
content: "Pages";
}
.Root__nav-bar
.main-yourLibraryX-entryPoints:has(
.main-yourLibraryX-libraryContainer
)::before {
content: "Library";
}
.Root__main-view::before {
content: "Main";
position: fixed;
}
.Root__now-playing-bar::before {
content: "Playing";
}
.Root__right-sidebar:has(aside:not(:empty))::before {
content: "Sidebar";
}
.Root__globalNav:hover::before,
.Root__nav-bar .main-yourLibraryX-entryPoints:hover::before,
.Root__main-view:hover::before,
.Root__now-playing-bar:hover::before,
.Root__right-sidebar:has(aside:not(:empty)):hover::before {
color: var(--spice-border-active);
}
/* scrollbars */
.os-scrollbar-handle {
border-radius: var(--border-radius) !important;
width: 2px !important;
position: absolute;
top: 0;
right: 0;
}
.os-scrollbar-handle:hover {
border-radius: var(--border-radius) !important;
width: 6px !important;
}
.os-scrollbar-vertical {
top: 5px !important;
right: 5px !important;
}
/* context menus + tippy boxes */
.main-contextMenu-menu,
.tippy-box {
border: var(--border-width) var(--border-style) var(--spice-border-active);
border-radius: var(--border-radius) !important;
}
/* modals */
.GenericModal,
.GenericModal__overlay > div {
border: var(--border-width) var(--border-style) var(--spice-border-active);
border-radius: var(--border-radius);
overflow: visible;
}
.GenericModal::before,
.GenericModal__overlay > div::before {
content: "Modal";
color: var(--spice-border-active);
position: absolute;
margin: -10px 4px;
background: var(--spice-main);
padding: 0 3px;
z-index: 9;
}
/* ================================
GLOBAL NAV
================================ */
/* search section */
.main-globalNav-searchSection,
.main-globalNav-searchContainer {
align-items: center;
}
.main-globalNav-searchSection {
position: unset;
top: unset;
left: unset;
}
.main-globalNav-searchContainer {
max-width: unset;
width: 100%;
}
.main-globalNav-searchContainer form .main-topBar-searchBar {
border-radius: var(--border-radius);
border: 1px solid;
border-color: var(--spice-main);
}
.main-globalNav-searchContainer form:hover .main-topBar-searchBar {
box-shadow: none;
border: 1px solid;
border-color: var(--spice-border-inactive);
}
.Root__globalNav:hover:has(.main-topBar-searchBar:focus) {
border: var(--border-width) var(--border-style);
border-color: var(--spice-border-inactive);
}
.Root__globalNav:hover:has(.main-topBar-searchBar:focus)::before {
color: var(--spice-header);
}
.main-globalNav-searchContainer form .main-topBar-searchBar:focus {
box-shadow: none;
border: var(--border-width) var(--border-style);
border-color: var(--spice-border-active);
outline: 14px solid var(--spice-main);
}
.main-globalNav-searchContainer form .main-topBar-searchBar + div > div {
border-radius: var(--border-radius);
box-shadow: none;
margin: 24.5px 0;
border: var(--border-width) var(--border-style);
border-color: var(--spice-border-active);
outline: 14px solid var(--spice-main);
}
form .main-topBar-searchBar::placeholder,
form .main-topBar-searchBar:placeholder-shown {
transition: none !important;
}
/* ================================
LEFT SIDEBAR
================================ */
/* pages pane */
.main-yourLibraryX-navLink {
height: 24px;
gap: 8px;
text-decoration: none !important;
}
.main-yourLibraryX-navLink > svg,
.main-yourLibraryX-header .main-yourLibraryX-collapseButtonWrapper > span {
transform: scale(0.7);
}
/* library pane */
.x-entityImage-imageContainer {
transform: scale(0.7);
background-color: transparent;
}
.x-entityImage-imageContainer::before {
content: "░▒▒░";
color: var(--spice-subtext);
transform: scale(1.4);
position: absolute;
top: 50%;
left: 20%;
z-index: -1;
}
.main-yourLibraryX-filterArea {
padding: 0 8px;
}
.main-yourLibraryX-libraryRootlist {
padding: 0 16px 8px;
}
.main-yourLibraryX-listItem span.LineClamp {
-webkit-line-clamp: 1;
line-clamp: 1;
}
/* sidebar config */
.main-yourLibraryX-entryPoints:first-child:has(
.main-yourLibraryX-navItems:empty
) {
display: none;
}
/* ================================
MAIN VIEW
================================ */
/* check out a cool project: https://github.com/Rigellute/spotify-tui
_________ ____ / /_(_) __/_ __ / /___ __(_)\A
/ ___/ __ \\/ __ \\/ __/ / /_/ / / /_____/ __/ / / / /\A
(__ ) /_/ / /_/ / /_/ / __/ /_/ /_____/ /_/ /_/ / /\A
/____/ .___/\\____/\\__/_/_/ \\__, / \\__/\\__,_/_/\A
/_/ /____/
*/
.view-homeShortcutsGrid-shortcuts::before {
content: " _________ ____ / /_(_) __/_ __ / /___ __(_)\A / ___/ __ \\/ __ \\/ __/ / /_/ / / /_____/ __/ / / / /\A (__ ) /_/ / /_/ / /_/ / __/ /_/ /_____/ /_/ /_/ / /\A /____/ .___/\\____/\\__/_/_/ \\__, / \\__/\\__,_/_/\A /_/ /____/ ";
white-space: pre-wrap;
padding: 32px 0;
color: var(--spice-banner);
line-height: 1.2;
text-wrap: nowrap;
display: var(--display-spicetify-banner-ascii);
}
.main-entityHeader-headerText::before {
content: "────█▀█▄▄▄▄─────██▄\A────█▀▄▄▄▄█─────█▀▀█\A─▄▄▄█─────█──▄▄▄█\A██▀▄█─▄██▀█─███▀█\A─▀▀▀──▀█▄█▀─▀█▄█▀\A";
white-space: pre-wrap;
padding-bottom: 32px;
color: var(--spice-banner);
line-height: 1.2;
text-wrap: nowrap;
display: var(--display-music-banner-ascii);
}
/* top bar */
.queue-tabBar-active,
.marketplace-tabBar-active {
text-decoration: underline !important;
}
.main-topBar-historyButtons .main-topBar-button {
background-color: transparent;
}
.main-topBar-historyButtons > .main-topBar-button:first-child::before {
content: "<";
}
.main-topBar-button.main-topBar-responsiveForward::before {
content: ">";
}
.main-topBar-historyButtons > .main-topBar-button:first-child > svg,
.main-topBar-button.main-topBar-responsiveForward > svg {
display: none;
}
.main-topBar-topbarContent {
gap: 24px;
}
.x-searchInput-searchInputInput {
border-radius: var(--border-radius);
background-color: transparent;
}
.x-searchInput-searchInputInput:hover,
.x-searchInput-searchInputInput:focus {
box-shadow: none;
border: 1px solid var(--spice-button-active);
background-color: transparent;
}
.search-searchCategory-catergoryGrid *,
.main-shelf-subHeader *,
.ChipInnerComponent-sm,
.ChipInnerComponent-sm-selected {
border-radius: var(--border-radius);
}
.main-globalNav-historyButtonsContainer svg,
.main-globalNav-searchContainer svg {
transform: scale(0.7);
}
/* headers */
.main-entityHeader-container {
padding: var(--content-spacing) 0;
}
.main-entityHeader-container.main-entityHeader-withBackgroundImage {
background-image: radial-gradient(
circle,
rgba(var(--spice-rgb-main), 0.7) 0%,
rgba(var(--spice-rgb-main), 0.9) 50%,
rgba(var(--spice-rgb-main), 1) 100%
);
}
/* compact tracklists */
.main-trackList-trackListRow {
height: 32px;
}
.main-trackList-rowMainContent {
grid-template: "title badges subtitle" / auto 1fr;
column-gap: 0;
}
.main-trackList-rowImage {
height: 24px;
width: 24px;
}
.main-trackList-rowTitle:has(+ span)::after {
content: "|";
color: var(--spice-highlight);
padding: 0 10px;
}
.main-trackList-rowBadges {
padding-right: 10px;
}
.main-trackList-number,
.main-trackList-icon {
top: unset;
}
/* lyrics page & sidebar */
.lyrics-lyrics-background {
background-color: var(--spice-main);
}
.main-nowPlayingView-sectionHeaderSpacing.main-nowPlayingView-lyricsGradient {
background-color: var(--background-tinted-base);
}
.lyrics-lyrics-contentContainer {
justify-content: start;
}
.lyrics-lyrics-container,
.main-nowPlayingView-section {
--lyrics-color-active: var(--spice-text) !important;
--lyrics-color-inactive: var(--spice-subtext) !important;
--lyrics-color-passed: var(--spice-subtext) !important;
--lyrics-color-messaging: var(--spice-subtext) !important;
}
.lyrics-lyricsContent-lyric {
opacity: 0.3;
display: flex;
flex-direction: row;
}
.lyrics-lyricsContent-lyric.lyrics-lyricsContent-highlight {
opacity: 0.7;
transition: none;
}
.lyrics-lyricsContent-lyric.lyrics-lyricsContent-active:not(:empty) {
background-color: var(--lyrics-color-background);
color: var(--spice-main);
opacity: 1;
transition: none;
}
.lyrics-lyricsContent-lyric:not(:empty)::before {
content: ">> ";
opacity: 0;
white-space: break-spaces;
}
.lyrics-lyricsContent-lyric.lyrics-lyricsContent-active:not(:empty)::before {
content: ">> ";
opacity: 1;
white-space: break-spaces;
}
/* lyrics cinema */
.Root__lyrics-cinema {
border: var(--border-width) var(--border-style) transparent;
overflow: hidden;
}
.main-nowPlayingView-lyricsContent {
-webkit-mask-image: none !important;
mask-image: none !important;
}
/* ================================
PLAYBACK BAR
================================ */
/* playback bar itself */
.main-nowPlayingBar-nowPlayingBar {
padding: 8px 8px 32px 8px;
height: 96px;
}
.playback-bar {
position: absolute;
left: calc(var(--panel-gap) + 8px);
bottom: calc(var(--panel-gap) + 8px);
width: calc(100vw - var(--panel-gap) * 2 - 16px);
justify-content: center;
}
/* playback time indicators */
.playback-bar__progress-time-elapsed {
pointer-events: none;
}
.playback-bar__progress-time-elapsed::after {
content: " /";
}
.playback-bar__progress-time-elapsed,
.main-playbackBarRemainingTime-container {
z-index: 9;
padding-top: 2px;
}
/* playback seek bar */
.playback-progressbar-container {
position: absolute;
width: 100%;
}
.progress-bar {
--progress-bar-height: 16px;
--progress-bar-radius: var(--border-radius);
}
.progress-bar__slider {
box-shadow: none;
height: 100%;
border-radius: 0;
}
/* cover art */
.main-nowPlayingWidget-coverArt .cover-art {
height: 32px !important;
width: 32px !important;
}
/* left nowplaying text */
.main-nowPlayingBar-left {
padding-inline-start: 0;
}
.main-nowPlayingWidget-trackInfo {
margin: 0;
}
/* volume bar */
.volume-bar__slider-container .x-progressBar-fillColor,
.volume-bar__slider-container
.playback-progressbar-isInteractive
.progress-bar--isDragging
.x-progressBar-fillColor,
.volume-bar__slider-container
.playback-progressbar-isInteractive
.progress-bar:focus
.x-progressBar-fillColor,
.volume-bar__slider-container
.playback-progressbar-isInteractive
.progress-bar:hover
.x-progressBar-fillColor,
.volume-bar__slider-container
.playback-progressbar-isInteractive:focus-within
.x-progressBar-fillColor {
height: 9px;
background-color: transparent;
border-bottom: 2px dashed var(--fg-color);
}
.volume-bar__slider-container .x-progressBar-progressBarBg {
background-color: transparent;
}
/* player controls */
.player-controls__buttons {
margin-bottom: 0;
}
.player-controls__buttons,
.main-nowPlayingBar-extraControls {
opacity: 0.25;
transition: opacity var(--border-transition);
}
.player-controls__buttons:hover,
.main-nowPlayingBar-extraControls:hover {
opacity: 1;
}
.main-shuffleButton-button::before,
button[data-testid="control-button-shuffle"]::after,
.ecHWOS
button:has(
path[d="M13.151.922a.75.75 0 1 0-1.06 1.06L13.109 3H11.16a3.75 3.75 0 0 0-2.873 1.34l-6.173 7.356A2.25 2.25 0 0 1 .39 12.5H0V14h.391a3.75 3.75 0 0 0 2.873-1.34l6.173-7.356a2.25 2.25 0 0 1 1.724-.804h1.947l-1.017 1.018a.75.75 0 0 0 1.06 1.06L15.98 3.75 13.15.922zM.391 3.5H0V2h.391c1.109 0 2.16.49 2.873 1.34L4.89 5.277l-.979 1.167-1.796-2.14A2.25 2.25 0 0 0 .39 3.5z"]
)::before {
content: "\21C4";
}
.ecHWOS
button:has(
path[d="M12.09.922a.75.75 0 0 1 1.061 0L15.98 3.75l-2.83 2.828a.75.75 0 1 1-1.06-1.06L13.109 4.5H11.16a2.25 2.25 0 0 0-1.724.804L3.264 12.66A3.75 3.75 0 0 1 .391 14H0v-1.5h.391a2.25 2.25 0 0 0 1.724-.804L8.288 4.34A3.75 3.75 0 0 1 11.16 3h1.947L12.09 1.982a.75.75 0 0 1 0-1.06zM.88 3.319C2.255 2.874 2.976 1.787 3.297.874c.036-.102.37-.102.406 0 .321.913 1.042 2 2.417 2.445.103.033.103.329 0 .362-1.375.445-2.096 1.532-2.417 2.445-.036.102-.37.102-.406 0-.321-.913-1.042-2-2.417-2.445-.103-.033-.103-.329 0-.362z"]
)::before {
content: "\21C4\2726";
text-wrap: nowrap;
}
.main-skipBackButton-button::before,
button[data-testid="control-button-skip-back"]::after {
content: "\25C1";
}
.main-playPauseButton-button[aria-label="Play"]::before,
.main-playPauseButton-button:has(
path[d="M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z"]
)::before,
button[data-testid="control-button-playpause"]:has(
path[d="M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z"]
)::after,
button[data-testid="control-button-playpause"]:has(
path[d="m7.05 3.606 13.49 7.788a.7.7 0 0 1 0 1.212L7.05 20.394A.7.7 0 0 1 6 19.788V4.212a.7.7 0 0 1 1.05-.606z"]
)::after {
content: "\25B6";
}
.main-playPauseButton-button[aria-label="Pause"]::before,
.main-playPauseButton-button:has(
path[d="M3 1.713a.7.7 0 0 1 1.05-.607l10.89 6.288a.7.7 0 0 1 0 1.212L4.05 14.894A.7.7 0 0 1 3 14.288V1.713z"]
)::before,
button[data-testid="control-button-playpause"]:has(
path[d="M2.7 1a.7.7 0 0 0-.7.7v12.6a.7.7 0 0 0 .7.7h2.6a.7.7 0 0 0 .7-.7V1.7a.7.7 0 0 0-.7-.7H2.7zm8 0a.7.7 0 0 0-.7.7v12.6a.7.7 0 0 0 .7.7h2.6a.7.7 0 0 0 .7-.7V1.7a.7.7 0 0 0-.7-.7h-2.6z"]
)::after,
button[data-testid="control-button-playpause"]:has(
path[d="M5.7 3a.7.7 0 0 0-.7.7v16.6a.7.7 0 0 0 .7.7h2.6a.7.7 0 0 0 .7-.7V3.7a.7.7 0 0 0-.7-.7H5.7zm10 0a.7.7 0 0 0-.7.7v16.6a.7.7 0 0 0 .7.7h2.6a.7.7 0 0 0 .7-.7V3.7a.7.7 0 0 0-.7-.7h-2.6z"]
)::after {
content: "\275A\275A";
text-wrap: nowrap;
}
button[data-testid="control-button-playpause"] {
padding: 8px;
}
button[data-testid="control-button-playpause"]:hover {
color: var(--spice-text);
}
button[data-testid="control-button-playpause"] .ButtonInner-small-iconOnly {
display: none;
}
.main-skipForwardButton-button::before,
button[data-testid="control-button-skip-forward"]::after {
content: "\25B7";
}
.main-repeatButton-button::before,
button[data-testid="control-button-repeat"]::after {
content: "\21BB";
}
.main-repeatButton-button[aria-checked="mixed"]::before,
button[data-testid="control-button-repeat"][aria-checked="mixed"]::after {
content: "\21BB\2474";
text-wrap: nowrap;
}
.main-shuffleButton-button > svg,
.player-controls__left .ecHWOS svg,
.main-skipBackButton-button > svg,
.main-playPauseButton-button > svg,
.main-skipForwardButton-button > svg,
.main-repeatButton-button > svg,
:is(.player-controls__buttons, .npv-nowPlayingBar-controls) span {
display: none;
}
/* connect bar */
.main-connectBar-connectBar {
position: absolute;
background-color: transparent !important;
mix-blend-mode: difference;
pointer-events: none;
right: var(--panel-gap);
bottom: var(--panel-gap);
opacity: 0.25;
padding: 0 10px 10px;
}
.main-connectBar-connectBar span {
color: var(--spice-accent-active);
}
.main-connectBar-connectBar svg {
fill: var(--spice-accent-active);
}

View File

@@ -0,0 +1,32 @@
[Preprocesses]
expose_apis = 1
disable_sentry = 1
disable_ui_logging = 1
remove_rtl_rule = 1
[AdditionalOptions]
custom_apps =
sidebar_config = 1
home_config = 1
experimental_features = 1
extensions =
[Patch]
[Setting]
prefs_path = /home/furry/.config/spotify/prefs
inject_theme_js = 1
replace_colors = 1
spotify_launch_flags =
spotify_path = /opt/spotify/
color_scheme = Cherry
inject_css = 1
overwrite_assets = 0
check_spicetify_update = 1
always_enable_devtools = 0
current_theme = Sleek
; DO NOT CHANGE!
[Backup]
version = 1.2.63.394.g126b0d89
with = 2.40.9

View File

29
usr/bin/buildconfig Executable file
View File

@@ -0,0 +1,29 @@
#!/usr/bin/bash
BUILD_CONFIG=
# try to find a valid build config path
if [ -n "${1+x}" ] && [ -f "$1" ] && [[ "$(basename "$1")" == ".buildconfig" ]]; then BUILD_CONFIG="$1" # first check if a build config has been specified, and whether it's a valid path
elif [ -n "${1+x}" ]; then echo "E: the specified path '$1' is not a valid path!"; exit 1
elif [[ -f "$PWD/.buildconfig" ]]; then BUILD_CONFIG="$PWD/.buildconfig" # then check if there is a build config in the current working directory
elif [[ -f "$HOME/.buildconfig" ]]; then BUILD_CONFIG="$HOME/.buildconfig" # then check if there is a build config in the home directory
else $EDITOR .buildconfig
#else echo "E: could not find a .buildconfig file and none was specified!"; exit 1
fi
source "$BUILD_CONFIG"
[ -z "${cmd+x}" ] && { echo "E: cmd was not set! '$BUILD_CONFIG'"; exit 1; }
[ -z "${arg+x}" ] && { echo "E: arg was not set! '$BUILD_CONFIG'"; exit 1; }
# export the environment variables if they've been set
if [[ -n ${env+x} ]]; then
for var in "${!env[@]}"; do
export "$var=${env[$var]}"
done
fi
# execute the command with the arguments
# don't mind if the user made arguments separate out, that would likely be the user's intention
$cmd "$arg"
exit $?

2
usr/bin/emcc Executable file
View File

@@ -0,0 +1,2 @@
#!/usr/bin/sh
"$HOME/.local/share/emsdk/upstream/emscripten/emcc" "$@"

2
usr/bin/emsdk Executable file
View File

@@ -0,0 +1,2 @@
#!/usr/bin/sh
"$HOME/.local/share/emsdk/emsdk" "$@"

Some files were not shown because too many files have changed in this diff Show More