12個の名前付きタブが開いたターミナルウィンドウがあります。
現在の構成を保存し、名前とディレクトリを使用して復元したいと思います。
これを行う方法はありますか?
12個の名前付きタブが開いたターミナルウィンドウがあります。
現在の構成を保存し、名前とディレクトリを使用して復元したいと思います。
これを行う方法はありますか?
回答:
設定を保存するには/tmp/cfg
:
gnome-terminal --save-config=/tmp/cfg
バックロードするには:
gnome-terminal --load-config=/tmp/cfg
更新
bashをいじった後、タブ名/tmp/test
もファイルに保存する次のスクリプトを作成しました。
#!/usr/bin/env bash
gnome-terminal --save-config=/tmp/test
LINES=($(grep -n '\[Terminal' /tmp/test | cut -d: -f1))
for ((i=0; i<$(grep '\[Terminal' /tmp/test | wc -l); i++))
do
TITLE=$(xprop -id $WINDOWID WM_NAME | sed -e 's/WM_NAME(STRING) = "//' -e 's/"$//';xdotool key ctrl+Page_Down;)
sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" /tmp/test
done
適切に名前を割り当てるには、ターミナルの最初のタブから実行する必要があります。以前と同じロード:
gnome-terminal --load-config=/tmp/test
説明:
次を使用してタブ名を取得できます:
xprop -id $WINDOWID WM_NAME
次を使用して次のタブにジャンプできます:
xdotool key ctrl+Page_Down;
以前に保存した設定ファイルをgrepした後、タブの数を取得しています:
$(grep '\[Terminal' /tmp/test | wc -l)
したがって、ループ内のタブを反復処理できます。以前に保存したファイルの各タブ構成セクションに「Title = titlename」エントリを追加する必要があります。そのためには、まず行を追加する行番号の配列を作成します。
LINES=($(grep -n '\[Terminal' /tmp/test | cut -d: -f1))
タブを反復処理するループ内に「Title = titlename」行を追加しています。
sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" /tmp/test
別の方法は、単にByobuを使用することです。F2を押して、内部の新しいターミナルを開きます。F3とF4を使用して、端末間で左右に切り替えます。
いつでもGUIウィンドウを閉じます。By風を再び開くと、すべての端末が復元されます:)
私はもう一つのオプションを試しました、
ターミナルのデフォルトのタイトルを変更して、設定を変更するので~/.bashrc
はなく、の初期値を使用しました~/.profile
。
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="$PS1"
;;
*)
;;
esac
これを行う場合、ターミナルプロファイルを変更する必要はありません。
実行すると、gnome-terminal --load-config
すべてのタブ名が適切に復元されます。また、好きなように変更して、タブを再度保存することもできます!!
私はそれがより速いと思う方法を見つけました。
タイプ:
gnome-terminal --tab-with-profile=PROFILENAME1 --tab-with-profile=PROFILENAME2 ... --tab-with-profile=PROFILENAME999
このコマンドを使用してエイリアスを作成しましたが、かなりうまく機能しました。入力workflow
するだけで、3つのタブと、タブに配置されたプロファイル定義で選択したタイトルを含むターミナルが表示されます。
私の.bashrc
ファイルに私が置いた:
alias workflow='gnome-terminal --tab-with-profile=Git --tab-with-profile=Run | sublime-text &'
システムにインストールされているxdotoolをチェックし、パスを変更するための変数を追加する既存のスクリプトの少しの改善
#!/bin/bash
SAVEPATH=/tmp/termprofile
if [ ! -f /usr/bin/xdotool ]; then
echo "please install 'xdotool'"
exit 1
fi
gnome-terminal --save-config=$SAVEPATH
LINES=($(grep -n '\[Terminal' $SAVEPATH | cut -d: -f1))
for ((i=0; i<$(grep '\[Terminal' $SAVEPATH | wc -l); i++))
do
TITLE=$(xprop -id $WINDOWID WM_NAME | sed -e 's/WM_NAME(STRING) = "//' -e 's/"$//';xdotool key ctrl+Page_Down;)
sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" $SAVEPATH
done
上記のNyakinの答えを拡張すると、このスクリプトは複数のウィンドウとタブの構成で動作し、それらが含まれるすべてのタブのタブタイトルを正しく保存します。
現在、これはgnome-terminal 3.2でテストされていますが、同様のsave-config機能を持つ端末プログラム用に構成できます。
これには、「xprop」、「xdotool」、および「wmctrl」ツールが必要です。
コード:
#!/usr/bin/env bash
FILE="$1"
gnome-terminal --save-config=$FILE
WINDOWLINES=$(wmctrl -lx | grep gnome-terminal.Gnome-terminal)
WINDOWNUM=$(echo "$WINDOWLINES" | wc -l)
TABLISTS=$(grep "^Terminals" $FILE)
for ((i=1; i<=$WINDOWNUM; i++))
do
WINDOWLINE=$(echo "$WINDOWLINES" | sed -n "$i{p;q}")
WINDOW_ID=$(echo "$WINDOWLINE" | cut -d' ' -f1)
#Switch to window
wmctrl -i -a $WINDOW_ID
LINE=$(echo "$TABLISTS" | sed -n "$i{p;q}"); LINE=${LINE#Terminals=}
TERMINALNUM=$(echo "$LINE" | grep -o ';' | wc -l)
#go to first tab of the window if more than 1
[ $TERMINALNUM -gt 1 ] && xdotool key alt+1 && sleep .1
for tab in ${LINE//;/ }
do
#Get the current tab title
TITLE=$(xprop -id $WINDOW_ID WM_NAME | sed -e 's/WM_NAME(STRING) = "//' -e 's/"$//')
#Insert it into the config file
[ "$TITLE" == "${TITLE//WM_NAME/}" ] && sed -ri "/\[${tab}\]/aTitle=${TITLE}" $FILE
#Move to the next tab in the window
xdotool key ctrl+Page_Down
done
done
以下は、メニューからセッションを保存/復元できるxfceターミナルフォークです。https: //github.com/repu1sion/xfce4-terminal
Hyper(https://github.com/zeit/hyper)は、JavaScriptで記述され、Electronにバンドルされている優れたクロスプラットフォームの代替手段です。
すぐにセッションの保存/復元のサポートを追加するPRがあります:https : //github.com/zeit/hyper/pull/945