#!/bin/sh

# Set system color scheme to dark

# requires neovim-remote and a custom function `DarkTheme` that changes the
# vim color scheme to a dark one
update_vim() {
	instances=$(nvr --serverlist)
	for instance in $instances; do
		nvr -s --nostart --servername $instance \
			--remote-send "<Esc>:call DarkTheme()<CR>" &
	done
}

# Set dark mode bg
# $HOME/.config/scheme/feh-dark-bg &

# Set dark mode lockscreen background, you will need your lockscreen background
# to point to `$HOME/.config/scheme/lockscreen-bg`
# ln -sf $HOME/.config/scheme/lockscreen-dark-bg\
# 	$HOME/.config/scheme/lockscreen-bg

# Update file flag. This file allows the scripts and other programs to keep
# track in which color scheme the system is currenlty in.
[ ! -d $HOME/.config/scheme ] && mkdir $HOME/.config/scheme &
rm -rf $HOME/.config/scheme/light ||: &
touch $HOME/.config/scheme/dark &

# Set gnome applications to dark scheme
gsettings set org.gnome.desktop.interface color-scheme prefer-dark &

# Requires st patched
pidof st | xargs kill -USR1 > /dev/null 2>&1 &

# requires a theme named default-dark in kitty schemes folder
kitty +kitten themes --reload-in=all default-dark &

update_vim &

# gtk and kde config files
gtk_conf="$HOME/.config/gtk-3.0/settings.ini"
kde_conf="$HOME/.config/qt5ct/qt5ct.conf"

sed -i 's/^gtk-theme-name=Adwaita$/gtk-theme-name=Adwaita-dark/' "$gtk_conf" &
sed -i \
	's/^gtk-icon-theme-name=Papirus-Light$/gtk-icon-theme-name=Papirus-Dark/'\
	"$gtk_conf" &

sed -i 's/^icon_theme=Papirus-Light$/icon_theme=Papirus-Dark/' "$kde_conf" &
sed -i 's/^style=Adwaita$/style=Adwaita-Dark/' "$kde_conf" &
perl -i -0 -pe\
	's/(?<=\[Colors:View\])([\s\S]*?\K)BackgroundNormal=([\s\S]*?)(?=\n)/BackgroundNormal=#222222/gm'\
	"$HOME/.config/kdeglobals" &

# Requires xsettingsd
perl -i -pe 's/(?<=Net\/ThemeName ")Adwaita(?=")/Adwaita-dark/'\
	"$HOME/.config/xsettingsd/xsettingsd.conf"
kill -HUP $(pidof xsettingsd)

wait
