New pc rice

This commit is contained in:
timoxa0 2024-10-25 16:48:49 +05:00
commit e8c5c076b0
295 changed files with 15404 additions and 0 deletions

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "dot-config/tmux/tpm"]
path = dot-config/tmux/tpm
url = https://github.com/tmux-plugins/tpm

View file

@ -0,0 +1,20 @@
import = [
"~/.config/alacritty/catppuccin-mocha.toml"
]
shell = { program = "tmux", args = ["new"] }
live_config_reload = true
[env]
TERM = "xterm-256color"
[window]
padding = { x = 10, y = 10 }
dynamic_padding = true
decorations = "Full"
opacity = 0.85
[font]
normal = { family = "JetBrainsMono Nerd Font Mono", style = "Regular" }
size = 16

View file

@ -0,0 +1,75 @@
[colors.primary]
background = "#1e1e2e"
foreground = "#cdd6f4"
dim_foreground = "#7f849c"
bright_foreground = "#cdd6f4"
[colors.cursor]
text = "#1e1e2e"
cursor = "#f5e0dc"
[colors.vi_mode_cursor]
text = "#1e1e2e"
cursor = "#b4befe"
[colors.search.matches]
foreground = "#1e1e2e"
background = "#a6adc8"
[colors.search.focused_match]
foreground = "#1e1e2e"
background = "#a6e3a1"
[colors.footer_bar]
foreground = "#1e1e2e"
background = "#a6adc8"
[colors.hints.start]
foreground = "#1e1e2e"
background = "#f9e2af"
[colors.hints.end]
foreground = "#1e1e2e"
background = "#a6adc8"
[colors.selection]
text = "#1e1e2e"
background = "#f5e0dc"
[colors.normal]
black = "#45475a"
red = "#f38ba8"
green = "#a6e3a1"
yellow = "#f9e2af"
blue = "#89b4fa"
magenta = "#f5c2e7"
cyan = "#94e2d5"
white = "#bac2de"
[colors.bright]
black = "#585b70"
red = "#f38ba8"
green = "#a6e3a1"
yellow = "#f9e2af"
blue = "#89b4fa"
magenta = "#f5c2e7"
cyan = "#94e2d5"
white = "#a6adc8"
[colors.dim]
black = "#45475a"
red = "#f38ba8"
green = "#a6e3a1"
yellow = "#f9e2af"
blue = "#89b4fa"
magenta = "#f5c2e7"
cyan = "#94e2d5"
white = "#bac2de"
[[colors.indexed_colors]]
index = 16
color = "#fab387"
[[colors.indexed_colors]]
index = 17
color = "#f5e0dc"

View file

@ -0,0 +1,235 @@
# fish completion for lon-tool -*- shell-script -*-
function __lon_tool_debug
set -l file "$BASH_COMP_DEBUG_FILE"
if test -n "$file"
echo "$argv" >> $file
end
end
function __lon_tool_perform_completion
__lon_tool_debug "Starting __lon_tool_perform_completion"
# Extract all args except the last one
set -l args (commandline -opc)
# Extract the last arg and escape it in case it is a space
set -l lastArg (string escape -- (commandline -ct))
__lon_tool_debug "args: $args"
__lon_tool_debug "last arg: $lastArg"
# Disable ActiveHelp which is not supported for fish shell
set -l requestComp "LON_TOOL_ACTIVE_HELP=0 $args[1] __complete $args[2..-1] $lastArg"
__lon_tool_debug "Calling $requestComp"
set -l results (eval $requestComp 2> /dev/null)
# Some programs may output extra empty lines after the directive.
# Let's ignore them or else it will break completion.
# Ref: https://github.com/spf13/cobra/issues/1279
for line in $results[-1..1]
if test (string trim -- $line) = ""
# Found an empty line, remove it
set results $results[1..-2]
else
# Found non-empty line, we have our proper output
break
end
end
set -l comps $results[1..-2]
set -l directiveLine $results[-1]
# For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>)
# completions must be prefixed with the flag
set -l flagPrefix (string match -r -- '-.*=' "$lastArg")
__lon_tool_debug "Comps: $comps"
__lon_tool_debug "DirectiveLine: $directiveLine"
__lon_tool_debug "flagPrefix: $flagPrefix"
for comp in $comps
printf "%s%s\n" "$flagPrefix" "$comp"
end
printf "%s\n" "$directiveLine"
end
# this function limits calls to __lon_tool_perform_completion, by caching the result behind $__lon_tool_perform_completion_once_result
function __lon_tool_perform_completion_once
__lon_tool_debug "Starting __lon_tool_perform_completion_once"
if test -n "$__lon_tool_perform_completion_once_result"
__lon_tool_debug "Seems like a valid result already exists, skipping __lon_tool_perform_completion"
return 0
end
set --global __lon_tool_perform_completion_once_result (__lon_tool_perform_completion)
if test -z "$__lon_tool_perform_completion_once_result"
__lon_tool_debug "No completions, probably due to a failure"
return 1
end
__lon_tool_debug "Performed completions and set __lon_tool_perform_completion_once_result"
return 0
end
# this function is used to clear the $__lon_tool_perform_completion_once_result variable after completions are run
function __lon_tool_clear_perform_completion_once_result
__lon_tool_debug ""
__lon_tool_debug "========= clearing previously set __lon_tool_perform_completion_once_result variable =========="
set --erase __lon_tool_perform_completion_once_result
__lon_tool_debug "Successfully erased the variable __lon_tool_perform_completion_once_result"
end
function __lon_tool_requires_order_preservation
__lon_tool_debug ""
__lon_tool_debug "========= checking if order preservation is required =========="
__lon_tool_perform_completion_once
if test -z "$__lon_tool_perform_completion_once_result"
__lon_tool_debug "Error determining if order preservation is required"
return 1
end
set -l directive (string sub --start 2 $__lon_tool_perform_completion_once_result[-1])
__lon_tool_debug "Directive is: $directive"
set -l shellCompDirectiveKeepOrder 32
set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) % 2)
__lon_tool_debug "Keeporder is: $keeporder"
if test $keeporder -ne 0
__lon_tool_debug "This does require order preservation"
return 0
end
__lon_tool_debug "This doesn't require order preservation"
return 1
end
# This function does two things:
# - Obtain the completions and store them in the global __lon_tool_comp_results
# - Return false if file completion should be performed
function __lon_tool_prepare_completions
__lon_tool_debug ""
__lon_tool_debug "========= starting completion logic =========="
# Start fresh
set --erase __lon_tool_comp_results
__lon_tool_perform_completion_once
__lon_tool_debug "Completion results: $__lon_tool_perform_completion_once_result"
if test -z "$__lon_tool_perform_completion_once_result"
__lon_tool_debug "No completion, probably due to a failure"
# Might as well do file completion, in case it helps
return 1
end
set -l directive (string sub --start 2 $__lon_tool_perform_completion_once_result[-1])
set --global __lon_tool_comp_results $__lon_tool_perform_completion_once_result[1..-2]
__lon_tool_debug "Completions are: $__lon_tool_comp_results"
__lon_tool_debug "Directive is: $directive"
set -l shellCompDirectiveError 1
set -l shellCompDirectiveNoSpace 2
set -l shellCompDirectiveNoFileComp 4
set -l shellCompDirectiveFilterFileExt 8
set -l shellCompDirectiveFilterDirs 16
if test -z "$directive"
set directive 0
end
set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2)
if test $compErr -eq 1
__lon_tool_debug "Received error directive: aborting."
# Might as well do file completion, in case it helps
return 1
end
set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2)
set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2)
if test $filefilter -eq 1; or test $dirfilter -eq 1
__lon_tool_debug "File extension filtering or directory filtering not supported"
# Do full file completion instead
return 1
end
set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2)
set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2)
__lon_tool_debug "nospace: $nospace, nofiles: $nofiles"
# If we want to prevent a space, or if file completion is NOT disabled,
# we need to count the number of valid completions.
# To do so, we will filter on prefix as the completions we have received
# may not already be filtered so as to allow fish to match on different
# criteria than the prefix.
if test $nospace -ne 0; or test $nofiles -eq 0
set -l prefix (commandline -t | string escape --style=regex)
__lon_tool_debug "prefix: $prefix"
set -l completions (string match -r -- "^$prefix.*" $__lon_tool_comp_results)
set --global __lon_tool_comp_results $completions
__lon_tool_debug "Filtered completions are: $__lon_tool_comp_results"
# Important not to quote the variable for count to work
set -l numComps (count $__lon_tool_comp_results)
__lon_tool_debug "numComps: $numComps"
if test $numComps -eq 1; and test $nospace -ne 0
# We must first split on \t to get rid of the descriptions to be
# able to check what the actual completion will be.
# We don't need descriptions anyway since there is only a single
# real completion which the shell will expand immediately.
set -l split (string split --max 1 \t $__lon_tool_comp_results[1])
# Fish won't add a space if the completion ends with any
# of the following characters: @=/:.,
set -l lastChar (string sub -s -1 -- $split)
if not string match -r -q "[@=/:.,]" -- "$lastChar"
# In other cases, to support the "nospace" directive we trick the shell
# by outputting an extra, longer completion.
__lon_tool_debug "Adding second completion to perform nospace directive"
set --global __lon_tool_comp_results $split[1] $split[1].
__lon_tool_debug "Completions are now: $__lon_tool_comp_results"
end
end
if test $numComps -eq 0; and test $nofiles -eq 0
# To be consistent with bash and zsh, we only trigger file
# completion when there are no other completions
__lon_tool_debug "Requesting file completion"
return 1
end
end
return 0
end
# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves
# so we can properly delete any completions provided by another script.
# Only do this if the program can be found, or else fish may print some errors; besides,
# the existing completions will only be loaded if the program can be found.
if type -q "lon-tool"
# The space after the program name is essential to trigger completion for the program
# and not completion of the program name itself.
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
complete --do-complete "lon-tool " > /dev/null 2>&1
end
# Remove any pre-existing completions for the program since we will be handling all of them.
complete -c lon-tool -e
# this will get called after the two calls below and clear the $__lon_tool_perform_completion_once_result global
complete -c lon-tool -n '__lon_tool_clear_perform_completion_once_result'
# The call to __lon_tool_prepare_completions will setup __lon_tool_comp_results
# which provides the program's completion choices.
# If this doesn't require order preservation, we don't use the -k flag
complete -c lon-tool -n 'not __lon_tool_requires_order_preservation && __lon_tool_prepare_completions' -f -a '$__lon_tool_comp_results'
# otherwise we use the -k flag
complete -k -c lon-tool -n '__lon_tool_requires_order_preservation && __lon_tool_prepare_completions' -f -a '$__lon_tool_comp_results'

View file

