Nils <[EMAIL PROTECTED]> writes: > i open op a new terminal, which the opens my shell (zsh). I want the > zsh to check if it is already inside of a screen session, and if it is > not, to connect to one, and open a new shell in there.
I have almost that for sh: ### ~/.profile: sourced by bourne-compatible login shells. ### If ~/.bash_profile exists, this will NOT be read by bash! ### SUS bookmark: http://www.opengroup.org/onlinepubs/009695399/ # [unrelated code elided.] ## The naive "chsh -s /usr/bin/screen" breaks scp (and other things). ## Have sh start screen automatically "when appropriate". That is, ## 1) not in a screen window (STY); ## 2) stdin is a tty; ## 3) screen is installed; and ## 4) terminal is capable of displaying screen. ## Replace "$STY" with "$STY$SSH_CLIENT$SSH_ORIGINAL_COMMAND" to avoid ## nesting screens when sshing (untested). test -z "$STY" -a -t 0 && { type screen && tput clear && tput cup && ! tput hc && ! tput os } 2>/dev/null >&2 && # ignore boring, expected error messages { ## Set the window title to the host name. ## Note that using echo -e \e for ^[ is not portable. type uname >/dev/null 2>&1 && test -n "${HOSTNAME:=`uname -n`}" && case "$TERM" in screen*) printf %bk%s%b%b \\033 "${HOSTNAME%%.*}" \\033 \\0134;; esac ## If new session, start agents. screen -ls | grep -i 'No Sockets found' >/dev/null 2>&1 && eval "$(twb-agents)" ## Start screen. exec screen -DRR } ## If execution reaches this point, screen isn't the login shell. In ## that case, if this is a bash shell, it's a good idea to do the ## bashisms in .bashrc. test -n "$BASH" && test -f ~/.bashrc && . ~/.bashrc > essentially i would like i to do a screen -x, C-a c. I check if i am > inside a shell with the STY variable, but i have not found a good way > to connect while creating a new shell I'm not sure if you can do exactly that. I suppose it depends if you're starting xterm from within the screen session, or from some other X client. When STY is set you can just do "screen foo" and it'll pop up a new window running foo inside the screen session. Otherwise you might be able to do something like "screen -X screen && screen -xRR" to first start a new window, *then* connect to the session. _______________________________________________ screen-users mailing list screen-users@gnu.org http://lists.gnu.org/mailman/listinfo/screen-users