193 lines
5.0 KiB
Bash
Executable File
193 lines
5.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
dir=$(dirname "$0")
|
|
|
|
declare -a schemes
|
|
schemes=($(cd $dir/colors && echo * && cd - > /dev/null))
|
|
|
|
source $dir/src/tools.sh
|
|
source $dir/src/profiles.sh
|
|
source $dir/src/dircolors.sh
|
|
|
|
show_help() {
|
|
echo "Usage: install.sh [-h] [-s <scheme>] [-p <profile>]"
|
|
echo
|
|
echo "Options"
|
|
echo " -h, --help"
|
|
echo " Show this information"
|
|
echo " -s scheme, --scheme scheme, --scheme=scheme"
|
|
echo " Color scheme to be used (will be asked otherwise)"
|
|
echo " -p profile, --profile profile, --profile profile"
|
|
echo " Gnome Terminal profile to overwrite (will be asked otherwise)"
|
|
echo " --install-dircolors, --skip-dircolors"
|
|
echo " Do or skip the dircolors installation in a non interactive mode"
|
|
}
|
|
|
|
validate_scheme() {
|
|
local profile=$1
|
|
in_array $scheme "${schemes[@]}" || die "$scheme is not a valid scheme" 2
|
|
}
|
|
|
|
set_profile_colors() {
|
|
local profile=$1
|
|
local scheme=$2
|
|
local scheme_dir=$dir/colors/$scheme
|
|
|
|
local bg_color_file=$scheme_dir/bg_color
|
|
local fg_color_file=$scheme_dir/fg_color
|
|
local bd_color_file=$scheme_dir/bd_color
|
|
|
|
if [ "$newGnome" = "1" ]
|
|
then local profile_path=$dconfdir/$profile
|
|
|
|
# set color palette
|
|
dconf write $profile_path/palette "$(to_dconf < $scheme_dir/palette)"
|
|
|
|
# set foreground, background and highlight color
|
|
dconf write $profile_path/bold-color "'$(cat $bd_color_file)'"
|
|
dconf write $profile_path/background-color "'$(cat $bg_color_file)'"
|
|
dconf write $profile_path/foreground-color "'$(cat $fg_color_file)'"
|
|
|
|
# make sure the profile is set to not use theme colors
|
|
dconf write $profile_path/use-theme-colors "false"
|
|
|
|
# set highlighted color to be different from foreground color
|
|
dconf write $profile_path/bold-color-same-as-fg "false"
|
|
|
|
else
|
|
local profile_path=$gconfdir/$profile
|
|
|
|
# set color palette
|
|
gconftool-2 -s -t string $profile_path/palette "$(to_gconf < $scheme_dir/palette)"
|
|
|
|
# set foreground, background and highlight color
|
|
gconftool-2 -s -t string $profile_path/bold_color $(cat $bd_color_file)
|
|
gconftool-2 -s -t string $profile_path/background_color \
|
|
$(cat $bg_color_file)
|
|
gconftool-2 -s -t string $profile_path/foreground_color \
|
|
$(cat $fg_color_file)
|
|
|
|
# make sure the profile is set to not use theme colors
|
|
gconftool-2 -s -t bool $profile_path/use_theme_colors false
|
|
|
|
# set highlighted color to be different from foreground color
|
|
gconftool-2 -s -t bool $profile_path/bold_color_same_as_fg false
|
|
fi
|
|
}
|
|
|
|
interactive_help() {
|
|
echo
|
|
echo -en "This script will ask you which color scheme you want, and which "
|
|
echo -en "Gnome Terminal profile to overwrite.\n"
|
|
echo
|
|
echo -en "Please note that there is no uninstall option yet. If you do not "
|
|
echo -en "wish to overwrite any of your profiles, you should create a new "
|
|
echo -en "profile before you run this script. However, you can reset your "
|
|
echo -en "colors to the Gnome default, by running:\n"
|
|
echo
|
|
echo " Gnome >= 3.8 dconf reset -f /org/gnome/terminal/legacy/profiles:/"
|
|
echo " Gnome < 3.8 gconftool-2 --recursive-unset /apps/gnome-terminal"
|
|
echo
|
|
echo -en "By default, it runs in the interactive mode, but it also can be "
|
|
echo -en "run non-interactively, just feed it with the necessary options, "
|
|
echo -en "see 'install.sh --help' for details.\n"
|
|
echo
|
|
}
|
|
|
|
interactive_select_scheme() {
|
|
echo "Please select a color scheme:"
|
|
select scheme
|
|
do
|
|
if [[ -z $scheme ]]
|
|
then
|
|
die "ERROR: Invalid selection -- ABORTING!" 2
|
|
fi
|
|
break
|
|
done
|
|
echo
|
|
}
|
|
|
|
interactive_confirm() {
|
|
local confirmation
|
|
|
|
echo "You have selected:"
|
|
echo
|
|
echo " Scheme: $scheme"
|
|
echo " Profile: $(get_profile_name $profile) ($profile)"
|
|
echo
|
|
echo "Are you sure you want to overwrite the selected profile?"
|
|
echo -n "(YES to continue) "
|
|
|
|
read confirmation
|
|
if [[ $(echo $confirmation | tr '[:lower:]' '[:upper:]') != YES ]]
|
|
then
|
|
die "ERROR: Confirmation failed -- ABORTING!"
|
|
fi
|
|
|
|
echo "Confirmation received -- applying settings"
|
|
}
|
|
|
|
while [ $# -gt 0 ]
|
|
do
|
|
case $1 in
|
|
-h | --help )
|
|
show_help
|
|
exit 0
|
|
;;
|
|
--scheme=* )
|
|
scheme=${1#*=}
|
|
;;
|
|
-s | --scheme )
|
|
scheme=$2
|
|
shift
|
|
;;
|
|
--profile=* )
|
|
profile=${1#*=}
|
|
;;
|
|
-p | --profile )
|
|
profile=$2
|
|
shift
|
|
;;
|
|
--install-dircolors )
|
|
install_dircolors=true
|
|
;;
|
|
--skip-dircolors )
|
|
install_dircolors=false
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
if [[ -z "$scheme" ]] || [[ -z "$profile" ]]
|
|
then
|
|
interactive_help
|
|
fi
|
|
|
|
if [[ -n "$scheme" ]]
|
|
then validate_scheme $scheme
|
|
else
|
|
interactive_select_scheme "${schemes[@]}"
|
|
fi
|
|
|
|
if [[ -n "$profile" ]]
|
|
then if [ "$newGnome" = "1" ]
|
|
then profile="$(get_uuid "$profile")"
|
|
fi
|
|
validate_profile $profile
|
|
else
|
|
if [ "$newGnome" = "1" ]
|
|
then check_empty_profile
|
|
fi
|
|
interactive_select_profile "${profiles[@]}"
|
|
interactive_confirm
|
|
fi
|
|
|
|
set_profile_colors $profile $scheme
|
|
|
|
if [ -n "$install_dircolors" ]
|
|
then if "$install_dircolors"
|
|
then copy_dircolors
|
|
fi
|
|
else
|
|
check_dircolors || warning_message_dircolors
|
|
fi
|