@ -0,0 +1,257 @@
function __fish_poetry_9cf82bc144790825_complete_no_subcommand
for i in (commandline -opc)
if contains -- $i about add build cache check config debug env export help init install list lock new publish remove run search self shell show source update version
return 1
end
end
return 0
end
# global options
complete -c poetry -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -l ansi -d 'Force ANSI output.'
complete -c poetry -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -l directory -d 'The working directory for the Poetry command (defaults to the current working directory).'
complete -c poetry -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -l help -d 'Display help for the given command. When no command is given display help for the list command.'
complete -c poetry -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -l no-ansi -d 'Disable ANSI output.'
complete -c poetry -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -l no-cache -d 'Disables Poetry source caches.'
complete -c poetry -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -l no-interaction -d 'Do not ask any interactive question.'
complete -c poetry -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -l no-plugins -d 'Disables plugins.'
complete -c poetry -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -l quiet -d 'Do not output any message.'
complete -c poetry -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -l verbose -d 'Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug.'
complete -c poetry -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -l version -d 'Display this application version.'
# commands
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a about -d 'Shows information about Poetry.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a add -d 'Adds a new dependency to pyproject.toml and installs it.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a build -d 'Builds a package, as a tarball and a wheel by default.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a cache
complete -c poetry -f -n '__fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from clear list' -a clear -d 'Clears a Poetry cache by name.'
complete -c poetry -f -n '__fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from clear list' -a list -d 'List Poetry\'s caches.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a check -d 'Validates the content of the pyproject.toml file and its consistency with the poetry.lock file.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a config -d 'Manages configuration settings.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a debug
complete -c poetry -f -n '__fish_seen_subcommand_from debug; and not __fish_seen_subcommand_from info resolve' -a info -d 'Shows debug information.'
complete -c poetry -f -n '__fish_seen_subcommand_from debug; and not __fish_seen_subcommand_from info resolve' -a resolve -d 'Debugs dependency resolution.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a env
complete -c poetry -f -n '__fish_seen_subcommand_from env; and not __fish_seen_subcommand_from info list remove use' -a info -d 'Displays information about the current environment.'
complete -c poetry -f -n '__fish_seen_subcommand_from env; and not __fish_seen_subcommand_from info list remove use' -a list -d 'Lists all virtualenvs associated with the current project.'
complete -c poetry -f -n '__fish_seen_subcommand_from env; and not __fish_seen_subcommand_from info list remove use' -a remove -d 'Remove virtual environments associated with the project.'
complete -c poetry -f -n '__fish_seen_subcommand_from env; and not __fish_seen_subcommand_from info list remove use' -a use -d 'Activates or creates a new virtualenv for the current project.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a export -d 'Exports the lock file to alternative formats.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a help -d 'Displays help for a command.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a init -d 'Creates a basic pyproject.toml file in the current directory.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a install -d 'Installs the project dependencies.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a list -d 'Lists commands.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a lock -d 'Locks the project dependencies.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a new -d 'Creates a new Python project at <path>.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a publish -d 'Publishes a package to a remote repository.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a remove -d 'Removes a package from the project dependencies.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a run -d 'Runs a command in the appropriate environment.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a search -d 'Searches for packages on remote repositories.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a self
complete -c poetry -f -n '__fish_seen_subcommand_from self; and not __fish_seen_subcommand_from add install lock remove update show' -a add -d 'Add additional packages to Poetry\'s runtime environment.'
complete -c poetry -f -n '__fish_seen_subcommand_from self; and not __fish_seen_subcommand_from add install lock remove update show' -a install -d 'Install locked packages (incl. addons) required by this Poetry installation.'
complete -c poetry -f -n '__fish_seen_subcommand_from self; and not __fish_seen_subcommand_from add install lock remove update show' -a lock -d 'Lock the Poetry installation\'s system requirements.'
complete -c poetry -f -n '__fish_seen_subcommand_from self; and not __fish_seen_subcommand_from add install lock remove update show' -a remove -d 'Remove additional packages from Poetry\'s runtime environment.'
complete -c poetry -f -n '__fish_seen_subcommand_from self; and not __fish_seen_subcommand_from add install lock remove update show' -a show -d 'Show packages from Poetry\'s runtime environment.'
complete -c poetry -f -n '__fish_seen_subcommand_from self; and not __fish_seen_subcommand_from add install lock remove update show' -a plugins -d 'Shows information about the currently installed plugins.'
complete -c poetry -f -n '__fish_seen_subcommand_from self; and not __fish_seen_subcommand_from add install lock remove update show' -a update -d 'Updates Poetry to the latest version.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a shell -d 'Spawns a shell within the virtual environment.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a show -d 'Shows information about packages.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a source
complete -c poetry -f -n '__fish_seen_subcommand_from source; and not __fish_seen_subcommand_from add remove show' -a add -d 'Add source configuration for project.'
complete -c poetry -f -n '__fish_seen_subcommand_from source; and not __fish_seen_subcommand_from add remove show' -a remove -d 'Remove source configured for the project.'
complete -c poetry -f -n '__fish_seen_subcommand_from source; and not __fish_seen_subcommand_from add remove show' -a show -d 'Show information about sources configured for the project.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a update -d 'Update the dependencies as according to the pyproject.toml file.'
complete -c poetry -f -n '__fish_poetry_9cf82bc144790825_complete_no_subcommand' -a version -d 'Shows the version of the project or bumps it when a valid bump rule is provided.'
# command options
# about
# add
complete -c poetry -n '__fish_seen_subcommand_from add' -l allow-prereleases -d 'Accept prereleases.'
complete -c poetry -n '__fish_seen_subcommand_from add' -l dev -d 'Add as a development dependency. (Deprecated) Use --group=dev instead.'
complete -c poetry -n '__fish_seen_subcommand_from add' -l dry-run -d 'Output the operations but do not execute anything (implicitly enables --verbose).'
complete -c poetry -n '__fish_seen_subcommand_from add' -l editable -d 'Add vcs/path dependencies as editable.'
complete -c poetry -n '__fish_seen_subcommand_from add' -l extras -d 'Extras to activate for the dependency.'
complete -c poetry -n '__fish_seen_subcommand_from add' -l group -d 'The group to add the dependency to.'
complete -c poetry -n '__fish_seen_subcommand_from add' -l lock -d 'Do not perform operations (only update the lockfile).'
complete -c poetry -n '__fish_seen_subcommand_from add' -l optional -d 'Add as an optional dependency.'
complete -c poetry -n '__fish_seen_subcommand_from add' -l platform -d 'Platforms for which the dependency must be installed.'
complete -c poetry -n '__fish_seen_subcommand_from add' -l python -d 'Python version for which the dependency must be installed.'
complete -c poetry -n '__fish_seen_subcommand_from add' -l source -d 'Name of the source to use to install the package.'
# build
complete -c poetry -n '__fish_seen_subcommand_from build' -l format -d 'Limit the format to either sdist or wheel.'
complete -c poetry -n '__fish_seen_subcommand_from build' -l output -d 'Set output directory for build artifacts. Default is `dist`.'
# cache clear
complete -c poetry -n '__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from clear' -l all -d 'Clear all entries in the cache.'
# cache list
# check
complete -c poetry -n '__fish_seen_subcommand_from check' -l lock -d 'Checks that poetry.lock exists for the current version of pyproject.toml.'
# config
complete -c poetry -n '__fish_seen_subcommand_from config' -l list -d 'List configuration settings.'
complete -c poetry -n '__fish_seen_subcommand_from config' -l local -d 'Set/Get from the project\'s local configuration.'
complete -c poetry -n '__fish_seen_subcommand_from config' -l unset -d 'Unset configuration setting.'
# debug info
# debug resolve
complete -c poetry -n '__fish_seen_subcommand_from debug; and __fish_seen_subcommand_from resolve' -l extras -d 'Extras to activate for the dependency.'
complete -c poetry -n '__fish_seen_subcommand_from debug; and __fish_seen_subcommand_from resolve' -l install -d 'Show what would be installed for the current system.'
complete -c poetry -n '__fish_seen_subcommand_from debug; and __fish_seen_subcommand_from resolve' -l python -d 'Python version(s) to use for resolution.'
complete -c poetry -n '__fish_seen_subcommand_from debug; and __fish_seen_subcommand_from resolve' -l tree -d 'Display the dependency tree.'
# env info
complete -c poetry -n '__fish_seen_subcommand_from env; and __fish_seen_subcommand_from info' -l executable -d 'Only display the environment\'s python executable path.'
complete -c poetry -n '__fish_seen_subcommand_from env; and __fish_seen_subcommand_from info' -l path -d 'Only display the environment\'s path.'
# env list
complete -c poetry -n '__fish_seen_subcommand_from env; and __fish_seen_subcommand_from list' -l full-path -d 'Output the full paths of the virtualenvs.'
# env remove
complete -c poetry -n '__fish_seen_subcommand_from env; and __fish_seen_subcommand_from remove' -l all -d 'Remove all managed virtual environments associated with the project.'
# env use
# export
complete -c poetry -n '__fish_seen_subcommand_from export' -l all-extras -d 'Include all sets of extra dependencies.'
complete -c poetry -n '__fish_seen_subcommand_from export' -l dev -d 'Include development dependencies. (Deprecated)'
complete -c poetry -n '__fish_seen_subcommand_from export' -l extras -d 'Extra sets of dependencies to include.'
complete -c poetry -n '__fish_seen_subcommand_from export' -l format -d 'Format to export to. Currently, only constraints.txt and requirements.txt are supported.'
complete -c poetry -n '__fish_seen_subcommand_from export' -l only -d 'The only dependency groups to include.'
complete -c poetry -n '__fish_seen_subcommand_from export' -l output -d 'The name of the output file.'
complete -c poetry -n '__fish_seen_subcommand_from export' -l with -d 'The optional dependency groups to include.'
complete -c poetry -n '__fish_seen_subcommand_from export' -l with-credentials -d 'Include credentials for extra indices.'
complete -c poetry -n '__fish_seen_subcommand_from export' -l without -d 'The dependency groups to ignore.'
complete -c poetry -n '__fish_seen_subcommand_from export' -l without-hashes -d 'Exclude hashes from the exported file.'
complete -c poetry -n '__fish_seen_subcommand_from export' -l without-urls -d 'Exclude source repository urls from the exported file.'
# help
# init
complete -c poetry -n '__fish_seen_subcommand_from init' -l author -d 'Author name of the package.'
complete -c poetry -n '__fish_seen_subcommand_from init' -l dependency -d 'Package to require, with an optional version constraint, e.g. requests:^2.10.0 or requests=2.11.1.'
complete -c poetry -n '__fish_seen_subcommand_from init' -l description -d 'Description of the package.'
complete -c poetry -n '__fish_seen_subcommand_from init' -l dev-dependency -d 'Package to require for development, with an optional version constraint, e.g. requests:^2.10.0 or requests=2.11.1.'
complete -c poetry -n '__fish_seen_subcommand_from init' -l license -d 'License of the package.'
complete -c poetry -n '__fish_seen_subcommand_from init' -l name -d 'Name of the package.'
complete -c poetry -n '__fish_seen_subcommand_from init' -l python -d 'Compatible Python versions.'
# install
complete -c poetry -n '__fish_seen_subcommand_from install' -l all-extras -d 'Install all extra dependencies.'
complete -c poetry -n '__fish_seen_subcommand_from install' -l compile -d 'Compile Python source files to bytecode. (This option has no effect if modern-installation is disabled because the old installer always compiles.)'
complete -c poetry -n '__fish_seen_subcommand_from install' -l dry-run -d 'Output the operations but do not execute anything (implicitly enables --verbose).'
complete -c poetry -n '__fish_seen_subcommand_from install' -l extras -d 'Extra sets of dependencies to install.'
complete -c poetry -n '__fish_seen_subcommand_from install' -l no-dev -d 'Do not install the development dependencies. (Deprecated)'
complete -c poetry -n '__fish_seen_subcommand_from install' -l no-directory -d 'Do not install any directory path dependencies; useful to install dependencies without source code, e.g. for caching of Docker layers)'
complete -c poetry -n '__fish_seen_subcommand_from install' -l no-root -d 'Do not install the root package (the current project).'
complete -c poetry -n '__fish_seen_subcommand_from install' -l only -d 'The only dependency groups to include.'
complete -c poetry -n '__fish_seen_subcommand_from install' -l only-root -d 'Exclude all dependencies.'
complete -c poetry -n '__fish_seen_subcommand_from install' -l remove-untracked -d 'Removes packages not present in the lock file. (Deprecated)'
complete -c poetry -n '__fish_seen_subcommand_from install' -l sync -d 'Synchronize the environment with the locked packages and the specified groups.'
complete -c poetry -n '__fish_seen_subcommand_from install' -l with -d 'The optional dependency groups to include.'
complete -c poetry -n '__fish_seen_subcommand_from install' -l without -d 'The dependency groups to ignore.'
# list
# lock
complete -c poetry -n '__fish_seen_subcommand_from lock' -l check -d 'Check that the poetry.lock file corresponds to the current version of pyproject.toml. (Deprecated) Use poetry check --lock instead.'
complete -c poetry -n '__fish_seen_subcommand_from lock' -l no-update -d 'Do not update locked versions, only refresh lock file.'
# new
complete -c poetry -n '__fish_seen_subcommand_from new' -l name -d 'Set the resulting package name.'
complete -c poetry -n '__fish_seen_subcommand_from new' -l readme -d 'Specify the readme file format. Default is md.'
complete -c poetry -n '__fish_seen_subcommand_from new' -l src -d 'Use the src layout for the project.'
# publish
complete -c poetry -n '__fish_seen_subcommand_from publish' -l build -d 'Build the package before publishing.'
complete -c poetry -n '__fish_seen_subcommand_from publish' -l cert -d 'Certificate authority to access the repository.'
complete -c poetry -n '__fish_seen_subcommand_from publish' -l client-cert -d 'Client certificate to access the repository.'
complete -c poetry -n '__fish_seen_subcommand_from publish' -l dist-dir -d 'Dist directory where built artifact are stored. Default is `dist`.'
complete -c poetry -n '__fish_seen_subcommand_from publish' -l dry-run -d 'Perform all actions except upload the package.'
complete -c poetry -n '__fish_seen_subcommand_from publish' -l password -d 'The password to access the repository.'
complete -c poetry -n '__fish_seen_subcommand_from publish' -l repository -d 'The repository to publish the package to.'
complete -c poetry -n '__fish_seen_subcommand_from publish' -l skip-existing -d 'Ignore errors from files already existing in the repository.'
complete -c poetry -n '__fish_seen_subcommand_from publish' -l username -d 'The username to access the repository.'
# remove
complete -c poetry -n '__fish_seen_subcommand_from remove' -l dev -d 'Remove a package from the development dependencies. (Deprecated) Use --group=dev instead.'
complete -c poetry -n '__fish_seen_subcommand_from remove' -l dry-run -d 'Output the operations but do not execute anything (implicitly enables --verbose).'
complete -c poetry -n '__fish_seen_subcommand_from remove' -l group -d 'The group to remove the dependency from.'
complete -c poetry -n '__fish_seen_subcommand_from remove' -l lock -d 'Do not perform operations (only update the lockfile).'
# run
# search
# self add
complete -c poetry -n '__fish_seen_subcommand_from self; and __fish_seen_subcommand_from add' -l allow-prereleases -d 'Accept prereleases.'
complete -c poetry -n '__fish_seen_subcommand_from self; and __fish_seen_subcommand_from add' -l dry-run -d 'Output the operations but do not execute anything (implicitly enables --verbose).'
complete -c poetry -n '__fish_seen_subcommand_from self; and __fish_seen_subcommand_from add' -l editable -d 'Add vcs/path dependencies as editable.'
complete -c poetry -n '__fish_seen_subcommand_from self; and __fish_seen_subcommand_from add' -l extras -d 'Extras to activate for the dependency.'
complete -c poetry -n '__fish_seen_subcommand_from self; and __fish_seen_subcommand_from add' -l source -d 'Name of the source to use to install the package.'
# self install
complete -c poetry -n '__fish_seen_subcommand_from self; and __fish_seen_subcommand_from install' -l dry-run -d 'Output the operations but do not execute anything (implicitly enables --verbose).'
complete -c poetry -n '__fish_seen_subcommand_from self; and __fish_seen_subcommand_from install' -l sync -d 'Synchronize the environment with the locked packages and the specified groups.'
# self lock
complete -c poetry -n '__fish_seen_subcommand_from self; and __fish_seen_subcommand_from lock' -l check -d 'Check that the poetry.lock file corresponds to the current version of pyproject.toml. (Deprecated) Use poetry check --lock instead.'
complete -c poetry -n '__fish_seen_subcommand_from self; and __fish_seen_subcommand_from lock' -l no-update -d 'Do not update locked versions, only refresh lock file.'
# self remove
complete -c poetry -n '__fish_seen_subcommand_from self; and __fish_seen_subcommand_from remove' -l dry-run -d 'Output the operations but do not execute anything (implicitly enables --verbose).'
# self show
complete -c poetry -n '__fish_seen_subcommand_from self; and __fish_seen_subcommand_from show' -l addons -d 'List only add-on packages installed.'
complete -c poetry -n '__fish_seen_subcommand_from self; and __fish_seen_subcommand_from show' -l latest -d 'Show the latest version.'
complete -c poetry -n '__fish_seen_subcommand_from self; and __fish_seen_subcommand_from show' -l outdated -d 'Show the latest version but only for packages that are outdated.'
complete -c poetry -n '__fish_seen_subcommand_from self; and __fish_seen_subcommand_from show' -l tree -d 'List the dependencies as a tree.'
# self show plugins
# self update
complete -c poetry -n '__fish_seen_subcommand_from self; and __fish_seen_subcommand_from update' -l dry-run -d 'Output the operations but do not execute anything (implicitly enables --verbose).'
complete -c poetry -n '__fish_seen_subcommand_from self; and __fish_seen_subcommand_from update' -l preview -d 'Allow the installation of pre-release versions.'
# shell
# show
complete -c poetry -n '__fish_seen_subcommand_from show' -l all -d 'Show all packages (even those not compatible with current system).'
complete -c poetry -n '__fish_seen_subcommand_from show' -l latest -d 'Show the latest version.'
complete -c poetry -n '__fish_seen_subcommand_from show' -l no-dev -d 'Do not list the development dependencies. (Deprecated)'
complete -c poetry -n '__fish_seen_subcommand_from show' -l only -d 'The only dependency groups to include.'
complete -c poetry -n '__fish_seen_subcommand_from show' -l outdated -d 'Show the latest version but only for packages that are outdated.'
complete -c poetry -n '__fish_seen_subcommand_from show' -l top-level -d 'Show only top-level dependencies.'
complete -c poetry -n '__fish_seen_subcommand_from show' -l tree -d 'List the dependencies as a tree.'
complete -c poetry -n '__fish_seen_subcommand_from show' -l why -d 'When showing the full list, or a --tree for a single package, display whether they are a direct dependency or required by other packages'
complete -c poetry -n '__fish_seen_subcommand_from show' -l with -d 'The optional dependency groups to include.'
complete -c poetry -n '__fish_seen_subcommand_from show' -l without -d 'The dependency groups to ignore.'
# source add
complete -c poetry -n '__fish_seen_subcommand_from source; and __fish_seen_subcommand_from add' -l default -d 'Set this source as the default (disable PyPI). A default source will also be the fallback source if you add other sources. (Deprecated, use --priority)'
complete -c poetry -n '__fish_seen_subcommand_from source; and __fish_seen_subcommand_from add' -l priority -d 'Set the priority of this source. One of: default, primary, secondary, supplemental, explicit. Defaults to primary.'
complete -c poetry -n '__fish_seen_subcommand_from source; and __fish_seen_subcommand_from add' -l secondary -d 'Set this source as secondary. (Deprecated, use --priority)'
# source remove
# source show
# update
complete -c poetry -n '__fish_seen_subcommand_from update' -l dry-run -d 'Output the operations but do not execute anything (implicitly enables --verbose).'
complete -c poetry -n '__fish_seen_subcommand_from update' -l lock -d 'Do not perform operations (only update the lockfile).'
complete -c poetry -n '__fish_seen_subcommand_from update' -l no-dev -d 'Do not update the development dependencies. (Deprecated)'
complete -c poetry -n '__fish_seen_subcommand_from update' -l only -d 'The only dependency groups to include.'
complete -c poetry -n '__fish_seen_subcommand_from update' -l sync -d 'Synchronize the environment with the locked packages and the specified groups.'
complete -c poetry -n '__fish_seen_subcommand_from update' -l with -d 'The optional dependency groups to include.'
complete -c poetry -n '__fish_seen_subcommand_from update' -l without -d 'The dependency groups to ignore.'
# version
complete -c poetry -n '__fish_seen_subcommand_from version' -l dry-run -d 'Do not update pyproject.toml file'
complete -c poetry -n '__fish_seen_subcommand_from version' -l next-phase -d 'Increment the phase of the current version'
complete -c poetry -n '__fish_seen_subcommand_from version' -l short -d 'Output the version number only'

View file

@ -0,0 +1,77 @@
set fish_greeting ""
function filesize
for file in $argv
if [ -f "$file" ]
echo "$file: $(stat -c %s "$file" | numfmt --to=iec)"
else
echo "$file: not found"
end
end
end
function _fetch
# if which pfetch > /dev/null 2>&1 && [ "$VSCODE_INJECTION" != "1" ]
# export PF_INFO="ascii title os host kernel uptime memory de"
# #export PF_ASCII="arch"
# pfetch
# end
if which ufetch > /dev/null 2>&1 && [ "$VSCODE_INJECTION" != "1" ]
ufetch
end
end
if which pyenv > /dev/null 2>&1
pyenv init - | source
end
if [ "$TERM" = "foot" ] || [ "$TERM" = "xterm-kitty" ]
alias ssh="TERM=xterm-256color $(which ssh)"
alias gg="TERM=xterm-256color $(which gg)"
end
if status is-interactive
bind \cl 'clear; _fetch; commandline -f repaint'
bind \cb btop
bind \cs 'source ~/.config/fish/config.fish'
if which eza > /dev/null 2>&1
alias ls="eza --icons=auto"
else if which exa > /dev/null 2>&1
alias ls="exa --icons=auto"
end
if which bat > /dev/null 2>&1
alias cat="bat"
else if which batcat > /dev/null 2>&1
alias cat="batcat"
end
if which distrobox-enter > /dev/null 2>&1
alias denter=distrobox-enter
end
if which nvim > /dev/null 2>&1
alias v="nvim"
alias edit="nvim"
alias e="nvim"
alias V="sudoedit"
export EDITOR=nvim
end
alias cdt="cd (mktemp -d)"
alias ":q"=exit
if which zoxide > /dev/null 2>&1
zoxide init --cmd cd fish | source
end
if [ "$reload" = "" ]
_fetch
end
export VIRTUAL_ENV_DISABLE_PROMPT=0
set reload "done"
end
fish_add_path /home/timoxa0/.spicetify

View file

@ -0,0 +1,78 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR __fish_initialized:3400
SETUVAR _fisher_upgraded_to_4_4:\x1d
SETUVAR fish_color_autosuggestion:brblack
SETUVAR fish_color_cancel:\x2dr
SETUVAR fish_color_command:blue
SETUVAR fish_color_comment:red
SETUVAR fish_color_cwd:green
SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:green
SETUVAR fish_color_error:brred
SETUVAR fish_color_escape:brcyan
SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:normal
SETUVAR fish_color_host_remote:yellow
SETUVAR fish_color_normal:normal
SETUVAR fish_color_operator:brcyan
SETUVAR fish_color_param:cyan
SETUVAR fish_color_quote:yellow
SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_status:red
SETUVAR fish_color_user:brgreen
SETUVAR fish_color_valid_path:\x2d\x2dunderline
SETUVAR fish_key_bindings:fish_default_key_bindings
SETUVAR fish_pager_color_completion:normal
SETUVAR fish_pager_color_description:yellow\x1e\x2di
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
SETUVAR fish_pager_color_selected_background:\x2dr
SETUVAR fish_user_paths:/home/timoxa0/\x2espicetify\x1e/home/timoxa0/\x2econfig/hypr/bin\x1e/home/timoxa0/\x2elocal/bin
SETUVAR pure_begin_prompt_with_current_directory:true
SETUVAR pure_check_for_new_release:false
SETUVAR pure_color_at_sign:pure_color_mute
SETUVAR pure_color_command_duration:pure_color_warning
SETUVAR pure_color_current_directory:pure_color_primary
SETUVAR pure_color_danger:red
SETUVAR pure_color_dark:black
SETUVAR pure_color_git_branch:pure_color_mute
SETUVAR pure_color_git_dirty:pure_color_mute
SETUVAR pure_color_git_stash:pure_color_info
SETUVAR pure_color_git_unpulled_commits:pure_color_info
SETUVAR pure_color_git_unpushed_commits:pure_color_info
SETUVAR pure_color_hostname:pure_color_mute
SETUVAR pure_color_info:cyan
SETUVAR pure_color_jobs:pure_color_normal
SETUVAR pure_color_light:white
SETUVAR pure_color_mute:brblack
SETUVAR pure_color_normal:normal
SETUVAR pure_color_prefix_root_prompt:pure_color_danger
SETUVAR pure_color_primary:blue
SETUVAR pure_color_prompt_on_error:pure_color_danger
SETUVAR pure_color_prompt_on_success:pure_color_success
SETUVAR pure_color_success:magenta
SETUVAR pure_color_system_time:pure_color_mute
SETUVAR pure_color_username_normal:pure_color_mute
SETUVAR pure_color_username_root:pure_color_light
SETUVAR pure_color_virtualenv:pure_color_mute
SETUVAR pure_color_warning:yellow
SETUVAR pure_enable_git:true
SETUVAR pure_enable_single_line_prompt:false
SETUVAR pure_reverse_prompt_symbol_in_vimode:true
SETUVAR pure_separate_prompt_on_error:false
SETUVAR pure_show_jobs:false
SETUVAR pure_show_prefix_root_prompt:false
SETUVAR pure_show_subsecond_command_duration:false
SETUVAR pure_show_system_time:false
SETUVAR pure_symbol_git_dirty:\x2a
SETUVAR pure_symbol_git_stash:\u2261
SETUVAR pure_symbol_git_unpulled_commits:\u21e3
SETUVAR pure_symbol_git_unpushed_commits:\u21e1
SETUVAR pure_symbol_prefix_root_prompt:\x23
SETUVAR pure_symbol_prompt:\u276f
SETUVAR pure_symbol_reverse_prompt:\u276e
SETUVAR pure_symbol_title_bar_separator:\x2d
SETUVAR pure_threshold_command_duration:5

View file

@ -0,0 +1,34 @@
# name: Default
# author: Lily Ballard
function fish_prompt --description 'Write out the prompt'
set -l last_pipestatus $pipestatus
set -lx __fish_last_status $status # Export for __fish_print_pipestatus.
set -l normal (set_color normal)
set -q fish_color_status
or set -g fish_color_status red
# Color the prompt differently when we're root
set -l color_cwd $fish_color_cwd
set -l suffix '>'
if functions -q fish_is_root_user; and fish_is_root_user
if set -q fish_color_cwd_root
set color_cwd $fish_color_cwd_root
end
set suffix '#'
end
# Write pipestatus
# If the status was carried over (if no command is issued or if `set` leaves the status untouched), don't bold it.
set -l bold_flag --bold
set -q __fish_prompt_status_generation; or set -g __fish_prompt_status_generation $status_generation
if test $__fish_prompt_status_generation = $status_generation
set bold_flag
end
set __fish_prompt_status_generation $status_generation
set -l status_color (set_color $fish_color_status)
set -l statusb_color (set_color $bold_flag $fish_color_status)
set -l prompt_status (__fish_print_pipestatus "[" "]" "|" "$status_color" "$statusb_color" $last_pipestatus)
echo -n -s (prompt_login)' ' (set_color $color_cwd) (prompt_pwd) $normal (fish_vcs_prompt) $normal " "$prompt_status $suffix " "
end

View file

@ -0,0 +1,6 @@
function fish_right_prompt -d "Write out the right prompt"
if set -q CONTAINER_ID
set distrobox_prefix "$(string replace -r -a '\b([\w])' '\U$0' "$CONTAINER_ID") "
end
echo -n -s $distrobox_prefix
end

20
dot-config/hypr/bin/autostart Executable file
View file

@ -0,0 +1,20 @@
#!/usr/bin/env bash
dbus-update-activation-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=Hyprland &
gsettings set org.gnome.desktop.wm.preferences button-layout ':' &
waybar -c ~/.config/waybar/waybar.jsonc -s ~/.config/waybar/waybar.css &
hyprpaper -c ~/.config/hypr/hyprpaper.conf &
hypridle -c ~/.config/hypr/hypridle.conf &
/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
mako -c ~/.config/mako/mako.conf &
/usr/lib/xdg-desktop-portal -r &
nm-applet &
clash-verge &
bash -c "sleep 2; easyeffects --gapplication-service" &
ping 1.1.1.1 -c 1 && {
sleep 3
vesktop &
telegram-desktop -startintray &
}

4
dot-config/hypr/bin/lockscreen Executable file
View file

@ -0,0 +1,4 @@
#!/usr/bin/env fish
if not ps -e | grep hyprlock
hyprlock -c ~/.config/hypr/hyprlock.conf
end

108
dot-config/hypr/bin/powermenu Executable file
View file

@ -0,0 +1,108 @@
#!/usr/bin/env bash
## Author : Aditya Shakya (adi1090x)
## Github : @adi1090x
#
## Rofi : Power Menu
# CMDs
uptime="`uptime -p | sed -e 's/up //g'`"
host=`cat /etc/hostname`
# Options
hibernate='󱖒'
shutdown='⏼'
reboot=''
lock=''
suspend=''
logout=''
yes=''
no=''
# Rofi CMD
rofi_cmd() {
rofi -dmenu \
-p "$USER@$host" \
-mesg "Uptime: $uptime" \
-theme ~/.config/rofi/powermenu.rasi
}
# Confirmation CMD
confirm_cmd() {
rofi -theme-str 'window {location: center; anchor: center; fullscreen: false; width: 350px;}' \
-theme-str 'mainbox {children: [ "message", "listview" ];}' \
-theme-str 'listview {columns: 2; lines: 1;}' \
-theme-str 'element-text {horizontal-align: 0.5;}' \
-theme-str 'textbox {horizontal-align: 0.5;}' \
-dmenu \
-p 'Confirmation' \
-mesg 'Are you Sure?' \
-theme ~/.config/rofi/powermenu.rasi
}
# Ask for confirmation
confirm_exit() {
echo -e "$yes\n$no" | confirm_cmd
}
# Pass variables to rofi dmenu
run_rofi() {
echo -e "$lock\n$logout\n$reboot\n$shutdown" | rofi_cmd
}
# Execute Command
run_cmd() {
selected="$(confirm_exit)"
if [[ "$selected" == "$yes" ]]; then
if [[ $1 == '--shutdown' ]]; then
systemctl poweroff
elif [[ $1 == '--reboot' ]]; then
systemctl reboot
elif [[ $1 == '--hibernate' ]]; then
systemctl hibernate
elif [[ $1 == '--suspend' ]]; then
systemctl suspend
elif [[ $1 == '--logout' ]]; then
if [[ "$DESKTOP_SESSION" == 'openbox' ]]; then
openbox --exit
elif [[ "$DESKTOP_SESSION" == 'bspwm' ]]; then
bspc quit
elif [[ "$DESKTOP_SESSION" == 'i3' ]]; then
i3-msg exit
elif [[ "$DESKTOP_SESSION" == 'plasma' ]]; then
qdbus org.kde.ksmserver /KSMServer logout 0 0 0
elif [[ "$XDG_CURRENT_DESKTOP" == 'Hyprland' ]]; then
hyprctl dispatch exit
fi
fi
else
exit 0
fi
}
# Actions
chosen="$(run_rofi)"
case ${chosen} in
$shutdown)
run_cmd --shutdown
;;
$reboot)
run_cmd --reboot
;;
$hibernate)
run_cmd --hibernate
;;
$lock)
if [[ -x '/usr/bin/betterlockscreen' ]]; then
betterlockscreen -l
elif [[ -x '/usr/bin/i3lock' ]]; then
i3lock
fi
;;
$suspend)
run_cmd --suspend
;;
$logout)
run_cmd --logout
;;
esac

