[中秋节发月饼] 深度终端内测啦!
Tofloor
poster avatar
186******98
deepin
2013-09-19 10:16
Author
《深度终端诞生记》(2013-09-19)

深度终端诞生导火线

我记得一个月前, 我们在周三用户反馈的例会上查看用户新报的反馈, 不止一个用户抱怨新的 gnome-terminal 背景不能透明了, 但是原来的老版本是可以的。

终端透明是一个非常有用的功能, 有时候在网上找到有用的教程, 这个时候就需要开一个终端试一下, 透明的目的就是打开终端的同时可以看到浏览器页面的内容, 这时候我们可以一边看网页内容, 一边在终端中输入内容, 而不是为了看网页内容反复在网页和终端之间切换。

我不知道Gnome团队到底是为了什么原因去掉背景透明这个功能, 每一个软件不管它有多少功能, 但是如果核心功能不够好, 用户就不会喜欢,同样背景透明作为终端爱好者都是必备的一个功能就这样随性的被去掉, 完全不是技术问题。

其实从Gnome3开始, 我感觉Gnome团队不再是原来的Gnome团队, 原来的gnome团队虽然不够华丽, 但是很简洁, 功能很细心, 每个版本在保持稳定的同时总是添加一些贴心的小功能。Gnome吸引大家的就是简单、稳定、贴心小功能逐渐累积, 越用越舒服。 但是现在的Gnome团队除了追求新的设计, 完全不考虑新的设计是否用户真的喜欢, 或者gnome现在就是为了不同而不同?最让人气愤的是, 把十几年积累的各种贴心设置随性的抛弃, 完全不考虑忠实用户的感受。

而我早已经厌倦这样回答用户:“这是上游的bug, 请你报告给上游, 我们现在修复不了”。我同样也厌倦了这种随性的反复改, 新版本不是更稳定了, 而是又有新的问题。 为了让用户开心, 为了一劳永逸的解决问题, 我决定重新写一个终端来解决用户的问题。

深度终端重写的必要性

但是在写之前, 我首先要问自己一个问题:“究竟有哪些功能值得我们重新写一个?”, 是的如果重写只是和现有终端的功能一样, 我们完全没有必要重写。

接下来我就开始思考深度终端应该具备哪些功能?下面是当时我写深度终端定下来的目标:

1. 背景透明调整 (这个必须的)

2. 自定义字体和字体大小

3. 自定义颜色方案

4. 自定义快捷键

5. 自定义 shell 命令

6. 自定义光标形状

7. Ctrl + 左键打开当前光标处的连接地址

这些其实都是大部分终端都有的功能, 那么深度终端要实现哪些新的功能呢?

1. 分屏功能:

    当前终端正在运行命令的时候, 为什么我需要开一个标签处来开一个新的标签来处理新的任务?其实大部分我们就希望在当前窗口分一个临时的窗口来处理新的任务, 如果新的任务处理完了就关闭临时分屏窗口, 分屏的好处是对于一个多任务码农来说, 我们能同时监控几个任务的执行, 而不是要在几个标签中来回切换, 一旦标签多了, 我们还需要用人脑来记住那个标签里面是什么。 程序是用来帮用户记忆的,而不是让用户浪费脑细胞去记忆标签。 深度终端就可以按 Ctrl + v / Ctrl + h 来自由的纵向/横向分屏了,当然是可以通过 Alt + j/k/h/l 快捷键自动聚焦到不同的终端。 分屏的新终端自动克隆当前的工作目录, 省得用户再敲一遍cd命令, 如果当前目录很长, 敲cd加各种tab键补全也是非常痛苦的。当然对于很多运维人员来说, 如果需要在新终端中指定特定的目录, 也可以简单定制启动目录选项。

