Compare commits

...

10 Commits

Author SHA1 Message Date
0b54cabfe4 Add backup configuration
See git.desu.ltd:salt/ansible/roles/backup for more details
2021-01-19 01:53:20 -06:00
e72d053d6f Add Minetest stuff to desktop-common 2021-01-19 01:51:10 -06:00
d8f6b1065a Port over quake configs 2021-01-19 01:49:54 -06:00
1795eb9967 Add base 2021-01-19 01:49:20 -06:00
fe5fb11174 Add gtkrc-2.0 to desktop-gruvbox 2021-01-19 01:48:36 -06:00
9d1ab82e02 Goodbye, wpgen 2021-01-19 01:47:07 -06:00
11dd2217b9 Rename desktop-base to desktop-common 2021-01-19 01:46:51 -06:00
d71e6c720b Port over more of my basic bitch gruvbox desktop 2021-01-19 01:46:02 -06:00
5ebcae085b Add basic desktop components 2021-01-19 01:44:12 -06:00
fdac8d01a9 Port over themes 2021-01-19 01:43:43 -06:00
62806 changed files with 377300 additions and 0 deletions

3
.gitmodules vendored
View File

@ -40,3 +40,6 @@
[submodule "bin/.bin"] [submodule "bin/.bin"]
path = bin/.bin path = bin/.bin
url = git@git.desu.ltd:salt/bin url = git@git.desu.ltd:salt/bin
[submodule "desktop-common/.minetest/games/mineclone2"]
path = desktop-common/.minetest/games/mineclone2
url = https://git.minetest.land/Wuzzy/MineClone2

14
base/.bashrc Executable file
View File

@ -0,0 +1,14 @@
#!/bin/bash
#
# ~/.bashrc
#
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
# Source .profile
if [ -r ~/.profile ]; then
# shellcheck disable=1090
source ~/.profile
fi

252
base/.config/dircolors Normal file
View File

@ -0,0 +1,252 @@
# Copyright (c) 2017-present Arctic Ice Studio <development@arcticicestudio.com>
# Copyright (c) 2017-present Sven Greb <code@svengreb.de>
# Project: Nord dircolors
# Repository: https://github.com/arcticicestudio/nord-dircolors
# License: MIT
COLOR tty
TERM ansi
TERM *color*
TERM con[0-9]*x[0-9]*
TERM cons25
TERM console
TERM cygwin
TERM dtterm
TERM dvtm
TERM dvtm-256color
TERM Eterm
TERM eterm-color
TERM fbterm
TERM gnome
TERM gnome-256color
TERM hurd
TERM jfbterm
TERM konsole
TERM konsole-256color
TERM kterm
TERM linux
TERM linux-c
TERM mlterm
TERM putty
TERM putty-256color
TERM rxvt*
TERM rxvt-unicode
TERM rxvt-256color
TERM rxvt-unicode256
TERM screen*
TERM screen-256color
TERM st
TERM st-256color
TERM terminator
TERM tmux*
TERM tmux-256color
TERM vt100
TERM xterm*
TERM xterm-color
TERM xterm-88color
TERM xterm-256color
#+-----------------+
#+ Global Defaults +
#+-----------------+
NORMAL 00
RESET 0
FILE 00
DIR 01;34
LINK 36
MULTIHARDLINK 04;36
FIFO 04;01;36
SOCK 04;33
DOOR 04;01;36
BLK 01;33
CHR 33
ORPHAN 31
MISSING 01;37;41
EXEC 01;36
SETUID 01;04;37
SETGID 01;04;37
CAPABILITY 01;37
STICKY_OTHER_WRITABLE 01;37;44
OTHER_WRITABLE 01;04;34
STICKY 04;37;44
#+-------------------+
#+ Extension Pattern +
#+-------------------+
#+--- Archives ---+
.7z 01;32
.ace 01;32
.alz 01;32
.arc 01;32
.arj 01;32
.bz 01;32
.bz2 01;32
.cab 01;32
.cpio 01;32
.deb 01;32
.dz 01;32
.ear 01;32
.gz 01;32
.jar 01;32
.lha 01;32
.lrz 01;32
.lz 01;32
.lz4 01;32
.lzh 01;32
.lzma 01;32
.lzo 01;32
.rar 01;32
.rpm 01;32
.rz 01;32
.sar 01;32
.t7z 01;32
.tar 01;32
.taz 01;32
.tbz 01;32
.tbz2 01;32
.tgz 01;32
.tlz 01;32
.txz 01;32
.tz 01;32
.tzo 01;32
.tzst 01;32
.war 01;32
.xz 01;32
.z 01;32
.Z 01;32
.zip 01;32
.zoo 01;32
.zst 01;32
#+--- Audio ---+
.aac 32
.au 32
.flac 32
.m4a 32
.mid 32
.midi 32
.mka 32
.mp3 32
.mpa 32
.mpeg 32
.mpg 32
.ogg 32
.opus 32
.ra 32
.wav 32
#+--- Customs ---+
.3des 01;35
.aes 01;35
.gpg 01;35
.pgp 01;35
#+--- Documents ---+
.doc 32
.docx 32
.dot 32
.odg 32
.odp 32
.ods 32
.odt 32
.otg 32
.otp 32
.ots 32
.ott 32
.pdf 32
.ppt 32
.pptx 32
.xls 32
.xlsx 32
#+--- Executables ---+
.app 01;36
.bat 01;36
.btm 01;36
.cmd 01;36
.com 01;36
.exe 01;36
.reg 01;36
#+--- Ignores ---+
*~ 02;37
.bak 02;37
.BAK 02;37
.log 02;37
.log 02;37
.old 02;37
.OLD 02;37
.orig 02;37
.ORIG 02;37
.swo 02;37
.swp 02;37
#+--- Images ---+
.bmp 32
.cgm 32
.dl 32
.dvi 32
.emf 32
.eps 32
.gif 32
.jpeg 32
.jpg 32
.JPG 32
.mng 32
.pbm 32
.pcx 32
.pgm 32
.png 32
.PNG 32
.ppm 32
.pps 32
.ppsx 32
.ps 32
.svg 32
.svgz 32
.tga 32
.tif 32
.tiff 32
.xbm 32
.xcf 32
.xpm 32
.xwd 32
.xwd 32
.yuv 32
#+--- Video ---+
.anx 32
.asf 32
.avi 32
.axv 32
.flc 32
.fli 32
.flv 32
.gl 32
.m2v 32
.m4v 32
.mkv 32
.mov 32
.MOV 32
.mp4 32
.mpeg 32
.mpg 32
.nuv 32
.ogm 32
.ogv 32
.ogx 32
.qt 32
.rm 32
.rmvb 32
.swf 32
.vob 32
.webm 32
.wmv 32

26
base/.config/htop/htoprc Normal file
View File

@ -0,0 +1,26 @@
# Beware! This file is rewritten by htop when settings are changed in the interface.
# The parser is also very primitive, and not human-friendly.
fields=0 5 48 17 18 38 39 2 46 47 49 1
sort_key=46
sort_direction=1
hide_threads=0
hide_kernel_threads=1
hide_userland_threads=1
shadow_other_users=1
show_thread_names=1
show_program_path=1
highlight_base_name=0
highlight_megabytes=1
highlight_threads=1
tree_view=1
header_margin=1
detailed_cpu_time=0
cpu_count_from_zero=0
update_process_names=0
account_guest_in_cpu_meter=0
color_scheme=0
delay=15
left_meters=AllCPUs2 Memory Swap
left_meter_modes=1 1 1
right_meters=Tasks LoadAverage Uptime
right_meter_modes=2 2 2

View File

@ -0,0 +1,9 @@
# vim:ft=systemd:
[Unit]
Description=Dotfile fetch service
[Service]
ExecStart=git --git-dir=%h/.dotfiles/ --work-tree=%h fetch
[Install]
WantedBy=default.target

View File

@ -0,0 +1,11 @@
# vim:ft=systemd:
[Unit]
Description=Dot fetch timer
[Timer]
Persistent=true
OnBootSec=15min
OnCalendar=*-*-* 22:00:00
[Install]
WantedBy=default.target

View File

@ -0,0 +1,9 @@
# vim:ft=systemd:
[Unit]
Description=Project fetch service
[Service]
ExecStart=find %h/Projects -type d -iname .git -execdir git fetch \;
[Install]
WantedBy=default.target

View File

@ -0,0 +1,11 @@
# vim:ft=systemd:
[Unit]
Description=Project fetch timer
[Timer]
Persistent=true
OnBootSec=15min
OnCalendar=*-*-* 23:00:00
[Install]
WantedBy=default.target

70
base/.functions Normal file
View File