1
dot-config/hypr/bin/runner Executable file
View file

@ -0,0 +1 @@
rofi -show drun -theme ~/.config/rofi/runner.rasi

54
dot-config/hypr/bin/setwal Executable file
View file

@ -0,0 +1,54 @@
#!/usr/bin/env bash
printf "%s\n" "Currently disabled"
{ [[ -z $1 ]] || [[ -z $2 ]]; } && {
printf "%s\n" "Usage: setwal /path/to/wallpaper mode"
exit 1
}
[ ! -f "$1" ] && {
printf "File not found: %s\n" "$1"
exit 2
}
yes | ffmpeg -i "$1" ~/.config/hypr/wallpaper.png >/dev/null 2>&1 || {
printf "Failed to copy wallpaper from %s\n" "$1"
exit 3
}
{
hyprctl hyprpaper unload all >/dev/null
hyprctl hyprpaper preload ~/.config/hypr/wallpaper.png >/dev/null
hyprctl hyprpaper wallpaper ",~/.config/hypr/wallpaper.png" >/dev/null
} &
update() {
makoctl reload
}
dark() {
matugen image ~/.config/hypr/wallpaper.png -c ~/.config/hypr/matugen/config.toml -m dark
gsettings set org.gnome.desktop.interface gtk-theme "adw-gtk3-not-exist" >/dev/null
sleep 0.1
gsettings set org.gnome.desktop.interface gtk-theme "adw-gtk3-dark" >/dev/null
gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
update
}
light() {
matugen image ~/.config/hypr/wallpaper.png -c ~/.config/hypr/matugen/config.toml -m light
gsettings set org.gnome.desktop.interface gtk-theme "adw-gtk3-not-exist" >/dev/null
sleep 0.1
gsettings set org.gnome.desktop.interface gtk-theme "adw-gtk3" >/dev/null
gsettings set org.gnome.desktop.interface color-scheme 'prefer-light'
update
}
case "$2" in
"light")
light
;;
*)
dark
;;
esac

View file

@ -0,0 +1,61 @@
#===========================================================================#
# | bind | dispatcher | args #
#===========================================================================#
bind = SUPER, RETURN, exec, $terminal
bind = SUPER, E, exec, $fileManager
bind = SUPER, D, exec, $discord
bind = SUPER, T, exec, $telegram
bind = SUPER, B, exec, $browser
bind = SUPER, Q, killactive,
bind = SUPER, M, exit,
bind = SUPER, C, togglefloating,
bind = SUPER, SPACE, exec, $menu
bind = SUPER, P, pseudo, # dwindle
bind = SUPER, X, togglesplit, # dwindle
bind = SUPER, Home, exec, $sshot region
bind = SUPER, Prior, exec, $sshot window
bind = SUPER, Next, exec, $sshot output
bind = SUPER Ctrl, Q, exec, $locker
bind = , XF86AudioPlay, exec, $pctl play-pause
bind = , XF86AudioNext, exec, $pctl next
bind = , XF86AudioPrev, exec, $pctl previous
bind = , XF86AudioMute, exec, pamixer -t
bind = , XF86AudioRaiseVolume, exec, pamixer -i 2
bind = , XF86AudioLowerVolume, exec, pamixer -d 2
bind = SUPER, left, movefocus, l
bind = SUPER, right, movefocus, r
bind = SUPER, up, movefocus, u
bind = SUPER, down, movefocus, d
bind = SUPER, 1, workspace, 1
bind = SUPER, 2, workspace, 2
bind = SUPER, 3, workspace, 3
bind = SUPER, 4, workspace, 4
bind = SUPER, 5, workspace, 5
bind = SUPER, 6, workspace, 6
bind = SUPER, 7, workspace, 7
bind = SUPER, 8, workspace, 8
bind = SUPER, 9, workspace, 9
bind = SUPER, 0, workspace, 10
#bind = SUPER, TAB, overview:toggle
bind = SUPER SHIFT, 1, movetoworkspace, 1
bind = SUPER SHIFT, 2, movetoworkspace, 2
bind = SUPER SHIFT, 3, movetoworkspace, 3
bind = SUPER SHIFT, 4, movetoworkspace, 4
bind = SUPER SHIFT, 5, movetoworkspace, 5
bind = SUPER SHIFT, 6, movetoworkspace, 6
bind = SUPER SHIFT, 7, movetoworkspace, 7
bind = SUPER SHIFT, 8, movetoworkspace, 8
bind = SUPER SHIFT, 9, movetoworkspace, 9
bind = SUPER SHIFT, 0, movetoworkspace, 10
bind = SUPER, mouse_down, workspace, e+1
bind = SUPER, mouse_up, workspace, e-1
bindm = SUPER, mouse:272, movewindow
bindm = SUPER, mouse:273, resizewindow

View file

@ -0,0 +1,5 @@
$primary = rgb(89b4fa)
$secondary = rgb(313244)
$bg = rgb(1e1e2e)
$fg = rgb(363a4f)

View file

@ -0,0 +1,76 @@
exec-once = gsettings set org.gnome.desktop.interface gtk-theme "catppuccin-mocha-blue-standard+default"
exec-once = gsettings set org.gnome.desktop.interface icon-theme Papirus-Dark
exec-once = gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
exec-once = gsettings set org.gnome.desktop.interface gtk-color-scheme 'prefer-dark'
exec-once = gsettings set org.gnome.desktop.interface cursor-theme 'Bibata-Modern-Classic'
general {
col.active_border = $primary
col.inactive_border = $secondary
gaps_in = 5
gaps_out = 10
border_size = 3
resize_on_border = false
allow_tearing = false
layout = dwindle
}
decoration {
rounding = 10
active_opacity = 1.0
inactive_opacity = 1.0
drop_shadow = false
shadow_range = 4
shadow_render_power = 3
col.shadow = $bg
dim_inactive = false
dim_strength = 0.2
blur {
enabled = true
size = 3
passes = 3
vibrancy = 0.1696
}
}
animations {
enabled = true
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, myBezier, popin 80%
animation = border, 1, 10, myBezier
animation = borderangle, 1, 8, myBezier
animation = fade, 1, 7, myBezier
animation = workspaces, 1, 6, myBezier
}
dwindle {
pseudotile = false
preserve_split = true
smart_split = false
smart_resizing = false
}
misc {
force_default_wallpaper = -1
disable_hyprland_logo = true
}
input {
kb_layout = us, ru
kb_variant =
kb_model =
kb_options = grp:caps_toggle
kb_rules =
follow_mouse = 1
sensitivity = 0
touchpad {
natural_scroll = false
}
}

12
dot-config/hypr/env.conf Normal file
View file

@ -0,0 +1,12 @@
env = XCURSOR_SIZE,24
env = XCURSOR_THEME,Bibata-Modern-Classic
env = HYPRCURSOR_SIZE,24
env = HYPRCURSOR_THEME,Bibata-Modern-Classic
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = QT_QPA_PLATFORM,wayland
env = QT_QPA_PLATFORMTHEME,qt5ct
env = EDITOR,nvim

View file

@ -0,0 +1,10 @@
general {
lock_cmd = ~/.config/hypr/bin/lockscreen
ignore_dbus_inhibit = false
ignore_systemd_inhibit = false
}
listener {
timeout = 3600
on-timeout = ~/.config/hypr/bin/lockscreen
}

View file

@ -0,0 +1,21 @@
source = colors.conf
$terminal = alacritty
$fileManager = thunar
$menu = ~/.config/hypr/bin/runner
$browser = zen-browser
$discord = vesktop
$telegram = telegram-desktop
$pctl = playerctl
$sshot = hyprshot -o ~/Pictures/Screenshots/ -z -m
$locker = loginctl lock-session
source = plugins.conf
exec-once = hyprpm reload -n
source = monitors.conf
source = decorations.conf
source = env.conf
source = binds.conf
source = rules.conf
exec-once = ~/.config/hypr/bin/autostart

View file

@ -0,0 +1,63 @@
source = appearance.conf
# BACKGROUND
background {
monitor =
path = ~/.config/hypr/wallpaper.png
blur_passes = 3
contrast = 0.8916
brightness = 0.8172
vibrancy = 0.1696
vibrancy_darkness = 0.0
}
# GENERAL
general {
no_fade_in = false
grace = 0
disable_loading_bar = true
}
# INPUT FIELD
input-field {
monitor = DP-1
size = 200, 40
outline_thickness = 2
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
outer_color = rgba(0, 0, 0, 0)
inner_color = rgba(0, 0, 0, 0.5)
font_color = $fg
fade_on_empty = false
placeholder_text =
hide_input = false
position = 0, -650 #-120
halign = center
valign = center
}
# TIME
label {
monitor = DP-1
text = cmd[update:1000] echo "$(date +"%H:%M")"
color = $fg
font_size = 240
font_family = eurofurence
position = 0, -300
halign = center
valign = top
}
# USER
label {
monitor = DP-1
text = Enter your password
color = $fg
font_size = 14
font_family = eurofurence
position = 0, -690 # -40
halign = center
valign = center
}

View file

@ -0,0 +1,5 @@
preload = ~/.config/hypr/wallpaper.png
wallpaper = ,~/.config/hypr/wallpaper.png
splash = false

View file

@ -0,0 +1,9 @@
[21:25:32 2024-10-07] FETCHING Version 2.38.4
[21:25:32 2024-10-07] CREATING /home/timoxa0/.spicetify
[21:25:32 2024-10-07] DOWNLOADING https://github.com/spicetify/cli/releases/download/v2.38.4/spicetify-2.38.4-linux-amd64.tar.gz
[21:25:33 2024-10-07] EXTRACTING /home/timoxa0/.spicetify/spicetify.tar.gz
[21:25:33 2024-10-07] SETTING EXECUTABLE PERMISSIONS TO /home/timoxa0/.spicetify/spicetify
[21:25:33 2024-10-07] REMOVING /home/timoxa0/.spicetify/spicetify.tar.gz
[21:25:33 2024-10-07] APPENDING /home/timoxa0/.spicetify to PATH in /home/timoxa0/.config/fish/config.fish
[21:25:33 2024-10-07] spicetify v2.38.4 was installed successfully to /home/timoxa0/.spicetify
[21:25:33 2024-10-07] Run 'spicetify --help' to get started

View file

@ -0,0 +1,7 @@
#===========================================================================#
# Monitors #
#===========================================================================#
monitor=DP-1, 3440x1440@100, 1920x0, 1
monitor=HDMI-A-2, 1920x1200@60, 0x0, 1
monitor=HDMI-A-1, 1920x1200@60, 2680x1440, 1

View file

@ -0,0 +1,2 @@
#windowrulev2 = plugin:chromakey,fullscreen:0
#chromakey_background = rgb(1e1e2e)

View file

@ -0,0 +1,41 @@
#===========================================================================#
# Windows and workspaces #
#===========================================================================#
layerrule = blur, waybar
layerrule = ignorezero, waybar
layerrule = blur, notifications
layerrule = ignorezero, notifications
layerrule = blur, rofi
layerrule = ignorezero, rofi
windowrulev2 = suppressevent maximize, class:.*
windowrule = float, ^(imv)$
windowrule = float, ^(fetch)$
windowrule = float, ^(AmneziaVPN)$
windowrule = float, ^(org.pulseaudio.pavucontrol)$
windowrule = size 696 570, ^(org.pulseaudio.pavucontrol)$
windowrule = move 1630 820, ^(org.pulseaudio.pavucontrol)$
windowrule = monitor DP-1, ^(org.pulseaudio.pavucontrol)$
windowrule = monitor HDMI-A-2, ^(xfreerdp)$
windowrule = fullscreen, ^(xfreerdp)$
windowrulev2 = opacity 0.0 override,class:^(xwaylandvideobridge)$
windowrulev2 = noanim,class:^(xwaylandvideobridge)$
windowrulev2 = noinitialfocus,class:^(xwaylandvideobridge)$
windowrulev2 = maxsize 1 1,class:^(xwaylandvideobridge)$
windowrulev2 = noblur,class:^(xwaylandvideobridge)$
windowrulev2 = opacity 0.9, class:^(vesktop)$
windowrulev2 = opacity 0.9, class:^(org.telegram.desktop)$
windowrulev2 = fullscreen,class:^(org.telegram.desktop)$,title:^(Media viewer)$
windowrulev2 = float,class:^(org.telegram.desktop)$,title:^(Media viewer)$
windowrulev2 = opaque,class:^(org.telegram.desktop)$,title:^(Media viewer)$
windowrulev2 = opacity 0.9, class:^(Spotify)$
windowrulev2 = opacity 0.9, class:^(org.gnome.Nautilus)$
windowrulev2 = opacity 0.9, class:^(org.pulseaudio.pavucontrol)$
windowrulev2=noblur,class:^()$,title:^()$

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 MiB

19
dot-config/mako/mako.conf Normal file
View file

@ -0,0 +1,19 @@
sort=-time
layer=overlay
output=DP-1
anchor=top-right
background-color=#121318bb
width=300
height=110
border-size=3
border-color=#b4c5ff
border-radius=5
icons=0
max-icon-size=64
default-timeout=5000
ignore-timeout=1
font=JetBrainsMono Nerd Font Mono: 14
[urgency=high]
border-color=#ffb4ab
default-timeout=0

View file

@ -0,0 +1,6 @@
column_width = 120
line_endings = "Unix"
indent_type = "Spaces"
indent_width = 2
quote_style = "AutoPreferDouble"
call_parentheses = "None"

24
dot-config/nvim/LICENSE Normal file
View file

@ -0,0 +1,24 @@
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to <https://unlicense.org>

39
dot-config/nvim/init.lua Normal file
View file

@ -0,0 +1,39 @@
vim.g.base46_cache = vim.fn.stdpath "data" .. "/nvchad/base46/"
vim.g.mapleader = " "
-- bootstrap lazy and all plugins
local lazypath = vim.fn.stdpath "data" .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
local repo = "https://github.com/folke/lazy.nvim.git"
vim.fn.system { "git", "clone", "--filter=blob:none", repo, "--branch=stable", lazypath }
end
vim.opt.rtp:prepend(lazypath)
local lazy_config = require "configs.lazy"
-- load plugins
require("lazy").setup({
{
"NvChad/NvChad",
lazy = false,
branch = "v2.5",
import = "nvchad.plugins",
config = function()
require "options"
end,
},
{ import = "plugins" },
}, lazy_config)
-- load theme
dofile(vim.g.base46_cache .. "defaults")
dofile(vim.g.base46_cache .. "statusline")
require "nvchad.autocmds"
vim.schedule(function()
require "mappings"
end)

View file

@ -0,0 +1,30 @@
{
"LuaSnip": { "branch": "master", "commit": "e808bee352d1a6fcf902ca1a71cee76e60e24071" },
"NvChad": { "branch": "v2.5", "commit": "8792679a08c6747ba3f5890a01561442abec6935" },
"base46": { "branch": "v2.5", "commit": "fec9fa583025e69e0c4f902bd61990e8d13d1975" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
"cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
"conform.nvim": { "branch": "master", "commit": "f5bd8419f8a29451e20bdb1061a54fe13d5c8de3" },
"friendly-snippets": { "branch": "main", "commit": "de8fce94985873666bd9712ea3e49ee17aadb1ed" },
"gitsigns.nvim": { "branch": "main", "commit": "863903631e676b33e8be2acb17512fdc1b80b4fb" },
"indent-blankline.nvim": { "branch": "master", "commit": "e7a4442e055ec953311e77791546238d1eaae507" },
"lazy.nvim": { "branch": "main", "commit": "077102c5bfc578693f12377846d427f49bc50076" },
"mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" },
"menu": { "branch": "main", "commit": "ee85b2e394fde354bd24e35ff7a688d10c9212fa" },
"minty": { "branch": "main", "commit": "7c2a6452922313e10ff46aea49a4bb5e50e1ac68" },
"nvim-autopairs": { "branch": "master", "commit": "ee297f215e95a60b01fde33275cc3c820eddeebe" },
"nvim-cmp": { "branch": "main", "commit": "ae644feb7b67bf1ce4260c231d1d4300b19c6f30" },
"nvim-lspconfig": { "branch": "master", "commit": "b55b9659de9ac17e05df4787bb023e4c7ef45329" },
"nvim-tree.lua": { "branch": "master", "commit": "2a268f631da85e83b7a95291be589bcddfc785d8" },
"nvim-treesitter": { "branch": "master", "commit": "68b2bdd99d889e9705f7e90ae64d990f3ff03cf3" },
"nvim-web-devicons": { "branch": "master", "commit": "19d257cf889f79f4022163c3fbb5e08639077bd8" },
"plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" },
"telescope.nvim": { "branch": "master", "commit": "df534c3042572fb958586facd02841e10186707c" },
"ui": { "branch": "v3.0", "commit": "87578bb7e2bc106127f013f9a1edd7a716f4f6c6" },
"vim-tmux-navigator": { "branch": "master", "commit": "a9b52e7d36114d40350099f254b5f299a35df978" },
"volt": { "branch": "main", "commit": "43f72b49037c191eb3cfe26ba7a5574b4bfce226" },
"which-key.nvim": { "branch": "main", "commit": "8badb359f7ab8711e2575ef75dfe6fbbd87e4821" }
}

View file

@ -0,0 +1,16 @@
-- This file needs to have same structure as nvconfig.lua
-- https://github.com/NvChad/ui/blob/v2.5/lua/nvconfig.lua
---@type ChadrcConfig
local M = {}
M = {
base46 = {
theme = "catppuccin",
transparency = true
}
-- hl_override = {
-- Comment = { italic = true },
-- ["@comment"] = { italic = true },
-- },
}
return M

View file

@ -0,0 +1,15 @@
local options = {
formatters_by_ft = {
lua = { "stylua" },
-- css = { "prettier" },
-- html = { "prettier" },
},
-- format_on_save = {
-- -- These options will be passed to conform.format()
-- timeout_ms = 500,
-- lsp_fallback = true,
-- },
}
require("conform").setup(options)

View file

@ -0,0 +1,47 @@
return {
defaults = { lazy = true },
install = { colorscheme = { "nvchad" } },
ui = {
icons = {
ft = "",
lazy = "󰂠 ",
loaded = "",
not_loaded = "",
},
},
performance = {
rtp = {
disabled_plugins = {
"2html_plugin",
"tohtml",
"getscript",
"getscriptPlugin",
"gzip",
"logipat",
"netrw",
"netrwPlugin",
"netrwSettings",
"netrwFileHandlers",
"matchit",
"tar",
"tarPlugin",
"rrhelper",
"spellfile_plugin",
"vimball",
"vimballPlugin",
"zip",
"zipPlugin",
"tutor",
"rplugin",
"syntax",
"synmenu",
"optwin",
"compiler",
"bugreport",
"ftplugin",
},
},
},
}

View file

@ -0,0 +1,29 @@
-- EXAMPLE
local on_attach = require("nvchad.configs.lspconfig").on_attach
local on_init = require("nvchad.configs.lspconfig").on_init
local capabilities = require("nvchad.configs.lspconfig").capabilities
local lspconfig = require "lspconfig"
local servers = { "html", "gopls" }
-- lsps with default config
for _, lsp in ipairs(servers) do
lspconfig[lsp].setup {
on_attach = on_attach,
on_init = on_init,
capabilities = capabilities,
}
end
-- typescript
lspconfig.ts_ls.setup {
on_attach = on_attach,
on_init = on_init,
capabilities = capabilities,
}
lspconfig.pyright.setup({
on_attach = on_attach,
capabilities = capabilities,
filetypes = {"python"},
})

