#!/bin/bash HOSTNAME=`echo $@ | sed s/.*@//` AS_ROOT='false' if [ "$(echo $@ | grep '^root@' > /dev/null)" ] then AS_ROOT='true' fi function getHostRealFqdn() { local strHostname="$1" local strHostFqdn="$(host $strHostname | tail -1 | awk '{print $1}')" echo "$strHostFqdn" } HOST_FQDN=$(getHostRealFqdn $HOSTNAME) SOLARIZED_BACKGROUND='{0, 8256, 10368}' #002b36 (solarized dark base03) SAILOR_BLUE='{8832, 14208, 18816}' # 2e4a62 PRUNE='{15360, 10944, 14592}' #50394c TAUPE='{19968, 18816, 16512}' #686256 DARK_ORANGE='{27456, 12864, 0}' #8f4300 DARK_OLIVE='{8832, 11904, 5568}' #2e3e1d function get_current_terminal_window_id() { local terminal_windows_id='' terminal_windows_id=$(osascript -e "tell application \"Terminal\" to get id of window 1") echo "$terminal_windows_id" } function set_bg () { local strOsxTermWindowId="$1" local strColor="$2" # eg {45000, 0, 0, 50000} osascript -e "tell application \"Terminal\" to set background color of (every window whose id is $strOsxTermWindowId) to $strColor" } function on_exit () { set_bg "$THIS_OSX_TERM_WINDOW_ID" "$SOLARIZED_BACKGROUND" } # if [ $(echo $HOST_FQDN | grep '^simpatix') ] # then # BG_COLOR="$SAILOR_BLUE" # elif [ $(echo $HOST_FQDN | grep '^physix') ] # then # BG_COLOR="$TAUPE" # else # case $HOST_FQDN in # 'pr079234.spm.univ-rennes1.fr') # BG_COLOR="$SOLARIZED_BACKGROUND" # ;; # 'puppet3.ipr.univ-rennes1.fr') # BG_COLOR="$PRUNE" # ;; # *) # BG_COLOR="$DARK_OLIVE" # ;; # esac # fi #if [ "$AS_ROOT" = 'true' ] #then # BG_COLOR="$DARK_ORANGE" #fi DCONF_PROFILES_PATH='/org/gnome/terminal/legacy/profiles:' create_new_profile() { # copied from https://askubuntu.com/questions/270469/how-can-i-create-a-new-profile-for-gnome-terminal-via- command-line local profile_ids=($(dconf list $DCONF_PROFILES_PATH/ | grep ^: |\ sed 's/\///g' | sed 's/://g')) local profile_name="$1" local profile_ids_old="$(dconf read "$DCONF_PROFILES_PATH"/list | tr -d "]")" local profile_id="$(uuidgen)" [ -z "$profile_ids_old" ] && local lb="[" # if there's no `list` key [ ${#profile_ids[@]} -gt 0 ] && local delimiter=, # if the list is empty dconf write $DCONF_PROFILES_PATH/list \ "${profile_ids_old}${delimiter} '$profile_id']" dconf write "$DCONF_PROFILES_PATH/:$profile_id"/visible-name "'$profile_name'" echo $profile_id } function get_terminal_profile_uuid() { # returns the id of the profile which has the given name. # if the named profile doesn't exist, it creates it first local profile_name="$1" # eg physix.ipr.univ-rennes1.fr local profile='' local this_profile='' local profile_uuid='' for this_profile in $(dconf list "$DCONF_PROFILES_PATH/") do # eg value for profile : ':b1dcc9dd-5262-4d8d-a863-c897e6d979b9/' local this_profile_name='' this_profile_name=$(dconf read $DCONF_PROFILES_PATH/${this_profile}visible-name | tr -d "'" ) # echo "this_profile_name=$this_profile_name" if [ "$this_profile_name" = "$profile_name" ] then profile_uuid=$(echo "$this_profile" | sed 's/^://' | sed 's|/||') echo "$profile_uuid" return 0 fi done # the profile named $profile_name doesn't exist... create it then profile_uuid=$(create_new_profile $profile_name) echo "$profile_uuid" } function set_terminal_profile_bg_color() { local profile_name="$1" # eg physix.ipr.univ-rennes1.fr local bg_color="$2" # eg rgb(17, 25, 24) local profile_uuid='' profile_uuid=$(get_terminal_profile_uuid $profile_name) echo "profile_name=$profile_name profile_uuid=$profile_uuid" dconf write $DCONF_PROFILES_PATH/:$profile_uuid/use-theme-colors 'false' dconf write $DCONF_PROFILES_PATH/:$profile_uuid/background-color "'rgb$bg_color'" } COLOR_SATURATION='0.3' COLOR_VALUE='0.2' OS_NAME=$(uname) case "$OS_NAME" in 'Darwin') BG_COLOR=$(make_color.py $HOST_FQDN $COLOR_VALUE $COLOR_SATURATION osx) THIS_OSX_TERM_WINDOW_ID=$(get_current_terminal_window_id) set_bg "$THIS_OSX_TERM_WINDOW_ID" "$BG_COLOR" trap on_exit EXIT /usr/bin/ssh "$@" ;; 'Linux') BG_COLOR=$(make_color.py $HOST_FQDN $COLOR_VALUE $COLOR_SATURATION linux) if [ $? != 0 ] then echo "error : make_color.py failed" exit 1 fi set_terminal_profile_bg_color "$HOST_FQDN" "$BG_COLOR" gnome-terminal --window-with-profile=$HOST_FQDN --title=$HOST_FQDN -- /usr/bin/ssh "$@" ;; *) echo "error : unexpeced os name : $OS_NAME" exit 1 esac