Compare commits
5 Commits
cb1b26770a
...
913cd0d65e
Author | SHA1 | Date | |
---|---|---|---|
913cd0d65e | |||
c356b1765b | |||
6c8d80f1a8 | |||
c22bf5a0f8 | |||
b85c9d4df2 |
79
_reve.sh
79
_reve.sh
@ -7,38 +7,87 @@
|
||||
reve_installation="$HOME/.local/bin/reve"
|
||||
reve_config="$HOME/.config/reve"
|
||||
|
||||
util_readf () {
|
||||
util_readf() {
|
||||
local filename=$1
|
||||
|
||||
if [[ -f "$filename" ]]; then
|
||||
cat "$filename"
|
||||
else
|
||||
echo "[reve] [E] util_readf: File not found: $filename" >&2
|
||||
error E "util_readf" "File not found: $filename"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
util_read_config () {
|
||||
util_where_config() {
|
||||
local config_key=$1
|
||||
pre_removed_key=${config_key/#base./}
|
||||
config_path=$( echo "$pre_removed_key" | sed 's/\./\//g' )
|
||||
util_readf "$reve_config/$config_path"
|
||||
config_path=$(echo "$pre_removed_key" | sed 's/\./\//g')
|
||||
echo "$reve_config/$config_path"
|
||||
}
|
||||
|
||||
util_read_config() {
|
||||
local fp_config
|
||||
fp_config=$(util_where_config "$1")
|
||||
util_readf "$fp_config"
|
||||
return $?
|
||||
}
|
||||
|
||||
util_write_config () {
|
||||
local config_key=$1 new_value=$2
|
||||
pre_removed_key=${config_key/#base./}
|
||||
config_path=$( echo "$pre_removed_key" | sed 's/\./\//g' )
|
||||
mkdir -p "$( dirname "$reve_config/$config_path" )"
|
||||
echo "$new_value" > "$reve_config/$config_path"
|
||||
util_write_config() {
|
||||
local fp_config new_value=$2
|
||||
fp_config=$(util_where_config "$1")
|
||||
mkdir -p "$(dirname "$fp_config")"
|
||||
echo "$new_value" >"$fp_config"
|
||||
}
|
||||
|
||||
util_delete_config () {
|
||||
util_delete_config() {
|
||||
local config_key=$1
|
||||
pre_removed_key=${config_key/#base./}
|
||||
config_path=$( echo "$pre_removed_key" | sed 's/\./\//g' )
|
||||
config_path=$(echo "$pre_removed_key" | sed 's/\./\//g')
|
||||
rm "$reve_config/$config_path"
|
||||
dir=$( dirname "$reve_config/$config_path")
|
||||
[ -z "$( ls -A "$dir")" ] && rm -r "$dir"
|
||||
dir=$(dirname "$reve_config/$config_path")
|
||||
[ -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"
|
||||
}
|
||||
|
@ -9,27 +9,8 @@
|
||||
# desc changes the GTK theme and color-scheme according to desktop_mode
|
||||
# vars gtk_dark_theme, gtk_light_theme
|
||||
|
||||
reve_folder="$HOME/.config/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"
|
||||
# shellcheck source=../../_reve.sh
|
||||
source "$(reve where)/_reve"
|
||||
|
||||
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
|
||||
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
|
||||
gsettings set org.gnome.desktop.interface gtk-theme "$(util_read_config chore.gtk_"$RV_CURRENT_MODE"_theme)"
|
||||
gsettings set org.gnome.desktop.interface color-scheme prefer-"$RV_CURRENT_MODE"
|
||||
|
@ -7,32 +7,14 @@
|
||||
# type mode
|
||||
# name kitty_theme.sh
|
||||
# desc changes kitty's theme depending on desktop_mode
|
||||
# vars kitty_dark_theme, kitty_light_theme
|
||||
# vars kitty/dark, kitty/light
|
||||
|
||||
if ! command -v kitty &> /dev/null; then
|
||||
# shellcheck source=../../_reve.sh
|
||||
source "$(reve where)/_reve"
|
||||
|
||||
if ! command -v kitty &>/dev/null; then
|
||||
echo "kitty is not installed. Please install it and try again."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
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
|
||||
kitten themes --reload-in=all "$(util_read_config chore.kitty."$RV_CURRENT_THEME")"
|
||||
|
@ -7,20 +7,10 @@
|
||||
# type mode
|
||||
# name spicetify.sh
|
||||
# desc changes spicetify theme depending on desktop_mode
|
||||
# vars spicetify_dark_theme, spicetify_light_theme
|
||||
# vars spicetify/dark, spicetify/light
|
||||
|
||||
reve_folder="$HOME/.config/reve"
|
||||
reve_desktop_mode="$reve_folder/desktop_mode"
|
||||
# shellcheck source=../../_reve.sh
|
||||
source "$(reve where)/_reve"
|
||||
|
||||
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 config color_scheme "$(util_read_config chore.spicetify."$RV_CURRENT_MODE")"
|
||||
spicetify -q apply
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
#!/bin/bash
|
||||
|
||||
# reve desktop environment framework
|
||||
# Yigid BALABAN <fyb@fybx.dev> 2024
|
||||
@ -8,38 +8,22 @@
|
||||
# name swww_single.sh
|
||||
# desc changes the background depending on the desktop_mode
|
||||
# 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."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
reve_folder="$HOME/.config/reve"
|
||||
reve_desktop_mode="$reve_folder/desktop_mode"
|
||||
bg_dark="$reve_folder/chore/bg_dark"
|
||||
bg_light="$reve_folder/chore/bg_light"
|
||||
# shellcheck source=../../_reve.sh
|
||||
source "$(reve where)/_reve"
|
||||
|
||||
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")
|
||||
ltypes=${#types[@]}
|
||||
rindex=$((RANDOM % ltypes))
|
||||
rtype=${types[rindex]}
|
||||
|
||||
if [[ $current_mode == "dark" ]]; then
|
||||
swww img --transition-type "$rtype" --transition-pos 1,1 --transition-step 90 "$bg_dark"
|
||||
notify-send --urgency=low --expire-time=1450 --icon="$bg_dark" --app-name="reve: swww_single" "Wallpaper changed" "Wallpaper changed and saved on dark mode."
|
||||
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
|
||||
bg="$(util_where_config chore."bg_$RV_CURRENT_MODE")"
|
||||
swww img --transition-type "$rtype" --transition-pos 1,1 --transition-step 90 "$bg"
|
||||
notify-send --urgency=low --expire-time=1450 --icon="$bg" --app-name="reve: swww_single" "Wallpaper changed" "Wallpaper changed and saved on light mode."
|
||||
reload misc/asus_kbd_light.sh
|
||||
|
104
reve.sh
104
reve.sh
@ -3,17 +3,19 @@
|
||||
# reve desktop environment framework
|
||||
# Yigid BALABAN <fyb@fybx.dev> 2024
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
# SC2086 is disabled here, but all user inputs must be quoted
|
||||
|
||||
in_desktop_mode=""
|
||||
in_reason=""
|
||||
in_chore_name=""
|
||||
|
||||
rt_script_dir=$(realpath "$(dirname "$0")")
|
||||
rt_has_mode_changed=0
|
||||
rt_current_mode="unset"
|
||||
|
||||
reve_folder="$HOME/.config/reve"
|
||||
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"
|
||||
|
||||
@ -33,6 +35,7 @@ util_help () {
|
||||
echo "reason {reason} run reve with reason, accepts 'network' or 'time'"
|
||||
echo "chore {chore_name} run a single chore, accepts chore name"
|
||||
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 "== Subcommands =="
|
||||
echo "1. config gets/sets configuration values"
|
||||
@ -53,20 +56,6 @@ util_help () {
|
||||
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 () {
|
||||
if [ "$in_shell_comp" == "fish" ]; then
|
||||
cp "$rt_script_dir/completions/reve.fish" "$HOME/.config/fish/completions/reve.fish"
|
||||
@ -80,10 +69,6 @@ f_shell_completion () {
|
||||
if ! grep -q "_reve_completions" "$HOME/.bash_completion"; then
|
||||
echo "$_reve_completions" >> "$HOME/.bash_completion"
|
||||
fi
|
||||
|
||||
if [ -n "$BASH_SOURCE" ]; then
|
||||
source "$HOME/.bash_completion"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
@ -93,83 +78,93 @@ set_desktop_mode () {
|
||||
return 1 # since mode has changed
|
||||
fi
|
||||
|
||||
local current_mode="unset"
|
||||
local previous_mode day_start night_start num_day num_night current_time
|
||||
previous_mode=$( util_readf "$reve_desktop_mode" )
|
||||
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" )
|
||||
local previous_mode num_day num_night current_time
|
||||
previous_mode=$( util_read_config base.desktop_mode )
|
||||
num_day=$( awk -F: '{print $1 * 60 + $2}' <<< "$( util_read_config base.time_day )" )
|
||||
num_night=$( awk -F: '{print $1 * 60 + $2}' <<< "$( util_read_config base.time_night )" )
|
||||
current_time=$( awk -F: '{print $1 * 60 + $2}' <<< "$(date +%H:%M)" )
|
||||
|
||||
if ((num_night > current_time && current_time >= num_day)); then
|
||||
current_mode="light"
|
||||
rt_current_mode="light"
|
||||
else
|
||||
current_mode="dark"
|
||||
rt_current_mode="dark"
|
||||
fi
|
||||
|
||||
echo "[reve] [I] Setting the mode: $current_mode"
|
||||
echo "$current_mode" > "$reve_desktop_mode"
|
||||
echo "[reve] [I] Setting the mode: $rt_current_mode"
|
||||
echo "$rt_current_mode" > "$reve_desktop_mode"
|
||||
|
||||
if [ "$current_mode" == "$previous_mode" ]; then
|
||||
if [ "$rt_current_mode" == "$previous_mode" ]; then
|
||||
return 0 # since mode did not change
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
prepare () {
|
||||
util_mkdirs
|
||||
set_desktop_mode
|
||||
rt_has_mode_changed="$?"
|
||||
}
|
||||
|
||||
# Called when the mode (the default state, is either dark or light) changes
|
||||
chores_mode () {
|
||||
for file in "$reve_chores_mode"/*; do
|
||||
if [ -x "$file" ]; then
|
||||
echo "[reve] [I] Running chore: $( basename "$file" )"
|
||||
bash "$file"
|
||||
util_run_chore "$file" $rt_current_mode
|
||||
else
|
||||
echo "[reve] [E] chores_mode: $file is not executable"
|
||||
fi
|
||||
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 () {
|
||||
local config_key=$2
|
||||
case "$1" in
|
||||
get)
|
||||
util_read_config "$config_key"
|
||||
util_read_config "$2"
|
||||
;;
|
||||
set)
|
||||
util_write_config "$config_key" "$3"
|
||||
util_write_config "$2" "$3"
|
||||
;;
|
||||
rm|delete)
|
||||
util_delete_config "$config_key"
|
||||
util_delete_config "$2"
|
||||
;;
|
||||
"")
|
||||
util_help config
|
||||
;;
|
||||
*)
|
||||
echo "[reve] [E] in subcommand config: '$1' is not a valid command"
|
||||
echo "reve: in subcommand config: '$1' is not a valid command"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
main () {
|
||||
if (( rt_has_mode_changed == 1 )) || [[ "$in_reason" == "chores_mode" ]]; then
|
||||
chores_mode
|
||||
fi
|
||||
mkdir -p "$reve_folder"
|
||||
|
||||
if [[ "$in_chore_name" != "" ]]; then
|
||||
util_run_single_chore "$in_chore_name"
|
||||
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
|
||||
chores_mode
|
||||
fi
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
config)
|
||||
sub_config $2 $3 $4
|
||||
sub_config "$2" "$3" "$4"
|
||||
exit 0
|
||||
;;
|
||||
update)
|
||||
@ -198,11 +193,16 @@ case "$1" in
|
||||
chore)
|
||||
in_chore_name="$2"
|
||||
;;
|
||||
poll)
|
||||
;;
|
||||
"")
|
||||
util_help "$2"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Invalid command or subcommand: $1"
|
||||
echo "reve: invalid command or subcommand: $1"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
prepare
|
||||
main
|
||||
main "$@"
|
||||
|
25
utility/nemo/set_wallpaper.sh
Normal file → Executable file
25
utility/nemo/set_wallpaper.sh
Normal file → Executable file
@ -3,20 +3,27 @@
|
||||
# reve desktop environment framework
|
||||
# Yigid BALABAN <fyb@fybx.dev> 2024
|
||||
|
||||
# ln -s utility/nemo/set_wallpaper.sh ~/.local/share/nemo/scripts
|
||||
# cp 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_desktop_mode="$reve_folder/desktop_mode"
|
||||
|
||||
mode=$(cat "$reve_folder/desktop_mode")
|
||||
first=$(echo "$NEMO_SCRIPT_SELECTED_FILE_PATHS" | head -n 1)
|
||||
bgl="$reve_folder/chores/bg_light"
|
||||
bgd="$reve_folder/chores/bg_dark"
|
||||
mode=$(util_readf "$reve_desktop_mode")
|
||||
bgl="$reve_folder/chore/bg_light"
|
||||
bgd="$reve_folder/chore/bg_dark"
|
||||
|
||||
if [ "$mode" = "light" ]; then
|
||||
cp "$first" "$bgl"
|
||||
if [ "$NEMO_SCRIPT_SELECTED_FILE_PATHS" = "" ]; then
|
||||
first=$1
|
||||
else
|
||||
cp "$first" "$bgd"
|
||||
first=$(echo "$NEMO_SCRIPT_SELECTED_FILE_PATHS" | head -n 1)
|
||||
fi
|
||||
|
||||
bash "$HOME/scripts/utility/deskenv.sh" nobright "$mode"
|
||||
if [ "$mode" = "dark" ]; then
|
||||
cp -T "$first" "$bgd"
|
||||
else
|
||||
cp -T "$first" "$bgl"
|
||||
fi
|
||||
|
||||
reload mode/swww_single
|
||||
|
Loading…
x
Reference in New Issue
Block a user