View file

@ -0,0 +1,15 @@
require "nvchad.mappings"
-- add yours here
local map = vim.keymap.set
map("n", ";", ":", { desc = "CMD enter command mode" })
map("i", "jk", "<ESC>")
map("n", "<C-h>", "<cmd>TmuxNavigateLeft<CR>", {desc = "Move tmux windows focus left"})
map("n", "<C-l>", "<cmd>TmuxNavigateRight<CR>", {desc = "Move tmux windows focus right"})
map("n", "<C-j>", "<cmd>TmuxNavigateDown<CR>", {desc = "Move tmux windows focus down"})
map("n", "<C-k>", "<cmd>TmuxNavigateUp<CR>", {desc = "Move tmux windows focus up"})
-- map({ "n", "i", "v" }, "<C-s>", "<cmd> w <cr>")

View file

@ -0,0 +1,9 @@
require "nvchad.options"
vim.o.tabstop = 4 -- A TAB character looks like 4 spaces
vim.o.expandtab = true -- Pressing the TAB key will insert spaces instead of a TAB character
vim.o.softtabstop = 4 -- Number of spaces inserted instead of a TAB character
vim.o.shiftwidth = 4 -- Number of spaces inserted when indenting
-- add yours here!
-- local o = vim.o
-- o.cursorlineopt ='both' -- to enable cursorline!

View file

@ -0,0 +1,55 @@
return {
{
"stevearc/conform.nvim",
-- event = 'BufWritePre', -- uncomment for format on save
config = function()
require "configs.conform"
end,
},
{
"christoomey/vim-tmux-navigator",
lazy = false,
},
{
"williamboman/mason.nvim",
opts = {
ensure_installed = {
"black",
"debugpy",
"mypy",
"ruff",
"pyright",
},
},
},
-- These are some examples, uncomment them if you want to see them work!
{
"neovim/nvim-lspconfig",
config = function()
require("nvchad.configs.lspconfig").defaults()
require "configs.lspconfig"
end,
},
--
-- {
-- "williamboman/mason.nvim",
-- opts = {
-- ensure_installed = {
-- "lua-language-server", "stylua",
-- "html-lsp", "css-lsp" , "prettier"
-- },
-- },
-- },
--
{
"nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = {
"vim", "lua", "vimdoc",
"html", "css"
},
},
},
}

View file

@ -0,0 +1,4 @@
[ColorScheme]
active_colors=#ffcdd6f4, #ff1e1e2e, #ffa6adc8, #ff9399b2, #ff45475a, #ff6c7086, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff7f849c, #ff89b4fa, #ff1e1e2e, #ff89b4fa, #fff38ba8, #ff1e1e2e, #ffcdd6f4, #ff11111b, #ffcdd6f4, #807f849c
disabled_colors=#ffa6adc8, #ff1e1e2e, #ffa6adc8, #ff9399b2, #ff45475a, #ff6c7086, #ffa6adc8, #ffa6adc8, #ffa6adc8, #ff1e1e2e, #ff11111b, #ff7f849c, #ff89b4fa, #ff45475a, #ff89b4fa, #fff38ba8, #ff1e1e2e, #ffcdd6f4, #ff11111b, #ffcdd6f4, #807f849c
inactive_colors=#ffcdd6f4, #ff1e1e2e, #ffa6adc8, #ff9399b2, #ff45475a, #ff6c7086, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff7f849c, #ff89b4fa, #ffa6adc8, #ff89b4fa, #fff38ba8, #ff1e1e2e, #ffcdd6f4, #ff11111b, #ffcdd6f4, #807f849c

View file

@ -0,0 +1,31 @@
[Appearance]
color_scheme_path=/home/timoxa0/.config/qt5ct/colors/Catppuccin-Mocha.conf
custom_palette=true
standard_dialogs=default
style=Fusion
[Fonts]
fixed="DejaVu LGC Sans,12,-1,5,50,0,0,0,0,0"
general="DejaVu LGC Sans,12,-1,5,50,0,0,0,0,0"
[Interface]
activate_item_on_single_click=1
buttonbox_layout=0
cursor_flash_time=1000
dialog_buttons_have_icons=1
double_click_interval=400
gui_effects=@Invalid()
keyboard_scheme=2
menus_have_icons=true
show_shortcuts_in_context_menus=true
stylesheets=@Invalid()
toolbutton_style=4
underline_shortcut=1
wheel_scroll_lines=3
[SettingsWindow]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\a\x80\0\0\0\0\0\0\xe\"\0\0\x5\\\0\0\a\x80\0\0\0\0\0\0\xe\x37\0\0\x5v\0\0\0\0\x2\0\0\0\rp\0\0\a\x80\0\0\0\0\0\0\xe\"\0\0\x5\\)
[Troubleshooting]
force_raster_widgets=1
ignored_applications=@Invalid()

View file

@ -0,0 +1,47 @@
* {
primary: #b4c5ff;
primary-fixed: #dbe1ff;
primary-fixed-dim: #b4c5ff;
on-primary: #1a2d60;
on-primary-fixed: #00174b;
on-primary-fixed-variant: #334478;
primary-container: #334478;
on-primary-container: #dbe1ff;
secondary: #c1c5dd;
secondary-fixed: #dde1f9;
secondary-fixed-dim: #c1c5dd;
on-secondary: #2b3042;
on-secondary-fixed: #161b2c;
on-secondary-fixed-variant: #414659;
secondary-container: #414659;
on-secondary-container: #dde1f9;
tertiary: #e2bbdb;
tertiary-fixed: #ffd6f8;
tertiary-fixed-dim: #e2bbdb;
on-tertiary: #422741;
on-tertiary-fixed: #2b122b;
on-tertiary-fixed-variant: #5a3d58;
tertiary-container: #5a3d58;
on-tertiary-container: #ffd6f8;
error: #ffb4ab;
on-error: #690005;
error-container: #93000a;
on-error-container: #ffdad6;
surface: #121318;
on-surface: #e3e2e9;
on-surface-variant: #c5c6d0;
outline: #8f909a;
outline-variant: #45464f;
shadow: #000000;
scrim: #000000;
inverse-surface: #e3e2e9;
inverse-on-surface: #2f3036;
inverse-primary: #4b5c92;
surface-dim: #121318;
surface-bright: #38393f;
surface-container-lowest: #0d0e13;
surface-container-low: #1a1b21;
surface-container: #1e1f25;
surface-container-high: #292a2f;
surface-container-highest: #34343a;
}

181
dot-config/rofi/config.rasi Normal file
View file

@ -0,0 +1,181 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Configuration For Rofi Version: 1.7.3
**/
configuration {
/*---------- General setting ----------*/
modi: "drun,run,filebrowser,window";
case-sensitive: false;
cycle: true;
filter: "";
scroll-method: 0;
normalize-match: true;
show-icons: true;
icon-theme: "Papirus";
/* cache-dir: ;*/
steal-focus: false;
/* dpi: -1;*/
/*---------- Matching setting ----------*/
matching: "normal";
tokenize: true;
/*---------- SSH settings ----------*/
ssh-client: "ssh";
ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";
parse-hosts: true;
parse-known-hosts: true;
/*---------- Drun settings ----------*/
drun-categories: "";
drun-match-fields: "name,generic,exec,categories,keywords";
drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";
drun-show-actions: false;
drun-url-launcher: "xdg-open";
drun-use-desktop-cache: false;
drun-reload-desktop-cache: false;
drun {
/** Parse user desktop files. */
parse-user: true;
/** Parse system desktop files. */
parse-system: true;
}
/*---------- Run settings ----------*/
run-command: "{cmd}";
run-list-command: "";
run-shell-command: "{terminal} -e {cmd}";
/*---------- Fallback Icon ----------*/
run,drun {
fallback-icon: "application-x-addon";
}
/*---------- Window switcher settings ----------*/
window-match-fields: "title,class,role,name,desktop";
window-command: "wmctrl -i -R {window}";
window-format: "{w} - {c} - {t:0}";
window-thumbnail: false;
/*---------- Combi settings ----------*/
/* combi-modi: "window,run";*/
/* combi-hide-mode-prefix: false;*/
/* combi-display-format: "{mode} {text}";*/
/*---------- History and Sorting ----------*/
disable-history: false;
sorting-method: "normal";
max-history-size: 25;
/*---------- Display setting ----------*/
display-window: "Windows";
display-windowcd: "Window CD";
display-run: "Run";
display-ssh: "SSH";
display-drun: "Apps";
display-combi: "Combi";
display-keys: "Keys";
display-filebrowser: "Files";
/*---------- Misc setting ----------*/
terminal: "rofi-sensible-terminal";
font: "Mono 12";
sort: false;
threads: 0;
click-to-exit: true;
/* ignored-prefixes: "";*/
/* pid: "/run/user/1000/rofi.pid";*/
/*---------- File browser settings ----------*/
filebrowser {
/* directory: "/home";*/
directories-first: true;
sorting-method: "name";
}
/*---------- Other settings ----------*/
timeout {
action: "kb-cancel";
delay: 0;
}
/*---------- Keybindings ----------*/
/*
kb-primary-paste: "Control+V,Shift+Insert";
kb-secondary-paste: "Control+v,Insert";
kb-clear-line: "Control+w";
kb-move-front: "Control+a";
kb-move-end: "Control+e";
kb-move-word-back: "Alt+b,Control+Left";
kb-move-word-forward: "Alt+f,Control+Right";
kb-move-char-back: "Left,Control+b";
kb-move-char-forward: "Right,Control+f";
kb-remove-word-back: "Control+Alt+h,Control+BackSpace";
kb-remove-word-forward: "Control+Alt+d";
kb-remove-char-forward: "Delete,Control+d";
kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";
kb-remove-to-eol: "Control+k";
kb-remove-to-sol: "Control+u";
kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";
kb-accept-custom: "Control+Return";
kb-accept-custom-alt: "Control+Shift+Return";
kb-accept-alt: "Shift+Return";
kb-delete-entry: "Shift+Delete";
kb-mode-next: "Shift+Right,Control+Tab";
kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";
kb-mode-complete: "Control+l";
kb-row-left: "Control+Page_Up";
kb-row-right: "Control+Page_Down";
kb-row-down: "Down,Control+n";
kb-page-prev: "Page_Up";
kb-page-next: "Page_Down";
kb-row-first: "Home,KP_Home";
kb-row-last: "End,KP_End";
kb-row-select: "Control+space";
kb-screenshot: "Alt+S";
kb-ellipsize: "Alt+period";
kb-toggle-case-sensitivity: "grave,dead_grave";
kb-toggle-sort: "Alt+grave";
kb-cancel: "Escape,Control+g,Control+bracketleft";
kb-custom-1: "Alt+1";
kb-custom-2: "Alt+2";
kb-custom-3: "Alt+3";
kb-custom-4: "Alt+4";
kb-custom-5: "Alt+5";
kb-custom-6: "Alt+6";
kb-custom-7: "Alt+7";
kb-custom-8: "Alt+8";
kb-custom-9: "Alt+9";
kb-custom-10: "Alt+0";
kb-custom-11: "Alt+exclam";
kb-custom-12: "Alt+at";
kb-custom-13: "Alt+numbersign";
kb-custom-14: "Alt+dollar";
kb-custom-15: "Alt+percent";
kb-custom-16: "Alt+dead_circumflex";
kb-custom-17: "Alt+ampersand";
kb-custom-18: "Alt+asterisk";
kb-custom-19: "Alt+parenleft";
kb-select-1: "Super+1";
kb-select-2: "Super+2";
kb-select-3: "Super+3";
kb-select-4: "Super+4";
kb-select-5: "Super+5";
kb-select-6: "Super+6";
kb-select-7: "Super+7";
kb-select-8: "Super+8";
kb-select-9: "Super+9";
kb-select-10: "Super+0";
ml-row-left: "ScrollLeft";
ml-row-right: "ScrollRight";
ml-row-up: "ScrollUp";
ml-row-down: "ScrollDown";
me-select-entry: "MousePrimary";
me-accept-entry: "MouseDPrimary";
me-accept-custom: "Control+MouseDPrimary";
*/
}

View file

