#!/bin/bash - not strictly necessary, but helps nano with syntax highlighting. # Source bash specific set up, [[ -f "$HOME/.bashrc" ]] && . "$HOME/.bashrc" # Environment. export EDITOR="nano" export LANG="en_GB.UTF-8" export LC_COLLATE="POSIX" # 'C' causes issues with some applications # export LC_CTYPE="POSIX" # Not sure why I set this in the first place... export LESS='-RM -j.5 -i -PM?f%F:stdin. -- Page %dt of %D -- %lt/%L (%Pt\%)$' export PAGER="less" export VISUAL="$EDITOR" hash lesspipe >/dev/null 2>&1 && eval "$(SHELL=/bin/sh lesspipe)" # Platform specific set up. PLATFORM="${PLATFORM:-$(uname -s)}" if [[ "$PLATFORM" = "Linux" ]]; then # shellcheck disable=SC2155 export GPG_TTY="$(tty)" export I_WANT_A_BROKEN_PS=1 export LYNX_CFG="$HOME/.lynx.cfg" export LYNX_LSS="$HOME/.lynx.lss" export MANPAGER="less" export MANPATH="$HOME/.local/share/man:$MANPATH" export PATH="/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" hash dircolors >/dev/null 2>&1 && eval "$(dircolors -b "$HOME/.dir_colors")" hash gpgconf >/dev/null 2>&1 && { GPG_SOCK_DIR="$(gpgconf --list-dirs | awk -F : '/socketdir:/ { print $2 }')" # shellcheck disable=SC2174 [[ ! -e "$GPG_SOCK_DIR" ]] && mkdir -m 700 -p "$GPG_SOCK_DIR" [[ ! -e "$GPG_SOCK_DIR/S.gpg-agent" ]] && [[ -e "$HOME/.gnupg/S.gpg-agent" ]] && ln -sf "$HOME/.gnupg/S.gpg-agent" "$GPG_SOCK_DIR"/ unset GPG_SOCK_DIR } hash gpg-connect-agent >/dev/null 2>&1 && gpg-connect-agent updatestartuptty /bye >/dev/null 2>&1 [[ ! -e "$HOME/.config/lxterminal/lxterminal.conf" ]] && ( cd "$HOME/.config/lxterminal" 2>/dev/null || exit 1 [[ -e "lxterminal.conf-${HOSTNAME%%.*}" ]] && ln -sf "lxterminal.conf-${HOSTNAME%%.*}" "lxterminal.conf" ) elif [[ "$PLATFORM" = "Darwin" ]]; then export LSCOLORS="ExGxdxdxCxDxDxbcacbeae" export MANPAGER="less -Mis -PM'Page %dt$'" export MANPATH="/opt/local/share/man:$MANPATH" export PATH="/opt/local/libexec/gnubin:/opt/local/sbin:/opt/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" else printf "%s: %s\\n" "${BASH_SOURCE##*/}" "unsupported platform: $PLATFORM" >&2 fi # Add bin directories to PATH. [[ -d "$HOME/files/bin" ]] && export PATH="$HOME/files/bin:$PATH" [[ -d "$HOME/.local/bin" ]] && export PATH="$HOME/.local/bin:$PATH" [[ -d "$HOME/bin" ]] && export PATH="$HOME/bin:$PATH" # Screen. hash screen >/dev/null 2>&1 && { [[ -e "$HOME/.screenrc-${HOSTNAME%%.*}" ]] && export SCREENRC="$HOME/.screenrc-${HOSTNAME%%.*}" export SCREENDIR="$HOME/.screen-${HOSTNAME%%.*}" if [[ -n "$SSH_TTY" ]]; then if [[ -n "$STY" ]]; then # shellcheck disable=SC2154 printf "%s\\n\\n" "Screen $STY, window $WINDOW." else SCREENS="$(screen -ls | grep '[[:alpha:]]' | grep -E -v '^([[:digit:]]+|No) Socket(s)?')" if [[ -n "$SCREENS" ]]; then printf "%s\\n\\n" "$SCREENS" else printf "%s\\n\\n" "No screens." fi unset SCREENS fi elif [[ -n "$STY" ]]; then # shellcheck disable=SC2154 printf "%s\\n\\n" "Screen $STY, window $WINDOW." else TTY="$(tty | cut -d/ -f3-)" SCREENS="$(screen -ls | grep -F "${HOSTNAME%%.*}" | grep -F "${TTY//\//-}")" # This has to be an echo, not printf. case "$(echo "${SCREENS:--n}" | wc -l)" in 0) # No screens found - start a new instance if on a tty. # Disabled this because screens should be started on chuckie not the desktop/laptop. # [[ "$TTY" == tty* ]] && screen : ;; 1) # Just one screen - reconnect if it's not dead. if (( $(printf "%s" "$SCREENS" | grep -c -F 'Dead') == 1 )); then printf "%s:\\n" "Found dead screen for $TTY" printf "%s\\n" "$SCREENS" | sed -e 's/^/ /g' else screen -dr "${TTY//\//-}.${HOSTNAME%%.*}" fi ;; *) # Multiple screens - output a list printf "%s:\\n" "Multiple screens found for $TTY" printf "%s\\n" "$SCREENS" | sed -e 's/^/ /g' ;; esac fi unset SCREENS TTY }