2. 工作区切换

   工作区的目的就是把几个类型不同的终端放在一起好方便切换。现有的终端的工作区就是开一个新的标签, 比如 '工作区1', '工作区2' , '工作区3'  .... , 这里我们就要思考了? 如果我们开了很多工作区, 比如我们建立5个工作区, 在我们真正点击标签的之前, 我们是不知道标签下的工作区究竟是哪一个类型的工作区, 人都是健忘的。 是不是经常有这种体验? 在非常忙碌的情况下, 想切换到刚才工作的工作区看看进度怎样的时候, 忘记究竟是哪个工作区, 这个时候我们就点击一个标签看一下是不是我们要的内容, 不是, 点击下一个, 还不是, 再继续点击下一个,还不是, 再继续 ... 工作区越多我们就越记不住, 就浪费了很多时间在做不确定的标签切换动作。有人会说, 给标签重命名, 但是工作区新开的目的每天都会不一样, 如果每次新建工作区我都需要想一个名字是不是也很不科学呢?其实我们切换终端的时候, 就应该像我们按 Alt + Tab 切换程序窗口一样, 我们虽然不知道下一个工作区是什么, 但是我们可以把所有工作区的截图展示出来, 人记忆图像的能力远远好于记文字, 我们通过所有工作区的截图可以快速判断出我们想切换的工作区, 直接选择就可以了, 这样整个动作流程就是连贯的, 直观的, 快速的。比如, 我要切换到 vim 标签, 只需要瞄一下哪个截图像 vim 的图形特征就可以直接切换过去, 比如我要切换到更新源终端, 直接看一下截图是否有服务器一屏服务器地址列表就知道了。 所以深度终端添加了工作区截图预览的功能, 用图让用户快速切换到自己想要的工作区, 节省用户的时间。在深度终端中, Ctrl + / 新建工作区, Ctrl + , 和 Ctrl + . 就可以快速的切换工作区。

当然鼠标党也可以体验用鼠标选中工作区和动态添加工作区。

3. 方便的 SSH 管理工具

   运维大大们天天要维护各种服务器, 每种服务器有各种不同的登陆信息, 如果超过几十个, 每次都要人工记忆对于运维大大们真的非常枯燥, 而且在长时间疲劳的情况下, 还容易敲错, 一旦远程服务器操作失误后果大家都懂的。 所以深度终端加入了简单方便的远程登陆管理功能, 你只需要新建一个 SSH 连接, 只用填写一次服务器登录信息, 然后直接点击就可以连接并自动帮你回答密钥yes并自动填写密码。下次再打开终端的时候只用点击”连接“就可以了, 脑子再也不用塞那么多服务器信息了。

4. 定制启动窗口的方式

   一般终端都是启动一个小的窗口, 但是很多高手很喜欢在终端启动以后按 F11 全屏工作, 我就在想, 那些高手要花多少时间浪费在 F11 上?所以深度终端添加了 ”启动方式“ 的选项, 默认是 ”正常窗口“, 你可以选择 ”最大化启动” 还是 “全屏启动”, 再也不用每天都要按一下 F11.

5. 简单的设置

   即使是终端这么专业的工具, 大多数用户第一次看到那么多设置都不一定会用。

比如 "单词选中正则表达式“, 对于很多不精通正则表达式的人来说, 这个选项开了就会导致选词错误。 所以深度终端归纳了3中简单的设置:

    1> 简单的配置喜欢的字体、颜色、以及透明度

    2> 自定义快捷键

    3> 针对高级用户, 自定义shell, 启动目录设置, 滚动设置

6. 实时调整背景透明度

    很多终端调整透明度的时候, 都不能实时的反馈用户调整的透明度, 就拿做的比较好的 terminator 来说, 每次调整透明度的时候都需要先让用户调整以后, 只有关闭设置窗口的时候才生效, 一会透明度调高了或者调低了, 都需要又一次让用户再次打开设置窗口调节, 用户需要猜想 0.7 和 0.5 的透明效果。 所以深度终端修改了底层的 vte 控件, 让深度终端在调节透明度的时候, 所有终端自动实时变化, 用户可以直观的感受透明度的调整, 当然如果你只是想调整背景透明度, 完全不用进设置界面, 直接 Ctrl + 鼠标滚轮就可以实时调整。

7. 快速调整字体大小

   当我们在投影分享我们终端内容的时候, 经常因为终端的字太小观众看不到。 深度终端中,只需要按 Ctrl + - 和 Ctrl + = 就可以调整字体的大小, 当然随时要恢复默认, 直接按 Ctrl + 0 就可以了。