@ -0,0 +1,70 @@
#! /bin/sh
#
# .functions
# Functions for interactive shells
#
proj() {
# Ensure we have an argument
if [ -z ${1+x} ]; then
echo "proj: requires argument"
return 1
fi
# POSIX mandates this external call to sed
projname="$(echo "$1" | sed -re 's/[^ a-zA-Z0-9.-]//g')"
projdir="$HOME/Projects/$projname"
# Ensure we have a ~/Projects directory
mkdir -p "$HOME/Projects" > /dev/null 2>&1
# cd into the project or make it if necessary
if [ -d "$projdir" ]; then
# It exists
cd "$projdir" || return 50
else
# It does not exist
echo "Creating new project \"$projname\""
mkdir -p "$projdir"
cd "$projdir" || return 51
if command -v git > /dev/null 2>&1; then
# Initialize git
echo "Initializing git with .gitignore"
git init > /dev/null 2>&1
echo '*.swp' > .gitignore
git add .gitignore > /dev/null 2>&1
git commit -am "Create gitignore" > /dev/null 2>&1
git status
fi
fi
}
# Autocompletion for bash
# A note on the shellcheck disable: that's fine, because this is also a test
# If it fails, we don't even define a completion function
# shellcheck disable=2039
complete -F _proj proj > /dev/null 2>&1 && \
_proj() {
[ "${#COMP_WORDS[@]}" != "2" ] && return 0
for dir in "$HOME"/Projects/*; do
reply="$(basename "$dir")"
reply="${reply//[^ \-a-zA-Z0-9.]/}"
# shellcheck disable=2179
COMPREPLY+=" $reply"
done
unset reply
# shellcheck disable=2178
COMPREPLY=($(compgen -W "$COMPREPLY" "${COMP_WORDS[COMP_CWORD]}"))
return 0
}
# Autocompletion for zsh
compdef _proj proj > /dev/null 2>&1 && \
_proj() {
#! /usr/bin/env zsh
# It's okay, shellcheck
# We zsh now
# shellcheck disable=2039
for dir in "$HOME"/Projects/*; do
temp="$(basename "$dir")"
temp="${reply//[^ a-zA-Z0-9.]/}"
reply+=" $temp"
done
return 0
}

17
base/.inputrc Normal file
View File

@ -0,0 +1,17 @@
## COMPLETION
set colored-stats on
set completion-ignore-case on
# Only need a single tab press to show results
set show-all-if-ambiguous on
# You ever do that thing where you put your cursorright in the middle of a word,
# like you're at the "e" in "Makefile", and hit tab, and bash oh-so-helpfully
# inserts the latter half of the word right in the middle of it -- so you've
# got "Makefilefile" sitting in your terminal?
# Yeah fuck that
set skip-completed-text on
## KEYBINDINGS
# History searching
"\e[A": history-search-backward
"\e[B": history-search-forward

405
base/.profile Executable file
View File

@ -0,0 +1,405 @@
#!/bin/sh
# Copyright (c) 2017 rehashedsalt/vintagesalt
# Licensed under the terms of the MIT license
## POSIX NOTICE
# This script, or at least the parts expected to be run by a standard sh
# implementation, should be fully POSIX-compliant. If it is not, open a bug
# report at git.9iron.club/salt/home and I'll take care of it.
## SHELLCHECK
# Not finding these sources is none of my concern; they're out of scope
# shellcheck disable=1091
# shellcheck disable=1090
# I'm well aware of when functions are defined vs used
# Those choices are deliberate
# shellcheck disable=2139
# shellcheck disable=2016
# Some variables will not be used here, but in the shell
# shellcheck disable=2034
# Quit being pedantic
# shellcheck disable=1117
# Environment variables
_baseshell="$(basename -- "$0")"
# Patch PATH
for dir in \
"$HOME/.bin" \
"$HOME/.local/bin" \
"$HOME/.firestarter" \
"/usr/local/opt/coreutils/libexec/gnubin" \
"/usr/local/opt/gnu-sed/libexec/gnubin" \
"/usr/local/opt/grep/libexec/gnubin" \
"/usr/local/opt/util-linux/bin" \
"/usr/local/opt/util-linux/sbin"
do
if [ -d "$dir" ]; then
PATH="$dir:$PATH"
fi
done
# Grab bash_completion, if it exists
[ -f "/etc/profile.d/bash_completion.sh" ] && . "/etc/profile.d/bash_completion.sh"
# Source ~/.functions, if it exists
[ -r "$HOME/.functions" ] \
&& [ "$_baseshell" != "sh" ] \
&& [ "$_baseshell" != "dash" ] \
&& . "$HOME/.functions"
# Define a require function
has() {
[ -z "$1" ] && return 1
command -v "$1" > /dev/null 2>&1
}
# Doot
if ! has doot; then
alias doot="echo Doot doot."
fi
# Grab pip completion, if it exists
if has pip; then
case "$_baseshell" in
*bash)
if ! [ -f "$HOME/.pip-completion-bash" ]; then
pip completion --bash > "$HOME/.pip-completion-bash"
echo ".profile: Created pip completion for bash"
fi
. "$HOME/.pip-completion-bash"
;;
zsh)
if ! [ -f "$HOME/.pip-completion-zsh" ]; then
pip completion --zsh > "$HOME/.pip-completion-zsh"
echo ".profile: Created pip completion for zsh"
fi
. "$HOME/.pip-completion-zsh"
;;
*)
;;
esac
fi
# Set up go, if we have it
if has go; then
export GOPATH="$HOME/.local/go"
[ "${PATH#*$GOPATH}" = "$PATH" ] && export PATH="$PATH:$GOPATH/bin"
fi
# Grab dircolors, if it exists
if has dircolors; then
dircolorsfile="$HOME/.config/dircolors"
if [ -r "$dircolorsfile" ]; then
eval "$(dircolors "$dircolorsfile")"
else
eval "$(dircolors -b)"
fi
fi
# Set up our text editor
for editor in vim vi nano; do
if has "$editor"; then
export EDITOR="$editor"
break
fi
done
alias e='$EDITOR'
# Now for a shitton of aliases
if ! has define; then
if has mate-dictionary; then
alias define='mate-dictionary -n --look-up'
fi
fi
if ! has helpme; then
# https://breanneboland.com/blog/2020/02/28/you-can-put-what-in-dns-txt-records-a-blog-post-for-con-west-2020/
alias helpme='dig +short txt "$(( RANDOM % 50 )).maybethiscould.work"'
fi
if has emerge; then
alias e-depclean='sudo emerge -a --depclean'
alias e-inst='sudo emerge -a --jobs --tree --quiet-build y'
alias e-upgrade='sudo emerge -DNUua --jobs --tree --quiet-build y --with-bdeps=y --keep-going --backtrack=1000 @world'
alias e-newuse='sudo emerge -Uva --jobs --tree --quiet-build y @world'
alias e-search='emerge -s'
alias e-sync='sudo emerge --sync'
if has eclean; then
alias e-cleanup='sudo eclean -d distfiles && sudo eclean -d packages'
fi
fi
if has firestarter and ! has fs; then
alias fs="firestarter"
fi
if has fork; then
alias dup="fork $TERMINAL $PWD"
fi
if has git; then
# Thanks Bash-it!
alias g='git'
alias ga='git add'
alias gall='git add -A'
alias gap='git add -p'
alias gb='git branch'
alias gbD='git branch -D'
alias gba='git branch -a'
alias gbd='git branch -d'
alias gbm='git branch -m'
alias gbt='git branch --track'
alias gc='git commit -v'
alias gca='git commit -v -a'
alias gcam="git commit -v -am"
alias gcb='git checkout -b'
alias gci='git commit --interactive'
alias gcl='git clone'
alias gclean='git clean -fd'
alias gcm='git commit -v -m'
alias gco='git checkout'
alias gcob='git checkout -b'
alias gcom='git checkout master'
alias gcount='git shortlog -sn'
alias gcp='git cherry-pick'
alias gcpd='git checkout master; git pull; git branch -D'
alias gcpx='git cherry-pick -x'
alias gcsam="git commit -S -am"
alias gct='git checkout --track'
alias gd='git diff'
alias gdel='git branch -D'
alias gds='git diff --staged'
alias gdv='git diff -w "$@" | vim -R -'
alias get='git'
alias gexport='git archive --format zip --output'
alias gf='git fetch --all --prune'
alias gft='git fetch --all --prune --tags'
alias gftv='git fetch --all --prune --tags --verbose'
alias gfv='git fetch --all --prune --verbose'
alias ggs="gg --stat"
alias ggui="git gui"
alias gh='cd "$(git rev-parse --show-toplevel)"'
alias gl='git pull'
alias gll='git log --graph --pretty=oneline --abbrev-commit'
alias glum='git pull upstream master'
alias gm="git merge"
alias gmu='git fetch origin -v; git fetch upstream -v; git merge upstream/master'
alias gmv='git mv'
alias gp='git push'
alias gpatch="git format-patch -1"
alias gpo='git push origin'
alias gpom='git push origin master'
alias gpp='git pull && git push'
alias gpr='git pull --rebase'
alias gpristine='git reset --hard && git clean -dfx'
alias gpu='git push --set-upstream'
alias gpuo='git push --set-upstream origin'
alias gpuoc='git push --set-upstream origin $(git symbolic-ref --short HEAD)'
alias gr='git remote'
alias gra='git remote add'
alias grm='git rm'
alias grv='git remote -v'
alias gs='git status'
alias gsl="git shortlog -sn"
alias gss='git status -s'
alias gst="git stash"
alias gstb="git stash branch"
alias gstd="git stash drop"
alias gstl="git stash list"
alias gstp="git stash pop"
alias gsu='git submodule update --init --recursive'
alias gt="git tag"
alias gta="git tag -a"
alias gtd="git tag -d"
alias gtl="git tag -l"
alias gtls='git tag -l | sort -V'
alias gup='git fetch && git rebase'
alias gus='git reset HEAD'
alias gwc="git whatchanged"
# Add uncommitted and unstaged changes to the last commit
alias gcaa="git commit -a --amend -C HEAD"
# From http://blogs.atlassian.com/2014/10/advanced-git-aliases/
# Show commits since last pull
alias gnew="git log HEAD@{1}..HEAD@{0}"
# Show untracked files
alias gu='git ls-files . --exclude-standard --others'
fi
if has nc; then
# I'm not sorry
alias blinkenlights='nc -v towel.blinkenlights.nl 23'
fi
if has ptgdp; then
song() {
if [ -z "$*" ]; then
echo "song: Requires an argument"
return 1
fi
echo "$*" | ptgdp -p
}
fi
if has sed && has find; then
replace() {
if [ $# -ne 2 ]; then
echo "replace: Requires two arguments"
return 1
fi
find . -type f -exec sed -i "s/$1/$2/g" {} \;
}
fi
if has sudo; then
case $_baseshell in
*bash|*zsh)
export SUDO_PROMPT=$'[\e[34msudo\e[0m as %U]: Password for %p: '
;;
*)
export SUDO_PROMPT='[sudo as %U]: Password for %p: '
esac
fi
if has tree; then
treeargs='-qF --dirsfirst'
alias tree="tree $treeargs"
alias t="tree $treeargs -L 2"
alias tl="tree $treeargs -pughL 2"
alias tp="tree $treeargs -pL 2"
alias ts="tree $treeargs -hL 2"
unset treeargs
fi
if has vault; then
alias vlogin="vault login -method=ldap username=$(whoami)"
alias vls="vault list"
alias vr="vault read"
fi
# Dotfile management aliases
if [ -d "$HOME/.dotfiles" ]; then
dotcmd='git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
alias dot="$dotcmd"
if [ -f "/usr/share/bash-completion/completions/git" ] && [ "$_baseshell" == "bash" ]; then
. "/usr/share/bash-completion/completions/git"
__git_complete dot _git
fi
alias dotupdate="\
printf 'Pulling...\n'
$dotcmd pull
printf 'Updating submodules...\n'
$dotcmd submodule update --init --recursive --remote
$dotcmd status"
alias dotupgrade="\
printf 'Pulling...\n'
$dotcmd pull
printf 'Updating submodules...\n'
$dotcmd submodule update --init
printf 'Checking out masters...\n'
$dotcmd submodule -q foreach --recursive 'git checkout -q master && git pull' && \
$dotcmd status"
unset dotcmd
fi
# Aliases for common utilities
if [ "$(uname)" = "Linux" ] || has brew; then
# Assume we have GNU coreutils
lsarguments='-Fh --color=auto --group-directories-first'
alias l="ls -l --file-type $lsarguments"
alias la="ls -A --file-type $lsarguments"
alias ls="ls $lsarguments"
alias ll="ls -Al --file-type $lsarguments"
unset lsarguments
alias rm='rm -I'
else
# Else only assume POSIX/BSD
lsarguments='-F'
alias l="ls -$lsarguments"
alias la="ls -A $lsarguments"
alias ls="ls $lsarguments"
alias ll="ls -Ahl $lsarguments"
fi
alias cp='cp -i'
alias d='du -hs'
# Set up a default PS1 for bash
_ps1bash() {
exitcode="$?"
r="\[\e[0m\]"
bg_red="\[\e[41m\]"
bg_yellow="\[\e[43m\]"
bg_blue="\[\e[44m\]"
fg_black="\[\e[30m\]"
fg_red="\[\e[31m\]"
fg_green="\[\e[32m\]"
fg_yellow="\[\e[33m\]"
fg_blue="\[\e[34m\]"
fg_magenta="\[\e[35m\]"
fg_grey="\[\e[37m\]"
fg_bold="\[\e[1m\]"
# Add hostname prefix in SSH sessions
unset _prefix
# Alert if in an SSH session
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
_prefix="${fg_bold}${fg_red}$(hostname -s)${r}${fg_red}:${r}${_prefix}"
elif [ "$USER" != "salt" ]; then
_prefix="${fg_bold}${fg_yellow}$USER${r}${fg_yellow}:${r}${_prefix}"
fi
# Color PWD
_prefix="${_prefix}${fg_blue}"
# Show the tilde instead of $HOME
_cpwd='\w'
# Show read-only status in certain directories
if [ "$UID" = 0 ]; then
# Root gets the usual "#" prompt
_prompt="${fg_red}#${r}"
elif ! [ -d "$PWD" ]; then
# Something very bad has happened to our PWD, probably got deleted
_prompt="${bg_red}${fg_black}!${r}"
elif ! [ -r "$PWD" ]; then
# Guess we lost privileges
_prompt="${fg_red}"'$'"${r}"
elif ! [ -x "$PWD" ]; then
# Missing execution perms
if [ -w "$PWD" ]; then
# Fixable
_prompt="${bg_blue}${fg_black}"'$'"${r}"
else
# Unfixable
_prompt="${bg_yellow}${fg_black}"'$'"${r}"
fi
elif ! [ -w "$PWD" ]; then
# Can't write is really common but also good to know
_prompt="${fg_magenta}"'~'"${r}"
else
# Otherwise we should be fine
_prompt="${fg_green}"'$'"${r}"
fi
# Alert us if the last command failed
unset _fail
if ! [ "$exitcode" = "0" ]; then
_fail="${fg_bold}${fg_red}?"
fi
# shellcheck disable=2059
PS1="[${_prefix}${_cpwd}${r}]${_fail}${r}${_prompt}${r} "
}
# And export our PS1
case "$_baseshell" in
zsh)
# Don't do this on ZSH
# I have a custom theme for that
;;
*bash)
export PS1=""
export PROMPT_COMMAND=_ps1bash
;;
*)
export PS1='[\e[31m\w\e[0m]\e[32m\$\e[0m '
;;
esac
# Clean up
unset gnubin
unset -v _baseshell
unset -f has
# Source in a site-specific profile
localprofile="$HOME/.local/profile"
if [ -f "$localprofile" ]; then
. "$localprofile"
fi

View File

@ -0,0 +1 @@
../Nextcloud/keepass.kdbx

View File

@ -0,0 +1,55 @@
#
# Salt's MPD configuration
# gitlab.com/rehashedsalt/home
#
# DIRECTORIES
#music_directory "~/Music"
playlist_directory "~/Music/Playlists"
db_file "~/.local/share/mpd/database"
log_file "~/.local/share/mpd/log"
# Disabled by default
pid_file "~/.local/share/mpd/pid"
state_file "~/.local/share/mpd/state"
sticker_file "~/.local/share/mpd/sticker.sql"
# INPUT CONFIG
# Why the hell are these even still here?
input {
plugin "tidal"
enabled "no"
}
input {
plugin "qobuz"
enabled "no"
}
# DECODER CONFIG
decoder {
plugin "opus"
enabled "yes"
}
# OUTPUT CONFIG
audio_output {
type "pulse"
name "Local Pulse"
## server "remote_server" # optional
## sink "remote_server_sink" # optional
## media_role "media_role" #optional
}
# GENERAL CONFIG
log_level "default"
restore_paused "yes"
save_absolute_paths_in_playlists "yes"
# DATABASE CONFIG
auto_update "yes"
#auto_update_depth "3"
# If this setting is set to "yes", MPD will discover audio files by following
# symbolic links outside of the configured music_directory.
#follow_outside_symlinks "yes"
# If this setting is set to "yes", MPD will discover audio files by following
# symbolic links inside of the configured music_directory.
#follow_inside_symlinks "yes"

View File

@ -0,0 +1 @@
volume=100

View File

@ -0,0 +1,13 @@
#
# ptgdp.conf
# Config file for Play the Goddamned Playlist
#
# The media player backend to use
# Supported: mpd, audacious
# Default: mpd
backend=mpd
# Arguments to pass to youtube-dl during downloading
# Default: --geo-bypass
ytdl_args=--geo-bypass

View File

@ -0,0 +1,10 @@
[redshift]
temp-day=5300
temp-night=3500
gamma=1
fade=0
location-provider=manual
[manual]
lat=38.6
lon=-90.2

View File

@ -0,0 +1,24 @@
{
"animate_icon": true,
"autokill_daemon": 0,
"autostart_daemon": 1,
"daemon_priority": 0,
"file_browser": "explore",
"folder_as_path": true,
"force_dark_theme": false,
"icon_theme": "syncthing",
"icons_in_menu": true,
"infobox_style": "font_weight=\"bold\" font_size=\"large\"",
"language": "None",
"last_updatecheck": "1969-12-31T18:00:01",
"max_cpus": 0,
"minimize_on_start": true,
"notification_for_error": true,
"notification_for_folder": true,
"notification_for_update": false,
"st_autoupdate": false,
"syncthing_arguments": "--no-browser",
"syncthing_binary": "/usr/bin/syncthing",
"use_old_header": true,
"window_position": null
}

View File

@ -0,0 +1,15 @@
# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
#
XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOWNLOAD_DIR="$HOME/Downloads"
XDG_TEMPLATES_DIR="$HOME/Templates"
XDG_PUBLICSHARE_DIR="$HOME/Public"
XDG_DOCUMENTS_DIR="$HOME/Documents"
XDG_MUSIC_DIR="$HOME/Music"
XDG_PICTURES_DIR="$HOME/Pictures"
XDG_VIDEOS_DIR="$HOME/Videos"

View File

@ -0,0 +1 @@
en_US

View File

@ -0,0 +1,47 @@
# vim:ft=dosini
# https://zim-wiki.org/manual/Help/Config_Files.html
[TextView]
font = Roboto 12
indent = 30
linespacing = 8
# Basic text formatting
[Tag emphasis]
style = italic
[Tag link]
foreground = #83a598
[Tag mark]
background = yellow
[Tag strong]
weight = PANGO_WEIGHT_BOLD
# Advanced text formatting
[Tag code]
family = monospace
[Tag pre]
# This style is used for multi-line verbatim blocks
family = monospace
wrap-mode = none
indent = 20
[Tag strike]
foreground = #7f8c8d
strikethrough = true
[Tag tag]
foreground = #ce5c00
# Headings
[Tag h1]
scale = 1.75
weight = PANGO_WEIGHT_BOLD
[Tag h2]
scale = 1.52
weight = PANGO_WEIGHT_BOLD
[Tag h3]
scale = 1.32
style = italic
weight = PANGO_WEIGHT_BOLD
[Tag h4]
scale = 1.15
weight = PANGO_WEIGHT_BOLD
[Tag h5]
weight = PANGO_WEIGHT_BOLD

View File

@ -0,0 +1,9 @@
COMMON
-thresh -16383 16383 -16383 16383
# Momodora with my iBuffalo SNES pad
# Which is bomb, btw. Would recommend
START snes
-X
-buttons a b x y l r s t
-axis Left Right Up Down

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,105 @@
[ColorEffects:Disabled]
Color=56,56,56
ColorAmount=0
ColorEffect=0
ContrastAmount=0.65000000000000002
ContrastEffect=1
IntensityAmount=0.10000000000000001
IntensityEffect=2
[ColorEffects:Inactive]
ChangeSelectionColor=true
Color=112,111,110
ColorAmount=0.025000000000000001
ColorEffect=2
ContrastAmount=0.10000000000000001
ContrastEffect=2
Enable=true
IntensityAmount=0
IntensityEffect=0
[Colors:Button]
BackgroundAlternate=60,56,54
BackgroundNormal=40,40,40
DecorationFocus=104,157,106
DecorationHover=131,165,152
ForegroundActive=142,192,124
ForegroundInactive=55,115,117
ForegroundLink=184,187,38
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=235,219,178
ForegroundPositive=39,174,96
ForegroundVisited=127,140,141
[Colors:Selection]
BackgroundAlternate=142,192,124
BackgroundNormal=104,157,106
DecorationFocus=104,157,106
DecorationHover=131,165,152
ForegroundActive=252,252,252
ForegroundInactive=235,219,178
ForegroundLink=253,188,75
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=235,219,178
ForegroundPositive=39,174,96
ForegroundVisited=189,195,199
[Colors:Tooltip]
BackgroundAlternate=60,56,54
BackgroundNormal=40,40,40
DecorationFocus=104,157,106
DecorationHover=131,165,152
ForegroundActive=184,187,38
ForegroundInactive=55,115,117
ForegroundLink=142,192,124
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=235,219,178
ForegroundPositive=39,174,96
ForegroundVisited=127,140,141
[Colors:View]
BackgroundAlternate=60,56,54
BackgroundNormal=40,40,40
DecorationFocus=104,157,106
DecorationHover=131,165,152
ForegroundActive=184,187,38
ForegroundInactive=55,115,117
ForegroundLink=142,192,124
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=235,219,178
ForegroundPositive=39,174,96
ForegroundVisited=127,140,141
[Colors:Window]
BackgroundAlternate=60,56,54
BackgroundNormal=40,40,40
DecorationFocus=104,157,106
DecorationHover=131,165,152
ForegroundActive=184,187,38
ForegroundInactive=55,115,117
ForegroundLink=142,192,124
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=235,219,178
ForegroundPositive=39,174,96
ForegroundVisited=127,140,141
[General]
ColorScheme=GruvboxColors
Name=GruvboxColors
shadeSortColumn=true
[KDE]
contrast=4
[WM]
activeBackground=39,39,39
activeBlend=235,219,178
activeForeground=235,219,178
inactiveBackground=40,40,40
inactiveBlend=60,56,54
inactiveForeground=204,190,155

View File

@ -0,0 +1,119 @@
[ColorEffects:Disabled]
Color=56,56,56
ColorAmount=0
ColorEffect=0
ContrastAmount=0.65000000000000002
ContrastEffect=1
IntensityAmount=0.10000000000000001
IntensityEffect=2
[ColorEffects:Inactive]
ChangeSelectionColor=true
Color=112,111,110
ColorAmount=0.025000000000000001
ColorEffect=2
ContrastAmount=0.10000000000000001
ContrastEffect=2
Enable=true
IntensityAmount=0
IntensityEffect=0
[Colors:Button]
BackgroundAlternate=60,56,54
BackgroundNormal=251,241,199
DecorationFocus=104,157,106
DecorationHover=131,165,152
ForegroundActive=142,192,124
ForegroundInactive=55,115,117
ForegroundLink=184,187,38
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=60,56,54
ForegroundPositive=39,174,96
ForegroundVisited=127,140,141
[Colors:Complementary]
BackgroundAlternate=189,174,147
BackgroundNormal=213,196,161
DecorationFocus=204,36,29
DecorationHover=204,36,29
ForegroundActive=131,165,152
ForegroundInactive=235,219,178
ForegroundLink=69,133,136
ForegroundNegative=251,73,52
ForegroundNeutral=250,189,47
ForegroundNormal=38,38,38
ForegroundPositive=204,36,29
ForegroundVisited=211,134,155
[Colors:Selection]
BackgroundAlternate=142,192,124
BackgroundNormal=104,157,106
DecorationFocus=104,157,106
DecorationHover=131,165,152
ForegroundActive=252,252,252
ForegroundInactive=235,219,178
ForegroundLink=253,188,75
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=235,219,178
ForegroundPositive=39,174,96
ForegroundVisited=189,195,199
[Colors:Tooltip]
BackgroundAlternate=60,56,54
BackgroundNormal=40,40,40
DecorationFocus=104,157,106
DecorationHover=131,165,152
ForegroundActive=184,187,38
ForegroundInactive=55,115,117
ForegroundLink=142,192,124
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=235,219,178
ForegroundPositive=39,174,96
ForegroundVisited=127,140,141
[Colors:View]
BackgroundAlternate=242,229,188
BackgroundNormal=251,241,199
DecorationFocus=104,157,106
DecorationHover=131,165,152
ForegroundActive=184,187,38
ForegroundInactive=55,115,117
ForegroundLink=142,192,124
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=60,56,54
ForegroundPositive=39,174,96
ForegroundVisited=127,140,141
[Colors:Window]
BackgroundAlternate=60,56,54
BackgroundNormal=251,241,199
DecorationFocus=104,157,106
DecorationHover=131,165,152
ForegroundActive=184,187,38
ForegroundInactive=55,115,117
ForegroundLink=142,192,124
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=60,56,54
ForegroundPositive=39,174,96
ForegroundVisited=127,140,141
[General]
ColorScheme=GruvboxColors
Name=GruvboxLight
shadeSortColumn=true
[KDE]
contrast=4
[WM]
activeBackground=39,39,39
activeBlend=235,219,178
activeForeground=235,219,178
inactiveBackground=40,40,40
inactiveBlend=60,56,54
inactiveForeground=204,190,155

View File

@ -0,0 +1,95 @@
[Background]
Color=40,40,40
[BackgroundFaint]
Color=40,40,40
[BackgroundIntense]
Color=40,40,40
[Color0]
Color=40,40,40
[Color0Faint]
Color=40,40,40
[Color0Intense]
Color=146,131,116
[Color1]
Color=204,36,29
[Color1Faint]
Color=204,36,29
[Color1Intense]
Color=251,73,52
[Color2]
Color=152,151,26
[Color2Faint]
Color=152,151,26
[Color2Intense]
Color=184,187,38
[Color3]
Color=215,153,33
[Color3Faint]
Color=215,153,33
[Color3Intense]
Color=250,189,47
[Color4]
Color=69,133,136
[Color4Faint]
Color=69,133,136
[Color4Intense]
Color=131,165,152
[Color5]
Color=177,98,134
[Color5Faint]
Color=177,98,134
[Color5Intense]
Color=211,134,155
[Color6]
Color=104,157,106
[Color6Faint]
Color=104,157,106
[Color6Intense]
Color=142,192,124
[Color7]
Color=168,153,132
[Color7Faint]
Color=168,153,132
[Color7Intense]
Color=235,219,178
[Foreground]
Color=235,219,178
[ForegroundFaint]
Color=235,219,178
[ForegroundIntense]
Color=235,219,178
[General]
Blur=false
Description=Gruvbox
Opacity=1
Wallpaper=

View File

@ -0,0 +1,12 @@
[Appearance]
ColorScheme=Breeze
Font=Inconsolata,11,-1,5,57,0,0,0,0,0,Medium
[General]
Name=Main
Parent=FALLBACK/
TerminalColumns=108
TerminalRows=32
[Scrolling]
ScrollBarPosition=2

View File

@ -0,0 +1,95 @@
[Background]
Color=46,52,64
[BackgroundFaint]
Color=46,52,64
[BackgroundIntense]
Color=46,52,64
[Color0]
Color=59,66,82
[Color0Faint]
Color=59,66,82
[Color0Intense]
Color=59,66,82
[Color1]
Color=191,97,106
[Color1Faint]
Color=191,97,106
[Color1Intense]
Color=191,97,106
[Color2]
Color=163,190,140
[Color2Faint]
Color=163,190,140
[Color2Intense]
Color=163,190,140
[Color3]
Color=235,203,139
[Color3Faint]
Color=235,203,139
[Color3Intense]
Color=235,203,139
[Color4]
Color=129,161,193
[Color4Faint]
Color=129,161,193
[Color4Intense]
Color=129,161,193
[Color5]
Color=180,142,173
[Color5Faint]
Color=180,142,173
[Color5Intense]
Color=180,142,173
[Color6]
Color=136,192,208
[Color6Faint]
Color=136,192,208
[Color6Intense]
Color=136,192,208
[Color7]
Color=216,222,233
[Color7Faint]
Color=216,222,233
[Color7Intense]
Color=216,222,233
[Foreground]
Color=216,222,233
[ForegroundFaint]
Color=216,222,233
[ForegroundIntense]
Color=216,222,233
[General]
Blur=false
Description=Nordic
Opacity=1
Wallpaper=

Binary file not shown.

@ -0,0 +1 @@
Subproject commit 81c27363a3ffadcfa4ae4a46b803e2f18a8e5a43

View File

@ -0,0 +1,52 @@
// Salt's Quake autoexec.cfg
// =========================================
// Base changes
crosshair 0 // Crosshair is for pussies
fov 110 // W I D E
gl_texturemode 3 // Disable texture filtering
r_lerpmodels 1 // Interpolate animations, except torches and muzzleflashes
r_lerpmove 1 // Interpolate entity movement
r_oldwater 0 // Disable old water texture warping animations
r_particles 2 // Enable square particles
r_sky_quality 32 // Probably doesn't do much at all, but might improve skies
r_waterquality 32 // Noticeable improvement at 1440p, least for me
//scr_clock 1 // Enables ingame timer
scr_crosshairscale 2 // Makes the crosshair not tiny as hell
v_gunkick 2 // Interpolates recoil
// Drop a quick motd
// Assumes Quakespasm on Linux
echo ""
echo " .,o' `o,. "
echo " ,o8' `8o. "
echo " o8' `8o "
echo " o8: ;8o "
echo ".88 88. "
echo ":88. ,88: "
echo "`888 888' "
echo " 888o `88888' o888 "
echo " `888o,. `888' .,o888' "
echo " `8888888888888888888' "
echo " `888888888888888' "
echo " `:::8;8;::' "
echo " 888 "
echo " `8' "
echo " `8' "
echo " | "
echo ""
echo "Custom configs loaded from:"
echo ""
echo " ~/.quakespasm/id1/autoexec.cfg"
echo ""
echo "Site-local changes can be made at:"
echo ""
echo " ~/.quakespasm/id1/local.cfg"
echo ""
// Execute another config that exists outside of change control, just in case
exec local.cfg // For site-local changes

View File

@ -0,0 +1,115 @@
#!/bin/bash
#
# bspwmrc
# bspwm configuration file
#
## Start a hotkey daemon
pgrep sxhkd -u "$UID" || sxhkd &
## Monitor allocation
# Honestly pretty complex
setmon() {
desktops_total=10
desktops_primary=8
desktops_secondary=$(( desktops_total - desktops_primary ))
monitor_primary="$(xrandr -q | awk '/primary/{print $1}')"
monitors_secondary=($(xrandr -q | grep ' connected' | grep -v 'primary' | awk '{print $1}'))
# Ensure we have enough for every monitor
if (( desktops_secondary < ${#monitors_secondary[@]} )); then
echo "Adding more desktops to match connected monitors"
desktops_secondary=${#monitors_secondary[@]}
desktops_total=$(( desktops_secondary + desktops_primary ))
fi
if (( ${#monitors_secondary[@]} == 0 )); then
echo "Only one monitor allocated"
layout=$(seq --separator=" " 1 $desktops_total)
echo "Setting layout $layout"
bspc monitor $monitor_primary -d $layout
else
echo "${#monitors_secondary[@]} monitors connected"
deskpermon=$(( desktops_secondary / ${#monitors_secondary[@]} ))
layout=$(seq --separator=" " 1 $desktops_primary)
echo "Setting primary layout $layout"
bspc monitor $monitor_primary -d $layout
for m in $(seq 0 $(( ${#monitors_secondary[@]} - 1 ))); do
layout=$(seq --separator=" " \
$(( 1 + m + desktops_primary )) \
${#monitors_secondary[@]} \
"$desktops_total" \
)
echo "Setting layout for ${monitors_secondary[$m]} to $layout"
bspc monitor ${monitors_secondary[$m]} -d $layout
done
fi
}
setmon
## Behavior
# Tiling behavior
bspc config split_ratio 0.50
bspc config remove_disabled_monitors false
bspc config remove_unplugged_monitors true
# Pointer behavior
bspc config click_to_focus any
bspc config focus_follows_pointer true
bspc config pointer_follows_monitor true
bspc config pointer_modifier mod1
bspc config pointer_action1 move #LMB
bspc config pointer_action2 resize_corner #RMB
# ewmh behavior
bspc config ignore_ewmh_focus true # Fuck you, Discord
## Looks
# Padding
bspc config border_width 4
bspc config window_gap 6
bspc config single_monocle false
bspc config borderless_monocle false
bspc config gapless_monocle false
# Colors
case $THEME in
light)
bspc config normal_border_color "#f2e5bc" #Unfocused
bspc config active_border_color "#8ec07c" #Focused, but current monitor isn't
bspc config focused_border_color "#83a598" #Focused completely
bspc config presel_feedback_color "#ebdbb2" #???
;;
*)
bspc config normal_border_color "#32302f" #Unfocused
bspc config active_border_color "#8ec07c" #Focused, but current monitor isn't
bspc config focused_border_color "#83a598" #Focused completely
bspc config presel_feedback_color "#ebdbb2" #???
;;
esac
## Rules
bspc rule -r '*'
case $HOSTNAME in
dsk-cstm-0*)
# Big boy gets pseudotiled Firefox
bspc rule -a Firefox state=pseudo_tiled rectangle=1920x1080+0+0
;;
*)
;;
esac
bspc rule -a Steam desktop=7
bspc rule -a KeePassXC desktop=8
bspc rule -a slack desktop=9
bspc rule -a Riot desktop=9
bspc rule -a Element desktop=9
bspc rule -a discord desktop=9
bspc rule -a spotify desktop=10
bspc rule -a cantata desktop=10
bspc rule -a 'Minecraft 1.7.10' state=fullscreen
bspc rule -a 'NieR:Automata' state=fullscreen
# Plasma rules
bspc rule -a plasmashell state=floating sticky=on border=off
bspc rule -a krunner state=floating layer=above sticky=on border=off
# Widgets
bspc rule -a Conky state=floating layer=below sticky=on
bspc rule -a pavucontrol-qt state=floating layer=above sticky=on

View File

@ -0,0 +1,90 @@
## BACKEND
backend = "glx";
glx-no-stencil = true;
glx-copy-from-front = false;
# GLX backend: Avoid rebinding pixmap on window damage.
# Probably could improve performance on rapid window content changes, but is known to break things on some drivers (LLVMpipe).
# Recommended if it works.
glx-no-rebind-pixmap = true;
## SHADOWS
shadow = true;
shadow-radius = 30;
shadow-offset-x = -25;
shadow-offset-y = -25;
shadow-opacity = 0.45;
# shadow-red = 0.0;
# shadow-green = 0.0;
# shadow-blue = 0.0;
shadow-ignore-shaped = false;
shadow-exclude = [
"name = 'oneko'",
"name = 'Notification'",
"name = 'xfce4-notifyd'",
"name *= 'VLC'",
"name *= 'compton'",
"name *= 'cpt_frame_window'",
"name *= 'Chromium'",
"name *= 'Chrome'",
"name *= 'Conky'",
"name *= 'Polybar tray window'",
"class_g = 'Conky'",
"class_g ?= 'Notify-osd'",
"class_g ?= 'Xfce4-notifyd'",
"class_g ?= 'Xfce4-power-manager'",
"class_g ?= 'Wine'",
"_GTK_FRAME_EXTENTS@:c"
];
## FADING
fading = true;
# The time between steps in a fade in milliseconds. (default 10).
fade-delta = 5;
# Opacity change between steps while fading in. (default 0.028).
fade-in-step = 0.08;
# Opacity change between steps while fading out. (default 0.03).
fade-out-step = 0.08;
# Fade windows in/out when opening/closing
# no-fading-openclose = true;
fade-exclude = [ ];
## OTHER
# Try to detect WM windows and mark them as active.
mark-wmwin-focused = true;
# Mark all non-WM but override-redirect windows active (e.g. menus).
mark-ovredir-focused = true;
use-ewmh-active-win = true;
detect-rounded-corners = true;
detect-client-opacity = true;
refresh-rate = 143.86;
vsync = true;
# Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate tearing.
# Reported to have no effect, though.
dbe = false;
# Unredirect all windows if a full-screen opaque window is detected, to maximize performance for full-screen windows, like games.
# Known to cause flickering when redirecting/unredirecting windows.
# paint-on-overlay may make the flickering less obvious.
unredir-if-possible = false;
# Specify a list of conditions of windows that should always be considered focused.
focus-exclude = [ ];
detect-transient = true;
detect-client-leader = true;
## WINDOW TYPE SETTINGS
wintypes:
{
tooltip =
{
focus = true;
};
};

View File

@ -0,0 +1,49 @@
-- vim: ts=4 sw=4 noet ai cindent syntax=lua
conky.config = {
own_window = true,
own_window_title = 'Conky',
own_window_class = 'Conky',
own_window_type = 'desktop',
own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager',
own_window_colour = '232629',
double_buffer = true,
cpu_avg_samples = 2,
net_avg_samples = 2,
no_buffers = true,
update_interval = 1,
use_xft = true,
font = 'IBM Plex Sans:style=Light:size=9',
default_color = '#fffcf6',
color1 = '232629', -- Background
color2 = 'fffcf6', -- Foreground
color3 = '4b5162', -- Background-alt
alignment = 'bottom_right',
xinerama_head = 0,
minimum_height = 0,
minimum_width = 304,
border_width = 0,
border_outer_margin = 0,
border_inner_margin = 16,
gap_x = 27,
gap_y = 72,
format_human_readable = true,
temperature_unit = "celsius",
if_up_strictness = "link",
default_bar_height = 11,
default_bar_width = 130,
default_graph_height = 36,
draw_borders = true,
draw_outline = false,
draw_graph_borders = true,
draw_shades = false
}
conky.text = [[
${font IBM Plex Sans:style=Light:size=96}$alignr${time %l:%M %p}$font
${font IBM Plex Sans:style=Light:size=32}$alignr${time %A, %B %d, %Y}$font
]]

View File

@ -0,0 +1,334 @@
#! /bin/bash
# _
# ___ ___ _ __ | | ___ _ __ _ ___ _ __
# / __/ _ \| '_ \| |/ / | | |/ _` |/ _ \ '_ \
# | (_| (_) | | | | <| |_| | (_| | __/ | | |
# \___\___/|_| |_|_|\_\\__, |\__, |\___|_| |_|
# |___/ |___/
#
# conkygen.sh
# Create a Conky configuration file dynamically
#
# Copyright (c) 2020 Vintage Salt <rehashedsalt@cock.li>
# Distributed under the terms of the MIT License
#
set -e
# Read-only set-once variables
declare -r _name="$(basename -- "$0")"
# Options
declare _optout="${XDG_CONFIG_HOME:-$HOME/.config}/conky/conky.conf"
declare -i _optbar=1
declare -i _optgraph=1
declare -i _opthelp
declare -i _optverbose
declare -i _opttopitems=4
# Working variables
declare -a _args
declare _return
# Helper functions
log() {
# Print a line to the terminal if _optverbose is greater than $2
# $2 defaults to 0
# loglevel 0: Daily-use messages
# loglevel 1: Detailed but not quite debugging
# loglevel 2: Definitely debugging
[ -z "$1" ] && return 1
if (( _optverbose >= ${2:-0} )); then
printf "%s\\n" "$1"
fi
}
warn() {
# Print a yellow line to the terminal, respecting _optverbose
[ -z "$1" ] && return 1
if (( _optverbose >= ${2:-0} )); then
if [ -t 1 ]; then
printf "\\e[33m%s\\e[0m\\n" "$1"
else
printf "WARN: %s\\n" "$1"
fi
fi
}
error() {
# Print a red line to the terminal, exit if $2 is specified
[ -z "$1" ] && return 1
if [ -t 2 ]; then
printf "\\e[31m%s\\e[0m\\n" "$1" 1>&2
else
printf "ERROR: %s\\n" "$1" 1>&2
fi
[ -z "$2" ] && return
exit "${2:-1}"
}
has() {
# Parse out all arguments and try to find them in path
# If an argument cannot be found, set _return and fail
for prog in "$@"; do
if ! command -v "$prog" > /dev/null 2>&1; then
_return="$prog"
return 1
fi
done
return 0
}
# Core program functions
printhelp() {
cat << EOF
Usage: $_name [OPTION]...
Generate a conky.conf configuration file in the current directory
-o Specify output file. Defaults to
~/.config/conky/conky.conf
-b Hide bars
-g Hide graphs
-h Print this help text
-t Number of items to print in top lists. Defaults to 4
-v Print more status messages. Stacks
Copyright (c) 2020 rehashedsalt@cock.li
Licensed under the MIT license
EOF
}
step_header() {
# Clobber output file with header
cat << EOF > "$_optout"
-- vim: ts=4 sw=4 noet ai cindent syntax=lua
-- WARNING:
-- This file was generated with conkygen. See gen.sh if you need to edit this!
-- Any changes you make here can and probably will be clobbered!
EOF
}
step_config() {
# Append config to the output file
cat << EOF >> "$_optout"
conky.config = {
own_window = true,
own_window_title = 'Conky',
own_window_class = 'Conky',
own_window_type = 'desktop',
own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager',
own_window_argb_visual = true,
own_window_transparent = true,
own_window_colour = '000000',
double_buffer = true,
cpu_avg_samples = 2,
net_avg_samples = 2,
no_buffers = true,
update_interval = 1,
use_xft = true,
font = 'IBM Plex Sans:style=Light:size=9',
default_color = '#ebdbb2',
color1 = '282828', -- Background
color2 = 'ebdbb2', -- Foreground
color3 = '32302f', -- Background-alt
color4 = 'b8bb26', -- Green (Battery)
color6 = '8ec07c', -- Cyan (Network)
color7 = 'fabd2f', -- Yellow (Disk)
color8 = '83a598', -- Blue (CPU)
color9 = 'de869b', -- Magenta (Memory)
alignment = 'top_left',
xinerama_head = 0,
minimum_height = 0,
minimum_width = 304,
border_width = 0,
border_outer_margin = 0,
border_inner_margin = 16,
gap_x = 22,
gap_y = 66,
format_human_readable = true,
temperature_unit = "celsius",
if_up_strictness = "link",
default_bar_height = 11,
default_bar_width = 130,
default_graph_height = 36,
draw_borders = true,
draw_outline = false,
draw_graph_borders = true,
draw_shades = false
}
EOF
}
step_text() {
local -r nproc="$(nproc)"
# Generate our actual functional Conky stuff
# Header
cat <<- 'EOF' >> "$_optout"
conky.text = [[
${font IBM Plex Sans:style=Light:size=64}$alignr${time %l:%M %p}$font
${font IBM Plex Sans:style=Light:size=18}$alignr${time %A, %B %d, %Y}$font
${font IBM Plex Sans:style=Light:size=12}${acpitemp}°C$alignr${no_update $nodename_short}$font
EOF
# CPU info
cat <<- 'EOF' >> "$_optout"
${color3}$hr$color
${font IBM Plex Sans:style=Medium:size=9}CPU$font: $freq_g GHz$alignr$cpu%
EOF
if (( _optgraph > 0 )); then
local gpl=1
if (( nproc <= 2 )); then
gpl=1
elif (( nproc <= 4 )); then
gpl=2
elif (( nproc <= 8 )); then
gpl=4
else
gpl=8
fi
local width=$(( ( 400 - ( gpl - 1 ) * 3 ) / gpl ))
log "Generating $gpl graphs per row of CPU core stats" 1
log "Graphs will be $width wide" 2
local cpuinfo
for i in $(seq 1 "$gpl" "$nproc"); do
# Generate lines
local line
for j in $(seq 0 $(( gpl - 1 ))); do
# Generate graphs
local cpu=$(( i + j ))
log "Generating graph for CPU $cpu" 2
if [ -z "$line" ]; then
line="\${cpugraph cpu$cpu 36,$width}"
else
line="$line \${cpugraph cpu$cpu 36,$width}"
fi
done
# Trim whitespace
line="\${color8}${line%" "}\$color"
log "Appending line: $line" 2
cpuinfo="$cpuinfo$line\n"
unset line
done
while [ "$cpuinfo" != "${cpuinfo%\\n}" ]; do
cpuinfo="${cpuinfo%\\n}"
done
echo -e "$cpuinfo" >> "$_optout"
fi
for i in $(seq $_opttopitems); do
echo "\${color8}\${top name $i}\$color\$alignr\${top cpu $i}%" >> "$_optout"
done
# Memory info
cat <<- 'EOF' >> "$_optout"
${color3}$hr$color
${font IBM Plex Sans:style=Medium:size=9}Memory$font: $mem / $memmax used$alignr$memperc%
EOF
if (( _optgraph > 0 )); then
echo -e '${color9}${memgraph}$color' >> "$_optout"
fi
if (( _optbar > 0 )); then
echo -e 'Memory$alignr$memeasyfree ${color9}${membar}$color' >> "$_optout"
if [ -n "$(swapon)" ]; then
echo "Swap\$alignr\$swapfree \${color9}\${swapbar}\$color" >> "$_optout"
fi
fi
for i in $(seq $_opttopitems); do
echo "\${color9}\${top_mem name $i}\$color\$alignr\${top_mem mem $i}%" >> "$_optout"
done
# Disk info
cat <<- 'EOF' >> "$_optout"
${color3}$hr$color
${font IBM Plex Sans:style=Medium:size=9}Disk$font (R/W):$alignr${diskio /dev/sda}
EOF
if (( _optgraph > 0 )); then
echo '${color7}${diskiograph_read /dev/sda 36,200} ${diskiograph_write /dev/sda 36,200}$color' >> "$_optout"
fi
# Mountpoint detection
if (( _optbar > 0 )); then
for mountpoint in / /home /var /usr /opt /boot /boot/efi; do
if mountpoint $mountpoint > /dev/null 2>&1; then
echo "$mountpoint\$alignr\${fs_free $mountpoint} \${color7}\${fs_bar $mountpoint}\$color" >> "$_optout"
fi
done
fi
for i in $(seq $_opttopitems); do
echo "\${color7}\${top_io name $i}\$color\$alignr\${top_io io_perc $i}%" >> "$_optout"
done
# Networking
cat <<-'EOF' >>"$_optout"
${color3}$hr$color
${font IBM Plex Sans:style=Medium:size=9}Network$font:${alignr}Default $gw_iface${if_up wlp1s0}
EOF
for interface in $(iw dev | awk '$1=="Interface"{print $2}'); do
echo "$interface (U/D): \$alignr\${addr $interface} / \${wireless_essid $interface}" >> "$_optout"
if (( _optgraph > 0 )); then
echo "\${color6}\${upspeedgraph $interface 36,200} \${downspeedgraph $interface 36,200}\$color" >> "$_optout"
fi
done
echo "]]" >> "$_optout"
}
genconfig() {
log "Generating config: $_optout"
step_header
step_config
step_text
}
# Main
main() {
# Parse out arguments
while [ -n "$1" ]; do
# Parse out flags
while getopts ":bgho:t:v" opt; do
case $opt in
b)
_optbar=0
;;
g)
_optgraph=0
;;
o)
_optout="$OPTARG"
;;
h)
_opthelp=1
;;
t)
_opttopitems="$OPTARG"
;;
v)
_optverbose+=1
;;
:)
error "Option requires argument: -$OPTARG" 2
;;
*)
error "Invalid option: -$OPTARG" 2
;;
esac
done
# Store arguments
shift $((OPTIND - 1))
if [ -n "$1" ]; then
_args+=("$1")
shift
fi
unset OPTIND
done
# Early hook for help
[ -n "$_opthelp" ] && printhelp && exit 0
# Validate critical options
if ! (( _opttopitems >= 0 )); then
error "Option -t requires non-negative integer as argument" 2
fi
# Validate core program dependencies
log "Validating dependencies" 2
if ! has awk basename iw seq; then
error "Failed to find program: $_return" 1
fi
# Do the do
genconfig
exit 0
}
main "$@"

View File

@ -0,0 +1,321 @@
[global]
### Display ###
# Which monitor should the notifications be displayed on.
monitor = 0
# Display notification on focused monitor. Possible modes are:
# mouse: follow mouse pointer
# keyboard: follow window with keyboard focus
# none: don't follow anything
#
# "keyboard" needs a window manager that exports the
# _NET_ACTIVE_WINDOW property.
# This should be the case for almost all modern window managers.
#
# If this option is set to mouse or keyboard, the monitor option
# will be ignored.
follow = mouse
# The geometry of the window:
# [{width}]x{height}[+/-{x}+/-{y}]
# The geometry of the message window.
# The height is measured in number of notifications everything else
# in pixels. If the width is omitted but the height is given
# ("-geometry x2"), the message window expands over the whole screen
# (dmenu-like). If width is 0, the window expands to the longest
# message displayed. A positive x is measured from the left, a
# negative from the right side of the screen. Y is measured from
# the top and down respectively.
# The width can be negative. In this case the actual width is the
# screen width minus the width defined in within the geometry option.
geometry = "500x8-6+50"
corner_radius = 0
# Show how many messages are currently hidden (because of geometry).
indicate_hidden = yes
# Shrink window if it's smaller than the width. Will be ignored if
# width is 0.
shrink = no
# The transparency of the window. Range: [0; 100].
# This option will only work if a compositing window manager is
# present (e.g. xcompmgr, compiz, etc.).
transparency = 0
# The height of the entire notification. If the height is smaller
# than the font height and padding combined, it will be raised
# to the font height and padding.
notification_height = 0
# Draw a line of "separator_height" pixel height between two
# notifications.
# Set to 0 to disable.
separator_height = 4
# Padding between text and separator.
padding = 12
# Horizontal padding.
horizontal_padding = 12
# Defines width in pixels of frame around the notification window.
# Set to 0 to disable.
frame_width = 4
# Defines color of the frame around the notification window.
frame_color = "#f2e5bc"
# Define a color for the separator.
# possible values are:
# * auto: dunst tries to find a color fitting to the background;
# * foreground: use the same color as the foreground;
# * frame: use the same color as the frame;
# * anything else will be interpreted as a X color.
separator_color = frame
# Sort messages by urgency.
sort = yes
# Don't remove messages, if the user is idle (no mouse or keyboard input)
# for longer than idle_threshold seconds.
# Set to 0 to disable.
idle_threshold = 120
### Text ###
#font = Monospace 8
font = Roboto 10
# The spacing between lines. If the height is smaller than the
# font height, it will get raised to the font height.
line_height = 0
# Possible values are:
# full: Allow a small subset of html markup in notifications:
# <b>bold</b>
# <i>italic</i>
# <s>strikethrough</s>
# <u>underline</u>
#
# For a complete reference see
# <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
#
# strip: This setting is provided for compatibility with some broken
# clients that send markup even though it's not enabled on the
# server. Dunst will try to strip the markup but the parsing is
# simplistic so using this option outside of matching rules for
# specific applications *IS GREATLY DISCOURAGED*.
#
# no: Disable markup parsing, incoming notifications will be treated as
# plain text. Dunst will not advertise that it has the body-markup
# capability if this is set as a global setting.
#
# It's important to note that markup inside the format option will be parsed
# regardless of what this is set to.
markup = full
# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# %n progress value if set without any extra characters
# Markup is allowed
format = "<span font='Bold'>%s</span> <span font='Light'>(%a)</span>\n%b"
# Alignment of message text.
# Possible values are "left", "center" and "right".
alignment = left
# Show age of message if message is older than show_age_threshold
# seconds.
# Set to -1 to disable.
show_age_threshold = 60
# Split notifications into multiple lines if they don't fit into
# geometry.
word_wrap = yes
# Ignore newlines '\n' in notifications.
ignore_newline = no
# Merge multiple notifications with the same content
stack_duplicates = true
# Hide the count of merged notifications with the same content
hide_duplicate_count = false
# Display indicators for URLs (U) and actions (A).
show_indicators = yes
### Icons ###
# Align icons left/right/off
icon_position = right
# Scale larger icons down to this size, set to 0 to disable
max_icon_size = 48
# Paths to default icons.
icon_path = /usr/share/icons/Papirus-Light/48x48/status/:/usr/share/icons/Papirus-Light/48x48/devices/:/usr/share/icons/Papirus-Light/48x48/apps
### History ###
# Should a notification popped up from history be sticky or timeout
# as if it would normally do.
sticky_history = yes
# Maximum amount of notifications kept in history
history_length = 20
### Misc/Advanced ###
# dmenu path.
dmenu = /usr/bin/rofi -dmenu -p dunst:
# Browser for opening urls in context menu.
browser = xdg-open
# Always run rule-defined scripts, even if the notification is suppressed
always_run_script = true
# Define the title of the windows spawned by dunst
title = Dunst
# Define the class of the windows spawned by dunst
class = Dunst
# Print a notification on startup.
# This is mainly for error detection, since dbus (re-)starts dunst
# automatically after a crash.
startup_notification = false
### Legacy
# Use the Xinerama extension instead of RandR for multi-monitor support.
# This setting is provided for compatibility with older nVidia drivers that
# do not support RandR and using it on systems that support RandR is highly
# discouraged.
#
# By enabling this setting dunst will not be able to detect when a monitor
# is connected or disconnected which might break follow mode if the screen
# layout changes.
force_xinerama = false
# Experimental features that may or may not work correctly. Do not expect them
# to have a consistent behaviour across releases.
[experimental]
# Calculate the dpi to use on a per-monitor basis.
# If this setting is enabled the Xft.dpi value will be ignored and instead
# dunst will attempt to calculate an appropriate dpi value for each monitor
# using the resolution and physical size. This might be useful in setups
# where there are multiple screens with very different dpi values.
per_monitor_dpi = false
[shortcuts]
# Shortcuts are specified as [modifier+][modifier+]...key
# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
# "mod3" and "mod4" (windows-key).
# Xev might be helpful to find names for keys.
# Close notification.
close = mod1+shift+space
# Close all notifications.
close_all = mod1+shift+enter
# Redisplay last message(s).
# On the US keyboard layout "grave" is normally above TAB and left
# of "1". Make sure this key actually exists on your keyboard layout,
# e.g. check output of 'xmodmap -pke'
history = mod1+shift+d
# Context menu.
context = mod1+shift+o
[urgency_low]
# IMPORTANT: colors have to be defined in quotation marks.
# Otherwise the "#" and following would be interpreted as a comment.
background = "#fbf1c7"
foreground = "#3c3836"
timeout = 10
# Icon for notifications with low urgency, uncomment to enable
#icon = /path/to/icon
[urgency_normal]
background = "#fbf1c7"
foreground = "#3c3836"
timeout = 10
# Icon for notifications with normal urgency, uncomment to enable
#icon = /path/to/icon
[urgency_critical]
background = "#fbf1c7"
foreground = "#fb4934"
timeout = 0
# Icon for notifications with critical urgency, uncomment to enable
#icon = /path/to/icon
# Every section that isn't one of the above is interpreted as a rules to
# override settings for certain messages.
# Messages can be matched by "appname", "summary", "body", "icon", "category",
# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
# "background", "new_icon" and "format".
# Shell-like globbing will get expanded.
#
# SCRIPTING
# You can specify a script that gets run when the rule matches by
# setting the "script" option.
# The script will be called as follows:
# script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: if you don't want a notification to be displayed, set the format
# to "".
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.
#[espeak]
# summary = "*"
# script = dunst_espeak.sh
#[script-test]
# summary = "*script*"
# script = dunst_test.sh
#[ignore]
# # This notification will not be displayed
# summary = "foobar"
# format = ""
#[history-ignore]
# # This notification will not be saved in history
# summary = "foobar"
# history_ignore = yes
#[signed_on]
# appname = Pidgin
# summary = "*signed on*"
# urgency = low
#
#[signed_off]
# appname = Pidgin
# summary = *signed off*
# urgency = low
#
#[says]
# appname = Pidgin
# summary = *says*
# urgency = critical
#
#[twitter]
# appname = Pidgin
# summary = *twitter.com*
# urgency = normal
#
# vim: ft=cfg

View File

@ -0,0 +1,321 @@
[global]
### Display ###
# Which monitor should the notifications be displayed on.
monitor = 0
# Display notification on focused monitor. Possible modes are:
# mouse: follow mouse pointer
# keyboard: follow window with keyboard focus
# none: don't follow anything
#
# "keyboard" needs a window manager that exports the
# _NET_ACTIVE_WINDOW property.
# This should be the case for almost all modern window managers.
#
# If this option is set to mouse or keyboard, the monitor option
# will be ignored.
follow = mouse
# The geometry of the window:
# [{width}]x{height}[+/-{x}+/-{y}]
# The geometry of the message window.
# The height is measured in number of notifications everything else
# in pixels. If the width is omitted but the height is given
# ("-geometry x2"), the message window expands over the whole screen
# (dmenu-like). If width is 0, the window expands to the longest
# message displayed. A positive x is measured from the left, a
# negative from the right side of the screen. Y is measured from
# the top and down respectively.
# The width can be negative. In this case the actual width is the
# screen width minus the width defined in within the geometry option.
geometry = "500x8-6+50"
corner_radius = 0
# Show how many messages are currently hidden (because of geometry).
indicate_hidden = yes
# Shrink window if it's smaller than the width. Will be ignored if
# width is 0.
shrink = no
# The transparency of the window. Range: [0; 100].
# This option will only work if a compositing window manager is
# present (e.g. xcompmgr, compiz, etc.).
transparency = 0
# The height of the entire notification. If the height is smaller
# than the font height and padding combined, it will be raised
# to the font height and padding.
notification_height = 0
# Draw a line of "separator_height" pixel height between two
# notifications.
# Set to 0 to disable.
separator_height = 4
# Padding between text and separator.
padding = 12
# Horizontal padding.
horizontal_padding = 12
# Defines width in pixels of frame around the notification window.
# Set to 0 to disable.
frame_width = 4
# Defines color of the frame around the notification window.
frame_color = "#32302f"
# Define a color for the separator.
# possible values are:
# * auto: dunst tries to find a color fitting to the background;
# * foreground: use the same color as the foreground;
# * frame: use the same color as the frame;
# * anything else will be interpreted as a X color.
separator_color = frame
# Sort messages by urgency.
sort = yes
# Don't remove messages, if the user is idle (no mouse or keyboard input)
# for longer than idle_threshold seconds.
# Set to 0 to disable.
idle_threshold = 120
### Text ###
#font = Monospace 8
font = Roboto 10
# The spacing between lines. If the height is smaller than the
# font height, it will get raised to the font height.
line_height = 0
# Possible values are:
# full: Allow a small subset of html markup in notifications:
# <b>bold</b>
# <i>italic</i>
# <s>strikethrough</s>
# <u>underline</u>
#
# For a complete reference see
# <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
#
# strip: This setting is provided for compatibility with some broken
# clients that send markup even though it's not enabled on the
# server. Dunst will try to strip the markup but the parsing is
# simplistic so using this option outside of matching rules for
# specific applications *IS GREATLY DISCOURAGED*.
#
# no: Disable markup parsing, incoming notifications will be treated as
# plain text. Dunst will not advertise that it has the body-markup
# capability if this is set as a global setting.
#
# It's important to note that markup inside the format option will be parsed
# regardless of what this is set to.
markup = full
# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# %n progress value if set without any extra characters
# Markup is allowed
format = "<span font='Bold'>%s</span> <span font='Light'>(%a)</span>\n%b"
# Alignment of message text.
# Possible values are "left", "center" and "right".
alignment = left
# Show age of message if message is older than show_age_threshold
# seconds.
# Set to -1 to disable.
show_age_threshold = 60
# Split notifications into multiple lines if they don't fit into
# geometry.
word_wrap = yes
# Ignore newlines '\n' in notifications.
ignore_newline = no
# Merge multiple notifications with the same content
stack_duplicates = true
# Hide the count of merged notifications with the same content
hide_duplicate_count = false
# Display indicators for URLs (U) and actions (A).
show_indicators = yes
### Icons ###
# Align icons left/right/off
icon_position = right
# Scale larger icons down to this size, set to 0 to disable
max_icon_size = 48
# Paths to default icons.
icon_path = /usr/share/icons/Papirus-Dark/48x48/status/:/usr/share/icons/Papirus-Dark/48x48/devices/:/usr/share/icons/Papirus-Dark/48x48/apps
### History ###
# Should a notification popped up from history be sticky or timeout
# as if it would normally do.
sticky_history = yes
# Maximum amount of notifications kept in history
history_length = 20
### Misc/Advanced ###
# dmenu path.
dmenu = /usr/bin/rofi -dmenu -p dunst:
# Browser for opening urls in context menu.
browser = xdg-open
# Always run rule-defined scripts, even if the notification is suppressed
always_run_script = true
# Define the title of the windows spawned by dunst
title = Dunst
# Define the class of the windows spawned by dunst
class = Dunst
# Print a notification on startup.
# This is mainly for error detection, since dbus (re-)starts dunst
# automatically after a crash.
startup_notification = false
### Legacy
# Use the Xinerama extension instead of RandR for multi-monitor support.
# This setting is provided for compatibility with older nVidia drivers that
# do not support RandR and using it on systems that support RandR is highly
# discouraged.
#
# By enabling this setting dunst will not be able to detect when a monitor
# is connected or disconnected which might break follow mode if the screen
# layout changes.
force_xinerama = false
# Experimental features that may or may not work correctly. Do not expect them
# to have a consistent behaviour across releases.
[experimental]
# Calculate the dpi to use on a per-monitor basis.
# If this setting is enabled the Xft.dpi value will be ignored and instead
# dunst will attempt to calculate an appropriate dpi value for each monitor
# using the resolution and physical size. This might be useful in setups
# where there are multiple screens with very different dpi values.
per_monitor_dpi = false
[shortcuts]
# Shortcuts are specified as [modifier+][modifier+]...key
# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
# "mod3" and "mod4" (windows-key).
# Xev might be helpful to find names for keys.
# Close notification.
close = mod1+shift+space
# Close all notifications.
close_all = mod1+shift+enter
# Redisplay last message(s).
# On the US keyboard layout "grave" is normally above TAB and left
# of "1". Make sure this key actually exists on your keyboard layout,
# e.g. check output of 'xmodmap -pke'
history = mod1+shift+d
# Context menu.
context = mod1+shift+o
[urgency_low]
# IMPORTANT: colors have to be defined in quotation marks.
# Otherwise the "#" and following would be interpreted as a comment.
background = "#282828"
foreground = "#ebdbb2"
timeout = 10
# Icon for notifications with low urgency, uncomment to enable
#icon = /path/to/icon
[urgency_normal]
background = "#282828"
foreground = "#ebdbb2"
timeout = 10
# Icon for notifications with normal urgency, uncomment to enable
#icon = /path/to/icon
[urgency_critical]
background = "#282828"
foreground = "#fabd2f"
timeout = 0
# Icon for notifications with critical urgency, uncomment to enable
#icon = /path/to/icon
# Every section that isn't one of the above is interpreted as a rules to
# override settings for certain messages.
# Messages can be matched by "appname", "summary", "body", "icon", "category",
# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
# "background", "new_icon" and "format".
# Shell-like globbing will get expanded.
#
# SCRIPTING
# You can specify a script that gets run when the rule matches by
# setting the "script" option.
# The script will be called as follows:
# script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: if you don't want a notification to be displayed, set the format
# to "".
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.
#[espeak]
# summary = "*"
# script = dunst_espeak.sh
#[script-test]
# summary = "*script*"
# script = dunst_test.sh
#[ignore]
# # This notification will not be displayed
# summary = "foobar"
# format = ""
#[history-ignore]
# # This notification will not be saved in history
# summary = "foobar"
# history_ignore = yes
#[signed_on]
# appname = Pidgin
# summary = "*signed on*"
# urgency = low
#
#[signed_off]
# appname = Pidgin
# summary = *signed off*
# urgency = low
#
#[says]
# appname = Pidgin
# summary = *says*
# urgency = critical
#
#[twitter]
# appname = Pidgin
# summary = *twitter.com*
# urgency = normal
#
# vim: ft=cfg

View File

@ -0,0 +1,16 @@
[Settings]
gtk-theme-name=Materia-Gruvbox
gtk-icon-theme-name=Papirus-Dark-Gruvbox
gtk-font-name=IBM Plex Sans Medium 10
gtk-cursor-theme-name=Breeze_Snow
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_BOTH
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=1
gtk-menu-images=1
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=1
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintslight
gtk-xft-rgba=rgb

View File

@ -0,0 +1,78 @@
ACCENT_BG=83a598
ARC_TRANSPARENCY=True
ARC_WIDGET_BORDER_COLOR=59554a
BASE16_GENERATE_DARK=False
BASE16_INVERT_TERMINAL=False
BASE16_MILD_TERMINAL=False
BG=282828
BTN_BG=282828
BTN_FG=610a7a
BTN_OUTLINE_OFFSET=-3
BTN_OUTLINE_WIDTH=1
CARET1_FG=cac10f
CARET2_FG=cac10f
CARET_SIZE=0.04
CINNAMON_OPACITY=1.0
FG=ebdbb2
GRADIENT=0.01
GTK3_GENERATE_DARK=True
HDR_BG=32302f
HDR_BTN_BG=282828
HDR_BTN_FG=01bf9b
HDR_FG=ebdbb2
ICONS_ARCHDROID=d2f000
ICONS_DARK=282828
ICONS_LIGHT=bc8ef4
ICONS_LIGHT_FOLDER=83a598
ICONS_MEDIUM=458588
ICONS_NUMIX_STYLE=0
ICONS_STYLE=papirus_icons
ICONS_SYMBOLIC_ACTION=ebdbb2
ICONS_SYMBOLIC_PANEL=ebdbb2
MATERIA_PANEL_OPACITY=0.6
MATERIA_SELECTION_OPACITY=0.32
MATERIA_STYLE_COMPACT=True
MENU_BG=12afaf
MENU_FG=01bf9b
NAME="Gruvbox/Dark"
OUTLINE_WIDTH=1
ROUNDNESS=6
SEL_BG=83a598
SEL_FG=282828
SPACING=3
SPOTIFY_PROTO_BG=282828
SPOTIFY_PROTO_FG=ebdbb2
SPOTIFY_PROTO_SEL=b8bb26
SURUPLUS_GRADIENT1=21826e
SURUPLUS_GRADIENT2=f728dd
SURUPLUS_GRADIENT_ENABLED=False
TERMINAL_ACCENT_COLOR=f728dd
TERMINAL_BACKGROUND=237095
TERMINAL_BASE_TEMPLATE=material
TERMINAL_COLOR0=36868b
TERMINAL_COLOR1=ffec53
TERMINAL_COLOR10=acffb8
TERMINAL_COLOR11=fff453
TERMINAL_COLOR12=91ffff
TERMINAL_COLOR13=bd68aa
TERMINAL_COLOR14=36faed
TERMINAL_COLOR15=fcffff
TERMINAL_COLOR2=9bff9d
TERMINAL_COLOR3=ffff5a
TERMINAL_COLOR4=13fdff
TERMINAL_COLOR5=f972b6
TERMINAL_COLOR6=10eadb
TERMINAL_COLOR7=dfffff
TERMINAL_COLOR8=479ba2
TERMINAL_COLOR9=fffba0
TERMINAL_FOREGROUND=d2f000
TERMINAL_THEME_ACCURACY=128
TERMINAL_THEME_AUTO_BGFG=True
TERMINAL_THEME_EXTEND_PALETTE=False
TERMINAL_THEME_MODE=smarty
THEME_STYLE=materia
TXT_BG=282828
TXT_FG=d2f000
UNITY_DEFAULT_LAUNCHER_STYLE=False
WM_BORDER_FOCUS=f728dd
WM_BORDER_UNFOCUS=c158ce

View File

@ -0,0 +1,288 @@
# vim:ft=dosini
# _ _
# _ __ ___ | |_ _| |__ __ _ _ __
# | '_ \ / _ \| | | | | '_ \ / _` | '__|
# | |_) | (_) | | |_| | |_) | (_| | |
# | .__/ \___/|_|\__, |_.__/ \__,_|_|
# |_| |___/
#
# Copyright (c) 2020 Vintage Salt <rehashedsalt@cock.li>
# Distributed under the terms of the MIT License
#
## VARIABLES
[res/colors]
red = #fb4934
green = #b8bb26
yellow = #fabd2f
blue = #83a598
magenta = #de869b
cyan = #8ec07c
white = #ebdbb2
black = #282828
gray = #32302f
bg = ${env:PB_COLOR_BG:#282828}
fg = ${env:PB_COLOR_FG:#ebdbb2}
border = ${env:PB_COLOR_BORDER:#32302f}
selection = #83a598
[res/config]
bar-width = 50
bar-fill = |
bar-empty = |
bar-indicator =
border-size = 4
padding = 2
[settings]
screenchange-reload = true
format-padding = ${res/config.padding}
format-background = ${res/colors.bg}
## BARS
[template/bar]
bottom = false
wm-restack = ${env:PB_WM_RESTACK:i3}
tray-maxsize = 16
background = ${res/colors.bg}
foreground = ${res/colors.fg}
border-color = ${res/colors.border}
tray-background = ${res/colors.bg}
height = 40
width = 100%
padding = 2
border-bottom-size = ${res/config.border-size}
font-0 = "IBM Plex Sans:style=Medium:size=10;2"
font-1 = "Deja Vu Sans Mono:style=Regular:size=10;2"
font-2 = "IBM Plex Sans:style=Bold:size=10;2"
font-3 = "Fork Awesome:style=Regular:size=12;2"
font-4 = "Font Awesome 5 Free:style=Regular:size=12;2"
font-5 = "Font Awesome 5 Brands:style=Regular:size=12;2"
[bar/primary]
monitor = ${env:PB_MONITOR:eDP-1}
inherit = template/bar
tray-position = center
modules-left = i3 bspwm service-ansible service-backup reboot-required
modules-right = backlight pulse battery | date
[bar/secondary]
monitor= ${env:PB_MONITOR:HDMI-A-0}
inherit = template/bar
modules-left = i3 bspwm
modules-right = wlan-desktop-stats mpd | date
## MODULES
[module/|]
type = custom/text
content = |
content-foreground = ${res/colors.border}
[module/backlight]
type = internal/xbacklight
format = <bar>
format-prefix = "BRI: "
format-prefix-foreground = ${res/colors.blue}
bar-width = ${res/config.bar-width}
bar-fill = ${res/config.bar-fill}
bar-fill-foreground = ${res/colors.blue}
bar-empty = ${res/config.bar-empty}
bar-empty-foreground = ${res/colors.border}
bar-indicator = ${res/config.bar-indicator}
[module/battery]
type = internal/battery
full-at = 100
time-format = %H:%M
interval = 15
format-charging = <ramp-capacity>
format-charging-foreground = ${res/colors.green}
format-discharging = <ramp-capacity>
format-full = <ramp-capacity>
format-full-foreground = ${res/colors.green}
ramp-capacity-0 = 
ramp-capacity-0-foreground = ${res/colors.yellow}
ramp-capacity-1 = 
ramp-capacity-2 = 
ramp-capacity-3 = 
ramp-capacity-4 = 
[module/bspwm]
type = internal/bspwm
format = <label-state> <label-mode>
format-padding = 0
enable-scroll = false
pin-workspaces = true
label-mode-padding = 4
label-mode-background = ${res/colors.red}
label-focused = %name%
label-focused-padding = 4
label-focused-font = 3
label-focused-foreground = ${res/colors.bg}
label-focused-background = ${res/colors.selection}
label-occupied = %name%
label-occupied-padding = 4
label-occupied-font = 3
label-urgent = %name%
label-urgent-padding = 4
label-urgent-font = 3
label-urgent-foreground = ${res/colors.bg}
label-urgent-background = ${res/colors.yellow}
label-empty = %name%
label-empty-foreground = ${res/colors.border}
label-empty-padding = 4
[module/cpu]
type = internal/cpu
interval = 1
format = <bar-load>
format-prefix = "CPU: "
format-prefix-foreground = ${res/colors.blue}
bar-load-width = ${res/config.bar-width}
bar-load-fill = ${res/config.bar-fill}
bar-load-fill-foreground = ${res/colors.blue}
bar-load-empty = ${res/config.bar-empty}
bar-load-empty-foreground = ${res/colors.border}
bar-load-indicator = ${res/config.bar-indicator}
[module/date]
type = internal/date
date = %a %b %d
time = %I:%M %p
interval = 5
format = <label>
label = %date% %time%
[module/fshome]
type = internal/fs
mount-0 = /home
format-mounted = <bar-used> <label-mounted>
format-mounted-prefix = "Home: "
format-mounted-prefix-foreground = ${res/colors.yellow}
format-unmounted =
label-mounted = %free% free
bar-used-width = ${res/config.bar-width}
bar-used-fill = ${res/config.bar-fill}
bar-used-fill-foreground = ${res/colors.yellow}
bar-used-empty = ${res/config.bar-empty}
bar-used-empty-foreground = ${res/colors.border}
bar-used-indicator = ${res/config.bar-indicator}
[module/fsroot]
type = internal/fs
mount-0 = /
format-mounted = <bar-used> <label-mounted>
format-mounted-prefix = "Root: "
format-mounted-prefix-foreground = ${res/colors.yellow}
label-mounted = %free% free
bar-used-width = ${res/config.bar-width}
bar-used-fill = ${res/config.bar-fill}
bar-used-fill-foreground = ${res/colors.yellow}
bar-used-empty = ${res/config.bar-empty}
bar-used-empty-foreground = ${res/colors.border}
bar-used-indicator = ${res/config.bar-indicator}
[module/i3]
type = internal/i3
format = <label-state> <label-mode>
format-padding = 0
enable-scroll = false
pin-workspaces = true
label-mode-padding = 4
label-mode-background = ${res/colors.red}
label-focused = %name%
label-focused-padding = 4
label-focused-foreground = ${res/colors.bg}
label-focused-background = ${res/colors.selection}
label-unfocused = %name%
label-unfocused-background = ${res/colors.bg}
label-unfocused-padding = 4
label-visible = %name%
label-visible-background = ${res/colors.border}
label-visible-padding = 4
[module/memory]
type = internal/memory
format = <bar-used> <label>
format-prefix = "Memory: "
format-prefix-foreground = ${res/colors.magenta}
label = %gb_free:8%
bar-used-width = ${res/config.bar-width}
bar-used-fill = ${res/config.bar-fill}
bar-used-fill-foreground = ${res/colors.magenta}
bar-used-empty = ${res/config.bar-empty}
bar-used-empty-foreground = ${res/colors.border}
bar-used-indicator = ${res/config.bar-indicator}
[module/mpd]
type=internal/mpd
format-online=<label-song> <label-time>
label-song=%artist% - %title%
label-time=%elapsed% / %total%
[module/pulse]
type = internal/pulseaudio
format-volume = <label-volume>
format-volume-prefix = " "
format-muted = <label-muted>
format-muted-prefix = " "
format-muted-foreground = ${res/colors.border}
[module/reboot-required]
type = custom/script
exec = "echo Reboot required"
exec-if = "[ -f /var/run/reboot-required ]"
format-foreground = ${res/colors.yellow}
[module/service-ansible]
type = custom/script
interval = 5
exec = "echo "
exec-if = "systemctl is-failed --quiet ansible-pull.service"
format-foreground = ${res/colors.red}
[module/service-backup]
type = custom/script
interval = 5
exec = "echo "
exec-if = "systemctl is-failed --quiet backup.service"
format-foreground = ${res/colors.red}
[module/wlan-laptop]
type = internal/network
interface = wlp0s20f3
format-connected-prefix = "WLAN: "
format-connected-prefix-foreground = ${res/colors.green}
format-disconnected-prefix = "WLAN: "
format-disconnected-prefix-foreground = ${res/colors.green}
label-connected = %essid%
label-disconnected = Disconnected
[module/wlan-desktop]
type = internal/network
interface = wlp5s0
format-connected-prefix = "WLAN: "
format-connected-prefix-foreground = ${res/colors.green}
format-disconnected-prefix = "WLAN: "
format-disconnected-prefix-foreground = ${res/colors.green}
label-connected = %essid%
label-disconnected = Disconnected
[module/wlan-desktop-stats]
type = internal/network
interface = wlp5s0
label-connected = U %upspeed% D %downspeed%
[module/xkeyboard]
type = internal/xkeyboard
format = <label-layout>
label-layout = %name%
[module/xwindow]
type = internal/xwindow
label = %title%
label-maxlen = 100

View File

@ -0,0 +1,82 @@
#! /bin/bash
#
# launch.sh
# A Polybar launch script with a heck of a lot of compat
# Copyright (C) 2019 Vintage Salt <rehashedsalt@cock.li>
#
# Distributed under terms of the MIT license.
#
log() {
[ -z "$1" ] && return 1
printf "$1\\n"
}
# Trap our exit
die() {
kill $(jobs -p)
}
trap die EXIT
# Steps
step_fallback() {
if ! command -v polybar > /dev/null 2>&1; then
if command -v tint2 > /dev/null 2>&1; then
log "Executing fallback"
exec tint2
fi
log "No valid bars found"
exit 51
fi
}
step_configure() {
# Restack compatibility
if pgrep -U "$UID" bspwm > /dev/null 2>&1; then
export PB_WM_RESTACK="bspwm"
elif pgrep -U "$UID" i3 > /dev/null 2>&1; then
export PB_WM_RESTACK="i3"
fi
# Light theme
if [ "$THEME" == "light" ]; then
export PB_COLOR_BG="#fbf1c7"
export PB_COLOR_FG="#3c3836"
export PB_COLOR_BORDER="#f2e5bc"
fi
}
step_spawn_primary() {
# Spawn bars on the primary monitor
log "Spawning primary bars"
export PB_MONITOR=$(xrandr -q | awk '/primary/{print $1}')
polybar -r primary &
polybar -r primary-2 &
}
step_spawn_secondary() {
# Spawn more for each secondary
log "Spawning secondary bars"
export secondary_monitors=$(xrandr -q | grep ' connected' | grep -v 'primary' | awk '{print $1}')
if [ "$secondary_monitors" == "" ]; then
return 0
fi
for monitor in $secondary_monitors; do
PB_MONITOR=$monitor
polybar -r secondary &
polybar -r secondary-2 &
done
}
step_wait() {
# And wait
log "Waiting"
wait
}
# Main
main() {
step_fallback
step_configure
step_spawn_primary
step_spawn_secondary
step_wait
}
main "$@"

View File

@ -0,0 +1,28 @@
[Appearance]
color_scheme_path=/usr/share/qt5ct/colors/airy.conf
custom_palette=false
icon_theme=Papirus-Dark-Gruvbox
standard_dialogs=kde
style=Breeze
[Fonts]
fixed=@Variant(\0\0\0@\0\0\0\x16\0I\0n\0\x63\0o\0n\0s\0o\0l\0\x61\0t\0\x61@$\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x39\x10)
general=@Variant(\0\0\0@\0\0\0\x1a\0I\0\x42\0M\0 \0P\0l\0\x65\0x\0 \0S\0\x61\0n\0s@$\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x39\x10)
[Interface]
activate_item_on_single_click=2
buttonbox_layout=2
cursor_flash_time=1000
dialog_buttons_have_icons=2
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\x3\xc3\0\0\0\x6\0\0\ay\0\0\x4\x5\0\0\x3\xc7\0\0\0\n\0\0\au\0\0\x4\x1\0\0\0\0\0\0\0\0\a\x80\0\0\x3\xc7\0\0\0\n\0\0\au\0\0\x4\x1)

View File

@ -0,0 +1,108 @@
/*
* config.rasi
* Copyright (C) 2020 Vintage Salt <rehashedsalt@cock.li>
*
* Distributed under terms of the MIT License
*
* See rofi-theme(5) for documentation
*/
configuration {
matching: "normal";
show-icons: true;
icon-theme: "Papirus-Gruvbox-Dark";
modi: "drun,ssh,window";
}
* {
background: #282828;
background-alt: #32302f;
foreground: #ebdbb2;
foreground-alt: #fb4934;
yellow: #fabd2f;
blue: #83a598;
cyan: #8ec07c;
text-color: @foreground;
background-color: @background;
font: "IBM Plex Sans 10";
}
#window {
location: southwest;
anchor: southwest;
border-color: @background-alt;
background-color: @background;
border: 4px 4px 0 0;
height: 60%;
width: 30%;
}
#inputbar {
background-color: @background-alt;
padding: 1em;
}
#case-indicator {
enabled: false;
background-color: @background-alt;
text-color: @foreground-alt;
}
#prompt {
enabled: false;
background-color: @background-alt;
font: "IBM Plex Sans Medium 12";
padding: 0.5em;
}
#entry {
background-color: @background-alt;
font: "IBM Plex Sans 12";
padding: 0.5em;
}
#message {
padding: 4px;
}
#textbox {
padding: 4px 12px 4px 12px;
font-color: @foreground-alt;
}
#listview {
padding: 1em;
}
#element {
orientation: vertical;
padding: 1em;
}
#element normal active {
text-color: @cyan;
}
#element normal urgent {
text-color: @yellow;
}
#element selected normal {
background-color: @blue;
text-color: @background;
}
#element selected active {
background-color: @cyan;
text-color: @background;
}
#element selected urgent {
background-color: @yellow;
text-color: @background;
}
#sidebar {
}
#button {
padding: 8px;
}
#button selected {
background-color: @background-alt;
}
/* vim:ft=css
*/

