connect-screen 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #!/bin/zsh -f
  2. if [[ $# -eq 0 ]] ; then
  3. echo "connect-screen [ screen-instance [ -x ] | list | dmenu ]"
  4. exit
  5. fi
  6. function open-screen {
  7. screen -r $1
  8. }
  9. function open-screen-x {
  10. if [[ -e `which i3-sensible-terminal` ]] ; then
  11. i3-sensible-terminal -e "screen -r $1"
  12. else
  13. xterm -e "screen -r $1"
  14. fi
  15. }
  16. function list-screen-sessions {
  17. screen -list | sed '$ d' | sed 1d | awk '{print $1}'
  18. }
  19. function with-external-completion {
  20. if [[ -e `which rofi` ]] ; then
  21. SCREEN=`list-screen-sessions | rofi -dmenu -p "screen session:"`
  22. [[ $SCREEN != "" ]] && open-screen-x $SCREEN
  23. else
  24. SCREEN=`list-screen-sessions | dmenu -p "screen session:"`
  25. [[ $SCREEN != "" ]] && open-screen-x $SCREEN
  26. fi
  27. }
  28. SCREEN=$1
  29. shift
  30. case ${SCREEN} in
  31. list)
  32. list-screen-sessions
  33. ;;
  34. dmenu)
  35. with-external-completion
  36. ;;
  37. *)
  38. if [[ $1 == "-x" ]] ; then
  39. open-screen-x $SCREEN
  40. else
  41. open-screen $SCREEN
  42. fi
  43. esac