Przeglądaj źródła

fix(UI): 优化 UI 启动过程,强制踢出之前的远程终端,同步窗口大小

dzp 2 lat temu
rodzic
commit
0e6b0d0bb5
1 zmienionych plików z 27 dodań i 23 usunięć
  1. 27 23
      bin/start-ui

+ 27 - 23
bin/start-ui

@@ -13,31 +13,35 @@ fi
 
 SESSION=MUD
 
-# 等待终端状态同步
+function create-ui() {
+    echo 正在生成 UI...
+
+    HEIGHT=$(tput lines || ( [[ "x$LINES" != "x" ]] && echo $LINES ) || echo 30)
+    HEIGHT=$(expr $HEIGHT - 1 - 1 - 1 - 6)
+
+    # 创建一个标准会话
+    $TMUXCMD new-session -d -s $SESSION
+    $TMUXCMD new-window     -t $SESSION
+    $TMUXCMD select-window  -t $SESSION:0
+    $TMUXCMD split-window   -t $SESSION -vb
+    $TMUXCMD send-keys      -t $SESSION 'clear; echo "You could input \"mtail id\" to watch your game log."; mtail'
+    $TMUXCMD send-keys      -t $SESSION Enter
+    $TMUXCMD last-pane
+    $TMUXCMD send-keys      -t $SESSION "sleep 0.1; tmux resize-pane -y $HEIGHT; clear; doc HOW-TO-PLAY.md"
+    $TMUXCMD send-keys      -t $SESSION Enter
+
+    echo UI 已创建。
+}
+
+# 停顿一下,等待终端状态同步。
 echo 正在打开终端...
 sleep 0.5;
 
-echo 正在连接 UI...
-
-# 优先连接到已有的会话,继续之前的状态
-$TMUXCMD attach-session -t $SESSION && exit
-
-echo 正在生成 UI...
-
-HEIGHT=$(tput lines || ( [[ "x$LINES" != "x" ]] && echo $LINES ) || echo 30)
-HEIGHT=$(expr $HEIGHT - 1 - 1 - 1 - 6)
-
-# 如果尚未创建会话,则创建一个标准会话
-$TMUXCMD new-session -d -s $SESSION
-$TMUXCMD new-window     -t $SESSION
-$TMUXCMD select-window  -t $SESSION:0
-$TMUXCMD split-window   -t $SESSION -vb
-$TMUXCMD send-keys      -t $SESSION 'clear; echo "You could input \"mtail id\" to watch your game log."; mtail'
-$TMUXCMD send-keys      -t $SESSION Enter
-$TMUXCMD last-pane
-$TMUXCMD send-keys      -t $SESSION "sleep 0.1; tmux resize-pane -y $HEIGHT; clear; doc HOW-TO-PLAY.md"
-$TMUXCMD send-keys      -t $SESSION Enter
+# 如果是首次启动,则先创建 UI。否则优先连接到已有的会话,继续之前的状态。
+if ! $TMUXCMD has-session 2>/dev/null; then
+    create-ui;
+fi
 
-echo UI 已创建。
+echo 正在连接 UI...
 
-exec $TMUXCMD attach-session -t $SESSION
+exec $TMUXCMD attach-session -d -t $SESSION