View File

@ -0,0 +1,74 @@
# vim:ft=bash
## GENERAL HOTKEYS
alt + Return
$TERMINAL
alt + space
rofi -show drun
alt + backslash
rofi -show ssh
alt + Tab
rofi -show window
alt + Escape
pkill -USR1 -x sxhkd
ctrl + alt + l
loginctl lock-session
## APPLICATION TOGGLES
alt + p
killall pavucontrol-qt || pavucontrol-qt
alt + shift + m
killall picom || ~/.firestarter/firestarter start compositor
## HARDWARE CONTROLS
XF86Audio{Raise,Lower}Volume
pactl set-sink-volume 0 {+,-}5%
XF86AudioMute
pactl set-sink-mute 0 toggle
XF86MonBrightness{Up,Down}
xbacklight {-inc,-dec} 5
## BSPWM
# Reload configs
alt + shift + r
~/.config/bspwm/bspwmrc
# Close or kill node
alt + {_,shift + }q
bspc node -{c,k}
# Focus or move the node in the given direction
alt + {_,shift + }{h,j,k,l}
bspc node -{f,s} {west,south,north,east}
# Focus or send to the given desktop
alt + {_,shift + }{1-9,0}
bspc {desktop -f,node -d} '{1-9,10}'
# Toggle monocle mode
alt + m
bspc desktop -l next
# Switch current node with biggest on current desktop
alt + g
bspc node -s biggest.local --follow
# Focus the node for the given path jump
alt + {a,c}
bspc node -f {@parent,biggest.descendant_of}
# Rotate, equalize, or balance selection
alt + {r,e,u}
bspc node -{R 90,E,B @/}
# Set window states
alt + {t,shift + t,f,shift + f}
bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
# Set node flags
alt + ctrl + {x,y,z}
bspc node -g {locked,sticky,private}
# Focus the next/previous node in the current desktop
alt + {_,shift + }c
bspc node -f {next,prev}.local
# Focus the next/previous desktop in the current monitor
alt + {comma,period}
bspc desktop -f {prev,next}.local
# Expand a window by moving one of its side outward
super + alt + {h,j,k,l}
bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
# Contract a window by moving one of its side inward
super + alt + shift + {h,j,k,l}
bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}