@ -0,0 +1,150 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Rofi Theme File
* Rofi Version: 1.7.3
**/
@import "colors.rasi"
/*****----- Configuration -----*****/
configuration {
show-icons: false;
}
/*****----- Global Properties -----*****/
* {
font: "JetBrainsMono Nerd Font Mono 11";
background: @on-primary-fixed;
background-alt: @on-primary-fixed-variant;
foreground: @primary-fixed;
selected: @primary-fixed-dim;
selected-fg: @on-primary-fixed;
active: @primary-fixed;
urgent: @error;
}
/*
USE_BUTTONS=YES
*/
/*****----- Main Window -----*****/
window {
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 550px;
x-offset: 0px;
y-offset: 0px;
padding: 0px;
border: 0px solid;
border-radius: 20px;
border-color: @selected;
cursor: "default";
background-color: @background;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 0px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
children: [ "inputbar", "listview", "message" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 0px;
padding: 100px 80px;
background-color: transparent;
background-image: url("~/.config/hypr/wallpaper.png", width);
children: [ "textbox-prompt-colon", "dummy","prompt"];
}
dummy {
background-color: transparent;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: " Power menu";
padding: 12px;
border-radius: 100%;
background-color: @background;
text-color: @foreground;
}
prompt {
enabled: true;
padding: 12px;
border-radius: 100%;
background-color: @background;
text-color: @foreground;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 4;
lines: 1;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 15px;
margin: 15px;
background-color: transparent;
cursor: "default";
}
/*****----- Elements -----*****/
element {
enabled: true;
padding: 28px 10px;
border-radius: 100%;
background-color: @background-alt;
text-color: @foreground;
cursor: pointer;
}
element-text {
font: "JetBrainsMono Nerd Font Mono 32";
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}
element selected.normal {
background-color: var(selected);
text-color: var(selected-fg);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px 15px 15px 15px;
padding: 15px;
border-radius: 100%;
background-color: @background-alt;
text-color: @foreground;
}
textbox {
background-color: inherit;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}

212
dot-config/rofi/runner.rasi Normal file
View file

@ -0,0 +1,212 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Rofi Theme File
* Rofi Version: 1.7.3
* Matugen colors
**/
@import "colors.rasi"
/*****----- Configuration -----*****/
configuration {
modi: "drun,filebrowser";
show-icons: true;
display-drun: "Apps";
display-filebrowser: "Files";
drun-display-format: "{name}";
window-format: "{w} · {c}";
}
/*****----- Global Properties -----*****/
* {
font: "JetBrainsMono Nerd Font Mono 10";
background: @on-primary-fixed;
background-alt: @on-primary-fixed-variant;
foreground: @primary-fixed;
selected: @primary-fixed-dim;
selected-fg: @on-primary-fixed;
active: @primary-fixed;
urgent: @error;
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 1000px;
x-offset: 0px;
y-offset: 0px;
/* properties for all widgets */
enabled: true;
border-radius: 15px;
cursor: "default";
background-color: @background;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 0px;
background-color: transparent;
orientation: vertical;
children: [ "inputbar", "listbox" ];
}
listbox {
spacing: 20px;
padding: 20px;
background-color: transparent;
orientation: vertical;
children: [ "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
padding: 100px 60px;
background-color: transparent;
background-image: url("~/.config/hypr/wallpaper.png", width);
text-color: @foreground;
orientation: horizontal;
children: [ "textbox-prompt-colon", "entry", "dummy", "mode-switcher" ];
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
padding: 12px 15px;
border-radius: 100%;
background-color: @background-alt;
text-color: inherit;
}
entry {
enabled: true;
expand: false;
width: 300px;
padding: 12px 16px;
border-radius: 100%;
background-color: @background-alt;
text-color: inherit;
cursor: text;
placeholder: "Search";
placeholder-color: inherit;
}
dummy {
expand: true;
background-color: transparent;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
spacing: 10px;
background-color: transparent;
text-color: @foreground;
}
button {
width: 80px;
padding: 12px;
border-radius: 100%;
background-color: @background-alt;
text-color: inherit;
cursor: pointer;
}
button selected {
background-color: @selected;
text-color: @selected-fg;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 6;
lines: 3;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 10px;
background-color: transparent;
text-color: @foreground;
cursor: "default";
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 10px;
padding: 10px;
border-radius: 15px;
background-color: transparent;
text-color: @foreground;
cursor: pointer;
orientation: vertical;
}
element normal.normal {
background-color: inherit;
text-color: inherit;
}
element normal.urgent {
background-color: @urgent;
text-color: @foreground;
}
element normal.active {
background-color: @active;
text-color: @foreground;
}
element selected.normal {
background-color: @selected;
text-color: @selected-fg;
}
element selected.urgent {
background-color: @urgent;
text-color: @selected-fg;
}
element selected.active {
background-color: @urgent;
text-color: @selected-fg;
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 64px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}
/*****----- Message -----*****/
message {
background-color: transparent;
}
textbox {
padding: 15px;
border-radius: 15px;
background-color: @background-alt;
text-color: @foreground;
vertical-align: 0.5;
horizontal-align: 0.0;
}
error-message {
padding: 15px;
border-radius: 15px;
background-color: @background;
text-color: @foreground;
}

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,5 @@
Use it as you wish, have fun listening to music.
Shoutout to Porter Robinson.
-Robatortas

View file

@ -0,0 +1,10 @@
# BLOSSOM
A little theme for your Spotify client.
![1](https://github.com/spicetify/spicetify-themes/assets/72624799/4e545661-a164-469a-a10c-c1fcba40ab72)
![2](https://github.com/spicetify/spicetify-themes/assets/72624799/263ebbd2-b383-47b4-8bcf-1a9c4d5152c1)
Made for a dark theme look thats pleasing to the eye.
By Robatortas

View file

@ -0,0 +1,12 @@
[dark]
text = ffffff
subtext = aaaaaa
extratext = aaaaaa
background = 1e2226
player = 282e33
button = 4d5c78
button-active = 6d80a3
button-disabled = 282e33
sidebar = 1e2226
main = 1e2226
card = 282e33

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 KiB

View file

@ -0,0 +1,434 @@
/* Blossom Theme */
#main {
overflow: hidden;
background-color: var(--spice-background);
}
.spotify__container--is-desktop .Root__top-container {
padding-top: calc(24px + 8px * 2);
--panel-gap: 0;
}
.LayoutResizer__inline-end {
inset-inline-end: 8px;
}
.LayoutResizer__inline-start {
inset-inline-start: 8px;
}
.LayoutResizer__resize-bar {
width: 8px;
}
/* SEARCH */
.main-yourEpisodes-episodeCard {
background-color: red;
transform: translateX(100px);
}
.x-searchInput-searchInputSearchIcon,
.x-searchInput-searchInputClearButton {
color: var(--spice-button) !important;
}
/* header colored backgrounds */
.main-actionBarBackground-background,
.main-entityHeader-overlay,
.main-entityHeader-backgroundColor {
background: unset !important;
background-image: unset;
}
.EvQHNTBhaU3rGCRRlAWj {
background: unset !important;
backdrop-filter: blur(5px);
mask: linear-gradient(to bottom, #212121, 60%, transparent);
transition: all 1s;
}
.QplCuuGSoV4updqTSLq9 {
background: unset !important;
backdrop-filter: blur(5px);
mask: linear-gradient(to bottom, #212121, 60%, transparent);
transition: all 1s;
}
.main-trackList-trackListHeaderStuck {
background: unset !important;
backdrop-filter: blur(5px);
mask: linear-gradient(to bottom, #212121, 60%, transparent);
transition: all 1s;
}
/* Home Header, when on home tab */
.main-home-homeHeader {
opacity: 40%;
background: radial-gradient(ellipse at top, var(--spice-button), 10%, var(--spice-main), 100%, transparent);
background-color: unset !important;
}
.cover-art {
background: var(--spice-background);
border-radius: 7.5%;
}
.cover-art-image {
border-radius: 7.5%;
transition: all 0.5s;
cursor: pointer;
}
/* Album or song art */
.main-entityHeader-image {
border-radius: 10%;
opacity: 100;
animation: both;
cursor: pointer;
}
.main-editImageButton-overlay {
border-radius: 10%;
background: unset;
backdrop-filter: blur(4px);
color: var(--spice-button);
transition: all 1s;
}
.main-entityHeader-imagePlaceholder {
background-color: var(--spice-player);
}
.main-entityHeader-shadow {
box-shadow: 0 0px 50px rgba(0, 0, 0, 0.2);
}
/* TRACKLIST */
.main-trackList-playingIcon {
filter: hue-rotate(100deg);
}
.main-trackList-trackListRow {
margin-left: 0px;
transition: all 0.5s;
}
.main-trackList-trackListRow:hover {
background-color: var(--spice-player);
margin-left: 10px;
transition: all 0.5s;
}
/* Playback bar and controls */
.main-nowPlayingBar-nowPlayingBar {
background-color: unset !important;
background-image: linear-gradient(0deg, var(--spice-player), 80%, transparent);
transition: all 0.5s;
}
.main-playPauseButton-button {
background: var(--spice-button-active);
color: var(--spice-text);
}
/* TopBar, where the profile button and back and ford buttons are */
.main-topBar-background {
opacity: 10%;
background: linear-gradient(180deg, #171717, 60%, transparent) !important;
backdrop-filter: blur(5px);
mask: linear-gradient(to bottom, #212121, 60%, transparent);
transition: all 1s;
}
.main-topBar-overlay {
background: unset !important;
background-color: unset !important;
background-image: unset !important;
/* backdrop-filter: blur(10px); */
}
.main-navBar-navBarLinkActive,
.main-navBar-navBarLinkActive:focus,
.logo {
background-color: var(--spice-player) !important;
}
/* move the progress bar to the top */
.main-nowPlayingBar-nowPlayingBar {
position: relative;
padding-inline-end: 16px !important;
}
.playback-bar__progress-time-elapsed,
.main-playbackBarRemainingTime-container {
min-width: 0;
width: 0 !important;
opacity: 0;
transition: all 0.5s;
}
.playback-bar:hover .playback-bar__progress-time-elapsed, .playback-bar:hover
.main-playbackBarRemainingTime-container {
min-width: 40px;
width: auto;
opacity: 1;
}
.playback-bar {
width: 100%;
left: 0;
bottom: 65px;
position: absolute;
cursor: pointer;
overflow: hidden;
}
.progress-bar {
--fg-color: var(--spice-button-active);
}
.os-theme-spotify.os-host-transition > .os-scrollbar-vertical > .os-scrollbar-track > .os-scrollbar-handle {
border-radius: 4px;
background-color: var(--spice-text);
opacity: 30%;
}
.player-controls__buttons {
margin-bottom: 0;
}
.main-playPauseButton-button {
cursor: pointer;
border-radius: 10px;
--button-size: 50px !important;
}
.player-controls__buttons {
align-items: center;
}
/* LEFT BAR STUFF */
/* Playlists text color */
.main-rootlist-rootlistDivider,
.main-rootlist-rootlistDividerGradient {
visibility: hidden;
}
/* remove playlist item hover effect */
li > div > div::after {
background-color: transparent !important;
}
li > div::after {
background-color: transparent !important;
}
/* give background to active playlist */
.BoxComponent-group-tinted-listRow-isInteractive-hasLeadingOrMedia-paddingBlockStart_8px-paddingBlockEnd_8px-minBlockSize_56px-padding_8px,
.BoxComponent-group-tinted-listRow-isInteractive-hasFocus-hasLeadingOrMedia-paddingBlockStart_8px-paddingBlockEnd_8px-minBlockSize_56px-padding_8px {
background-color: var(--spice-player);
transition: all 1s;
}
/* expanded sidebar buttons */
.search-searchCategory-carouselButton {
background-color: transparent;
}
.search-searchCategory-carouselButton:hover {
background-color: var(--spice-player);
}
.main-yourLibraryX-iconOnly:hover {
background-color: var(--spice-player);
color: var(--spice-text);
}
.main-yourLibraryX-filterArea > div > div:first-child button {
background-color: var(--spice-player) !important;
}
.main-yourLibraryX-filterArea > div > div:first-child button > span {
background-color: var(--spice-player) !important;
color: var(--spice-text) !important;
}
.main-yourLibraryX-libraryFilter .x-sortBox-sortDropdown,
.main-yourLibraryX-libraryFilter .x-filterBox-expandButton,
.main-yourLibraryX-libraryFilter .x-filterBox-searchIconContainer,
.main-yourLibraryX-libraryFilter .x-filterBox-filterInput,
.main-yourLibraryX-libraryFilter .x-filterBox-clearButton {
color: var(--spice-text);
}
/* give active nav tab a background */
.main-navBar-mainNav li:has(> .active) {
background-color: var(--spice-player);
border-radius: 0 4px 4px 0;
position: relative;
transform: translate(-12px, 0);
transition: all 1s;
}
/* remove built in scrolllist shadow */
.main-yourLibraryX-isScrolled {
box-shadow: none !important;
}
.main-rootlist-rootlist {
background-color: var(--spice-player);
top: 10px;
}
.main-rootlist-rootlistItem {
cursor: pointer;
margin: 0px;
transition: all 0.5s;
}
.main-rootlist-rootlistItem:hover {
background: var(--spice-background) !important;
margin: 5px;
padding: 5px;
transition: all 0.5s;
}
.main-rootlist-rootlistItemLinkActive {
background: var(--spice-background) !important;
margin-left: -22px;
margin-right: -10px;
padding-left: 30px;
transition: all 0.5s;
}
.x-categoryCard-CategoryCard {
transition: all 0.5s;
}
.x-categoryCard-CategoryCard:hover {
margin-top: -2%;
transition: all 0.5s;
}
.main-navBar-navBarItem {
cursor: pointer;
margin: 0px;
transition: all 0.5s;
}
.main-navBar-navBarItem:hover {
background-color: var(--spice-player) !important;
transition: all 0.5s;
}
.main-navBar-navBarLinkActive {
background: var(--spice-player) !important;
margin-left: -22px;
margin-right: -10px;
padding-left: 30px;
transition: all 0.5s;
}
/* CARDS */
/* Little filter for the cards */
.main-card-card {
opacity: 100%;
background-color: unset !important;
background: linear-gradient(180deg, var(--spice-player), 65%, transparent);
transition: all 1s;
}
.main-card-card:hover {
background-color: unset !important;
background: var(--spice-player) !important;
}
.collection-collectionEntityHeroCard-likedSongs {
background-color: unset !important;
background: linear-gradient(180deg, var(--spice-player), 65%, transparent);
transition: all 1s;
}
.collection-collectionEntityHeroCard-likedSongs:hover {
background-color: unset !important;
background: var(--spice-player) !important;
}
/* Shortcuts */
.view-homeShortcutsGrid-shortcut {
background-color: unset !important;
background: linear-gradient(180deg, var(--spice-player), 65%, transparent);
transition: all 1s;
}
.view-homeShortcutsGrid-shortcut:hover {
background-color: unset !important;
background: var(--spice-player) !important;
}
/* Cursor things */
.main-playPauseButton-button,
.main-repeatButton-button,
.main-skipForwardButton-button,
.main-skipBackButton-button,
.main-shuffleButton-button {
cursor: pointer !important;
}
/* Search */
input {
background-color: unset !important;
border-bottom: solid 1px var(--spice-button-active) !important;
color: var(--spice-text) !important;
border-radius: 0px !important;
}
.x-833-searchInput-searchInputSearchIcon {
color: var(--spice-text) !important;
}
/* ANIMATIONS */
.view-homeShortcutsGrid-shortcut .main-heroCard-card,
.main-buttonIcon-buttonIcon,
.main-trackList-column,
.main-rootlist-rootlistItem,
.main-card-card,
.main-entityHeader-smallHeader,
.main-entityHeader-headerText,
.main-entityHeader-image {
animation-name: up-fade-anim;
animation-duration: 1s;
}
.main-shelf-seeAll,
.main-cardImage-image,
.main-trackList-trackList,
.main-trackList-number {
animation-name: left-fade-anim;
animation-duration: 1s;
}
.main-shelf-title {
animation-name: right-fade-anim;
animation-duration: 1s;
}
@keyframes up-fade-anim {
from {
opacity: 0%;
transform: translateY(10px);
}
to {
opacity: 100;
transform: translateY(0px);
}
}
@keyframes left-fade-anim {
from {
opacity: 0%;
transform: translateX(10px);
}
to {
opacity: 100;
transform: translateX(0px);
}
}
@keyframes right-fade-anim {
from {
opacity: 0%;
transform: translateX(-10px);
}
to {
opacity: 100;
transform: translateX(0px);
}
}
.queue-tabBar-active {
background-color: var(--spice-player) !important;
transition: all 0.5s;
}

View file

@ -0,0 +1,9 @@
# BurntSienna
## Screenshots
![BurntSienna](./screenshot.png)
## More
Montserrat Font is necessary, it is available on Google Fonts:
https://fonts.google.com/specimen/Montserrat<br>
Author: https://github.com/pjaspinski

View file

@ -0,0 +1,6 @@
[Base]
button = ef8450
sidebar = 242629
player = 242629
main = 303336
button-active = ef8450

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 KiB

View file

@ -0,0 +1,228 @@
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap');
* {
font-family: Montserrat;
}
/* Page titles */
h1 {
font-weight: 700 !important;
}
/* Song name in player */
.main-nowPlayingWidget-nowPlaying .main-trackInfo-name {
overflow: unset;
font-size: 20px !important;
}
/* Artist name in player */
.main-nowPlayingWidget-nowPlaying .main-trackInfo-artists {
overflow: unset;
font-size: 15px;
}
.main-type-finale {
line-height: 17px;
}
/* Icons */
.main-trackList-rowPlayPauseIcon {
transform: scale(1.3);
}
.x-downloadButton-button svg {
height: 32px;
width: 32px;
}
/* Progress and remaining time */
.main-playbackBarRemainingTime-container,
.playback-bar__progress-time-elapsed,
.playback-bar__progress-time {
font-size: 15px;
margin-left: 5px;
margin-right: 5px;
}
/* Player play button */
.main-playPauseButton-button {
background-color: unset;
color: var(--spice-subtext);
}
.main-playPauseButton-button svg {
height: 28px;
width: 28px;
}
/* Progress bar */
.progress-bar {
--fg-color: var(--spice-button);
}
.progress-bar__bg,
.progress-bar__fg,
.progress-bar__fg_wrapper {
height: 5px;
}
.progress-bar-wrapper {
margin-left: 5px;
margin-right: 5px;
}
/* Extra controls */
.control-button::before {
font-size: 20px;
}
.ExtraControls svg {
height: 20px;
width: 20px;
}
/* Removing gradients */
.main-entityHeader-backgroundColor,
.main-actionBarBackground-background {
background-color: unset !important;
background-image: none;
}
/* Cover shadow */
.main-entityHeader-shadow {
-webkit-box-shadow: 0 4px 20px rgba(var(--spice-rgb-shadow), 0.5);
box-shadow: 0 4px 20px rgba(var(--spice-rgb-shadow), 0.5);
}
/* Top bar */
.main-topBar-background {
background-color: #3a3d42 !important;
}
/* Playing icon */
.main-trackList-playingIcon {
filter: saturate(0%);
}
/* Playlist like button */
.main-actionBar-ActionBarRow .main-addButton-button .Svg-ulyrgf-0 {
height: unset;
width: unset;
}
/* Order button */
.x-sortBox-sortDropdown {
margin-top: 3px;
}
/* Sidebar playlists menu */
.main-rootlist-rootlistDividerGradient {
background: unset;
}
.main-rootlist-rootlistDivider {
background-color: var(--spice-button);
}
/* Search box */
.x-searchInput-searchInputInput {
font-size: 18px;
}
/* Aritsts names */
.main-type-mesto {
font-size: 16px;
line-height: 20px;
}
/* Songs names */
.main-type-ballad {
font-size: 18px;
}
/* Cards descriptions */
.main-cardSubHeader-root {
overflow: hidden !important;
}
/* Ad title */
.desktoproutes-homepage-takeover-ad-hptoNativeOriginal-header {
font-weight: 700 !important;
}
/* Friends names */
.main-buddyFeed-username a {
color: var(--spice-text) !important;
font-size: 17px;
font-weight: 500;
}
/* Friends songs and artists */
.main-buddyFeed-artistAndTrackName a,
.main-buddyFeed-playbackContextLink span {
font-size: 13px;
}
/* Cover height */
.main-coverSlotExpanded-container {
height: var(--nav-bar-width) + 8px;
}
/* Scrollbars */
.os-scrollbar-handle {
background: var(--spice-button) !important;
border-radius: 8px;
}
/* Making index column wider so that lighter background that
highlights selected song contains multi-digit song numbers */
/* It looks good up to 4 digits, I figured that no one has playlists with more music than that ;) */
.main-trackList-trackList.main-trackList-indexable .main-trackList-trackListRowGrid {
grid-template-columns: [index] 48px [first] 6fr [var1] 4fr [var2] 3fr [last] minmax(120px, 1fr) !important;
}
/* Text boxes in settings */
.main-dropDown-dropDown {
background-color: var(--spice-button-disabled);
}
/* Facebook button */
.x-settings-facebookButton {
background-color: unset !important;
}
/* Playlist play button color */
.encore-dark-theme .encore-bright-accent-set,
.encore-dark-theme .encore-bright-accent-set:hover {
--background-base: var(--spice-button-active);
--background-highlight: var(--spice-player);
--background-press: var(--spice-player);
}
/* Volume bar margins */
.volume-bar .progress-bar {
margin: 0 0.4rem;
}
.volume-bar .playback-progressbar {
width: 70%;
}
.volume-bar {
flex: 0 150px;
}
/* Menu hidden under the button with account name - font size and family unification */
.ellipsis-one-line {
font-family: Montserrat;
}
.ellipsis-one-line.main-type-mesto {
font-size: 14px;
}
/* Removal of empty space above playlist cover and title on narrow viewports */
.main-entityHeader-container.main-entityHeader-nonWrapped {
min-height: 325px;
height: 15vh;
}

View file

@ -0,0 +1,132 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or advances of
any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address,
without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[INSERT CONTACT METHOD].
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series of
actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within the
community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].
[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations

View file

@ -0,0 +1,119 @@
# Contributing guidelines
Here are the guidelines for contributing to this repository.
## Before contributing
For avoiding having too many similar themes with small changes, themes are merged only if they bring **sensitive** changes to default Spotify UI and are different from existing themes.
A theme name (as well as color scheme name) should consist of one word starting with an uppercase letter and shouldn't contain `spicetify` or any whitespace in it; if a "-" is present in the name it must be followed by an uppercase letter.
## How to contribute
If you want to add your theme:
* Fork this repository
* Create another folder named after your theme name
* Create `color.ini` and `user.css` files
* Create a `README.md` in it with the following structure
```markdown
# THEME_NAME
## Screenshots
[Put at least one image per color scheme here]
## More
[Specify any needed font; (optionally) author name and/or any other info about the theme]
```
* Add the theme preview to [THEMES.md](./THEMES.md) (themes are in alphabetical order) following this structure if it has only one color scheme
```markdown
## THEME_NAME
[A single image of the theme]
```
If, instead, more than one color scheme is present
```markdown
## THEME_NAME
#### COLOR_SCHEME1_NAME
[A single image of the theme using the color scheme]
#### COLOR_SCHEME2_NAME
[A single image of the theme using the color scheme]
...
```
* Commit only once, more details in the **Commit Message**
* Open a Pull Request and mention the most important changes you've made to the UI (ignoring the color scheme)
**Thanks to all the contributors.**
## Commit Message
**NOTE: commit only once when you add a new theme or scheme (you can also commit again later, if you need to).**
### Format
<type>(<scope>): <subject>
<BLANK LINE>
<body>[optional]
**Any line of the commit message cannot be longer than 100 characters!**
* **type:** feat | fix | docs | chore
* **feat:** A new theme | A new scheme | A new feature
* **fix:** A bug fix
* **docs:** Change the `README.md` of the theme | Change the `THEMES.md`
* **chore:** Add more screenshots | Change the screentshots | Other things
* **scope:** THEMES | `<ThemeName>`
* THEMES is a fixed format: `docs(THEMES)`
* In other cases, use the theme name
* **subject:** What changes you have done
* Use the imperative, present tense: "change" not "changed" nor "changes"
* Don't capitalize first letter
* No dot (.) at the end
* **body**: More details of your changes, you can mention the most important changes here
### Example (Turntable theme)
* feat
```
feat(Turntable): add Turntable theme
```
```
feat(Turntable): control the rotation of the turntable
Rotate the turntable by playing state.
```
* fix
```
fix(Turntable): show the cursor outside the context menu
```
* docs
```
docs(Turntable): update README.md
```
```
docs(THEMES): add preview for the Turntable
```
* chore
```
chore(Turntable): add screenshots of the Turntable
```
If you want to learn more, view the [Angular - Git Commit Guidelines](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines).

View file

@ -0,0 +1,13 @@
# Default
Default look of Spotify with different color schemes.
## Screenshot
![screenshot](./ocean.png)
## Info
### Ocean
Part of material ocean themes, [checkout here](https://github.com/material-ocean) for the same theme for different applications. By @Blacksuan19

View file

@ -0,0 +1,16 @@
[Ocean]
text = FFFFFF
subtext = F1F1F1
main = 0F111A
sidebar = 0F111A
player = 0F111A
card = 00010A
shadow = 0F111A
selected-row = F1F1F1
button = FF4151
button-active = F1F1F1
button-disabled = 434C5E
tab-active = FF4151
notification = 00010A
notification-error = FF4151
misc = 00010A

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

View file

@ -0,0 +1,36 @@
# Dreary
## Screenshots
### BIB
![BIB Screenshot](bib.png)
### Psycho
![Psycho Screenshot](psycho.png)
### Deeper
![Deeper Screenshot](deeper.png)
### Mono
![Mono Screenshot](mono.png)
### Golden
![Golden Screenshot](golden.png)
### Graytone-Blue
![Graytone-Blue Screenshot](graytone-blue.png)
## Important
Certain aspects of the theme, such as the borders around playlist names, require Sidebar Config to be enabled. It is not required but recommended.
You can enable it by running `spicetify config sidebar_config 1`.
## More
A chill theme that keeps things bordered in and organized
BIB color scheme based on original [BIB-Green](https://github.com/spicetify/spicetify-themes/tree/master/BIB-Green)
Theme based on Sleek theme: https://github.com/spicetify/spicetify-themes/tree/v2/Sleek

Binary file not shown.

After

Width:  |  Height:  |  Size: 892 KiB

View file

@ -0,0 +1,154 @@
[Psycho]
; Red on dark grey background
text = e00000
subtext = ffffff
button-text = ffffff
main = 101010
sidebar = 171717
player = 171717
subbutton-text = 101010
card = 171717
shadow = 6d1414
selected-row = 330d0d
sub-button = a20606
button = e00000
button-active = e00000
button-disabled = 404040
tab-active = 171717
notification = 5e0000
notification-error = 5e0000
playback-bar = ff4700
misc = adadad
[Deeper]
; Light blue on Dark Background
text = 4f9a87
subtext = 406560
button-text = 4f9a87
main = 040614
sidebar = 0F111A
player = 0F111A
subbutton-text = 040614
card = 0f1118
shadow = 406560
selected-row = 040614
sub-button = 4f9a87
button = 0d3a2e
button-active = 106165
button-disabled = 0C1C19
tab-active = 0a1527
notification = 051024
notification-error = 051024
playback-bar = 4f9a87
misc = 406560
[BIB]
; Green on dark grey background
text = 8bc34a
subtext = b4b4b4
button-text = 202020
main = 202020
sidebar = 202020
player = 242424
subbutton-text = 202020
card = 242424
shadow = 000000
selected-row = 2a3c17
sub-button = 6a913d
button = 537b25
button-active = 98da4b
button-disabled = 353535
tab-active = 303030
notification = 242424
notification-error = 242424
playback-bar = 8bc34a
misc = 8bc34a
[Mono]
;Grays, Blacks, Whites, You get the gist.
text = FFFFFF
subtext = d3d3d3
button-text = FFFFFF
main = 000000
sidebar = 5d5e60
subbutton-text = d3d3d3
player = 181818
card = 5d5e60
selected-row = 2D2A32
shadow = FFFFFF
sub-button = d3d3d3
button = d3d3d3
button-active = d3d3d3
button-disabled = 181818
tab-active = d3d3d3
notification = 181818
notification-error = b5cbb7
playback-bar = d3d3d3
misc = d3d3d3
[Golden]
;Gold
text = FFE002
subtext = B28228
button-text = FFE002
main = 1C1C1C
sidebar = 3B3B3B
subbutton-text = 3B3B3B
player = 1C1C1C
card = 3B3B3B
selected-row = 1c1c1c
shadow = FFE002
sub-button = B28228
button = B28228
button-active = B28228
button-disabled = FFB606
tab-active = B28228
notification = FFB606
notification-error = b5cbb7
playback-bar = B28228
misc = B28228
[Graytone-Blue]
; Gray colors with blue highlights
text = 4f9a87
subtext = 406560
button-text = 4f9a87
main = 111115
sidebar = 1e2027
subbutton-text = 040614
player = 1a1b1d
card = 0f1118
selected-row = 040614
shadow = 406560
sub-button = 4f9a87
button = 0d3a2e
button-active = 106165
button-disabled = 0C1C19
tab-active = 0a1527
notification = 051024
notification-error = 051024
playback-bar = 4f9a87
misc = 406560
; 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
; button-text = text in main buttons in sidebar when active
; main = main field or main bg
; sidebar = sidebar bg
; subbutton-text = text of buttons that use the text color or subtext color as a background
; player = player bg
; card = card bg
; shadow = bg of buttons like account, pop-up lyrics, full app display in main field
; selected-row = color of the song selected
; sub-button = caption and details of playlist, download and options button
; button = playlist buttons bg in sidebar, drop-down menus, now playing song, like button
; button-active = hover on song selected
; button-disabled = seekbar bg, volume bar bg, scrollbar
; tab-active = button bg in main field (playlists, podcasts, artists, albums)
; notification = notification ('Added to liked songs' etc.)
; notification-error = error
; playback-bar = seekbar fg, main play/pause button bg
; misc = miscellaneous

Binary file not shown.

After

Width:  |  Height:  |  Size: 984 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 847 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 583 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 950 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 850 KiB

View file

@ -0,0 +1,609 @@
/* Dreary Theme*/
.main-rootlist-rootlistDividerGradient {
display: none;
visibility: hidden !important;
}
.main-rootlist-rootlistDivider {
background-color: var(--spice-text) !important;
}
input {
background-color: unset !important;
border-bottom: solid 1px var(--spice-text) !important;
border-radius: 0 !important;
padding: 6px 10px 6px 48px;
color: var(--spice-text) !important;
}
.x-833-searchInput-searchInputSearchIcon {
color: var(--spice-text) !important;
}
.main-home-homeHeader,
.x-441-entityHeader-overlay,
.main-actionBarBackground-background,
.main-entityHeader-overlay,
.main-entityHeader-backgroundColor {
background-color: unset !important;
background-image: unset !important;
}
.main-playlistEditDetailsModal-textElement:focus {
border: 0;
}
.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;
}
/* Remove Topbar background colour */
.main-topBar-background {
background-color: unset !important;
}
.main-topBar-overlay {
background-color: var(--spice-main);
}
.main-entityHeader-shadow {
box-shadow: 0 04px 20px #21212130;
}
.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-text);
content-visibility: hidden;
}
span.artist-artistVerifiedBadge-badge svg:nth-child(1) {
fill: black;
}
/* Hide Banner Ads */
.main-leaderboardComponent-container {
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;
}
[aria-label="Playing"] {
color: var(--spice-text);
}
/* Fix design fault */
@media (min-width: 1024px) {
.main-trackList-trackListHeader {
border-bottom: solid 1px;
margin: 10px;
}
}
.main-trackList-trackListHeaderStuck.main-trackList-trackListHeader {
background: var(--spice-main);
border: 0;
}
.main-trackList-trackListHeaderStuck .main-trackList-trackListHeaderRow {
border-bottom: 1px solid rgba(var(--spice-rgb-button-disabled), 0.8);
}
/* Changing Playback Bar Location */
.progress-bar__bg,
.progress-bar__fg_wrapper {
border-radius: 0;
z-index: 1;
}
.playback-bar__progress-time {
display: none;
}
.playback-bar {
width: 100%;
bottom: 83px;
position: absolute;
left: -1px;
z-index: 1;
}
.main-playbackBarRemainingTime-container {
position: absolute;
left: 49.68%;
top: 60%;
border: solid 1px;
border-radius: 20px;
z-index: 5;
color: var(--spice-subtext) !important;
padding-left: 5px;
}
.player-controls__buttons {
transform: translateY(6px);
}
.main-playPauseButton-button {
background-color: var(--spice-main);
box-shadow: var(--spice-shadow) 0 5px 9px 0px;
--button-size: 50px !important;
color: var(--spice-text);
background-color: var(--spice-player) !important;
cursor: pointer;
}
.player-controls__buttons {
align-items: center;
position: relative;
left: 2.3%;
}
.main-entityTitle-subtitle.main-entityTitle-small.main-entityTitle-uppercase.main-entityTitle-bold {
border: 2px var(--spice-text) solid;
border-radius: 4px;
width: fit-content;
display: inline;
text-align: center;
padding: 0 5px;
}
.os-theme-spotify.os-host-transition
> .os-scrollbar-vertical
> .os-scrollbar-track
> .os-scrollbar-handle {
border-radius: 4px;
background-color: var(--spice-text);
}
/* Hide Profile Options in Nav Bar */
.main-userWidget-notificationIndicator {
display: none;
}
.main-avatar-userIcon {
color: white;
}
.main-userWidget-box {
background-color: var(--spice-sidebar);
text-decoration-line: underline;
}
/* Improve Sidebar Buttons */
.main-likedSongsButton-likedSongsIcon {
background: var(--spice-text);
}
.main-likedSongsButton-likedSongsIcon {
color: var(--spice-sidebar);
}
.main-trackList-trackListHeaderRow {
border-bottom: 1px solid rgba(var(--spice-rgb-button-disabled), 0.8);
}
.main-trackList-trackListHeaderStuck .main-trackList-trackListHeaderRow {
border-bottom: 1px solid rgba(var(--spice-rgb-button-disabled), 0.8);
}
.main-trackList-trackListRow.main-trackList-selected,
.main-trackList-trackListRow.main-trackList-selected:hover {
background-color: rgba(var(--spice-rgb-selected-row), 0.8) !important;
}
.main-trackList-trackListRow:focus-within,
.main-trackList-trackListRow:hover {
background-color: rgba(var(--spice-rgb-selected-row), 0.4);
}
.main-duplicateTracksDialog-container {
background-color: var(--spice-card);
color: var(--spice-subtext);
}
.main-duplicateTracksDialog-secondaryButton {
color: var(--spice-text);
}
._9eb5acf729a98d62135ca21777fef244-scss {
color: var(--spice-card);
}
.x-sortBox-sortDropdown,
.x-filterBox-expandButton {
color: var(--spice-text) !important;
}
/* Main Play Button Change */
.main-playButton-PlayButton.main-playButton-primary {
color: var(--spice-main);
background-color: var(--spice-playback-bar);
cursor: pointer !important;
}
.main-entityHeader-metaDataText.main-type-mesto:nth-child(2) {
display: none;
}
.main-entityHeader-image {
border-radius: 10%;
}
.x-downloadButton-button {
background: var(--spice-player);
border-radius: 50%;
}
/* Link playback-bar color */
.playback-bar .progress-bar__fg {
background-color: var(--spice-playback-bar);
}
:not(.no-focus-outline) .progress-bar:focus-within .progress-bar__fg {
background-color: var(--spice-playback-bar);
}
.main-navBar-navBarLinkActive {
background-color: var(--spice-main);
}
.main-navBar-navBarLinkActive,
.main-navBar-navBarLinkActive:focus,
.main-navBar-navBarLinkActive:hover,
.logo {
color: var(--spice-text) !important;
background-color: var(--spice-selected-row);
}
.progress-bar__slider {
opacity: 1 !important;
background-color: var(--spice-sidebar) !important;
height: 16px !important;
border: solid 2px var(--spice-subtext) !important;
width: 16px !important;
display: unset !important;
}
a.x-categoryCard-CategoryCard,
a.x-heroCategoryCard-HeroCategoryCard {
color: var(--spice-subtext);
}
.main-heroCard-card a,
.collection-collectionEntityHeroCard-descriptionContainer {
color: var(--spice-subtext) !important;
}
.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);
}
/* Recolor sub-buttons */
.main-moreButton-button {
color: var(--spice-sub-button);
}
.x-downloadButton-button {
color: var(--spice-sub-button) !important;
}
.x-downloadButton-button:hover {
color: var(--spice-text) !important;
}
.main-addButton-button {
color: var(--spice-sub-button);
}
.main-entityHeader-metaDataText {
color: var(--spice-sub-button);
}
.main-duration-container {
color: var(--spice-sub-button);
}
.main-tag-container {
background-color: var(--spice-sub-button);
}
.x-sortBox-sortDropdown {
background-color: var(--spice-selected-row) !important;
}
.x-filterBox-searchIconContainer {
color: var(--spice-sub-button) !important;
}
.x-filterBox-expandButton:focus,
.x-filterBox-expandButton:hover {
background-color: var(--spice-selected-row) !important;
}
.main-contextMenu-menuItemButton:not(.main-contextMenu-disabled):focus,
.main-contextMenu-menuItemButton:not(.main-contextMenu-disabled):hover {
background-color: var(--spice-selected-row) !important;
}
.view-homeShortcutsGrid-shortcut {
background-color: rgba(var(--spice-rgb-selected-row), 0.6) !important;
}
.view-homeShortcutsGrid-shortcut:focus-within,
.view-homeShortcutsGrid-shortcut:hover,
.view-homeShortcutsGrid-shortcut[data-context-menu-open="true"] {
background-color: var(--spice-selected-row) !important;
}
.main-rootlist-textWrapper.main-type-viola {
cursor: pointer !important;
}
.main-navBar-navBar {
border-right: 2px solid var(--spice-misc);
}
.cMigZB * {
color: var(--spice-misc) !important;
}
.main-trackInfo-name a {
color: var(--spice-misc) !important;
}
.main-trackInfo-artists a:link {
color: var(--spice-misc) !important;
}
[class*=" spoticon-"]:before {
color: var(--spice-misc) !important;
}
.main-connectToFacebook-headerTitle {
color: var(--spice-misc) !important;
}
.main-repeatButton-button,
.main-skipForwardButton-button,
.main-skipBackButton-button,
.main-shuffleButton-button {
cursor: pointer !important;
}
#spicetify-playlist-list {
display: inline;
height: 10%;
align-items: center;
box-sizing: border-box;
position: relative;
overflow: hidden;
overflow-y: scroll;
}
#spicetify-playlist-list > div > div:nth-child(2) > li {
margin: 4px 3.2vw;
width: 84%;
flex-shrink: 0;
padding-top: 10%;
padding-bottom: 10%;
box-sizing: border-box;
position: relative;
margin-bottom: -1px;
border-radius: 10px;
border: 2px solid var(--spice-text);
display: flex;
text-align: center;
flex-direction: column;
transition: all 500ms;
}
#spicetify-playlist-list > div > div:nth-child(2) > li:hover {
border-color: var(--spice-button);
}
.main-connectToFacebook-text,
.main-connectToFacebook-disclaimer {
color: unset !important;
}
.main-type-mesto {
color: var(--spice-button);
}
.main-rootlist-rootlistItemLink.main-rootlist-rootlistItemLinkActive,
.main-rootlist-rootlistItemLink {
transition: 500ms;
}
.main-rootlist-rootlistItemLink.main-rootlist-rootlistItemLinkActive,
.main-rootlist-rootlistItemLink:focus {
color: var(--spice-text);
}
.view-homeShortcutsGrid-shortcut {
background-color: rgba(var(--spice-rgb-selected-row), 0.6) !important;
border: solid 3px var(--spice-text);
border-radius: 10px;
padding-bottom: 80.7px;
transition: 500ms;
}
.main-card-card .main-card-cardLink {
border: solid 3px;
transition: 500ms;
border-radius: 27px;
}
.main-card-card {
border-radius: 27px !important;
}
.view-homeShortcutsGrid-shortcut:hover,
.main-card-card .main-card-cardLink:hover {
border-color: var(--spice-button);
}
.main-createPlaylistButton-button,
.main-collectionLinkButton-collectionLinkButton {
padding-left: 16px !important;
padding-top: 8px;
}
.main-trackCreditsModal-closeBtn {
color: var(--spice-button-disabled) !important;
}
.main-contextMenu-menu {
max-height: 400px;
opacity: 0.9676;
}
.main-trackList-trackList {
border-radius: 30px;
background-color: var(--spice-player);
border: 1px solid;
}
.main-buddyFeed-friendsFeedContainer {
border-left: solid 2px var(--spice-text);
}
.main-yourEpisodesButton-yourEpisodesIcon {
background: var(--spice-text);
}
.main-yourEpisodesButton-yourEpisodesIcon path {
fill: var(--spice-player);
opacity: 0.7;
}
.main-navBar-entryPoints > div:first-of-type {
margin-top: 20px;
}
.cMigZB {
cursor: pointer;
}
.control-button {
color: var(--spice-misc);
}
.main-buddyFeed-buddyFeed {
-webkit-box-shadow: none;
box-shadow: none;
}
.main-buddyFeed-friendActivity {
border-bottom: solid 1px;
}
.collection-collectionEntityHeroCard-likedSongs {
background: linear-gradient(
149.46deg,
var(--spice-sidebar),
var(--spice-main) 99.16%
) !important;
}
.main-repeatButton-button[disabled] {
color: var(--spice-button);
}
.main-shuffleButton-button[disabled] {
color: var(--spice-button);
}
.progress-bar_bg {
z-index: 20;
}
.main-deletePlaylistDialog-secondaryButton {
color: var(--spice-subbutton-text);
}
.main-connectToFacebook-facebookButton {
color: var(--spice-subbutton-text);
}
.div.GlueDropTarget.personal-library > *.active {
background: var(--spice-selected-row);
}
.main-connectBar-connectBar {
overflow: visible !important;
--triangle-position: 147px !important;
align-items: unset !important;
height: 0px !important;
position: absolute !important;
left: 80% !important;
display: flex !important;
bottom: 2% !important;
padding: unset !important;
}
#spicetify-playlist-list > div {
scroll-behavior: smooth;
overflow-y: scroll;
overflow: hidden;
contain: unset !important;
height: fit-content !important;
padding-bottom: 10px;
}
div.main-cardImage-imageWrapper.main-cardImage-roundedCorners
> div
> div
> svg
> path {
color: blue;
background-color: blue;
fill: var(--spice-sidebar);
opacity: 0.7;
}
div.main-cardImage-imageWrapper.main-cardImage-roundedCorners
> div
> div
> svg
> path {
color: blue;
background-color: blue;
fill: var(--spice-sidebar);
opacity: 0.7;
}
.main-yourEpisodes-coverContainer {
background-color: var(--spice-text);
}
.playback-bar__progress-time-elapsed {
visibility: hidden;
width: 0px;
height: 0px;
padding: 0px;
margin: 0px;
position: absolute;
}
.Root__nav-bar {
min-width: 281px !important;
}
.playback-bar__progress-time-elapsed {
display: none !important;
}
#spicetify-playlist-list > div {
height: 100% !important;
}