8. 快捷的搜索

    在深度终端中只需要按 Ctrl + ' 就可以在顶部显示一个搜素工具条, 在工具条中敲击的时候, 光标会自动定位到第一个搜索到的位置, 然后接下来直接按回车就会继续跳到下一个搜索位置, 就是这么简单。

9. 支持文件拖拽

   只需要打开文件夹拖动文件或者目录到终端, 终端自动会把拖拽的文件路径插入, 再也不用敲打超长的路径。

10. Ctrl + 左键智能地做正确的事情
     比如当光标停留在连接 http://www.google.com 的时候, 按住 Ctrl + 左键可以打开浏览器
     比如当前光标的是文件, 用文件管理器打开
     比如当前光标处是命令, 自动打开一个终端显示 man 的内容

11. Quake 模式
      发布的时候按 F12 就可以一键显示和隐藏终端了。
      现在可以绑定按键到 ./deepin-terminal/src/main.py --quake-mode

      交互细节:
      1) 如果quake窗口没有启动, 创建一个
      2)   如果quake窗口当前聚焦, 在按一下 f12 自动隐藏
      3) 这点很关键, 如果 quake 窗口显示着但不是在最顶部聚焦, 按 f12 不会隐藏, 而是直接跳到最上面, 因为这时候用户希望快速调出来, 而不是要先隐藏再显示按两次 f12

12. 快速切换到当前终端运行的调试程序窗口
      开发人员一般都会在终端中启动一个 GUI 程序进行测试, 有时候开了太多的终端和测试窗口, 然后在 Alt + Tab 中查找由当前终端打开的窗口非常麻烦, 特别是几个终端打开的窗口类似的时候。 深度终端中只有按 Ctrl + 8 就可以自动查找到当前终端相关联的GUI窗口并自动显示到最前面, 方便开发人员快速找到调试窗口。

13. 快速关闭当前工作区的其他终端
      有时候开太多终端, 需要关闭其他终端, 不可能切换到每一个其他终端然后进行关闭。
      在深度终端中只需要按 Ctrl + Shift + Q 会自动关闭其他终端。

14. 坑爹, 我记得这个功能的快捷键是什么呢?

   一个强大的终端需要很多快捷键才能高效工作, 但是快捷键太多都记不住, 每次都需要打开设置界面看, 太慢了。 在深度终端中, 只需要按 Ctrl + ? 就可以显示所有快捷键, 你其实只用记住 Ctrl + ? 就可以了, 等手指肌肉记忆形成以后, 就不用再想快捷键了。

交互小细节, 只要松开按键, 快捷键窗口会自动消失, 或者点击窗口任何位置都会消失。

深度终端内测版提前体验:

1. Linux Deepin 用户只需要更新系统以后执行下面命令就可以体验了:
    sudo apt-get update && sudo apt-get install python-vte

    git clone https://github.com/linuxdeepin/deepin-terminal.git && cd ./deepin-terminal/src && ./main.py