View File

@ -0,0 +1,7 @@
# Managed manually
# If overwritten by lxappearance, assume it will be overwritten AGAIN by dot management scripts
gtk-theme-name="Materia-Gruvbox"
gtk-icon-theme-name="Papirus-Dark-Gruvbox"
gtk-font-name="IBM Plex Sans Medium 10"
gtk-cursor-theme-name="Breeze_Snow"

View File

@ -0,0 +1 @@
object-select.svg

View File

@ -0,0 +1 @@
database-index.svg

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 8 1 C 4.137 1 1 4.137 1 8 C 1 11.863 4.137 15 8 15 C 11.863 15 15 11.863 15 8 C 15 4.137 11.863 1 8 1 z M 8 3 C 9.0194 3 9.959 3.28763 10.75 3.8125 L 3.8125 10.75 C 3.28763 9.95898 3 9.0194 3 8 C 3 5.2407 5.2408 3 8 3 z M 12.1875 5.25 C 12.71237 6.04102 13 6.9806 13 8 C 13 10.7592 10.7592 13 8 13 C 6.9806 13 6.041 12.71237 5.25 12.1875 L 12.1875 5.25 z"/>
</svg>

After

Width:  |  Height:  |  Size: 674 B

View File

@ -0,0 +1 @@
list-add.svg

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" version="1.1">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 3,1 C 1.89,1 1,1.89 1,3 V 13 C 1,14.11 1.89,15 3,15 H 13 C 14.11,15 15,14.11 15,13 V 3 C 15,1.89 14.11,1 13,1 Z M 8,4 C 10.21,4 12,5.79 12,8 V 8.5 C 12,9.33 11.33,10 10.5,10 10.06,10 9.64,9.8 9.35,9.46 9,9.79 8.52,10 8,10 6.9,10 6,9.1 6,8 6,6.9 6.9,6 8,6 9.1,6 10,6.9 10,8 V 8.5 C 10,8.78 10.22,9 10.5,9 10.78,9 11,8.78 11,8.5 V 8 C 11,6.34 9.66,5 8,5 6.34,5 5,6.34 5,8 5,9.66 6.34,11 8,11 H 10.5 C 10.5,11 11,11 11,11.5 10.97,12 10.5,12 10.5,12 H 8 C 5.79,12 4,10.21 4,8 4,5.79 5.79,4 8,4 Z M 8,7 C 7.45,7 7,7.45 7,8 7,8.55 7.45,9 8,9 8.55,9 9,8.55 9,8 9,7.45 8.55,7 8,7 Z"/>
</svg>

