Compare commits

..

No commits in common. "913cd0d65e5832a4cdec1fd9ec479d6ae385100f" and "cb1b26770a44bc72bed39822e837d26c65707d05" have entirely different histories.

7 changed files with 182 additions and 175 deletions

View File

@ -13,30 +13,25 @@ util_readf() {
if [[ -f "$filename" ]]; then if [[ -f "$filename" ]]; then
cat "$filename" cat "$filename"
else else
error E "util_readf" "File not found: $filename" echo "[reve] [E] util_readf: File not found: $filename" >&2
return 1 return 1
fi fi
} }
util_where_config() { util_read_config () {
local config_key=$1 local config_key=$1
pre_removed_key=${config_key/#base./} pre_removed_key=${config_key/#base./}
config_path=$( echo "$pre_removed_key" | sed 's/\./\//g' ) config_path=$( echo "$pre_removed_key" | sed 's/\./\//g' )
echo "$reve_config/$config_path" util_readf "$reve_config/$config_path"
}
util_read_config() {
local fp_config
fp_config=$(util_where_config "$1")
util_readf "$fp_config"
return $? return $?
} }
util_write_config () { util_write_config () {
local fp_config new_value=$2 local config_key=$1 new_value=$2
fp_config=$(util_where_config "$1") pre_removed_key=${config_key/#base./}
mkdir -p "$(dirname "$fp_config")" config_path=$( echo "$pre_removed_key" | sed 's/\./\//g' )
echo "$new_value" >"$fp_config" mkdir -p "$( dirname "$reve_config/$config_path" )"
echo "$new_value" > "$reve_config/$config_path"
} }
util_delete_config () { util_delete_config () {
@ -47,47 +42,3 @@ util_delete_config() {
dir=$( dirname "$reve_config/$config_path") dir=$( dirname "$reve_config/$config_path")
[ -z "$( ls -A "$dir")" ] && rm -r "$dir" [ -z "$( ls -A "$dir")" ] && rm -r "$dir"
} }
util_run_chore() {
local chore_path="$reve_installation/chores/$1"
if [ -x "$chore_path.sh" ]; then
error I "util_run_chore" "Running chore: $(basename "$1")"
REVE_FOLDER="$reve_config" RV_CURRENT_MODE=$2 bash "$chore_path.sh"
else
error E "util_run_chore" "$chore_path is not executable"
fi
}
util_run_utility() {
local utility_path="$reve_installation/utility/$1"
if [ -x "$utility_path.sh" ]; then
error I "util_run_utility" "Running utility script: $(basename "$1")"
bash "$utility_path.sh"
else
error E "util_run_utility" "$utility_path is not executable"
fi
}
reload() {
util_run_chore "$1"
}
reload_util() {
util_run_utility "$1"
}
util_toggle_dm() {
if [[ $(util_read_config base.desktop_mode) == "dark" ]]; then
util_write_config base.desktop_mode light
else
util_write_config base.desktop_mode dark
fi
}
error() {
local level=$1 location=$2 cause=$3
message="[reve] [$level] [$location] $cause"
echo "$message"
now=$(date -Iminutes)
echo "${now::-6} $message" >>"$reve_installation/reve.log"
}

View File

@ -9,8 +9,27 @@
# desc changes the GTK theme and color-scheme according to desktop_mode # desc changes the GTK theme and color-scheme according to desktop_mode
# vars gtk_dark_theme, gtk_light_theme # vars gtk_dark_theme, gtk_light_theme
# shellcheck source=../../_reve.sh reve_folder="$HOME/.config/reve"
source "$(reve where)/_reve" reve_desktop_mode="$reve_folder/desktop_mode"
gtk_dark_theme="$reve_folder/chore/gtk_dark_theme"
gtk_light_theme="$reve_folder/chore/gtk_light_theme"
gsettings set org.gnome.desktop.interface gtk-theme "$(util_read_config chore.gtk_"$RV_CURRENT_MODE"_theme)" util_readf () {
gsettings set org.gnome.desktop.interface color-scheme prefer-"$RV_CURRENT_MODE" local filename=$1
if [[ -f "$filename" ]]; then
cat "$filename"
else
echo "util_readf: File not found: $filename" >&2
return 1
fi
}
current_mode=$( util_readf "$reve_desktop_mode" )
if [[ "$current_mode" == "dark" ]]; then
gsettings set org.gnome.desktop.interface gtk-theme $( util_readf "$gtk_dark_theme" )
gsettings set org.gnome.desktop.interface color-scheme prefer-dark
else
gsettings set org.gnome.desktop.interface gtk-theme $( util_readf "$gtk_light_theme" )
gsettings set org.gnome.desktop.interface color-scheme prefer-light
fi

View File

@ -7,14 +7,32 @@
# type mode # type mode
# name kitty_theme.sh # name kitty_theme.sh
# desc changes kitty's theme depending on desktop_mode # desc changes kitty's theme depending on desktop_mode
# vars kitty/dark, kitty/light # vars kitty_dark_theme, kitty_light_theme
# shellcheck source=../../_reve.sh
source "$(reve where)/_reve"
if ! command -v kitty &> /dev/null; then if ! command -v kitty &> /dev/null; then
echo "kitty is not installed. Please install it and try again." echo "kitty is not installed. Please install it and try again."
exit 1 exit 1
fi fi
kitten themes --reload-in=all "$(util_read_config chore.kitty."$RV_CURRENT_THEME")" reve_folder="$HOME/.config/reve"
reve_desktop_mode="$reve_folder/desktop_mode"
kitty_dark_theme="$reve_folder/chore/kitty/dark"
kitty_light_theme="$reve_folder/chore/kitty/light"
util_readf () {
local filename=$1
if [[ -f "$filename" ]]; then
cat "$filename"
else
echo "util_readf: File not found: $filename" >&2
return 1
fi
}
current_mode=$( util_readf "$reve_desktop_mode" )
if [[ $current_mode == "dark" ]]; then
kitten themes --reload-in=all "$( util_readf "$kitty_dark_theme" )"
else
kitten themes --reload-in=all "$( util_readf "$kitty_light_theme" )"
fi

View File

@ -7,10 +7,20 @@
# type mode # type mode
# name spicetify.sh # name spicetify.sh
# desc changes spicetify theme depending on desktop_mode # desc changes spicetify theme depending on desktop_mode
# vars spicetify/dark, spicetify/light # vars spicetify_dark_theme, spicetify_light_theme
# shellcheck source=../../_reve.sh reve_folder="$HOME/.config/reve"
source "$(reve where)/_reve" reve_desktop_mode="$reve_folder/desktop_mode"
spicetify -q config color_scheme "$(util_read_config chore.spicetify."$RV_CURRENT_MODE")" source "$( reve -w )/_reve"
current_mode=$( util_readf "$reve_desktop_mode" )
spicetify_dark_theme=$( util_readf "$reve_folder/chore/spicetify/dark")
spicetify_light_theme=$( util_readf "$reve_folder/chore/spicetify/light")
if [[ "$current_mode" == "dark" ]]; then
spicetify -q config color_scheme "$spicetify_dark_theme"
else
spicetify -q config color_scheme "$spicetify_light_theme"
fi
spicetify -q apply spicetify -q apply

View File

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# reve desktop environment framework # reve desktop environment framework
# Yigid BALABAN <fyb@fybx.dev> 2024 # Yigid BALABAN <fyb@fybx.dev> 2024
@ -8,22 +8,38 @@
# name swww_single.sh # name swww_single.sh
# desc changes the background depending on the desktop_mode # desc changes the background depending on the desktop_mode
# vars bg_dark, bg_light # vars bg_dark, bg_light
# reload asus_kbd_light.sh
if ! command -v swww &> /dev/null; then if ! command -v swww &> /dev/null; then
echo "swww is not installed. Please install it and try again." echo "swww is not installed. Please install it and try again."
exit 1 exit 1
fi fi
# shellcheck source=../../_reve.sh reve_folder="$HOME/.config/reve"
source "$(reve where)/_reve" reve_desktop_mode="$reve_folder/desktop_mode"
bg_dark="$reve_folder/chore/bg_dark"
bg_light="$reve_folder/chore/bg_light"
util_readf () {
local filename=$1
if [[ -f "$filename" ]]; then
cat "$filename"
else
echo "util_readf: File not found: $filename" >&2
return 1
fi
}
current_mode=$( util_readf "$reve_desktop_mode" )
types=("left" "right" "top" "bottom" "wipe" "wave" "grow" "outer") types=("left" "right" "top" "bottom" "wipe" "wave" "grow" "outer")
ltypes=${#types[@]} ltypes=${#types[@]}
rindex=$((RANDOM % ltypes)) rindex=$((RANDOM % ltypes))
rtype=${types[rindex]} rtype=${types[rindex]}
bg="$(util_where_config chore."bg_$RV_CURRENT_MODE")" if [[ $current_mode == "dark" ]]; then
swww img --transition-type "$rtype" --transition-pos 1,1 --transition-step 90 "$bg" swww img --transition-type "$rtype" --transition-pos 1,1 --transition-step 90 "$bg_dark"
notify-send --urgency=low --expire-time=1450 --icon="$bg" --app-name="reve: swww_single" "Wallpaper changed" "Wallpaper changed and saved on light mode." notify-send --urgency=low --expire-time=1450 --icon="$bg_dark" --app-name="reve: swww_single" "Wallpaper changed" "Wallpaper changed and saved on dark mode."
reload misc/asus_kbd_light.sh else
swww img --transition-type "$rtype" --transition-pos 1,1 --transition-step 90 "$bg_light"
notify-send --urgency=low --expire-time=1450 --icon="$bg_light" --app-name="reve: swww_single" "Wallpaper changed" "Wallpaper changed and saved on light mode."
fi

104
reve.sh
View File

@ -3,19 +3,17 @@
# reve desktop environment framework # reve desktop environment framework
# Yigid BALABAN <fyb@fybx.dev> 2024 # Yigid BALABAN <fyb@fybx.dev> 2024
# shellcheck disable=SC2086
# SC2086 is disabled here, but all user inputs must be quoted
in_desktop_mode="" in_desktop_mode=""
in_reason="" in_reason=""
in_chore_name="" in_chore_name=""
rt_script_dir=$(realpath "$(dirname "$0")") rt_script_dir=$(realpath "$(dirname "$0")")
rt_has_mode_changed=0 rt_has_mode_changed=0
rt_current_mode="unset"
reve_folder="$HOME/.config/reve" reve_folder="$HOME/.config/reve"
reve_desktop_mode="$reve_folder/desktop_mode" reve_desktop_mode="$reve_folder/desktop_mode"
reve_time_day="$reve_folder/time_day"
reve_time_night="$reve_folder/time_night"
reve_chores_mode="$rt_script_dir/chores/mode" reve_chores_mode="$rt_script_dir/chores/mode"
@ -35,7 +33,6 @@ util_help () {
echo "reason {reason} run reve with reason, accepts 'network' or 'time'" echo "reason {reason} run reve with reason, accepts 'network' or 'time'"
echo "chore {chore_name} run a single chore, accepts chore name" echo "chore {chore_name} run a single chore, accepts chore name"
echo "where returns where reve's installed" echo "where returns where reve's installed"
echo "poll runs reve to update desktop_mode & power_mode, and do chores"
echo "help [subcommand] shows help message" echo "help [subcommand] shows help message"
echo "== Subcommands ==" echo "== Subcommands =="
echo "1. config gets/sets configuration values" echo "1. config gets/sets configuration values"
@ -56,6 +53,20 @@ util_help () {
esac esac
} }
util_mkdirs () {
mkdir -p "$reve_folder"
}
util_run_single_chore () {
local chore_fullname="$reve_chores_mode/$1"
if [ -x "$chore_fullname.sh" ]; then
echo "[reve] [I] Running single chore: $chore_fullname"
bash "$chore_fullname.sh"
else
echo "[reve] [E] util_run_single_chore: $chore_fullname is not executable"
fi
}
f_shell_completion () { f_shell_completion () {
if [ "$in_shell_comp" == "fish" ]; then if [ "$in_shell_comp" == "fish" ]; then
cp "$rt_script_dir/completions/reve.fish" "$HOME/.config/fish/completions/reve.fish" cp "$rt_script_dir/completions/reve.fish" "$HOME/.config/fish/completions/reve.fish"
@ -69,6 +80,10 @@ f_shell_completion () {
if ! grep -q "_reve_completions" "$HOME/.bash_completion"; then if ! grep -q "_reve_completions" "$HOME/.bash_completion"; then
echo "$_reve_completions" >> "$HOME/.bash_completion" echo "$_reve_completions" >> "$HOME/.bash_completion"
fi fi
if [ -n "$BASH_SOURCE" ]; then
source "$HOME/.bash_completion"
fi
fi fi
} }
@ -78,93 +93,83 @@ set_desktop_mode () {
return 1 # since mode has changed return 1 # since mode has changed
fi fi
local previous_mode num_day num_night current_time local current_mode="unset"
previous_mode=$( util_read_config base.desktop_mode ) local previous_mode day_start night_start num_day num_night current_time
num_day=$( awk -F: '{print $1 * 60 + $2}' <<< "$( util_read_config base.time_day )" ) previous_mode=$( util_readf "$reve_desktop_mode" )
num_night=$( awk -F: '{print $1 * 60 + $2}' <<< "$( util_read_config base.time_night )" ) day_start=$( util_readf "$reve_time_day" )
night_start=$( util_readf "$reve_time_night" )
num_day=$( awk -F: '{print $1 * 60 + $2}' <<< "$day_start" )
num_night=$( awk -F: '{print $1 * 60 + $2}' <<< "$night_start" )
current_time=$( awk -F: '{print $1 * 60 + $2}' <<< "$(date +%H:%M)" ) current_time=$( awk -F: '{print $1 * 60 + $2}' <<< "$(date +%H:%M)" )
if ((num_night > current_time && current_time >= num_day)); then if ((num_night > current_time && current_time >= num_day)); then
rt_current_mode="light" current_mode="light"
else else
rt_current_mode="dark" current_mode="dark"
fi fi
echo "[reve] [I] Setting the mode: $rt_current_mode" echo "[reve] [I] Setting the mode: $current_mode"
echo "$rt_current_mode" > "$reve_desktop_mode" echo "$current_mode" > "$reve_desktop_mode"
if [ "$rt_current_mode" == "$previous_mode" ]; then if [ "$current_mode" == "$previous_mode" ]; then
return 0 # since mode did not change return 0 # since mode did not change
else else
return 1 return 1
fi fi
} }
prepare () {
util_mkdirs
set_desktop_mode
rt_has_mode_changed="$?"
}
# Called when the mode (the default state, is either dark or light) changes # Called when the mode (the default state, is either dark or light) changes
chores_mode () { chores_mode () {
for file in "$reve_chores_mode"/*; do for file in "$reve_chores_mode"/*; do
if [ -x "$file" ]; then if [ -x "$file" ]; then
echo "[reve] [I] Running chore: $( basename "$file" )" echo "[reve] [I] Running chore: $( basename "$file" )"
util_run_chore "$file" $rt_current_mode bash "$file"
else else
echo "[reve] [E] chores_mode: $file is not executable" echo "[reve] [E] chores_mode: $file is not executable"
fi fi
done done
} }
util_handle_pos () {
# args: $@ -- handles positionals
# returns: 'light' or 'dark' depending on positionals or $rt_current_mode
local forced_mode=$rt_current_mode
for arg in "$@"; do
if [[ "$arg" == "-d" || "$arg" == "--dark" ]]; then
forced_mode="dark"
elif [[ "$arg" == "-l" || "$arg" == "--light" ]]; then
forced_mode="light"
fi
done
echo $forced_mode
}
sub_config () { sub_config () {
local config_key=$2
case "$1" in case "$1" in
get) get)
util_read_config "$2" util_read_config "$config_key"
;; ;;
set) set)
util_write_config "$2" "$3" util_write_config "$config_key" "$3"
;; ;;
rm|delete) rm|delete)
util_delete_config "$2" util_delete_config "$config_key"
;; ;;
"") "")
util_help config util_help config
;; ;;
*) *)
echo "reve: in subcommand config: '$1' is not a valid command" echo "[reve] [E] in subcommand config: '$1' is not a valid command"
;; ;;
esac esac
} }
main () { main () {
mkdir -p "$reve_folder"
if [[ "$in_chore_name" != "" ]]; then
forced_mode=$(util_handle_pos "$@")
util_run_chore "$in_chore_name" $forced_mode
return
fi
set_desktop_mode
rt_has_mode_changed="$?"
if (( rt_has_mode_changed == 1 )) || [[ "$in_reason" == "chores_mode" ]]; then if (( rt_has_mode_changed == 1 )) || [[ "$in_reason" == "chores_mode" ]]; then
chores_mode chores_mode
fi fi
if [[ "$in_chore_name" != "" ]]; then
util_run_single_chore "$in_chore_name"
fi
} }
case "$1" in case "$1" in
config) config)
sub_config "$2" "$3" "$4" sub_config $2 $3 $4
exit 0 exit 0
;; ;;
update) update)
@ -193,16 +198,11 @@ case "$1" in
chore) chore)
in_chore_name="$2" in_chore_name="$2"
;; ;;
poll)
;;
"")
util_help "$2"
exit 0
;;
*) *)
echo "reve: invalid command or subcommand: $1" echo "Invalid command or subcommand: $1"
exit 1 exit 1
;; ;;
esac esac
main "$@" prepare
main

23
utility/nemo/set_wallpaper.sh Executable file → Normal file
View File

@ -3,27 +3,20 @@
# reve desktop environment framework # reve desktop environment framework
# Yigid BALABAN <fyb@fybx.dev> 2024 # Yigid BALABAN <fyb@fybx.dev> 2024
# cp utility/nemo/set_wallpaper.sh ~/.local/share/nemo/scripts # ln -s utility/nemo/set_wallpaper.sh ~/.local/share/nemo/scripts
# chmod +x ~/.local/share/nemo/scripts/set_wallpaper.sh
source "$(reve where)/_reve"
reve_folder="$HOME/.config/reve" reve_folder="$HOME/.config/reve"
reve_desktop_mode="$reve_folder/desktop_mode" reve_desktop_mode="$reve_folder/desktop_mode"
mode=$(util_readf "$reve_desktop_mode") mode=$(cat "$reve_folder/desktop_mode")
bgl="$reve_folder/chore/bg_light"
bgd="$reve_folder/chore/bg_dark"
if [ "$NEMO_SCRIPT_SELECTED_FILE_PATHS" = "" ]; then
first=$1
else
first=$(echo "$NEMO_SCRIPT_SELECTED_FILE_PATHS" | head -n 1) first=$(echo "$NEMO_SCRIPT_SELECTED_FILE_PATHS" | head -n 1)
fi bgl="$reve_folder/chores/bg_light"
bgd="$reve_folder/chores/bg_dark"
if [ "$mode" = "dark" ]; then if [ "$mode" = "light" ]; then
cp -T "$first" "$bgd" cp "$first" "$bgl"
else else
cp -T "$first" "$bgl" cp "$first" "$bgd"
fi fi
reload mode/swww_single bash "$HOME/scripts/utility/deskenv.sh" nobright "$mode"