[中秋节发月饼] 深度终端内测啦!
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
4 / 7
To page
cxbii
deepin
2013-10-03 22:58
#61
对了,可以增加zsh后端么?

bash怎么说呢,的确够简单,但是功能不够好,只是简单够用,但是zsh就不一样了

我觉得可以这样,增加zsh后端,但是默认使用bash.然后zsh配置可以用网上的oh-my-zsh
Reply View the author
fredy4212
deepin
2013-10-04 04:57
#62
或許可以做一個模式切換功能,選擇root後並輸入密碼即可成功以root進行操作,免去使用sudo麻煩
Reply View the author
186******98
deepin
2013-10-04 05:18
#63
对了,可以增加zsh后端么?

bash怎么说呢,的确够简单,但是功能不够好,只是简单够用,但是zsh就不一样了

我觉得可以这样,增加zsh后端,但是默认使用bash.然后zsh配置可以用网上的oh-my-zsh
修改 SHELL 环境变量为 zsh 或 修改 “启动命令” 为 zsh 深度终端就支持了。

深度终端是根据当前系统的shell来启动的, 不会默认绑定到 bash, 如果系统默认是其他shell, 也会默认启动系统当前的 shell 的。
Reply View the author
cxbii
deepin
2013-10-04 06:02
#64
修改 SHELL 环境变量为 zsh 或 修改 “启动命令” 为 zsh 深度终端就支持了。

深度终端是根据当前系统的shell来启动的, 不会默认绑定到 bash, 如果系统默认是其他shell, 也会默认启动系统当前的 shell 的。
的确,我现在已经在深度终端用上zsh了.
我想说的是用户安装好深度终端(假设深度终端默认依赖zsh),就可以选择深度终端使用zsh作为后端,然后用户就可以用配置好的zsh,这样会使深度终端比其他终端更有特色.
Reply View the author
fredy4212
deepin
2013-10-04 06:22
#65
最近同步的github程式碼都無法執行,出現一堆錯誤訊息,好多新功能都用不到,明天我把錯誤訊息貼上,希望能為我解惑
Reply View the author
BingoLove
deepin
2013-10-04 07:26
#66
最近同步的github程式碼都無法執行,出現一堆錯誤訊息,好多新功能都用不到,明天我把錯誤訊息貼上,希望能為我解惑
你是不是没有把旧的配置文件删掉
Reply View the author
186******98
deepin
2013-10-04 07:27
#67
最近同步的github程式碼都無法執行,出現一堆錯誤訊息,好多新功能都用不到,明天我把錯誤訊息貼上,希望能為我解惑
rm -r ~/.config/deepin-terminal/ 删除老的配置文件然后重启
Reply View the author
BingoLove
deepin
2013-10-04 07:32
#68
点击那个主菜单按钮直接就关闭了而不是弹出菜单 ops:
Reply View the author
186******98
deepin
2013-10-04 09:50
#69
点击那个主菜单按钮直接就关闭了而不是弹出菜单 ops:
Sorry, 今天做退出时保存窗口大小引入的bug, 已经修复了, git pull.
Reply View the author
szp1120
deepin
2013-10-04 19:36
#70
很好啊,这样团队值得尊敬。
Reply View the author
fredy4212
deepin
2013-10-05 03:05
#71
[quote]最近同步的github程式碼都無法執行,出現一堆錯誤訊息,好多新功能都用不到,明天我把錯誤訊息貼上,希望能為我解惑
rm -r ~/.config/deepin-terminal/ 删除老的配置文件然后重启[/quote]
謝謝!不過最近放假阿?小D好久沒出現了,也不見更新,另外,中瘨機的偏好設定中,有個方案黑底白字錯了,應改成白底黑字,zh_TW翻譯中,高階設定改為進階設定會較好,期待深度終端機正式版
Reply View the author
186******98
deepin
2013-10-05 05:14
#72
[quote][quote]最近同步的github程式碼都無法執行,出現一堆錯誤訊息,好多新功能都用不到,明天我把錯誤訊息貼上,希望能為我解惑
rm -r ~/.config/deepin-terminal/ 删除老的配置文件然后重启[/quote]
謝謝!不過最近放假阿?小D好久沒出現了,也不見更新,另外,中瘨機的偏好設定中,有個方案黑底白字錯了,應改成白底黑字,zh_TW翻譯中,高階設定改為進階設定會較好,期待深度終端機正式版 [/quote]
源代码是开放的, 改好以后直接给我 pull request 就可以合并了, 不用走小D那一道
Reply View the author
icelee123
deepin
2013-10-05 23:39
#73
elementary OS的默认终端就挺漂亮的
Reply View the author
186******98
deepin
2013-10-06 01:46
#74
新增两个功能:

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

2. 快速关闭当前工作区的其他终端
有时候开太多终端, 需要关闭其他终端, 不可能切换到每一个其他终端然后进行关闭。
在深度终端中只需要按 Ctrl + Shift + Q 会自动关闭其他终端。
Reply View the author
186******98
deepin
2013-10-06 01:47
#75
在正式版之前相关的功能会快速开发, 在测试git之前请先删除原先的配置文件:

rm -r ~/.config/deepin-terminal/
Reply View the author
BingoLove
deepin
2013-10-06 04:36
#76
在正式版之前相关的功能会快速开发, 在测试git之前请先删除原先的配置文件:

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

这些还是直接写到主帖之中去吧
Reply View the author
stardust
deepin
2013-10-06 06:17
#77
[quote]点击那个主菜单按钮直接就关闭了而不是弹出菜单 ops:
Sorry, 今天做退出时保存窗口大小引入的bug, 已经修复了, git pull.[/quote]

git pull 时报错:
error: 无法打开 .git/FETCH_HEAD:????
怎么解决?
Reply View the author
linxiaoji
deepin
2013-10-06 07:38
#78
发现一个问题,找不到下拉按钮,找log 不方便啊
Reply View the author
186******98
deepin
2013-10-06 11:05
#79
发现一个问题,找不到下拉按钮,找log 不方便啊
没听懂, 找不到下来按钮? 哪里的下拉按钮?
Reply View the author
stardust
deepin
2013-10-07 06:37
#80
[quote][quote]点击那个主菜单按钮直接就关闭了而不是弹出菜单 ops:
Sorry, 今天做退出时保存窗口大小引入的bug, 已经修复了, git pull.[/quote]

git pull 时报错:
error: 无法打开 .git/FETCH_HEAD:????
怎么解决?[/quote]
直接去github上下载了最新master的zip文件,回来解压就是最新版了……
Reply View the author
4 / 7
To page
New Thread

Popular Events

More
国际排名
WHLUG