After

Width:  |  Height:  |  Size: 887 B

View File

@ -0,0 +1 @@
address-book-new.svg

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" version="1.1" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 3 1 L 3 11 L 1 11 L 1 13 L 3 13 L 3 15 L 5 15 L 5 13 L 15 13 L 15 11 L 5 11 L 5 9.5 L 7.90625 7.3203125 L 10.027344 9.4414062 L 15 4.0878906 L 15 1.1484375 L 9.9726562 6.5585938 L 8.09375 4.6796875 L 5 7 L 5 1 L 3 1 z"/>
</svg>

After

Width:  |  Height:  |  Size: 551 B

View File

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" version="1.1" viewBox="0 0 16 16">
<defs>
<linearGradient id="linearGradient4177" x1="8" x2="8" y1="15" y2="1" gradientUnits="userSpaceOnUse">
<stop style="stop-color:#ebdbb2" offset="0"/>
<stop style="stop-color:#ebdbb2;stop-opacity:0" offset="1" stop-opacity="0"/>
</linearGradient>
</defs>
<path style="fill:url(#linearGradient4177)" d="M 1 1 L 1 15 L 15 15 L 15 1 L 1 1 z"/>
</svg>

After

Width:  |  Height:  |  Size: 462 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 11 2 A 3 3 0 0 0 8.1757812 4 L 1 4 L 1 6 L 8.1738281 6 A 3 3 0 0 0 11 8 A 3 3 0 0 0 13.824219 6 L 15 6 L 15 4 L 13.826172 4 A 3 3 0 0 0 11 2 z M 6 8 A 3 3 0 0 0 3.1757812 10 L 1 10 L 1 12 L 3.1738281 12 A 3 3 0 0 0 6 14 A 3 3 0 0 0 8.8242188 12 L 15 12 L 15 10 L 8.8261719 10 A 3 3 0 0 0 6 8 z"/>
</svg>

