[中秋节发月饼] 深度终端内测啦!
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
3 / 7
To page
hjli1988
deepin
2013-09-27 04:49
#41
这个东东好!我喜欢 :
Reply View the author
hjli1988
deepin
2013-09-27 04:55
#42
大家一般都喜欢什么样的背景色和字体色? 多多建议, 我尽量让默认配色都是大家喜欢的。
用这个的基本是用的时间长的,建议颜色配成护眼的最好。同时字体也用轮廓比较清晰的好一些,像文泉驿点阵宋体,点阵正黑,等宽的这些还不错,看的时间长了眼睛可以接受
Reply View the author
wuy069
deepin
2013-09-28 05:59
#43
来晚了,不知道有没有多标签功能,明天装上试下
Reply View the author
fredy4212
deepin
2013-09-29 00:43
#44
来晚了,不知道有没有多标签功能,明天装上试下
工作區等同標籤
Reply View the author
lhw828
deepin
2013-09-29 23:29
#45
这个终端是我见过的最用心最好的终端了
Reply View the author
186******98
deepin
2013-09-29 23:55
#46
这个终端是我见过的最用心最好的终端了
Linux 最需要的不是每天去yy的比较那些晦涩编程技巧, 最需要的是用独特的角度来实现用户真心喜欢用的产品。
Reply View the author
stardust
deepin
2013-10-01 03:14
#47
[quote][quote]大家一般都喜欢什么样的背景色和字体色? 多多建议, 我尽量让默认配色都是大家喜欢的。

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

投票支持1,《黑客帝国》风格最爱
好强大的功能,期待正式版!!!
Reply View the author
stardust
deepin
2013-10-01 05:57
#48
试用了一下,很棒,截图地址:http://www.linuxdeepin.com/forum/18/15467

报一个BUG:试用ALT+TAB切换后,光标不在编辑状态,需要用鼠标点击一下才可以输入。
Reply View the author
186******98
deepin
2013-10-01 06:06
#49
试用了一下,很棒,截图地址:http://www.linuxdeepin.com/forum/18/15467

报一个BUG:试用ALT+TAB切换后,光标不在编辑状态,需要用鼠标点击一下才可以输入。
我这边木有问题, 求重现步骤?
Reply View the author
cxbii
deepin
2013-10-01 06:26
#50
提个另类的功能,看看能不能实现(喜欢的人应该蛮少的)

就是终端最大化后增加 一直在最底 的功能
相当于终端已经是desktop的.
Reply View the author
stardust
deepin
2013-10-01 06:44
#51
[quote]试用了一下,很棒,截图地址:http://www.linuxdeepin.com/forum/18/15467

报一个BUG:试用ALT+TAB切换后,光标不在编辑状态,需要用鼠标点击一下才可以输入。
我这边木有问题, 求重现步骤?[/quote]
刚才试了下,没有问题,再试过之后发现是因为如果上次如果点击了标题栏,光标会变化成下面的样子
bug-dt.png
这样再次切换过去就需要再用鼠标点回输入状态。应该不算BUG。。。
Reply View the author
stardust
deepin
2013-10-01 06:46
#52
试用SSH的时候出错,如下图:
ssh.png
另外,ssh密码是明文保存在命令中的,这样子不是很不安全?
Reply View the author
stardust
deepin
2013-10-01 06:49
#53
试用SSH的时候出错,如下图:
ssh.png
另外,ssh密码是明文保存在命令中的,这样子不是很不安全?
搜索了一下,这个文件时放在src目录下的。我为了方便在家目录下写了个脚本:
#!/bin/bash

cd /home/peanut/deepin-terminal/src
./main.py &

这样我现在的shell路径是不是就不在src目录下了?所以会找不到文件。求方便的调用deepin-terminal的方法!
Reply View the author
stardust
deepin
2013-10-01 06:51
#54
[quote]试用SSH的时候出错,如下图:
ssh.png
另外,ssh密码是明文保存在命令中的,这样子不是很不安全?
搜索了一下,这个文件时放在src目录下的。我为了方便在家目录下写了个脚本:
#!/bin/bash

cd /home/peanut/deepin-terminal/src
./main.py &

这样我现在的shell路径是不是就不在src目录下了?所以会找不到文件。求方便的调用deepin-terminal的方法![/quote]
确实,在deepin-terminal里面输入pwd显示的是我的家目录
Reply View the author
186******98
deepin
2013-10-01 07:13
#55
[quote][quote]试用了一下,很棒,截图地址:http://www.linuxdeepin.com/forum/18/15467

报一个BUG:试用ALT+TAB切换后,光标不在编辑状态,需要用鼠标点击一下才可以输入。
我这边木有问题, 求重现步骤?[/quote]
刚才试了下,没有问题,再试过之后发现是因为如果上次如果点击了标题栏,光标会变化成下面的样子
bug-dt.png
这样再次切换过去就需要再用鼠标点回输入状态。应该不算BUG。。。[/quote]
git pull 一下, 应该修复了
Reply View the author
186******98
deepin
2013-10-01 07:18
#56
试用SSH的时候出错,如下图:
ssh.png
另外,ssh密码是明文保存在命令中的,这样子不是很不安全?
我表示我和google的观点一样:
只要是保存到本地的文本, 不管用什么加密方式都是不安全的, 现在是存在 sqllite 数据库里面的, 建议安全, 不要填密码, 每次登陆的时候手动输入, 脚本是支持的。

用我第 128 行的代码注释说明一下吧:
# NOTE:
# We just store remote information (include password) in sqlite database.
# please don't fill password if you care about safety problem.
Reply View the author
186******98
deepin
2013-10-01 07:23
#57
[quote]试用SSH的时候出错,如下图:
ssh.png
另外,ssh密码是明文保存在命令中的,这样子不是很不安全?
搜索了一下,这个文件时放在src目录下的。我为了方便在家目录下写了个脚本:
#!/bin/bash

cd /home/peanut/deepin-terminal/src
./main.py &

这样我现在的shell路径是不是就不在src目录下了?所以会找不到文件。求方便的调用deepin-terminal的方法![/quote]
git pull 一下吧, 已经修复了, 原来实现功能的时候忘记重构了, 现在应该可以了
Reply View the author
BingoLove
deepin
2013-10-01 08:43
#58
通过拖动最大化之后不能通过拖动恢复原大小
Reply View the author
stardust
deepin
2013-10-03 05:45
#59
我这边木有问题, 求重现步骤?[/quote]
刚才试了下,没有问题,再试过之后发现是因为如果上次如果点击了标题栏,光标会变化成下面的样子
bug-dt.png
这样再次切换过去就需要再用鼠标点回输入状态。应该不算BUG。。。[/quote]
git pull 一下, 应该修复了[/quote]

好的,昨天出去了,没有来得及跟进
Reply View the author
stardust
deepin
2013-10-03 05:54
#60
[quote]试用SSH的时候出错,如下图:
ssh.png
另外,ssh密码是明文保存在命令中的,这样子不是很不安全?
我表示我和google的观点一样:
只要是保存到本地的文本, 不管用什么加密方式都是不安全的, 现在是存在 sqllite 数据库里面的, 建议安全, 不要填密码, 每次登陆的时候手动输入, 脚本是支持的。

用我第 128 行的代码注释说明一下吧:
# NOTE:
# We just store remote information (include password) in sqlite database.
# please don't fill password if you care about safety problem.[/quote]
了解~ ;)
Reply View the author
3 / 7
To page
New Thread

Popular Events

More
国际排名
WHLUG