set-theme script implemented with toggle capability
This commit is contained in:
@@ -1,4 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
source ~/dev/calculator/bin/activate
|
|
||||||
python ~/dev/calculator/calculator.py
|
|
||||||
@@ -1,20 +1,101 @@
|
|||||||
#!/bin/zsh
|
#!/bin/zsh
|
||||||
|
|
||||||
# Get the current theme
|
# This script is used to apply a theme to i3
|
||||||
theme=$(cat ~/.config/theme/active.theme)
|
# It takes zero or one argument, the name of the theme to apply or toggle between light and dark
|
||||||
|
# The theme must be located in $THEME_DIR
|
||||||
|
# The theme must be a file with the extension .theme
|
||||||
|
# The theme must be formatted as follows:
|
||||||
|
# base=base_color
|
||||||
|
# accent=accent_color
|
||||||
|
# hover=hover_color
|
||||||
|
# Where base_color, accent_color, and hover_color are hex values
|
||||||
|
# The theme will be applied to i3, i3blocks, and rofi
|
||||||
|
|
||||||
# Apply the theme
|
cd ~/.config/theme
|
||||||
base=$(echo $theme | grep -oP '(?<=base=).*')
|
CURRENT_THEME=`stat active.theme | grep .theme | cut -d " " -f 6 | awk -F '/' '{print $NF}'`
|
||||||
accent=$(echo $theme | grep -oP '(?<=accent=).*')
|
|
||||||
hover=$(echo $theme | grep -oP '(?<=hover=).*')
|
|
||||||
|
|
||||||
sed -i "s/color=\(.*\)/color=$hover/g" ~/.config/i3blocks/i3blocks.conf
|
get_current_theme() {
|
||||||
|
if [ -f active.theme ]; then
|
||||||
|
CURRENT_THEME=`stat active.theme | grep .theme | cut -d " " -f 6 | awk -F '/' '{print $NF}'`
|
||||||
|
else
|
||||||
|
ln -sf dark.theme active.theme
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
sed -i "s/set \$base .*/set \$base $base/g" ~/.config/i3/config
|
set_theme() {
|
||||||
sed -i "s/set \$accent .*/set \$accent $accent/g" ~/.config/i3/config
|
get_current_theme
|
||||||
sed -i "s/set \$hover .*/set \$hover $hover/g" ~/.config/i3/config
|
# Get the theme
|
||||||
|
theme=$(cat active.theme)
|
||||||
|
|
||||||
|
# Apply the theme
|
||||||
|
base=$(echo $theme | grep -oP '(?<=base=).*')
|
||||||
|
accent=$(echo $theme | grep -oP '(?<=accent=).*')
|
||||||
|
hover=$(echo $theme | grep -oP '(?<=hover=).*')
|
||||||
|
mode=$(echo $CURRENT_THEME | cut -d '.' -f 1)
|
||||||
|
|
||||||
|
# Set i3 themes
|
||||||
|
sed -i "s/color=\(.*\)/color=$hover/g" ~/.config/i3blocks/i3blocks.conf
|
||||||
|
sed -i "s/set \$base .*/set \$base $base/g" ~/.config/i3/config
|
||||||
|
sed -i "s/set \$accent .*/set \$accent $accent/g" ~/.config/i3/config
|
||||||
|
sed -i "s/set \$hover .*/set \$hover $hover/g" ~/.config/i3/config
|
||||||
|
|
||||||
# Reload i3
|
# Apply active.theme to alacritty
|
||||||
i3-msg restart
|
ALACRITTY=~/.config/alacritty
|
||||||
|
sed -i "s/themes\/.*\.toml/themes\/$mode.toml/g" $ALACRITTY/alacritty.toml
|
||||||
|
|
||||||
|
# Apply active.theme to rofi
|
||||||
|
ROFI_PATH=theme.rasi
|
||||||
|
sed -i "s/base\: .*/base: $base\;/" $ROFI_PATH
|
||||||
|
sed -i "s/accent\: .*/accent: $accent\;/" $ROFI_PATH
|
||||||
|
sed -i "s/hover\: .*/hover: $hover\;/" $ROFI_PATH
|
||||||
|
|
||||||
|
# Set NeoVim theme
|
||||||
|
NVIM_PATH=~/.config/nvim/after/plugin/colors.lua
|
||||||
|
if [[ $mode == "light" ]]; then
|
||||||
|
sed -i "s/photon/antiphoton/" $NVIM_PATH
|
||||||
|
sed -i "s/guibg=#262940/guibg=#C6CAED/" $NVIM_PATH
|
||||||
|
sed -i "s/fg='#C6CAED'/fg='#262940'/" $NVIM_PATH
|
||||||
|
else
|
||||||
|
sed -i "s/anti//" $NVIM_PATH
|
||||||
|
sed -i "s/guibg=#C6CAED/guibg=#262940/" $NVIM_PATH
|
||||||
|
sed -i "s/fg='#262940'/fg='#C6CAED'/" $NVIM_PATH
|
||||||
|
fi
|
||||||
|
|
||||||
|
i3-msg restart
|
||||||
|
}
|
||||||
|
|
||||||
|
# If no argument is given, toggle between light and dark
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
if [[ $CURRENT_THEME == "light.theme" ]]; then
|
||||||
|
ln -sf dark.theme active.theme
|
||||||
|
else
|
||||||
|
ln -sf light.theme active.theme
|
||||||
|
fi
|
||||||
|
|
||||||
|
set_theme
|
||||||
|
|
||||||
|
elif [ $# -gt 1 ]; then
|
||||||
|
echo "Too many arguments"
|
||||||
|
exit 1
|
||||||
|
|
||||||
|
else
|
||||||
|
# Check if the theme exists
|
||||||
|
if [ ! -f $1.theme ]; then
|
||||||
|
echo "Theme $1 does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if the theme is already applied
|
||||||
|
if [ -f active.theme ]; then
|
||||||
|
if [[ $(cat active.theme) == $(cat $1.theme) ]]; then
|
||||||
|
echo "Theme $1 is already applied"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
ln -sf $1.theme active.theme
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
ln -sf $1.theme active.theme
|
||||||
|
fi
|
||||||
|
|
||||||
|
set_theme
|
||||||
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user