After

Width:  |  Height:  |  Size: 613 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 4 1 L 4 3.1738281 A 3 3 0 0 0 2 6 A 3 3 0 0 0 4 8.8242188 L 4 15 L 6 15 L 6 8.8261719 A 3 3 0 0 0 8 6 A 3 3 0 0 0 6 3.1757812 L 6 1 L 4 1 z M 10 1 L 10 8.1738281 A 3 3 0 0 0 8 11 A 3 3 0 0 0 10 13.824219 L 10 15 L 12 15 L 12 13.826172 A 3 3 0 0 0 14 11 A 3 3 0 0 0 12 8.1757812 L 12 1 L 10 1 z"/>
</svg>

After

Width:  |  Height:  |  Size: 613 B

View File

@ -0,0 +1 @@
address-book-new.svg

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 1 0 L 1 16 L 3 16 L 3 15 L 3 0 L 1 0 z M 3 15 L 5.5 15 L 6.5625 12 L 11.4375 12 L 12.5 15 L 15.28125 15 L 10 1 L 8 1 L 3 15 z M 9 5 L 10.75 10 L 7.25 10 L 9 5 z"/>
</svg>

After

Width:  |  Height:  |  Size: 480 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 9 1 L 9 8 L 14 8 L 14 1 L 9 1 z M 2 3 L 2 8 L 7 8 L 7 3 L 2 3 z M 1 10 L 1 12 L 15 12 L 15 10 L 1 10 z M 9 13 L 9 15 L 14 15 L 14 13 L 9 13 z"/>
</svg>

