nisshiee.org

僕の愛用screen設定

2018-12-25
vi ~/.screenrc
autodetach on
defscrollback 10000
altscreen on
escape ^Tt
startup_message off
hardstatus on
hardstatus alwayslastline
hardstatus string '%{= kw}%-w%{=b kC}%n %t%{= kw}%+w%='
bind l windowlist
termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007:ti@:te@'

※ ↑本当は各設定の意味を説明したいが、備忘録としてとりあえず書きたいので、そのうち気が向いたら・・・

vi ~/bin/sc
#!/bin/bash

STATUS=`screen -ls`

new_session() {
  exec screen
}

detach_and_reattach() {
  exec screen -d -r
}

multi_attach() {
  exec screen -x
}

reattach() {
  exec screen -r
}

echo $STATUS | grep 'No Sockets found' > /dev/null 2>&1
if [ $? -eq 0 ]; then
  new_session
  exit 0
fi

echo $STATUS | grep '1 Socket in' > /dev/null 2>&1
if [ $? -eq 0 ]; then

  echo $STATUS | grep 'Attached' > /dev/null 2>&1
  if [ $? -eq 0 ]; then
    multi_attach
    exit 0
  fi

  echo $STATUS | grep 'Detached' > /dev/null 2>&1
  if [ $? -eq 0 ]; then
    reattach
    exit 0
  fi

  echo '[ERROR] parse `screen -ls` error.'
  echo "$STATUS"
  exit 1
fi

echo '[WARN] more than 1 session found. Please reconnect manually.'
echo "$STATUS"
exit 1

※ ↑のコードはすごい昔にネット上の何かを参考にした記憶がある。本当はその参照元を示したいのだが、ググっても見つからなかった・・・

chmod +x ~/bin/sc