#!/bin/bash -e
#
#    byobu-launch - call the launcher if we're in an interactive shell
#    Note: Uses decimal sleep (0.1) which requires bash
#    Copyright (C) 2010 Canonical Ltd.
#
#    Authors: Dustin Kirkland <kirkland@byobu.org>
#
#    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 <http://www.gnu.org/licenses/>.

# 1) Prevent recursion, and multiple sourcing of profiles with the BYOBU_SOURCED_PROFILE environment variable.
# 2) Respect environment variables (LC_BYOBU and BYOBU_DISABLE) passable over SSH to disable
#    Byobu launch.  This puts that configurability on the SSH client,
#    in addition to the server.
#    To use over SSH, your /etc/ssh/sshd_config and /etc/ssh/ssh_config
#    must pass this variable with AcceptEnv and SendEnv.
#    Note that LC_* are passed by default on Debian/Ubuntu, we'll optionally
#    support LC_BYOBU=0
#    And in your local bashrc:
#      $HOME/.bashrc:  export LC_BYOBU=0
#    or edit your sshd_config, ssh_config, and set:
#      $HOME/.bashrc:  export BYOBU_DISABLE=1

_tty=$(tty)
if [ "${_tty#/dev/ttyS}" != "$_tty" ] && [ "${_tty#/dev/ttyAMA}" != "$_tty" ]; then
	# Don't autolaunch byobu on serial consoles
	# You can certainly run 'byobu' manually, though
	echo
	echo "INFO: Disabling auto-launch of Byobu on this serial console"
	echo "INFO: You can still run 'byobu' manually at the command line"
	echo
elif [ "$BYOBU_SOURCED_PROFILE" != "1" ] && [ "$LC_BYOBU" != "0" ] && [ "$BYOBU_DISABLE" != "1" ] && [ -O "$HOME" ] && [ -z "$TMUX" ]; then
	unset _tty
	BYOBU_SOURCED_PROFILE=1
	PKG="byobu"
	[ -r "$HOME/.byoburc" ] && . "$HOME/.byoburc"
	[ -z "${BYOBU_PREFIX}" ] && export BYOBU_PREFIX="@prefix@" || export BYOBU_PREFIX
	. "${BYOBU_PREFIX}/lib/${PKG}/include/common"
	# Ensure that autolaunch is not explicitly disabled
	if [ ! -r "$BYOBU_CONFIG_DIR/disable-autolaunch" ]; then
		case "$-" in
			*i*)
				# Attempt to merge shell history across sessions/windows (works with some exceptions)
				for i in shopt setopt; do
					if eval $BYOBU_TEST $i >/dev/null; then
						case $i in
							shopt) $i -s histappend || true ;;
							setopt) $i appendhistory || true ;;
						esac
					fi
				done
				[ -n "$PROMPT_COMMAND" ] && PROMPT_COMMAND="history -a;history -r;$PROMPT_COMMAND" || PROMPT_COMMAND="history -a;history -r"
				# Source profile, if necessary
				[ -z "$_byobu_sourced" ] && [ -r "$HOME/.profile" ] && . "$HOME/.profile"
				if byobu-launcher "$@" ; then
					# Wait very briefly for the no-logout flag to get written?
					# Brief sleep prevents race condition with Shift-F6 detach (requires bash)
					sleep 0.1
					if [ -e "$BYOBU_CONFIG_DIR/no-logout-on-detach" ] || [ -e "$BYOBU_RUN_DIR/no-logout" ]; then
						# The user does not want to logout on byobu detach
						rm -f "$BYOBU_RUN_DIR/no-logout"	# Remove one-time no-logout flag, if it exists
						true
					else
						exit 0
					fi
				fi
			;;
		esac
	fi
fi
unset _tty
true
# vi: syntax=sh ts=4 noexpandtab