After

Width:  |  Height:  |  Size: 461 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 7 1 L 7 2 L 3 2 L 3 6 L 7 6 L 7 10 L 3 10 L 3 14 L 7 14 L 7 15 L 9 15 L 9 14 L 13 14 L 13 10 L 9 10 L 9 6 L 13 6 L 13 2 L 9 2 L 9 1 L 7 1 z"/>
</svg>

After

Width:  |  Height:  |  Size: 459 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 4 1 L 4 15 L 6 15 L 6 1 L 4 1 z M 8 2 L 8 7 L 15 7 L 15 2 L 8 2 z M 1 9 L 1 14 L 3 14 L 3 9 L 1 9 z M 8 9 L 8 14 L 13 14 L 13 9 L 8 9 z"/>
</svg>

After

Width:  |  Height:  |  Size: 455 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 1 0 L 1 2 L 3 2 L 3 0 L 1 0 z M 3 2 L 3 16 L 5 16 L 5 15 L 15 15 L 15 11 L 5 11 L 5 7 L 15 7 L 15 3 L 5 3 L 5 2 L 3 2 z"/>
</svg>

After

Width:  |  Height:  |  Size: 439 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 2 1 L 2 15 L 4 15 L 4 14 L 14 14 L 14 10 L 4 10 L 4 6 L 14 6 L 14 2 L 4 2 L 4 1 L 2 1 z"/>
</svg>

