问题描述
我有一个终端窗口,打开了十几个命名选项卡。
我想保存当前配置并使用名称和目录进行恢复。
有没有办法做到这一点?
最佳解决思路
要将配置保存到/tmp/cfg
:
gnome-terminal --save-config=/tmp/cfg
要加载它:
gnome-terminal --load-config=/tmp/cfg
UPDATE
在使用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 '\[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窗口。当你重新打开Byobu时,所有的终端都恢复了:)
第三种解决思路
恢复保存的设置后,我尝试了以下选项,并且还正确恢复了标题。
-
转到设置 – >配置文件,然后选择您正在使用的当前配置文件
-
单击编辑并转到“标题和命令”选项卡
-
将初始标题设为空白
-
在下面的下拉框中选择“保留初始标题”选项。
此选项可以避免覆盖您的初始标题集。
希望这有助于一个伟大的剧本。每次重新启动都可以节省大量时间,我可以愉快地重新启动虚拟机。
谢谢!!
第四种思路
我又尝了一个选择,
我更改了终端的默认标题以使用~/.bashrc
中的Intital值,而不是更改~/.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
时,将正确恢复所有选项卡名称。您也可以根据需要进行更改并再次保存标签!
第五种思路
我找到了一种方法,我认为它更快。
-
像Yoga所说的那样创建一个标题和名称的个人资料。
-
类型:
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 &'