#!/bin/sh -e # # byobu-select-profile # Copyright (C) 2008 Canonical Ltd. # # Authors: Dustin Kirkland # Nick Barcet # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # If you change any strings, please generate localization information with: # ./debian/rules get-po PKG="byobu" [ -r "$HOME/.byoburc" ] && . "$HOME/.byoburc" [ -z "${BYOBU_PREFIX}" ] && export BYOBU_PREFIX="/usr" || export BYOBU_PREFIX . "${BYOBU_PREFIX}/lib/${PKG}/include/common" TEXTDOMAIN="$PKG" COLORS="default_light \ default_dark \ white \ black \ grey \ dark_grey \ light_grey \ blue \ light_blue \ cyan \ light_cyan \ green \ light_green \ purple \ light_purple \ red \ light_red \ yellow \ brown" # Find a hash utility for i in md5sum md5 sha512sum sha256sum sha1sum shasum shasum5.12 shasum5.10; do if $BYOBU_TEST $i >/dev/null 2>&1; then HASH="$i" break fi done usage () { cat </dev/null && printf " " || printf " " echo "$i. $x" i=$(expr $i + 1) [ "$simple" = "$x" ] && simple=$i done echo if [ -z "$selected" -a -n "$simple" ]; then selected="$simple" elif ! test $selected -gt 0 2>/dev/null; then printf "`gettext 'Choose'` 1-$i [$simple]: " selected=`head -n1` elif ! test $selected -le $i 2>/dev/null; then printf "`gettext 'Choose'` 1-$i [$simple]: " selected=`head -n1` else i=1 for color in $COLORS; do [ "$i" = "$selected" ] && break i=$(expr $i + 1) done echo `gettext "Selected"` "$which [$color]" case "$BYOBU_BACKEND" in screen) setcolor_screen "$which" "$color" ;; tmux|*) setcolor_tmux "$color" ;; esac return 0 fi done } getletter() { count=$(echo "$1" | wc -c) if [ "$count" = "2" ]; then echo "$1" return fi color="$1" case $color in default_light) letter="d";; default_dark) letter="D";; black) letter="k";; dark_grey) letter="K";; blue) letter="b";; light_blue) letter="B";; cyan) letter="c";; light_cyan) letter="C";; green) letter="g";; light_green) letter="G";; purple) letter="m";; light_purple) letter="M";; red) letter="r";; light_red) letter="R";; grey) letter="w";; light_grey) letter="W";; white) letter="w";; yellow) letter="Y";; brown) letter="y";; *) letter="d";; esac echo "$letter" } setcolor_screen() { which="$1" color="$2" [ -r $FILE ] && . $FILE if [ "$which" = "foreground" ]; then FOREGROUND=$(getletter "$color") else BACKGROUND=$(getletter "$color") fi [ "$MONOCHROME" = "1" ] || MONOCHROME=0 printf "FOREGROUND=$FOREGROUND\nBACKGROUND=$BACKGROUND\nMONOCHROME=$MONOCHROME" > $FILE touch "$BYOBU_RUN_DIR/reload-required" $BYOBU_BACKEND -X at 0 source "$BYOBU_CONFIG_DIR/profile" } get_contrast() { # See section 2.2: http://www.w3.org/TR/AERT#color-contrast local awk="awk" if $BYOBU_TEST gawk >/dev/null 2>&1; then awk="gawk" fi local hex="$(echo "$1" | sed -e "s/\(..\)\(..\)\(..\)/\1 \2 \3/")" local bright=$(echo $hex | $awk --non-decimal-data '{printf "%0.0f",(("0x"$1)*299+("0x"$2)*587+("0x"$3)*114)/1000}') if [ $bright -ge 130 ]; then _RET="black" else _RET="white" fi } setcolor_tmux() { if [ "$BYOBU_BACKEND" != "tmux" ]; then echo "WARNING: This functionality is only supported in Byobu with the tmux backend" 1>&2 fi dark="$1" get_contrast "$dark" light="$_RET" accent="magenta" highlight="red" monochrome="0" printf "BYOBU_DARK=\"$dark\"\nBYOBU_LIGHT=$light\nBYOBU_ACCENT=$accent\nBYOBU_HIGHLIGHT=$highlight\nMONOCHROME=$MONOCHROME" > "$FILE".tmux tmux source "$BYOBU_PREFIX/share/byobu/profiles/tmuxrc" } if [ $# -eq 0 ]; then prompt "background" case "$BYOBU_BACKEND" in screen) prompt "foreground" ;; esac else while true; do case "$1" in -b|--background) setcolor_screen "background" "$2" shift 2 ;; -f|--foreground) setcolor_screen "foreground" "$2" shift 2 ;; -l|--list) listprofiles shift break ;; -h|--hostname) color=$(hostname | $HASH | head -c 6) setcolor_tmux "$color" shift break ;; -i|--ip) [ -r "$BYOBU_CONFIG_DIR/statusrc" ] && . "$BYOBU_CONFIG_DIR/statusrc" . $BYOBU_PREFIX/lib/$PKG/ip_address color=$(__ip_address t| $HASH | head -c 6) setcolor_tmux "$color" shift break ;; -r|--random) color=$(head -c 10 /dev/urandom | $HASH | head -c 6) setcolor_tmux "\#$color" shift break ;; *) usage exit 1 ;; --) shift break ;; esac [ $# -eq 0 ] && break done fi exit 0 # vi: syntax=sh ts=4 noexpandtab