View file

@ -0,0 +1,110 @@
# Dribbblish
### Base
![base](base.png)
### White
![white](white.png)
### Dark
![dark](dark.png)
### Nord-Light
![nord-light](nord-light.png)
### Nord-Dark
![nord-dark](nord-dark.png)
### Beach-Sunset
![beach-sunset](beach-sunset.png)
### Purple
![purple](purple.png)
### Samurai
![samurai](samurai.png)
### Gruvbox
![gruvbox](gruvbox.png)
### Gruvbox Material Dark
![gruvbox-material-dark](gruvbox-material-dark.png)
### Rosé Pine
![rosepine](rosepine.png)
### Lunar
![lunar](lunar.png)
### Catppuccin Latte
![catppuccin-latte](catppuccin-latte.png)
### Catppuccin Frappe
![catppuccin-frappe](catppuccin-frappe.png)
### Catppuccin Macchiato
![catppuccin-macchiato](catppuccin-macchiato.png)
### Catppuccin Mocha
![catppuccin-mocha](catppuccin-mocha.png)
## Features
### Resizable sidebar
<img src="https://i.imgur.com/1zomkmd.png" alt="img" align="center" width="500px">
### Customizable sidebar
Rearrange icons positions, stick icons to header or hide unnecessary to save space.
Turn on "Sidebar config" mode in Profile menu and hover on icon to show control buttons.
After you finish customizing, turn off Config mode in Profile menu to save.
<img src="https://i.imgur.com/86gqPe8.png" alt="img" align="center" width="500px">
### Playlist Folder image
Right click at folder and choose images for your playlist folder. Every image formats supported by Chrome can be used, but do keep image size small and in compressed format.
<img src="https://i.imgur.com/WGQ7Bev.gif" alt="img" align="center" width="500px">
### Left/Right expanded cover
In profile menu, toggle option "Right expanded cover" to change expaned current track cover image to left or right side, whereever you prefer.
## Auto-install
Make sure you are using spicetify >= v2.5.0 and Spotify >= v1.1.56.
### Windows
```powershell
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/spicetify/spicetify-themes/master/Dribbblish/install.ps1" | Invoke-Expression
```
## Manual Install
Run these commands:
### Linux and MacOS:
In **Bash**:
```bash
cd "$(dirname "$(spicetify -c)")/Themes/Dribbblish"
spicetify config current_theme Dribbblish color_scheme base
spicetify config inject_css 1 replace_colors 1 overwrite_assets 1 inject_theme_js 1
spicetify apply
```
### Windows
In **Powershell**:
```powershell
cd "$(spicetify -c | Split-Path)\Themes\Dribbblish"
spicetify config current_theme Dribbblish color_scheme base
spicetify config inject_css 1 replace_colors 1 overwrite_assets 1 inject_theme_js 1
spicetify apply
```
From Spotify > v1.1.62, in sidebar, they use an adaptive render mechanic to actively show and hide items on scroll. It helps reducing number of items to render, hence there is significant performance boost if you have a large playlists collection. But the drawbacks is that item height is hard-coded, it messes up user interaction when we explicity change, in CSS, playlist item height bigger than original value. So you need to add these 2 lines in Patch section in config file:
```ini
[Patch]
xpui.js_find_8008 = ,(\w+=)32,
xpui.js_repl_8008 = ,${1}56,
```
## Change Color Schemes
There are 9 color schemes you can choose: `base`, `white`, `dark`, `dracula`, `nord-dark`, `nord-light`, `beach-sunset`, `samurai`, `purple`, `gruvbox`, `gruvbox-material-dark`, `catppuccin-latte`, `catppuccin-frappe`, `catppuccin-macchiato`, and `catppuccin-mocha`. Change scheme with commands:
```
spicetify config color_scheme <scheme name>
spicetify apply
```
## Auto-uninstall
### Windows
```powershell
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/spicetify/spicetify-themes/v2/Dribbblish/uninstall.ps1" | Invoke-Expression
```
## Manual uninstall
Remove the dribbblish theme with the following commands
```
spicetify config current_theme " " color_scheme " "
spicetify apply
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 772 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

View file

@ -0,0 +1,308 @@
[base]
text = FFFFFF
subtext = F0F0F0
sidebar-text = FFFFFF
main = 000000
sidebar = 24b558
player = 000000
card = 000000
shadow = 202020
selected-row = 797979
button = 24b558
button-active = 24b558
button-disabled = 535353
tab-active = 166632
notification = 1db954
notification-error = e22134
misc = BFBFBF
[white]
text = 363636
subtext = 3D3D3D
sidebar-text = FFF9F4
main = FFF9F4
sidebar = FFA789
player = FFF9F4
card = FFF9F4
shadow = d3d3d3
selected-row = 6D6D6D
button = ff8367
button-active = ff8367
button-disabled = 535353
tab-active = ffdace
notification = FFA789
notification-error = e22134
misc = BFBFBF
[dark]
text = F0F0F0
subtext = F0F0F0
sidebar-text = 0a0e14
main = 0a0e14
sidebar = C2D935
player = 0a0e14
card = 0a0e14
shadow = 202020
selected-row = DEDEDE
button = C2D935
button-active = C2D935
button-disabled = 535353
tab-active = 727d2b
notification = C2D935
notification-error = e22134
misc = BFBFBF
[dracula]
text = f8f8f2
subtext = f8f8f2
sidebar-text = F0F0F0
main = 44475a
sidebar = 6272a4
player = 44475a
card = 6272a4
shadow = 000000
selected-row = bd93f9
button = ffb86c
button-active = 8be9fd
button-disabled = 535353
tab-active = 6272a4
notification = bd93f9
notification-error = e22134
misc = BFBFBF
[nord-light]
text = 2e3440
subtext = 3b4252
sidebar-text = ECEFF4
main = ECEFF4
sidebar = 5E81AC
player = ECEFF4
card = ebcb8b
shadow = eceff4
selected-row = 4c566a
button = 81a1c1
button-active = 81a1c1
button-disabled = c0c0c0
tab-active = ebcb8b
notification = a3be8c
notification-error = bf616a
misc = BFBFBF
[nord-dark]
text = ECEFF4
subtext = E5E9F0
sidebar-text = 434c5e
main = 2e3440
sidebar = 88C0D0
player = 2e3440
card = 2e3440
shadow = 2E3440
selected-row = D8DEE9
button = 81A1C1
button-active = 81A1C1
button-disabled = 434C5E
tab-active = 434C5E
notification = A3BE8C
notification-error = BF616A
misc = BFBFBF
[purple]
text = f1eaff
subtext = f1eaff
sidebar-text = e0d0ff
main = 0A0E14
sidebar = 6F3C89
player = 0A0E14
card = 0A0E14
shadow = 3a2645
selected-row = 645275
button = c76af6
button-active = 6F3C89
button-disabled = 535353
tab-active = 58306D
notification = ff9e00
notification-error = f61379
misc = DEDEDE
[samurai]
text = ebdbb2
subtext = ebdbb2
sidebar-text = 461217
main = 461217
sidebar = ebdbb2
player = 461217
card = 461217
shadow = 000000
selected-row = 909090
button = e7a52d
button-active = e7a52d
button-disabled = 535353
tab-active = e7a52d
notification = e7a52d
notification-error = e22134
misc = BFBFBF
[beach-sunset]
text = FFFFFF
subtext = F0F0F0
sidebar-text = F0F0F0
main = 262626
sidebar = bd3e3e
player = 262626
card = 262626
shadow = 000000
selected-row = d1d6e2
button = f1a84f
button-active = c98430
button-disabled = 535353
tab-active = f1a84f
notification = c98430
notification-error = e22134
misc = BFBFBF
[gruvbox]
text = fbf1c7
subtext = d5c4a1
sidebar-text = ebe1b7
main = 292828
sidebar = 689d6a
player = 292828
card = 3c3836
shadow = 202020
selected-row = d5c4a1
button = fb4934
button-active = cc241d
button-disabled = bdae93
tab-active = fb4934
notification = 8ec07c
notification-error = d79921
misc = BFBFBF
[gruvbox-material-dark]
text = fbf1c7
subtext = d5c4a1
sidebar-text = 716e5f
main = 292828
sidebar = 1d2021
player = 292828
card = 3c3836
shadow = 202020
selected-row = d5c4a1
button = a9b665
button-active = a9b665
button-disabled = bdae93
tab-active = a9b665
notification = 8ec07c
notification-error = d79921
misc = BFBFBF
[rosepine]
text = ebbcba
subtext = F0F0F0
sidebar-text = e0def4
main = 191724
sidebar = 2a2837
player = 191724
card = 191724
shadow = 1f1d2e
selected-row = 797979
button = 31748f
button-active = 31748f
button-disabled = 555169
tab-active = 31748f
notification = 1db954
notification-error = eb6f92
misc = 6e6a86
[lunar]
text = f3f3f3
subtext = cecece
sidebar-text = f3f3f3
main = 161616
sidebar = 202020
player = 161616
card = 161616
shadow = 252525
selected-row = 202020
button = 3281ea
button-active = 0284e8
button-disabled = 303030
tab-active = ebbcba
notification = 3281ea
notification-error = b10c0c
misc = 252525
; Comments below correspond to the labeling of the colors on the Catppuccin GitHub page.
[catppuccin-latte]
text = 4c4f69 ; Text
subtext = 5c5f77 ; Subtext1
sidebar-text = 4c4f69 ; Text
main = eff1f5 ; Base
sidebar = e6e9ef ; Mantle
player = eff1f5 ; Base
card = eff1f5 ; Base
shadow = e6e9ef ; Mantle
selected-row = 7c7f93 ; Overlay2
button = 8c8fa1 ; Overlay1
button-active = 7c7f93 ; Overlay2
button-disabled = 9ca0b0 ; Overlay0
tab-active = ccd0da ; Surface0
notification = ccd0da ; Surface0
notification-error = d20f39 ; Red
misc = bcc0cc ; Surface1
[catppuccin-frappe]
text = c6d0f5 ; Text
subtext = b5bfe2 ; Subtext1
sidebar-text = c6d0f5 ; Text
main = 303446 ; Base
sidebar = 292c3c ; Mantle
player = 303446 ; Base
card = 303446 ; Base
shadow = 292c3c ; Mantle
selected-row = 949cbb ; Overlay2
button = 838ba7 ; Overlay1
button-active = 949cbb ; Overlay2
button-disabled = 737994 ; Overlay0
tab-active = 414559 ; Surface0
notification = 414559 ; Surface0
notification-error = e78284 ; Red
misc = 51576d ; Surface1
[catppuccin-macchiato]
text = cad3f5 ; Text
subtext = b8c0e0 ; Subtext1
sidebar-text = cad3f5 ; Text
main = 24273a ; Base
sidebar = 1e2030 ; Mantle
player = 24273a ; Base
card = 24273a ; Base
shadow = 1e2030 ; Mantle
selected-row = 939ab7 ; Overlay2
button = 8087a2 ; Overlay1
button-active = 939ab7 ; Overlay2
button-disabled = 6e738d ; Overlay0
tab-active = 363a4f ; Surface0
notification = 363a4f ; Surface0
notification-error = ed8796 ; Red
misc = 494d64 ; Surface1
[catppuccin-mocha]
text = cdd6f4 ; Text
subtext = bac2de ; Subtext1
sidebar-text = cdd6f4 ; Text
main = 1e1e2e ; Base
sidebar = 181825 ; Mantle
player = 1e1e2e ; Base
card = 1e1e2e ; Base
shadow = 181825 ; Mantle
selected-row = 9399b2 ; Overlay2
button = 7f849c ; Overlay1
button-active = 9399b2 ; Overlay2
button-disabled = 6c7086 ; Overlay0
tab-active = 313244 ; Surface0
notification = 313244 ; Surface0
notification-error = f38ba8 ; Red
misc = 45475a ; Surface1

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 425 KiB

View file

@ -0,0 +1 @@
<svg width="80" height="81" viewBox="0 0 80 81" xmlns="http://www.w3.org/2000/svg"><title>Playlist Icon</title><path d="M25.6 11.565v45.38c-2.643-3.27-6.68-5.37-11.2-5.37-7.94 0-14.4 6.46-14.4 14.4s6.46 14.4 14.4 14.4 14.4-6.46 14.4-14.4v-51.82l48-10.205V47.2c-2.642-3.27-6.678-5.37-11.2-5.37-7.94 0-14.4 6.46-14.4 14.4s6.46 14.4 14.4 14.4S80 64.17 80 56.23V0L25.6 11.565zm-11.2 65.61c-6.176 0-11.2-5.025-11.2-11.2 0-6.177 5.024-11.2 11.2-11.2 6.176 0 11.2 5.023 11.2 11.2 0 6.174-5.026 11.2-11.2 11.2zm51.2-9.745c-6.176 0-11.2-5.024-11.2-11.2 0-6.174 5.024-11.2 11.2-11.2 6.176 0 11.2 5.026 11.2 11.2 0 6.178-5.026 11.2-11.2 11.2z" fill="currentColor" fill-rule="evenodd"></path></svg>

After

Width:  |  Height:  |  Size: 686 B

View file

@ -0,0 +1,55 @@
$checkSpice = Get-Command spicetify -ErrorAction Silent
if ($null -eq $checkSpice) {
Write-Host -ForegroundColor Red "Spicetify not found"
Write-Host "Follow instruction on:", "https://spicetify.app/docs/getting-started/simple-installation#windows"
return
}
Write-Host "Downloading themes package:" -ForegroundColor Green
$zipFile = "$env:TEMP\spicetify-themes.zip"
Invoke-WebRequest "https://github.com/spicetify/spicetify-themes/archive/refs/heads/master.zip" -OutFile $zipFile
Write-Host "Extracting themes package:" -ForegroundColor Green
$extractPath = "$env:TEMP\spicetify-themes-master"
if (Test-Path $extractPath) {
Remove-Item $extractPath -Recurse -Force
}
Expand-Archive $zipFile -DestinationPath $env:TEMP
# Copy to personal Themes folder
$spicePath = spicetify -c | Split-Path
$dribPath = "$extractPath\Dribbblish"
$destPath = "$spicePath\Themes\Dribbblish"
if (Test-Path $destPath) {
Remove-Item $destPath -Recurse -Force
}
Copy-Item $dribPath $destPath -Recurse
Write-Host "Configuring:" -ForegroundColor Green
spicetify
spicetify config inject_css 1 replace_colors 1 overwrite_assets 1 inject_theme_js 1 current_theme Dribbblish
# Add patch
$configFile = Get-Content "$spicePath\config-xpui.ini"
if (-not ($configFile -match "xpui.js_find_8008")) {
$rep = @"
[Patch]
xpui.js_find_8008=,(\w+=)32,
xpui.js_repl_8008=,`${1}56,
"@
# In case missing Patch section
if (-not ($configFile -match "\[Patch\]")) {
$configFile += "`n[Patch]`n"
}
$configFile = $configFile -replace "\[Patch\]",$rep
Set-Content "$spicePath\config-xpui.ini" $configFile
}
$backupVer = $configFile -match "^version"
$version = ConvertFrom-StringData $backupVer[0]
if ($version.version.Length -gt 0) {
spicetify apply
} else {
spicetify backup apply
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 919 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

View file

@ -0,0 +1,242 @@
function waitForElement(els, func, timeout = 100) {
const queries = els.map(el => document.querySelector(el));
if (queries.every(a => a)) {
func(queries);
} else if (timeout > 0) {
setTimeout(waitForElement, 300, els, func, --timeout);
}
}
let DribbblishShared = {};
// back shadow
waitForElement([".Root__top-container"], ([topContainer]) => {
const shadow = document.createElement("div");
shadow.id = "dribbblish-back-shadow";
topContainer.prepend(shadow);
});
// Spicetify.Platform.ConnectAPI.state.connectionStatus;
// add fade effect on playlist/folder list
waitForElement([".main-navBar-mainNav .os-viewport.os-viewport-native-scrollbars-invisible"], ([scrollNode]) => {
scrollNode.setAttribute("fade", "bottom");
scrollNode.addEventListener("scroll", () => {
if (scrollNode.scrollTop == 0) {
scrollNode.setAttribute("fade", "bottom");
} else if (scrollNode.scrollHeight - scrollNode.clientHeight - scrollNode.scrollTop == 0) {
scrollNode.setAttribute("fade", "top");
} else {
scrollNode.setAttribute("fade", "full");
}
});
});
let version;
let ylx;
(function Dribbblish() {
// dynamic playback time tooltip
const progBar = document.querySelector(".playback-bar");
const root = document.querySelector(".Root");
if (!Spicetify.Player.origin || !progBar || !root) {
setTimeout(Dribbblish, 300);
return;
}
version = Spicetify.Platform.PlatformData.event_sender_context_information.client_version_int;
if (version < 121200000) {
document.documentElement.classList.add("legacy");
legacy();
} else if (version >= 121200000 && version < 121400000) {
document.documentElement.classList.add("legacy-gridChange");
legacy();
} else if (version >= 121400000) {
document.documentElement.classList.add("ylx");
ylx = true;
}
const tooltip = document.createElement("div");
tooltip.className = "prog-tooltip";
progBar.append(tooltip);
function updateProgTime({ data: e }) {
const maxWidth = progBar.offsetWidth;
const curWidth = Spicetify.Player.getProgressPercent() * maxWidth;
const ttWidth = tooltip.offsetWidth / 2;
if (curWidth < ttWidth + 12) {
tooltip.style.left = "12px";
} else if (curWidth > maxWidth - ttWidth - 12) {
tooltip.style.left = String(maxWidth - ttWidth * 2 - 12) + "px";
} else {
tooltip.style.left = String(curWidth - ttWidth) + "px";
}
tooltip.innerText = Spicetify.Player.formatTime(e) + " / " + Spicetify.Player.formatTime(Spicetify.Player.getDuration());
}
Spicetify.Player.addEventListener("onprogress", updateProgTime);
updateProgTime({ data: Spicetify.Player.getProgress() });
// filepicker for custom folder images
const filePickerForm = document.createElement("form");
filePickerForm.setAttribute("aria-hidden", true);
filePickerForm.innerHTML = '<input type="file" class="hidden-visually" />';
/** @type {HTMLInputElement} */
const filePickerInput = filePickerForm.childNodes[0];
filePickerInput.accept = ["image/jpeg", "image/apng", "image/avif", "image/gif", "image/png", "image/svg+xml", "image/webp"].join(",");
filePickerInput.onchange = () => {
if (!filePickerInput.files.length) return;
const file = filePickerInput.files[0];
const reader = new FileReader();
reader.onload = event => {
const result = event.target.result;
const id = Spicetify.URI.from(filePickerInput.uri).id;
try {
localStorage.setItem("dribbblish:folder-image:" + id, result);
} catch {
Spicetify.showNotification("File too large");
}
DribbblishShared.loadPlaylistImage?.call();
};
reader.readAsDataURL(file);
};
// context menu items for custom folder images
new Spicetify.ContextMenu.Item(
"Remove folder image",
([uri]) => {
const id = Spicetify.URI.from(uri).id;
localStorage.removeItem("dribbblish:folder-image:" + id);
DribbblishShared.loadPlaylistImage?.call();
},
([uri]) => Spicetify.URI.isFolder(uri) && !ylx,
"x"
).register();
new Spicetify.ContextMenu.Item(
"Choose folder image",
([uri]) => {
filePickerInput.uri = uri;
filePickerForm.reset();
filePickerInput.click();
},
([uri]) => Spicetify.URI.isFolder(uri) && !ylx,
"edit"
).register();
})();
// LEGACY NAVBAR ONLY
function legacy() {
if (!Spicetify.Platform) {
setTimeout(legacy, 300);
return;
}
// allow resizing of the navbar
waitForElement([".Root__nav-bar .LayoutResizer__input"], ([resizer]) => {
const observer = new MutationObserver(updateVariable);
observer.observe(resizer, { attributes: true, attributeFilter: ["value"] });
function updateVariable() {
let value = resizer.value;
if (value < 121) {
value = 72;
document.documentElement.classList.add("left-sidebar-collapsed");
} else {
document.documentElement.classList.remove("left-sidebar-collapsed");
}
document.documentElement.style.setProperty("--nav-bar-width", value + "px");
}
updateVariable();
});
// allow resizing of the buddy feed
waitForElement([".Root__right-sidebar .LayoutResizer__input"], ([resizer]) => {
const observer = new MutationObserver(updateVariable);
observer.observe(resizer, { attributes: true, attributeFilter: ["value"] });
function updateVariable() {
let value = resizer.value;
let min_value = version < 121200000 ? 321 : 281;
if (value < min_value) {
value = 72;
document.documentElement.classList.add("buddyFeed-hide-text");
} else {
document.documentElement.classList.remove("buddyFeed-hide-text");
}
}
updateVariable();
});
waitForElement([".main-nowPlayingBar-container"], ([nowPlayingBar]) => {
const observer = new MutationObserver(updateVariable);
observer.observe(nowPlayingBar, { childList: true });
function updateVariable() {
if (nowPlayingBar.childElementCount === 2) {
document.documentElement.classList.add("connected");
} else {
document.documentElement.classList.remove("connected");
}
}
updateVariable();
});
// add fade effect on playlist/folder list
waitForElement([".main-navBar-navBar .os-viewport.os-viewport-native-scrollbars-invisible"], ([scrollNode]) => {
scrollNode.setAttribute("fade", "bottom");
scrollNode.addEventListener("scroll", () => {
if (scrollNode.scrollTop == 0) {
scrollNode.setAttribute("fade", "bottom");
} else if (scrollNode.scrollHeight - scrollNode.clientHeight - scrollNode.scrollTop == 0) {
scrollNode.setAttribute("fade", "top");
} else {
scrollNode.setAttribute("fade", "full");
}
});
});
waitForElement([`ul[tabindex="0"]`, `ul[tabindex="0"] .GlueDropTarget--playlists.GlueDropTarget--folders`], ([root, firstItem]) => {
const listElem = firstItem.parentElement;
root.classList.add("dribs-playlist-list");
/** Replace Playlist name with their pictures */
function loadPlaylistImage() {
for (const item of listElem.children) {
let link = item.querySelector("a");
if (!link) continue;
let [_, app, uid] = link.pathname.split("/");
let uri;
if (app === "playlist") {
uri = `spotify:playlist:${uid}`;
} else if (app === "folder") {
const base64 = localStorage.getItem("dribbblish:folder-image:" + uid);
let img = link.querySelector("img");
if (!img) {
img = document.createElement("img");
img.classList.add("playlist-picture");
link.prepend(img);
}
img.src = base64 || "https://cdn.jsdelivr.net/gh/spicetify/spicetify-themes@master/Dribbblish/images/tracklist-row-song-fallback.svg";
continue;
}
Spicetify.CosmosAsync.get(`sp://core-playlist/v1/playlist/${uri}/metadata`, { policy: { picture: true } }).then(res => {
const meta = res.metadata;
let img = link.querySelector("img");
if (!img) {
img = document.createElement("img");
img.classList.add("playlist-picture");
link.prepend(img);
}
img.src = meta.picture || "https://cdn.jsdelivr.net/gh/spicetify/spicetify-themes@master/Dribbblish/images/tracklist-row-song-fallback.svg";
});
}
}
DribbblishShared.loadPlaylistImage = loadPlaylistImage;
loadPlaylistImage();
new MutationObserver(loadPlaylistImage).observe(listElem, { childList: true });
});
}

View file

@ -0,0 +1,15 @@
spicetify config current_theme " "
$configPath = spicetify -c
$configFile = Get-Content $configPath
$find = $configFile -match "xpui.js_find_8008"
if ($find) {
$configFile = $configFile -replace [regex]::escape($find),""
}
$repl = $configFile -match "xpui.js_repl_8008"
if ($repl) {
$configFile = $configFile -replace [regex]::escape($repl),""
}
Set-Content $configPath $configFile
spicetify apply

View file

@ -0,0 +1,925 @@
:root {
--corner-radius: 10px;
--bar-cover-art-size: 40px;
--scrollbar-vertical-size: 10px;
--scrollbar-horizontal-size: 10px;
--bar-height: 90px;
--main-gap: 10px;
}
@font-face {
font-family: "Google Sans Display";
src: url("glue-resources/fonts/GoogleSansDisplayRegular.woff2") format("woff2");
font-style: normal;
font-weight: 400;
}
@font-face {
font-family: "Google Sans Display";
src: url("glue-resources/fonts/GoogleSansDisplayMedium.woff2") format("woff2");
font-style: normal;
font-weight: 500;
}
@font-face {
font-family: "Roboto";
src: url("glue-resources/fonts/Roboto.woff2") format("woff2");
font-style: normal;
font-weight: 400;
}
@font-face {
font-family: "Roboto";
src: url("glue-resources/fonts/RobotoMedium.woff2") format("woff2");
font-style: normal;
font-weight: 500;
}
body {
--glue-font-family: "Google Sans Display", "Roboto", spotify-circular, spotify-circular-cyrillic, spotify-circular-arabic, spotify-circular-hebrew,
Helvetica Neue, helvetica, arial, Hiragino Kaku Gothic Pro, Meiryo, MS Gothic, sans-serif;
--info-font-family: "Roboto", spotify-circular, spotify-circular-cyrillic, spotify-circular-arabic, spotify-circular-hebrew, Helvetica Neue, helvetica,
arial, Hiragino Kaku Gothic Pro, Meiryo, MS Gothic, sans-serif;
font-family: var(--glue-font-family);
letter-spacing: normal;
}
.global-nav .Root__top-container {
grid-template-areas: "global-nav global-nav global-nav"
"left-sidebar main-view right-sidebar"
"left-sidebar now-playing-bar now-playing-bar" !important;
}
.Root__top-container {
grid-template-areas:
"left-sidebar main-view right-sidebar"
"left-sidebar now-playing-bar right-sidebar" !important;
gap: 0;
padding-left: 0 !important;
}
.global-nav #Desktop_PanelContainer_Id {
border-radius: 0 !important;
}
.Root__now-playing-bar {
background-color: var(--spice-player);
border-radius: 0 0 var(--corner-radius) var(--corner-radius) !important;
grid-area: now-playing-bar !important;
}
.Root__globalNav {
background-color: var(--spice-main) !important;
border-radius: var(--corner-radius) var(--corner-radius) 0 0 !important;
margin-left: calc(var(--left-sidebar-width) * 1px);
}
.Root__globalNav .main-globalNav-historyButtonsContainer,
.Root__globalNav .main-globalNav-searchSection,
.Root__globalNav .main-topBar-topbarContentRight {
-webkit-transform: scale(0.75);
transform: scale(0.75);
}
.main-home-filterChipsSection {
background-color: var(--spice-main) !important;
}
.global-nav .Root__main-view {
border-radius: 0 !important;
}
.Root__main-view {
border-radius: var(--corner-radius) var(--corner-radius) 0 0 !important;
grid-area: main-view !important;
}
.legacy .Root__top-container:not(:has(> .Root__right-sidebar)) {
padding-right: var(--main-gap);
}
.ylx .Root__top-container:not(:has(> .Root__right-sidebar > aside)) {
padding-right: var(--main-gap);
}
.Root__right-sidebar:not(:has(> aside)) {
padding-left: 0;
}
.Root__nav-bar {
grid-area: left-sidebar !important;
}
/* move the progress bar to the top */
.playback-bar {
position: absolute;
left: 0;
top: -5px;
}
.main-nowPlayingBar-nowPlayingBar {
position: relative;
padding-inline-end: 16px !important;
}
.progress-bar {
--progress-bar-height: 2px;
--progress-bar-radius: 0;
--fg-color: var(--spice-button);
--bg-color: rgba(var(--spice-rgb-text), 0.2);
}
/* add gradient to player bar */
.main-nowPlayingBar-container {
background-color: unset;
background: radial-gradient(ellipse at right 50% bottom -80px, rgba(var(--spice-rgb-sidebar), 0.55), var(--spice-main) 60%) !important;
border-radius: 0 0 var(--corner-radius) var(--corner-radius) !important;
border-top: 0;
min-width: 518px;
}
/* rearrange player bar */
.main-nowPlayingBar-left {
order: 1;
flex: 1;
width: auto;
min-width: 0 !important;
}
.main-nowPlayingBar-center {
order: 0;
flex: 1;
width: auto;
min-width: unset !important;
}
.main-nowPlayingBar-right {
order: 2;
flex: 1;
width: auto;
min-width: unset !important;
}
/* hide time elapsed */
.main-playbackBarRemainingTime-container,
.playback-bar__progress-time-elapsed {
display: none;
}
/* custom dynamic prog tooltip */
.playback-bar .prog-tooltip {
position: absolute;
min-width: 100px;
width: unset;
height: 25px;
top: -35px;
padding: 0 5px;
border-radius: 4px;
text-align: center;
color: var(--spice-text);
background-color: var(--spice-button);
opacity: 0;
transition: opacity 0.2s linear, left 0.2s linear;
}
.playback-bar:hover .prog-tooltip {
opacity: 1;
}
/* customise player controls buttons */
.player-controls__buttons {
position: relative;
margin-bottom: 0;
}
.main-shuffleButton-button {
position: absolute;
left: 200px;
}
.main-skipForwardButton-button,
.main-repeatButton-button,
.main-skipBackButton-button,
.main-shuffleButton-button {
color: var(--spice-text);
}
.player-controls__left,
.player-controls__right {
gap: 16px;
flex: 0;
}
.player-controls__right svg,
.player-controls__left svg {
width: 14px;
height: 14px;
}
/* customise play button */
.main-playPauseButton-button {
background-color: transparent !important;
}
.main-playPauseButton-button svg {
width: 32px !important;
height: 32px !important;
color: var(--spice-button);
}
/* customise right side player buttons */
.control-button {
color: var(--spice-text);
}
.main-genericButton-button {
color: var(--spice-text);
}
/* customise cards hover play button */
.main-card-PlayButtonContainer .ButtonInner-medium-iconOnly {
background-color: var(--background-base);
color: var(--spice-text);
}
/* top welcome box viz. good morning */
.view-homeShortcutsGrid-PlayButtonContainer .ButtonInner-small-iconOnly,
.view-homeShortcutsGrid-PlayButtonContainer .ButtonInner-medium-iconOnly,
.view-homeShortcutsGrid-PlayButtonContainer .ButtonInner-large-iconOnly {
background-color: var(--background-base);
color: var(--spice-text);
}
/* top bar sponsored ads */
.Button-medium-buttonPrimary-useBrowserDefaultFocusStyle .ButtonInner-medium {
background-color: var(--background-base);
color: var(--spice-text);
}
/* customise player cover art */
.main-nowPlayingWidget-coverArt .cover-art {
width: var(--bar-cover-art-size) !important;
height: var(--bar-cover-art-size) !important;
background-color: transparent;
}
.main-nowPlayingWidget-nowPlaying {
justify-content: center;
}
/* style navbar */
.main-navBar-mainNav {
gap: 0 !important;
}
.main-navBar-mainNav>div {
background-color: var(--spice-sidebar);
}
.main-yourLibraryX-navLink {
height: 48px;
}
/* change tab colours */
.main-navBar-mainNav .link-subtle,
.main-navBar-mainNav .link-subtle svg {
color: var(--spice-sidebar-text) !important;
}
/* give active nav tab a background */
.main-navBar-mainNav li:has(> .active) {
background-color: var(--spice-tab-active);
border-radius: 4px;
}
/* align library button with other nav items */
.main-yourLibraryX-header {
padding-top: 4px !important;
}
.main-yourLibraryX-navItems {
padding-bottom: 0 !important;
padding: 8px;
}
.main-yourLibraryX-navItems li {
padding-left: 16px;
}
/* remove built in scrolllist shadow */
.main-yourLibraryX-isScrolled {
box-shadow: none !important;
}
/* round playlist images */
.x-entityImage-imageContainer {
border-radius: 50% !important;
background-color: transparent;
width: 40px !important;
height: 40px !important;
align-self: center;
box-shadow: none !important;
}
li div:has(> .x-entityImage-imageContainer),
li div:has(> .main-yourLibraryX-rowCover) {
justify-content: center;
width: 48px;
}
/* folder items */
.x-entityImage-imagePlaceholder {
background-color: transparent;
color: var(--spice-sidebar-text);
}
/* local files item */
.main-yourLibraryX-rowCover {
width: 40px;
height: 40px;
}
.fRZRXRIV2YBCFLYgwDAr {
border-radius: 50% !important;
}
.fRZRXRIV2YBCFLYgwDAr>svg {
width: 15px;
height: 15px;
}
/* remove hover effect */
li>div>div::after {
background-color: transparent !important;
}
li>div::after {
background-color: transparent !important;
}
/* give background to active playlist */
.BoxComponent-group-tinted-listRow-isInteractive-hasLeadingOrMedia-paddingBlockStart_8px-paddingBlockEnd_8px-minBlockSize_56px-padding_8px,
.BoxComponent-group-tinted-listRow-isInteractive-hasFocus-hasLeadingOrMedia-paddingBlockStart_8px-paddingBlockEnd_8px-minBlockSize_56px-padding_8px {
background-color: var(--spice-tab-active);
}
/* fix scrolllist item colours */
.main-navBar-mainNav li p {
color: var(--spice-sidebar-text) !important;
}
.main-navBar-mainNav li p svg {
fill: var(--spice-sidebar-text) !important;
}
.main-yourLibraryX-listRowIconWrapper {
fill: var(--spice-sidebar-text) !important;
}
/* reduce spacing between playlist name and subtitle */
.main-yourLibraryX-listRowSubtitle {
margin-top: -8px;
}
.main-yourLibraryX-collapseButton>button {
gap: 8px;
color: var(--spice-sidebar-text) !important;
}
/* expanded sidebar buttons */
.search-searchCategory-carouselButton {
background-color: transparent;
}
.search-searchCategory-carouselButton:hover {
background-color: var(--spice-tab-active);
}
.search-searchCategory-carouselButton svg {
fill: var(--spice-sidebar-text) !important;
}
.main-yourLibraryX-iconOnly {
color: var(--spice-sidebar-text) !important;
}
.main-yourLibraryX-iconOnly:hover {
background-color: var(--spice-tab-active);
}
.main-yourLibraryX-filterArea>div>div:first-child button {
background-color: var(--spice-tab-active) !important;
}
.main-yourLibraryX-filterArea>div>div:first-child button>span {
background-color: var(--spice-tab-active) !important;
color: var(--spice-text) !important;
}
.main-yourLibraryX-libraryFilter .x-sortBox-sortDropdown,
.main-yourLibraryX-libraryFilter .x-filterBox-expandButton,
.main-yourLibraryX-libraryFilter .x-filterBox-searchIconContainer,
.main-yourLibraryX-libraryFilter .x-filterBox-filterInput,
.main-yourLibraryX-libraryFilter .x-filterBox-clearButton {
color: var(--spice-sidebar-text);
}
/* hide main view backgound gradient */
.main-entityHeader-backgroundColor,
.main-actionBarBackground-background,
.main-topBar-background,
.main-home-homeHeader {
background-color: var(--spice-main) !important;
background-image: none !important;
}
.main-topBar-background {
border-radius: var(--corner-radius);
}
.main-topBar-overlay,
.main-trackList-trackListHeader {
background-color: var(--spice-main) !important;
}
/* fix play button icon colour */
.main-playButton-PlayButton svg {
color: var(--spice-text);
}
/* fix playlist action bar buttons colour */
.main-actionBar-ActionBarRow button,
.main-actionBar-ActionBarRow svg:not(.main-playButton-PlayButton svg) {
color: rgba(var(--spice-rgb-text), 0.7);
}
.main-actionBar-ActionBarRow button:hover,
.main-actionBar-ActionBarRow button:hover svg:not(.main-playButton-PlayButton svg) {
color: var(--spice-text);
}
/* 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;
}
/* full screen artists background */
.main-entityHeader-container.main-entityHeader-withBackgroundImage,
.main-entityHeader-background,
.main-entityHeader-background.main-entityHeader-overlay:after {
height: 100vh;
}
.artist-artistOverview-overview .main-entityHeader-withBackgroundImage h1 {
font-size: 120px !important;
line-height: 120px !important;
}
.contentSpacing,
.artist-artistDiscography-headerContainer {
padding-left: 64px;
padding-right: 64px;
}
.artist-artistOverview-overview .main-entityHeader-headerText {
justify-content: center;
}
/* progress bar moves smoothly */
.x-progressBar-fillColor {
transition: transform 1s linear;
}
.progress-bar__slider {
transition: left 1s linear;
}
.playback-progressbar-isInteractive .DuvrswZugGajIFNXObAr .x-progressBar-fillColor,
.playback-progressbar-isInteractive .DuvrswZugGajIFNXObAr .progress-bar__slider {
transition: none;
}
/* right sidebar text */
.Root__right-sidebar {
--text-base: var(--spice-sidebar-text);
--background-tinted-base: var(--spice-tab-active);
}
.Root__right-sidebar a,
.Root__right-sidebar .main-trackInfo-artists a,
.artist-artistOnTour-timeAndVenue.artist-artistOnTour-condensed,
.Root__right-sidebar .main-nowPlayingView-creditsSource,
.Root__right-sidebar .main-nowPlayingView-playNextButton,
.Root__right-sidebar .main-nowPlayingView-playNext {
color: var(--spice-sidebar-text);
}
.main-nowPlayingView-content {
--text-subdued: var(--spice-sidebar-text);
}
/* add main backshadow */
#dribbblish-back-shadow {
z-index: 5;
grid-area: main-view / main-view / now-playing-bar / main-view;
box-shadow: 0 0 10px 3px #0000003b;
border-radius: var(--corner-radius);
pointer-events: none;
}
/* add fade effect to playlist scrolllist */
.os-viewport.os-viewport-native-scrollbars-invisible[fade="full"] {
-webkit-mask-image: linear-gradient(transparent 0%, black 10%, black 90%, transparent 100%);
mask-image: linear-gradient(transparent 0%, black 10%, black 90%, transparent 100%);
}
.os-viewport.os-viewport-native-scrollbars-invisible[fade="top"] {
-webkit-mask-image: linear-gradient(transparent 0%, black 10%);
mask-image: linear-gradient(transparent 0%, black 10%);
}
.os-viewport.os-viewport-native-scrollbars-invisible[fade="bottom"] {
-webkit-mask-image: linear-gradient(black 90%, transparent 100%);
mask-image: linear-gradient(black 90%, transparent 100%);
}
/* style input els */
input {
background-color: unset !important;
border-bottom: solid 1px var(--spice-text) !important;
border-radius: 0 !important;
padding: 6px 10px 6px 48px;
color: var(--spice-text) !important;
}
.Root__nav-bar input {
border-bottom: solid 1px var(--spice-sidebar-text) !important;
color: var(--spice-sidebar-text) !important;
}
.Root__nav-bar input::placeholder {
color: rgba(var(--spice-rgb-sidebar-text), 0.5) !important;
}
/* fix connect bar styles */
.main-connectBar-connectBar {
color: var(--spice-main) !important;
border-radius: 0 0 var(--corner-radius) var(--corner-radius);
}
/* topbar play button */
.main-topBar-topbarContent .main-playButton-PlayButton>button>span {
inline-size: 32px;
block-size: 32px;
min-block-size: auto;
}
.main-topBar-topbarContent .main-playButton-PlayButton svg {
width: 18px;
height: 18px;
}
.main-topBar-topbarContent .main-playButton-PlayButton>button>span>span {
position: initial;
height: 18px;
}
/* disable dynamic lyrics background */
.lyrics-lyrics-container {
--lyrics-color-inactive: rgba(var(--spice-rgb-text), 0.3) !important;
}
.lyrics-lyrics-background {
background-color: var(--spice-main);
}
/* v1.2.14 */
.main-yourLibraryX-libraryContainer.main-yourLibraryX-libraryIsExpanded.main-yourLibraryX-libraryIsCollapsed,
.main-yourLibraryX-libraryRootlist.main-yourLibraryX-libraryIsExpanded:not(.main-yourLibraryX-libraryIsCollapsed) {
padding-bottom: 0;
}
[dir="ltr"] .main-nowPlayingWidget-coverExpanded {
transform: none;
}
.ylx .main-coverSlotExpanded-container {
bottom: calc(var(--main-gap) + 70px + 10px);
left: calc(var(--nav-bar-width) + 10px);
}
.ylx.connected .main-coverSlotExpanded-container {
bottom: calc(var(--main-gap) + 70px + 24px + 10px);
}
/* v1.2.12 -> 1.2.13 */
.main-buddyFeed-container {
background-color: inherit;
box-shadow: none;
overflow: initial;
}
.legacy-gridChange .main-coverSlotExpanded-container {
left: calc(var(--nav-bar-width) + 10px);
}
/* v1.2.0 --> 1.2.11 */
.legacy .Root__top-container {
grid-template-areas:
"left-sidebar top-bar right-sidebar"
"left-sidebar main-view right-sidebar"
"left-sidebar now-playing-bar right-sidebar" !important;
}
.Root__top-container {
padding: 10px 0;
background-color: var(--spice-sidebar);
}
.Root__right-sidebar {
background-color: var(--spice-sidebar);
}
.Root__main-view {
background-color: var(--spice-main);
}
.main-rootlist-rootlistDivider {
background-color: transparent;
}
.main-buddyFeed-activityMetadata .main-buddyFeed-username a,
.main-buddyFeed-activityMetadata .main-buddyFeed-artistAndTrackName a,
.main-buddyFeed-activityMetadata .main-buddyFeed-usernameAndTimestamp,
.main-buddyFeed-activityMetadata .main-buddyFeed-playbackContextLink {
color: var(--spice-sidebar-text) !important;
}
.main-buddyFeed-activityMetadata .main-buddyFeed-artistAndTrackName {
color: var(--spice-sidebar-text);
}
.collection-icon,
.premiumSpotifyIcon,
.search-icon {
color: var(--spice-sidebar-text) !important;
}
.main-confirmDialog-container {
background-color: var(--spice-card);
}
.main-confirmDialog-container .TypeElement-canon-textBase {
color: var(--spice-text);
}
.main-confirmDialog-buttonContainer button span {
color: var(--spice-card);
}
.main-coverSlotExpanded-container {
position: fixed;
z-index: 2;
width: 250px;
height: 250px;
bottom: calc(var(--main-gap) + var(--bar-height) + 10px);
left: calc(var(--nav-bar-width) + 20px);
}
.connected .main-coverSlotExpanded-container {
bottom: calc(var(--main-gap) + var(--bar-height) + 24px + 10px);
}
.left-sidebar-collapsed .main-coverSlotExpanded-container {
left: 82px;
}
.main-coverSlotExpanded-container img {
border-radius: 4px;
}
.cover-art {
border-radius: 4px;
}
.left-sidebar-collapsed .Root__nav-bar {
width: 72px;
}
.left-sidebar-collapsed .main-rootlist-statusIcons {
display: none;
}
.main-navBar-navBarLinkActive {
background-color: var(--spice-tab-active);
}
.Root__nav-bar .main-rootlist-rootlist .os-scrollbar-handle {
display: none;
}
.Root__top-container:has(> .Root__top-container--right-sidebar-hidden) {
padding-right: 10px;
}
/* buddy feed w/ hidden text*/
.buddyFeed-hide-text .Root__top-container:not(:has(> .Root__top-container--right-sidebar-hidden)) .Root__right-sidebar {
width: 72px !important;
}
.buddyFeed-hide-text .NdQkQZhcYIEcJnRdAYcQ,
.buddyFeed-hide-text .main-buddyFeed-header {
display: none;
}
.buddyFeed-hide-text .main-buddyFeed-friendActivity {
padding: 0 0 0 4px;
}
.buddyFeed-hide-text .main-buddyFeed-activityMetadata {
visibility: hidden;
}
.buddyFeed-hide-text .main-avatar-avatar>div>div>div {
display: flex;
justify-content: center;
padding-top: 7px;
}
.buddyFeed-hide-text .main-avatar-avatar,
.buddyFeed-hide-text .main-avatar-avatar div,
.buddyFeed-hide-text .main-buddyFeed-overlay {
width: 32px !important;
height: 32px !important;
}
.main-rootlist-rootlistDividerGradient {
background: none;
}
.main-collectionLinkButton-collectionLinkButton .main-collectionLinkButton-icon,
.main-collectionLinkButton-collectionLinkButton .main-collectionLinkButton-collectionLinkText {
opacity: 1;
}
.main-collectionLinkButton-collectionLinkButton,
.main-createPlaylistButton-button {
color: var(--spice-sidebar-text);
opacity: 1;
}
.main-likedSongsButton-likedSongsIcon {
background: none;
}
.main-likedSongsButton-likedSongsIcon>svg {
height: 20px !important;
width: 20px !important;
}
/* style added sidebar images */
.main-rootlist-rootlistItem a {
align-items: center;
border-radius: 4px;
display: flex;
height: 56px;
gap: 12px;
}
img.playlist-picture {
width: 32px;
height: 32px;
flex: 0 0 32px;
background-size: cover;
background-position: center;
border-radius: 50%;
}
img.playlist-picture[src$=".svg"] {
width: 24px;
height: 24px;
border-radius: 0;
}
.legacy .Root__nav-bar .main-rootlist-wrapper,
.legacy-gridChange .Root__nav-bar .main-rootlist-wrapper {
height: fit-content !important;
contain: none !important;
}
.main-navBar-mainNav li:has(> div > .active) {
background-color: var(--spice-tab-active);
}
.main-collectionLinkButton-selected.active {
background-color: var(--spice-tab-active) !important;
}
.legacy .main-navBar-mainNav li,
.legacy-gridChange .main-navBar-mainNav li {
background-color: transparent !important;
}
/* a.active {
background-color: var(--spice-tab-active) !important;
} */
.main-rootlist-rootlistItem:has(> .main-rootlist-rootlistItemLinkActive) {
background-color: var(--spice-tab-active) !important;
}
.main-rootlist-rootlistItemLink {
padding-left: 12px;
}
.main-rootlist-rootlistItem {
margin-left: 8px;
margin-right: 8px;
padding-left: 0 !important;
padding-right: 8px !important;
border-radius: 4px;
}
.dribs-playlist-list {
overflow: hidden;
}
.left-sidebar-collapsed .main-rootlist-expandArrow {
display: none;
}
.main-navBar-navBarLink,
.main-collectionLinkButton-collectionLinkButton,
.main-createPlaylistButton-button {
height: 56px !important;
}
.Button-md-buttonSecondary-useBrowserDefaultFocusStyle {
border: 1px solid var(--spice-text);
}
.Button-md-buttonPrimary-useBrowserDefaultFocusStyle .ButtonInner-md {
color: var(--spice-text);
}
/* sidebar speaker icon */
.CCeu9OfWSwIAJqA49n84 {
color: var(--spice-sidebar-text);
}
.legacy .Root__right-sidebar .os-content {
overflow-x: hidden;
}
.Root__right-sidebar .os-scrollbar-horizontal {
display: none;
}
.UyzJidwrGk3awngSGIwv,
.poz9gZKE7xqFwgk231J4,
.xWm_uA0Co4SXVxaO7wlB {
color: var(--spice-text);
}
.main-navBar-navBarLink {
color: var(--spice-sidebar-text);
}
.main-navBar-navBarLink:focus,
.main-navBar-navBarLink:hover {
color: var(--spice-sidebar-text);
}
.main-createPlaylistButton-createPlaylistIcon {
background-color: var(--spice-sidebar-text);
}
.main-rootlist-rootlistItemLink:link,
.main-rootlist-rootlistItemLink:visited {
color: var(--spice-sidebar-text) !important;
}
.main-rootlist-expandArrow {
color: var(--spice-sidebar-text);
}
.main-buddyFeed-actions button,
.main-buddyFeed-titleContainer {
color: var(--spice-sidebar-text) !important;
}
.main-tag-container {
background-color: var(--spice-subtext);
}
.main-buddyFeed-content {
height: 100%;
}
/* bottom scroll-bar popup fix */
.Root__main-view-overlay {
width: 100%;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2022 @Ruixi-Zhang, @yslDevelop, @ian-Liaozy, @alexcasieri30
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

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