2. 非 Linux Deepin 的用户需要:

   1> 安装 deepin-ui

    2> 安装 Deepin 仓库的 vte 库(添加了支持搜索和背景实时透明的补丁)

          先下载这个目录下所有的 deb 包 http://packages.linuxdeepin.com/deepin/pool/main/v/vte/

          然后执行

               sudo dpkg -i ./*.deb

    3> 安装深度终端

         git clone https://github.com/linuxdeepin/deepin-terminal.git && cd ./deepin-terminal/src && ./main.py

现在只是功能开发完成, 但是国际化和UI美化都还没有做, 今天是中秋节, 先发一个内测版给大家尝鲜吧, 等国际化和UI美化完成以后会直接替换 gnome-terminal 并通过软件中心安装。

在正式版之前相关的功能会快速开发, 在测试git之前请先删除原先的配置文件:

rm -r ~/.config/deepin-terminal/

下面是深度终端的一些截图:
Reply Favorite View the author
All Replies
2 / 7
To page
fredy4212
deepin
2013-09-20 22:05
#21
大家一般都喜欢什么样的背景色和字体色? 多多建议, 我尽量让默认配色都是大家喜欢的。
白底灰字好看
Reply View the author
136******54
deepin
2013-09-20 22:39
#22
我喜欢黑底灰字
Reply View the author
136******54
deepin
2013-09-20 22:40
#23
大家一般都喜欢什么样的背景色和字体色? 多多建议, 我尽量让默认配色都是大家喜欢的。

可以列出一些选项,搞个投票做参考
Reply View the author
186******98
deepin
2013-09-20 23:53
#24
[quote]大家一般都喜欢什么样的背景色和字体色? 多多建议, 我尽量让默认配色都是大家喜欢的。

可以列出一些选项,搞个投票做参考[/quote]
1. 黑底绿字
2. 黑底灰字
3. 黄底黑字
4. 白底黑字
5. 黑底白字
Reply View the author
jhkwei
deepin
2013-09-21 06:26
#25
能不能做一个串口插件,网口不通时,时不时我要用一下这个串口
Reply View the author
jhkwei
deepin
2013-09-21 06:29
#26
[quote][quote]大家一般都喜欢什么样的背景色和字体色? 多多建议, 我尽量让默认配色都是大家喜欢的。

可以列出一些选项,搞个投票做参考[/quote]
1. 黑底绿字
2. 黑底灰字
3. 黄底黑字
4. 白底黑字
5. 黑底白字[/quote]

白底黑字,很喜欢 eclipse ,notepad++,flashDevelop 的配色,很想移到vim上,可是调不准
Reply View the author
186******98
deepin
2013-09-25 03:20
#27
[quote][quote]试用了一下,感觉不错,有几个问题
1. 第一次启动在按最大化按钮的时候,系统自动注销了。这种奇怪情况我在用深度影音的时候也遇到过几次,不过好像其他人从来没遇到过,估计可能是自己电脑的问题。
2. 除了背景透明,能不能加入背景图片选项?
3. 关闭工作区的快捷键貌似没有默认设置(虽然可以自己设)
现在的VTE控件一旦用了背景图, 就不能真正的透明到下面的窗口, 这也是很多终端都加一个背景选项, 但是不透明的背景还不如透明背景色实用, 我一直没搞清楚这样做有什么好处?[/quote]
用背景图当然没有透明实用,但是背景图对于我的意义在于我在终端码字的时候喜欢全屏,用自己喜欢的图片做背景看着舒服,而且我一般是将终端放一个桌面,浏览器 和文件夹放另一个桌面
和我这种想法相似的人应该还是有一些的[/quote]
现在最新版本已经支持背景选项了。
默认是启用背景透明, 如果你把 “背景图片” 选项打开, 会自动显示当前主题的背景。

上一张git版的效果图:
Reply View the author
mutse
deepin
2013-09-25 04:02
#28
请教下,如下图:
DeepinScrot-4956.png

XHei Mono.Ubuntu 是什么字体包?谢谢!

问题已找到,是我的系统中没安装这个字体,已替换成其它字体。
Reply View the author
136******54
deepin
2013-09-25 19:43
#29
[quote][quote]
现在的VTE控件一旦用了背景图, 就不能真正的透明到下面的窗口, 这也是很多终端都加一个背景选项, 但是不透明的背景还不如透明背景色实用, 我一直没搞清楚这样做有什么好处?
用背景图当然没有透明实用,但是背景图对于我的意义在于我在终端码字的时候喜欢全屏,用自己喜欢的图片做背景看着舒服,而且我一般是将终端放一个桌面,浏览器 和文件夹放另一个桌面
和我这种想法相似的人应该还是有一些的[/quote]
现在最新版本已经支持背景选项了。
默认是启用背景透明, 如果你把 “背景图片” 选项打开, 会自动显示当前主题的背景。

上一张git版的效果图:[/quote]

赞一个!
Reply View the author
136******54
deepin
2013-09-25 19:54
#30
用了最新版本,设置了图片背景,发现在最大化的时候,最上面和最下面都有一行不是图片的东西,如图
DeepinScreenshot20130925114531.png
Reply View the author
186******98
deepin
2013-09-25 20:41
#31
用了最新版本,设置了图片背景,发现在最大化的时候,最上面和最下面都有一行不是图片的东西,如图
DeepinScreenshot20130925114531.png
你下面的一条怎么弄的? 我这边测试没有。

深度终端没有像 Deepin-UI 那样做边缘虚化绘制, 建议放一张比桌面大的图片, 否则会由循环贴图
Reply View the author
136******54
deepin
2013-09-25 21:50
#32
[quote]用了最新版本,设置了图片背景,发现在最大化的时候,最上面和最下面都有一行不是图片的东西,如图
DeepinScreenshot20130925114531.png
你下面的一条怎么弄的? 我这边测试没有。

深度终端没有像 Deepin-UI 那样做边缘虚化绘制, 建议放一张比桌面大的图片, 否则会由循环贴图[/quote]

这张图跟屏幕分辨率(1680x1050)是一模一样的,下面的那条应该是循环贴图导致的
试了比桌面大的图片,只能显示一部分,比桌面小的又会循环
不能设定自由拉伸吗?
下面是同一张图片在Terminator的表现
DeepinScreenshot20130925134412.png
Reply View the author
136******54
deepin
2013-09-25 21:53
#33
默认的那几张也是循环贴图
DeepinScreenshot20130925134659.png
Reply View the author
186******98
deepin
2013-09-26 00:21
#34
默认的那几张也是循环贴图
DeepinScreenshot20130925134659.png
这边也可以做缩放, 但是一旦缩放以后, 里面的背景就和标题栏无法无缝衔接了。
Reply View the author
136******54
deepin
2013-09-26 00:33
#35
[quote]默认的那几张也是循环贴图
DeepinScreenshot20130925134659.png
这边也可以做缩放, 但是一旦缩放以后, 里面的背景就和标题栏无法无缝衔接了。[/quote]

哦,这样啊。不无缝衔接的时候是什么样的?
Reply View the author
186******98
deepin
2013-09-26 01:12
#36
[quote][quote]默认的那几张也是循环贴图
DeepinScreenshot20130925134659.png
这边也可以做缩放, 但是一旦缩放以后, 里面的背景就和标题栏无法无缝衔接了。[/quote]

哦,这样啊。不无缝衔接的时候是什么样的?[/quote]
无缝背景, 至于循环的问题, 可以通过类似 deepin-ui 主色补色来实现
Reply View the author
186******98
deepin
2013-09-26 02:56
#37
这边也可以做缩放, 但是一旦缩放以后, 里面的背景就和标题栏无法无缝衔接了。[/quote]

哦,这样啊。不无缝衔接的时候是什么样的?[/quote]
无缝背景, 至于循环的问题, 可以通过类似 deepin-ui 主色补色来实现[/quote]
VTE控件对绘制控制的比较死, 建议目前先用和您屏幕一样大的图片来作为背景效果最好
Reply View the author
136******54
deepin
2013-09-26 18:23
#38
这边也可以做缩放, 但是一旦缩放以后, 里面的背景就和标题栏无法无缝衔接了。

哦,这样啊。不无缝衔接的时候是什么样的?[/quote]
无缝背景, 至于循环的问题, 可以通过类似 deepin-ui 主色补色来实现[/quote]
VTE控件对绘制控制的比较死, 建议目前先用和您屏幕一样大的图片来作为背景效果最好[/quote]

我以上贴的那个截图就是用的跟屏幕一样大的图片,依然有循环
比屏幕大的又显示不了整个图片,所以希望能有自由伸缩的选项
Reply View the author
186******98
deepin
2013-09-26 20:40
#39
[quote]这边也可以做缩放, 但是一旦缩放以后, 里面的背景就和标题栏无法无缝衔接了。

哦,这样啊。不无缝衔接的时候是什么样的?[/quote]
无缝背景, 至于循环的问题, 可以通过类似 deepin-ui 主色补色来实现[/quote]
VTE控件对绘制控制的比较死, 建议目前先用和您屏幕一样大的图片来作为背景效果最好[/quote]

我以上贴的那个截图就是用的跟屏幕一样大的图片,依然有循环
比屏幕大的又显示不了整个图片,所以希望能有自由伸缩的选项[/quote]
和你屏幕一样的图试一下。
Reply View the author
186******98
deepin
2013-09-26 20:46
#40
现在绑定按键到 ./deepin-terminal/src/main.py --quake-mode 可以直接体验 Quake 模式了
Reply View the author
2 / 7
To page
New Thread

Popular Events

More
国际排名
WHLUG