After

Width:  |  Height:  |  Size: 407 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 10 1 L 10 15 L 12 15 L 12 1 L 10 1 z M 1 2 L 1 7 L 8 7 L 8 2 L 1 2 z M 3 9 L 3 14 L 8 14 L 8 9 L 3 9 z M 13 9 L 13 14 L 15 14 L 15 9 L 13 9 z"/>
</svg>

After

Width:  |  Height:  |  Size: 461 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 13 0 L 13 2 L 15 2 L 15 0 L 13 0 z M 13 2 L 11 2 L 11 3 L 1 3 L 1 7 L 11 7 L 11 11 L 1 11 L 1 15 L 11 15 L 11 16 L 13 16 L 13 2 z"/>
</svg>

After

Width:  |  Height:  |  Size: 449 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 12 1 L 12 2 L 2 2 L 2 6 L 12 6 L 12 10 L 2 10 L 2 14 L 12 14 L 12 15 L 14 15 L 14 1 L 12 1 z"/>
</svg>

After

Width:  |  Height:  |  Size: 412 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 9 1 L 9 3 L 14 3 L 14 1 L 9 1 z M 1 4 L 1 6 L 15 6 L 15 4 L 1 4 z M 2 8 L 2 15 L 7 15 L 7 8 L 2 8 z M 9 8 L 9 13 L 14 13 L 14 8 L 9 8 z"/>
</svg>

After

Width:  |  Height:  |  Size: 455 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 6.859375 0 L 1.859375 14 L 0 14 L 0 16 L 16 16 L 16 14 L 14.140625 14 L 8.859375 0 L 6.859375 0 z M 7.859375 4 L 9.609375 9 L 6.109375 9 L 7.859375 4 z M 5.421875 11 L 10.296875 11 L 11.359375 14 L 4.359375 14 L 5.421875 11 z"/>
</svg>

After

Width:  |  Height:  |  Size: 545 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 2 1 L 2 8 L 7 8 L 7 1 L 2 1 z M 9 3 L 9 8 L 14 8 L 14 3 L 9 3 z M 1 10 L 1 12 L 15 12 L 15 10 L 1 10 z M 9 13 L 9 15 L 14 15 L 14 13 L 9 13 z"/>
</svg>

After

Width:  |  Height:  |  Size: 461 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="m 1,1 0,10 -1,0 0,2 14,0 0,-2 -1,0 L 13,1 9,1 9,11 0,11 5,11 5,1 Z m 13,12 0,2 2,0 0,-2 z"/>
</svg>

After

Width:  |  Height:  |  Size: 407 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 2 2 L 2 12 L 1 12 L 1 14 L 15 14 L 15 12 L 14 12 L 14 2 L 10 2 L 10 12 L 6 12 L 6 2 L 2 2 z"/>
</svg>

After

Width:  |  Height:  |  Size: 411 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 2 3 L 2 7 L 1 7 L 1 9 L 2 9 L 2 13 L 6 13 L 6 9 L 10 9 L 10 13 L 14 13 L 14 9 L 15 9 L 15 7 L 14 7 L 14 3 L 10 3 L 10 7 L 6 7 L 6 3 L 2 3 z"/>
</svg>

After

Width:  |  Height:  |  Size: 459 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 9 1 L 9 3 L 14 3 L 14 1 L 9 1 z M 1 4 L 1 6 L 15 6 L 15 4 L 1 4 z M 2 8 L 2 13 L 7 13 L 7 8 L 2 8 z M 9 8 L 9 15 L 14 15 L 14 8 L 9 8 z"/>
</svg>

After

Width:  |  Height:  |  Size: 455 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" version="1.1">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 14,1 V 3 H 16 V 1 Z M 14,3 H 0 V 5 H 1 V 15 H 5 V 5 H 9 V 15 H 13 V 5 H 14 Z"/>
</svg>

After

Width:  |  Height:  |  Size: 390 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 1 2 L 1 4 L 2 4 L 2 14 L 6 14 L 6 4 L 10 4 L 10 14 L 14 14 L 14 4 L 15 4 L 15 2 L 1 2 z"/>
</svg>

After

Width:  |  Height:  |  Size: 407 B

View File

@ -0,0 +1 @@
user-identity.svg

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 5 1 C 4.446 1 4 1.446 4 2 L 4 5 L 2 5 C 1.446 5 1 5.446 1 6 L 1 14 C 1 14.554 1.446 15 2 15 L 9 15 L 9 11 L 11 11 L 11 9 L 15 9 L 15 6 C 15 5.446 14.554 5 14 5 L 12 5 L 12 2 C 12 1.446 11.554 1 11 1 L 5 1 z M 6 3 L 10 3 L 10 5 L 6 5 L 6 3 z M 12 10 L 12 12 L 10 12 L 10 14 L 12 14 L 12 16 L 14 16 L 14 14 L 16 14 L 16 12 L 14 12 L 14 10 L 12 10 z"/>
</svg>

After

Width:  |  Height:  |  Size: 666 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 5 1 C 4.446 1 4 1.446 4 2 L 4 5 L 2 5 C 1.446 5 1 5.446 1 6 L 1 14 C 1 14.554 1.446 15 2 15 L 9 15 L 9 11 L 15 11 L 15 6 C 15 5.446 14.554 5 14 5 L 12 5 L 12 2 C 12 1.446 11.554 1 11 1 L 5 1 z M 6 3 L 10 3 L 10 5 L 6 5 L 6 3 z M 10 12 L 10 14 L 16 14 L 16 12 L 10 12 z"/>
</svg>

After

Width:  |  Height:  |  Size: 588 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 5 1 C 4.446 1 4 1.446 4 2 L 4 5 L 2 5 C 1.446 5 1 5.446 1 6 L 1 14 C 1 14.554 1.446 15 2 15 L 14 15 C 14.554 15 15 14.554 15 14 L 15 6 C 15 5.446 14.554 5 14 5 L 12 5 L 12 2 C 12 1.446 11.554 1 11 1 L 5 1 z M 6 3 L 10 3 L 10 5 L 6 5 L 6 3 z"/>
</svg>

After

Width:  |  Height:  |  Size: 560 B

View File

@ -0,0 +1 @@
appointment-new.svg

View File

@ -0,0 +1 @@
view-media-lyrics.svg

View File

@ -0,0 +1 @@
view-statistics.svg

View File

@ -0,0 +1 @@
view-media-playlist.svg

View File

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" version="1.1" viewBox="0 0 16 16">
<defs>
<radialGradient id="radialGradient4475" cx="8" cy="8" r="7" fx="8" fy="8" gradientUnits="userSpaceOnUse">
<stop style="stop-color:#ebdbb2;stop-opacity:0" offset="0" stop-opacity=".2"/>
<stop style="stop-color:#ebdbb2" offset="1"/>
</radialGradient>
</defs>
<path style="fill:url(#radialGradient4475)" d="M 1 1 L 1 15 L 15 15 L 15 1 L 1 1 z"/>
</svg>

After

Width:  |  Height:  |  Size: 468 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#ebdbb2; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 3 1 C 1.892 0.99998 1 1.892 1 3 L 1 5.9941406 L 3 6 L 3 3 L 13 3 L 13 13 L 3 13 L 3 10 L 1 9.9941406 L 1 13 C 1 14.108 1.892 15 3 15 L 13 15 C 14.108 15 15 14.108 15 13 L 15 3 C 15 1.892 14.108 1 13 1 L 3 1 z M 7.2109375 4 L 5.8242188 5.3867188 L 7.4589844 7.0214844 L -0.001953125 7 L -0.001953125 9 L 7.4589844 9.0214844 L 5.8242188 10.654297 L 7.2109375 12.041016 L 11.210938 8 L 7.2109375 4 z"/>
</svg>

After

Width:  |  Height:  |  Size: 716 B

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