#!/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" 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]" setcolor "$which" "$color" 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() { 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" } get_contrast() { # See section 2.2: http://www.w3.org/TR/AERT local hex="$(echo "$1" | sed "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() { 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" prompt "foreground" $BYOBU_BACKEND -X at 0 source "$BYOBU_CONFIG_DIR/profile" else while true; do case "$1" in -b|--background) setcolor "background" "$2" shift 2 ;; -f|--foreground) setcolor "foreground" "$2" shift 2 ;; -l|--list) listprofiles shift break ;; -h|--hostname) color=$(hostname | md5sum | 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| md5sum | head -c 6) setcolor_tmux "$color" shift break ;; -r|--random) color=$(head -c 10 /dev/urandom | md5sum | 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