保存和恢复带标题多标签终端(附shell脚本)

有这么一个应用场景:每天上班打开多个终端,进入不同的文件目录,然后才开始编程。本文介绍如何保存终端会话,并附上shell脚本。

1. 简易方法(不带标题)

用如下命令保存和恢复多标签终端,值得注意的是,这里保存所有窗口的终端。

gnome-terminal --save-config=filename  # 保存terminal configure 
gnome-terminal --load-config=filename  # 加载terminal configure

但这有个问题,没有保存标题。要实现这一点,可以在filename手动添加title字段,举例如下:

[Terminal0xb73030]
Title=theone
ProfileID=Default
Title=theone
WorkingDirectory=/home/qiankun/NetworkSimulator/one_1.5.1-RC2-modified
Zoom=1
Width=143
Height=39

2. 带标题终端

2.1 保存

askubuntu有人给出了方法,原回答在这里,大概的思路是用xdotool工具模拟组合键ctrl+page_down(跳转到terminal的下一个标签),并保存各个标签的标题。运行命令sudo apt-get install xdotool安装xdotool。稍加修改后的脚本如下(saveTermConfig.sh):

#!/usr/bin/env bash

filename=/home/qiankun/termConfig.txt
gnome-terminal --save-config=$filename

LINES=($(grep -n '\[Terminal' $filename | cut -d: -f1))
for ((i=0; i<$(grep '\[Terminal' $filename | 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/" $filename 
done

2.2 恢复

再写个简单的shell脚本恢复终端配置文件,源代码如下(loadTermConfig.sh):

#!/usr/bin/env bash

filename=/home/qiankun/termConfig.txt
gnome-terminal --load-config=$filename

很奇怪的是,Title选项在Ubuntu 14.04 LTS无效,但在12.04 LTS却是正常的,多半是一个BUG。

已将本文涉及到的源码分享在GitHub了,在这里

3. 解决Ubuntu Software Center自动关闭

我在安装xdotool提示错误“Encountered a section with no Package: header, Problem with MergeList” (打开Ubuntu Software Center,自动关闭),解决方法参考这里,如下:

sudo rm /var/lib/apt/lists/* -vf
sudo apt-get update

参考资料:
[1]askubuntu: Some fast way to save and restore tabs of Terminal?

发表评论

电子邮件地址不会被公开。 必填项已用*标注