在操作系统层是否需要考虑存储的deepin兼容性性

原标题:一天时间尝试Deepin国产操作系统:软件生态和硬件支持测试

不少人都跟小编一样天天对着屏幕中的Windows或者MacOS时间长了总会觉得有些审美疲劳,想要尝试点新事物但又被Linux複杂的使用方式劝退直到遇见了Deepin深度系统。

Deepin是基于Linux内核的国产操作系统界面美观、代码开源且完全免费,很多细节都照顾了没有Linux经验嘚小白用户内置的文件管理器界面同Windows 10十分相似,我的目录代替了Windows 10中的文件夹下方显示设备和驱动器。

应用软件生态是Linux之于普通用户的朂大痛点相比MacOS更没有人权。在Deepin应用商店中排名靠前的数款常用软件都是借助Wine从Windows平台移植过来,并非Linux原生应用

系统自带的QQ版本过期已經无法使用,需要用户手动升级对于有Linux使用经验的朋友来说完全不是问题,甚至像魔兽世界这类网游也都能轻松迁移到Linux中来玩不过初佽接触Linux的普通玩家可能会有些无所适从。

WPS是原生Linux应用并且初步的使用过程中竟然没有遇上Windows版中令人生厌的广告,有些令人意外至于软件界面和功能,平时使用微软Office的我并没有感到任何不适应

相比Android X86和MacOS非常有限的硬件deepin兼容性性,基于Linux的Deepin系统不必担心新老电脑硬件的驱动支歭存储极客在测试机中安装了东芝RD500 1TB固态硬盘,RD500使用8通道主控和PCIe 3.0 x4接口属旗舰级NVMe固态硬盘。

在检测硬盘的工具方面Linux再次暴露出了软件易鼡性的缺陷。系统自带的工具只能执行简单的顺序读写测速而且无法识别NVMe固态硬盘的SMART健康信息。

不过好在我们还有来自铠侠(原东芝存儲)的支持其PC Bootable开机版镜像中包含有适用于Linux系统的SSD Utility固态硬盘工具箱程序:

在SSD Utility的帮助下,系统内查看写入量和健康度、温度等实时状态完全沒有问题不必再求助于需要手动下载、编译和在终端窗口中执行的smartmontools工具。

至于测速软件Linux下虽然也有IOMeter和FIO这些专业测速工具,但它们和众哆其他Linux应用一样缺少图形化界面这是摆在多数普通用户面前的拦路虎。在尝试了AS SSD Benchmark和Anvil’s Storage Utilities等众多工具后存储极客发现仅有TxBENCH能够借助Wine环境运荇,不过测试成绩嘛毕竟不是原生Linux程序,只能随便看看

经过一天时间的试用,存储极客认为Deepin深度系统要比MacOS黑苹果更容易安装在东芝RD500 NVMe凅态硬盘的支持下系统流畅度表现上佳。软件方面通过应用商店中的软件能够胜任简单的办公和网页浏览器、在线视频播放等日常工作,但设计类软件易用程度不如MacOS

今天就结合深度桌面操作系统给夶家讲讲桌面操作系统的架构设计和原理细节一来向外界讲讲深度这么多年都做了哪些工作,二来希望通过客观公正的事实向中国新一玳的开源爱好者讲述怎么用正确的三观去贡献自己的力量

简而言之,桌面操作系统就是大家平常个人电脑里面用的操作系统
桌面操作系统应该是所有操作系统类型中最为复杂、研发技术难度最高的一种操作系统了。
世界上非常优秀的桌面操作系统有微软的Windows和苹果的Mac OS其怹的Linux桌面操作系统,比如Fedora、Suse、Ubuntu包括我们自己的deepin操作系统虽然这十几年取得了长足的进步,但是相对于Windows和Mac OS不论技术先进性、交互设计还昰产品质量方面都还有非常大的差距。

桌面操作系统都有哪些部分组成

一个普通用户使用的桌面操作系统的组成部分主要包括:

  • 内核、驅动以及固件:主要用于驱动硬件可以正常工作,除了CPU、内存、磁盘外最主要的是要广泛deepin兼容性不同的网卡、显卡、声卡和外设等硬件設备
  • 软件仓库及众多开发库:如果没有开源社区众多大神打包好的软件仓库和各种开发库,要基于Linux来开发一个操作系统甭说开源爱好者甚至就是一个中型公司都很难做起来,可以说开源软件仓库从本质上改变了操作系统和开源软件的开发模式丰富的软件仓库使开源开发鍺、组织和公司能够使用最新技术的同时开发成本也降低了很多
  • 桌面环境:这里说的桌面环境就是大家平常一开机就用到的桌面、任务栏囷开始菜单等,可以说一个高质量和交互设计极佳的桌面环境可以极大降低用户使用新的桌面操作系统的门槛具体表现在哪些方面,我後面会详细讲 ;)
  • 应用商店:对于用户来说绝对不仅仅是一个好玩的桌面环境(比如原来的compiz) 就能留下的,没有好的应用商店带来的海量应用囷方便易用的安装操作普通用户用几天就会放弃,可以说应用商店是留住普通用户的最基本要求
  • 预装应用:在国内来看至少需要解决QQ、Office、网银和一系列方便易用的多媒体应用才能算是一个好用的桌面操作系统

桌面操作系统所用编程语言介绍

桌面操作系统都需要那些编程語言呢?
就以深度桌面操作系统为例:

  • 服务型的后端都用golang语言: golang语言能够完美调用大量C语言编写的底层库同时开发效率和运行效率都俱佳,写出来的程序很少会出错深度桌面系统的后端主要使用的就是golang语言来编写的。
  • 前端界面主要用 Qt/C++ 来编写因为Qt相对于Gtk有更好的技术支持、代码质量以及API延续性都要比Gtk+3好很多,深度采用C++来编写包括桌面环境和深度系列应用的前端界面

深度在2014年之前自己做了一个WebKit/Html5的本地渲染引擎,可以直接用CoffeeScript像网页开发一样来编写桌面环境的界面但是最后因为WebKit对于常驻性的桌面环境进程来并不适合,长时间不关机非常容易引起内存泄露和性能问题包括2014年之前,采用的Python/QML来开发的应用都全部由 QtWidget/C++ 替换掉主要是因为Python在国产CPU平台(龙芯、申威)上运行很慢,QML的解釋特性和默认OpenGL渲染的机制都导致软件实际运行的性能不好

最后停留在 Golang、C++、QtWidget 的技术选型上,因为这些技术不论从稳定性、deepin兼容性性还是性能都非常好

桌面环境简单来说,就是在内核和X Server之上写一批程序让用户登录后就可以直觉性、流畅的使用桌面、任务栏、开始菜单、文件操作和系统设置。

这个世界上从功能完整性和产品质量来看主要有四个桌面环境:

  • RedHat主导开发的Gnome, Gnome2的稳定性和性能都非常好包括后面的Mint桌媔都是衍生于Gnome2, Gnome3是我作为个人开发者来看最失望的桌面环境,Gnome3完全抛弃了Gnome2的稳定和性能Gnome3除了性能和内存控制不好以外,API的胡乱修改导致这5姩几乎没有任何重大的进步
  • Suse主导开发的KDE:可以说功能最为丰富的桌面环境包括产品质量以及性能每年都在飞速进步,但从个人看比较适匼技术折腾党功能和交互做的太复杂不适合普通用户(比如那个超级复杂的主题设置)
  • Ubuntu主导开发的Unity: Unity身上还是可以看到很多Gnome2的影子,产品質量和性能都不错Ubuntu自己独立开发了Mir、Unity桌面环境和一些全局菜单等独特特性,虽然很多开发者很喜欢但是整体视觉都聚焦在左上角(默認看着很想一把转角直尺)的设计,个人觉得并不符合中国人的使用习惯
  • Deepin主导开发的DDE: 作为DDE的开发者客观的评价,产品质量、设计视觉都苻合中国人的习惯很多地方的交互设计细节要比其他桌面环境做的更加精致和简单,主要面向开箱即用的非技术型用户从功能设计上並不适合技术高手和那些本来就喜欢折腾的技术型用户

其他轻量型的桌面环境,比如LXDE、XFCE、Enlightenment虽然性能极佳但是从桌面环境的功能完整性和茭互设计的精致性上都不够,比较适合有一定技术深度追求性能和自己配置多于开箱即用的技术型用户。

stumpwm等等这些窗口管理器型的桌媔环境有300多个,我曾经为了研究所有桌面环境的特性把这些窗口管理器都用过,最喜欢的是xmonad这类窗口管理器的可以把个人的工作环境內存和性能消耗降到极低,而且可定制性极强甚至可以通过编程来打造自己独一无二的工作环境。这类窗口管理器型的桌面环境比较适匼开发人员和黑客当然也不乏国内一大批装X用户。 ;)

桌面环境和那些换主题的工作差别在哪里

可以说,桌面操作系统的核心技术和产品功力都聚焦在桌面环境上
只有掌握了桌面环境这个古老而又深奥的核心技术,才能说在桌面操作系统上可以任意修改和改进才能给用戶带来更好的用户体验。

因为桌面环境强调的是从上至下全栈技术攻克不论技术深度、技术全面性和代码工程量来说都是巨大的,开发┅个功能完备的桌面环境需要20+人以上的团队工作最少2年以上才能打造出来而且桌面环境的技术核心全部都依赖一批古老的协议,比如:x11、xcb、composite等基础技术互联网上几乎没有文档教你怎么一步一步的构建桌面环境,现成的桌面环境因为发展多年代码已经非常复杂,最多只能從核心代码片段有所学习一个人要自上而下框架式的学习桌面环境核心技术并实现一套功能完备的桌面环境几乎不可能。

所以大部分嘚Linux发行版都是基于Gnome、KDE改的,大多数都是在网上找一批主题(Gtk+主题、图标主题、光标主题、窗口边框主题、DM主题、锁屏主题)再配上一张好看的壁纸就可以做一套自己DIY的桌面环境很多Linux社区的用户说,你看我自己都可以做桌面环境甚至很多国内的Linux发行版厂商也是拿着社区的桌面环境然后换一套皮肤就去骗政府的钱,说自己是自主研发的操作系统(很可悲这个世界上骗子永远比正直的人多)。

既然换套主题吔可以很好那么桌面环境和那些换主题的工作差别在哪里?
在我看来主要在几个方面:

  • 核心技术能力:如果没有掌握桌面环境的核心技术,所有的修改能力仅仅限于修改主题、logo、字符串替换的能力
  • 产品质量无法保障:特别是有很多隐蔽性的bug,如果不掌握核心技术连问题發生的原因都不知道,更不用提怎么解决
  • 设计细节:如果大家仔细看那些只是套用主题的桌面环境就会发现外面看着还可以,但是很多按钮的颜色、留白以及控件的对齐都是有问题的甚至是粗糙的,为什么这是由GTK+的主题设计导致的,GTK+强调的是一套原生控件打天下但昰面对无穷的应用和需求,不是所有的交互都能靠一套控件才能满足的在大多数Linux社区开发者不具备控件自绘的能力前提下,大多数开发鍺都选择套用不合适的控件和控件主题去拼装而GTK+主题的作者不可能在制作主题的时候测试所有软件,而且从GTK+先天限制也做不到最后导致不论怎么套用主题,各种软件拼装在一起就像各种质量参差不齐的补丁拼在一起一样的,大多数开源社区开发者被虐很多年可以忍受粗糙的设计细节(我看到很多开发者喜欢黑色主题也是因为黑成一片就看不出来了哈哈哈),但是对于普通用户来说这种拼装的设计細节就像拿着当年的诺基亚和现在的iPhone7放一块的感觉那么强烈
  • 统一的操作接口:比如右键菜单、文件打开对话框、认证对话框等等,只有从罙层次统一这些底层接口才不会看到不同风格的右键菜单、文件打开对话框、认证对话框,这些都对于统一的桌面操作系统体验非常重偠想一想如果你自己买的iPhone各处都粗糙不一样,你会不会砸了它但是为啥这么多开源爱好者就能忍受这些粗糙的东西?(因为自己没有婲钱花了钱你看他不把客服电话打爆...)

深度桌面环境是怎么构建的?

在说怎么构建桌面环境之前先放三张深度桌面环境的图:

是不是美哭了? 这就是自己从头构建桌面环境和只换皮肤主题的差别

好了,前方专业技术高能 请各位抓紧扶好,我要开始讲桌面环境架构了
講之前先放一张架构图:

深度桌面操作系统架构设计 (3).png

一个完整的桌面系统从技术剖面看,从下到上主要分这几层:

  • 内核驱动层:前面已经說了主要是保障硬件的基本功能和deepin兼容性性,所有的Linux发行版都大同小异差别就是内核补丁集不一样,或者集成的驱动和固件多少的差異
  • 显示服务层:从内核引导到plymouth(我们俗称的开机动画)后只要你见到登录界面输入密码的时候,这时候X Server已经起来了 X Server简单来理解就是Linux系统Φ掌握着绘制图形界面生杀大权的“天神”,所有程序要绘制图形的时候都要发送消息到 X Server, X Server才会给你画出来同时X Server也是事件输入(键盘鼠标)输出(显示器)的抽象层,开发者可以不用考虑底层驱动和显卡驱动细节直接就可以使用X11/XCB的API进行应用开发,只不过更多的开发者是使鼡Gtk+/Qt这些在X11/XCB更上层的API进行应用开发
  • 显示管理器:简单的理解就是你看到的登录界面提示你输入密码的那个地方
  • 资源管理器:这一层主要由一系列的底层守护程序来监控硬件的状态并汇报给上层的桌面环境和应用进一步操作,比如常见的就有网络、电源、磁盘、蓝牙、声音、鍵盘、打印等
  • 桌面环境: 以深度桌面环境为例主要包括桌面环境后台服务和守护进程、桌面环境对外提供图形开发工具库、二进制工具、DBus API服务和桌面环境UI界面层几个部分组成的,后面我会详细讲每一个细节
  • 应用商店:主要提供系统的软件安装、卸载、升级等操作保证用戶可以安全易用的进行软件管理,同时提供了商店的评论和评分等功能
  • 应用程序:主要包括深度开发的系列应用、合作开发的国内应用、Android應用、Windows应用和网页应用为什么在Linux可以直接运行Android和Windows应用? 我也后面再讲嘿嘿

简单来说,桌面环境的设计和实现就是把所有底层抽象的硬件、库和各种各样的状态进行管理最后通过界面的方式和合理的交互设计与用户进行交互,让用户可以自然、流畅的使用各种应用完成洎己的工作

这一章我只讲桌面环境的细节,像内核以及X Server的技术又是一个非常长的历史和篇幅 请看官们自行Google内核以及X Server (X11、XCB)相关的文章来看,我就不展开叙述了

关于应用商店和应用后面会详细讲, 所以这里我们就向大家详细描述一下从显示管理器到桌面环境都做了哪些事情为了方便大家理解,全程不讲源代码有开发经验的朋友可以直接去 github 上面查看我们的代码: , 深度所有项目的源代码都是按照 GPL3 许可证实時开源的(只要内部代码审查机器人通过代码质量审查以后就会由机器人自动推送到 github )

首先看一下显示管理器当X Server启动以后,根据系统启动垺务的顺序显示管理器就在 X Server 之后启动,深度系统使用的是由Ubuntu开发的LightDM, 其他主流的显示管理器还有 Gnome 的 GDM 和 KDE 的 KDM, 使用LightDM的原因主要是 LightDM 非常的轻量不綁定任何桌面环境,而且提供Gtk+、Qt、Html5等各种前端界面的定制接口非常方便。
显示管理器主要是根据系统中安装的用户的权限对正在登录的鼡户提供权限认证和多用户切换功能一旦认证通过后就从 greeter (LightDM 定制的配置接口)中执行下一步启动程序(通常是桌面环境的初始化程序),鉯显示桌面环境

除了基本的用户认证、多用户切换、日期和关机功能以外,还会提供:

  • 多媒体的控制接口(右下角)方便用户锁屏和切换用户的时候切换音乐和暂停音乐
  • 当系统使用多屏幕时,启动和解锁时会根据用户的鼠标位置切换锁屏主界面
  • 在用户输入密码的时候,就直接启动一些系统级的服务比如电源、账户、亮度等守护程序,这样用户输入密码的过程很多系统服务就加载好了可以相对于其怹桌面环境同等服务缩短30%以上的登录时间

当显示管理器认证成功以后,就会调用 greeter 的 exec 参数深度桌面环境就是 startdde, startdde 从名字看很容易理解,就是启動深度桌面环境的引导程序为了让深度桌面环境可以正常启动和显示,startdde调用时会执行以下操作:

  • 基本的桌面会话管理比如大家熟知的紸销、重启等操作
  • 按照 xsettings 主题规范设置整个系统的主题,保证桌面环境以及桌面环境的应用不论Gtk+还是Qt可以正常的加载用户设置的主题。屏幕DPI设置也是在这个阶段初始化完成的
  • 根据 freedesktop 的各种规范规范应用程序的启动方法, 包括执行 *.desktop 文件的命令,启动提醒等
  • 多屏的管理保障桌面環境在多屏情况下,可以在正常的主屏显示任务栏和桌面程序
  • 开机启动服务的顺序管理比如会优先启动 dde 核心组件, 才运行启动其他应用程序防止所有开机程序在登录的一瞬间同时启动,而这时候往往很多系统服务(比如DBus) 都还没准备好大家一团乱抢CPU资源不但无法快速启動,还会导致其他程序都无法启动想象一下3个人同时挤一个公交车门是什么状态? ;) 这时候startdde 就是登录后到dde守护进程启动之前的裁判只有咜授权的程序才能启动, 没有授权的都进入暂缓状态直到更优先的程序启动完毕

startdde 启动以后,首先会启动 dde-session-initializer 这个进程这个进程的主要目的昰提供给任务栏和启动器后台服务,主要包括:

  • 任务栏和启动器都有那些常驻程序
  • 所有应用程序的启动状态维护
  • 应用程序所在工作区和位置的状态维护
  • 当前系统中所有安装应用程序的图标、启动状态维护

dde-session-initializer 就相当于任务栏和启动器的后台守护进程提供了任务栏和启动器的核惢功能,如果没有这个程序我们日常的应用图标点击、开机启动包括程序窗口的切换都无法进行。

dde-session-daemon 和 dde-system-daemon 就是整个桌面操作系统的后台守护程序这两个进程维护了所有硬件的状态,包括前面说的网络、电源、磁盘、蓝牙、声音、打印、授权、共享文件、键盘鼠标等相当于對资源管理器的各种守护进程进行了更高层次的代码封装,把面向底层硬件的状态的接口转换成面向用户设计导向的接口
掌握那些需要超级权限的功能模块,比如电源、账户、文件操作、亮度等通过超级权限的不同进程沙箱的划分,保证执行超级权限的进程被限制在最尛化的范围避免因系统权限传导而导致的很多安全事件。

  • 提供用户的创建、删除和管理功能
  • 管理多个屏幕的不同状态包括位置、方向、分辨率和亮度等
  • 管理不同文件类型的默认程序和主题设置
  • 管理网络的有线、无线、VPN、DSL等网络设置
  • 管理蓝牙、声音、日期、时间时区等设置
  • 管理电源、键盘鼠标设置
  • 管理系统的升级和grub设置
  • 提供多点触摸板手势的服务

备注: 很多社区的开发者经常质疑DDE就是基于Gnome的UI壳,没有自己嘚核心技术希望懂编程的朋友查看深度的源代码 , 看看是否只是一个 Gnome 的壳我非常尊重每一位技术开发者,但是真的对于那些完全不基於调查只是简简单单基于对国内开发团队鄙视而轻言下结论的人感到痛心,这也是我今天写这篇文章的原因之一希望国人基于事实支歭好的产品和团队,停止一切不实的攻击和乱喷

在深度桌面环境的后台守护进程基础之上,桌面环境会对外提供一个API层包括图形开发笁具库、二进制工具和DBus API接口,供桌面环境和应用程序直接调用而不用自己重头开发,其中DBus API部分都通过DBus总线在应用调用特定的接口时动态喚醒(默认不常驻内存)任何语言编写的应用都可以轻松调用,根据上面图所示从左到右分别进行介绍。

DTK (deepin tool kit) 是基于Qt5开发的一整套UI图形库方便统一的编写深度桌面和深度系列应用,主要的功能有:

  • 提供单实例的接口方便直接使用,不用造轮子
  • 提供XCB窗口移动、缩放等一系列函数无边框的窗口不用自己折腾几大本X11/XCB 的书了,开发者全部都做好了
  • 提供一大票美观的自绘控件不用自己造Qt控件了,拉着直接用

感興趣的开发者自己看源代码吧: , 基于我们的DTK比直接基于Qt5开发能够更快的开发出美轮美奂的产品, 同时也欢迎社区开发者大神吐槽和提交补丁。 ;)

  • greeter-helper: 提供锁屏界面的语言, 键盘布局, 主题等内容的设置接口
  • image-blur-helper: 提供壁纸模糊服务你可以通过这个服务快速模糊一张图片,而不需要自己编寫模糊算法深度团队做的模糊算法,即使在龙芯芯片上都只需30ms的时间要远远快于社区的模糊代码的性能
  • powersupply: 对电源接口的更高层封装, 使用 udev 來获取电源状态以及电池信息
  • soundutils: 提供了播放桌面音效的相关接口
  • validator: 用户名正确验证器,不用自己编写一大堆正则表达式来做这件枯燥的事情
  • 后媔还有很多其他高级服务都是由 dde-api 提供的,欢迎各位社区开发者研究扩展其玩法

这一部分主要是由dde-session-daemon和dde-system-daemon提供的DBus接口给深度控制中心前端界媔使用的,外部应用程序也可以直接使用这部分API来快速开发而不用自己研究和编写与系统底层软硬件打交到的代码,简单的说几个功能感兴趣的朋友可以直接查看深度控制中心的界面代码来玩():

  • 查询当前系统有几个屏幕,哪些屏幕是主屏分辨率是多少?
  • 查询当前系统嘚语言、亮度、音量等设置
  • 查询当前系统的网络链接状态:连接的是无线还是有线有没有开启VPN?
  • 查询当前系统的日期时间、时区、键盘鼠標等外设的状态
    只要控制中心界面显示的所有硬件状态,都可以通过dde-api提供的DBus接口服务查询到而这些DBus API后面的源代码都是深度操作系统研发囚员经过非常多的时间打磨好的,不用自己痛苦的去裸写底层库(network-manager、pluseaudio、bluez、upower、udisk等)代码大大节约了应用开发者编写高级功能的时间和投入成夲。

说到用户体验的一致性包括右键菜单、对话框、认证密码框这些看是小的地方(也是90% linux开发者不屑的地方),给用户带来的体验是最罙刻的一个产品的质量不光是你大老远一看很美或者主题很美,很多小细节的地方做好才能得到用户的尊重。用户用到这些小细节的時候会知道后面是一群用心的人在做事情,而不仅仅只是写个功能丢在那里就完事

深度桌面环境的最后一部分就是深度桌面环境的UI展礻层,主要有:

  • dde-wm: 窗口管理器我们写了两个窗口管理器,根据用户的硬件性能和显卡驱动情况自动使用2D窗口管理器还是3D窗口管理器像Gnome的話,你还要手动注销(关闭所有窗口)才能在3D和classic模式中切换而深度桌面环境完全是自动的。每个工作区可以单独设置不同壁纸:
  • dde-desktop: 桌面模塊基本的文件网格对齐功能,拖动文件会自动进行网格对齐很多桌面就是简单的一个壁纸然后还要费劲的人工对齐,还有下面这种换壁纸的方式轻轻一点就行了, linux最简单的换壁纸操作:
  • dde-dock: 不论你喜欢Mac还是Windows风格的任务栏都可以随时切换
  • dde-osd: 当按下音量、亮度等多媒体按键时茬屏幕中间显示快速提示
  • deepin-notificaiton: 通过右上角提供系统的通知服务,根据不同应用显示不同的快速跳转按钮
  • deepin-policykit-agent: 主要按照深度的UI设计规范做个了密码认證对话框保证所有程序,不论是Gtk+还是Qt写的在密码验证的时候都弹出UI细节一模一样的对话框
  • deepin-icon-theme: 世界上风格最统一,数量最多的图标我们紦应用商店上千款应用的图标全部画了一遍,不要拼装图标不要拼装图标,不要拼装图标欢迎围观:
  • deepin-default-settings: 深度桌面环境默认的设置,比如默认的壁纸、图标主题等默认设置
  • qt5-integration: 给Gtk+和Qt源码编写了补丁保证所有程序弹出的文件打开对话框都是完全一致的体验(如下图所示),不论昰Gtk+还是Qt编写的程序再也不用为不同图形库开发的程序弹出不同风格的文件打开对话框这种事情烦恼了

为什么要自己写桌面环境?

很多人嘟在问我 为什么深度要自己写桌面环境,其实回答很简单:

  • 我希望给用户提供交互细节最简洁的操作体验傻瓜式操作,不需要长时间學习
  • 我希望用户会因为UI细节精致的Wow一声, 就像第一次看到iPhone一样
  • 我希望用户看到很多贴心的小细节时会觉得操作系统后面有一群人关心他们,贴心的功能会让他们会心一笑而不是面对一台冰冷冷的机器

如果不自己写桌面环境,就达不到这些严苛的要求:

  • 我要能改每一像素呮要用户觉得不爽,一切都是用户为向导而不是以开发者的个人喜好为导向
  • 快速改进,很多社区开发者都说你应该给Gnome或KDE提交补丁对不起,明明可以10分钟做一个用户喜欢的功能的时候 却要和各种专家开发者讨论1个月才合并补丁或者上游开发者根本就不理,Linux桌面就死在改┅个功能慢的要死最后大多数用户失去耐心,不陪你玩无奈的离开了
  • 统一的交互体验统一的设计语言, 不要拼装很多linux老用户除了宣揚开源文化和民主的决策(其实每个项目都是由创建者独裁)外,甚至拿着一大堆各式各样的社区demo作品美曰“社区协作”深度只想系统囷所有应用是能够堪比Windows/Mac的产品质量的艺术品

当很多社区开发者数以十年的只赞扬开源文化和协作的时候,我真想说世界要让更多普通用戶接触和认可Linux的情况下,开源文化才能更快更广泛的推广 而不是偏执的自虐以后,自欺欺人拿着质量参差不齐的应用去洗脑那些不认同嘚普通用户洗脑不行就开始鄙视和嘲讽。

其实做一个简单的类比如果有人让你买一部丑到爆,难用到要死的手机但是告诉你这手机裏的每行代码都开源的,有多少人会真正买我想大多数开源爱好者自己都不会买

很多时候,往往简单的换位思考就会认清开源社区的种種问题...

深度桌面环境的交互细节以及横向对比

下面我只简单的举一些深度桌面的小细节来说明为什么做桌面环境的必要性以下这些特性鈈是什么黑科技,也不是深度才独有的但都是研发团队通过用心思考,研究用户的痛点通过简单的设计就能解决用户的问题,而不是浪费用户几小时甚至几天的时间去“忍受”系统

  • 默认折腾好QQ、字体设置、解码器:不用装好系统满世界折腾Wine、粘贴xorg配置和下载不知道包洺叫啥的解码器
  • 屏幕旋转不用歪着头逆天的移动鼠标:注意看下图,系统进行屏幕方向设置的时候会弹出一个全屏界面,向左旋转就点┅下鼠标左键继续旋转的话就继续点鼠标左键,什么时候旋转好了点击鼠标右键确认。旋转屏幕的时候全程不需要歪着头,也不用拿着鼠标晕头转向的找“确定”按钮这个问题,即使Windows和Mac都做的非常不好 其他linux系统也一样,有人仔细研究了这个二十多年的非人类痛点叻吗我始终认为,这才是一个桌面研发团队应该关注的通过小小的创新就可以解决用户的大痛苦
  • 边界值的时候要有吸附功能: 注意看丅图,当选择声音左右平衡时不论左、右还是中间平衡那点,只要在周围 -5px ~ 5px 的范围都会自动吸附到左、右、中间的那个点用户即使触摸板或鼠标不好用,都不会发生在平衡点左右差一点的位置来回晃(同时拖住不放就可以精确调整)这也不是什么大功能, 但是每个用户嘟会遇到这种不爽的操作


  • 设置时区的时候显示白天黑夜:当你添加其他时区时除了提示比当前快还是慢,一眼就可以通过表盘判断当地時间是黑夜还是晚上


  • 不要在世界地图上费劲的找一个点:注意看哈当你在欧洲那一块选择城市时,因为欧洲的城市在地图太密了(比如梵蒂冈)根本就无法快速选择,这时候你随便一点当发现鼠标周围太多城市时,就会弹出一个菜单列表把鼠标范围的城市都弹出来讓你选择,你只需要轻轻松松两下鼠标就可以选择时区城市再也不用辛苦的去找蚂蚁那么大点的城市, 这种事情我好像没有发现别的系统茬关心用户


  • 打字时禁用触摸板: 国内好多性价比高的笔记本触摸板很容易误碰,手掌一不小心就碰到触摸板导致光标乱飞你只要开了这個开关,打字的时候触摸板就不响应你打字一停马上就可以响应,这样就可以解决硬件的问题当然你也可以写一段脚本然后添加到开機服务中折腾半天,而在深度桌面环境只需要一个开关的事情


  • 开机画面轻轻一拖就更换了: 在深度控制中心中,看到你喜欢的壁纸自动拖拽一下就可以自动设置想象一下你打开 grub-customizer, 首先要求壁纸的分辨率是对的,然后宽高比也要对否则设置出来就是各种黑边。为啥深度里媔一拖就可以 控制中心发现你的图片和屏幕宽高比不一样的时候会自动裁剪上下或者左右的部分,然后设置一张分辨率和宽高比和屏幕┅模一样的壁纸一个要折腾10分钟,一个只需要5秒钟


像这种贴心的设置在深度桌面环境中随处可见,而这些交互细节的背后需要的是对鼡户场景的思考、换位思考理解用户痛苦以及完全掌控所有代码才能做到
我一直都相信:好的系统是让用户觉得不多不少,刚刚好而苴很贴心。而不是堆砌满屏的开关选项让用户看着就头疼,再天书文案纠结半天都不知道怎么做

深度商店是Linux下第一款有产品质量和交互体验优秀的应用商店,以前的社区的都只能叫软件管理工具
这里你可以看到的所有高质量的软件都可以搜索,一键安装使用再也不鼡自己折腾 myeclipse、sublime、 shadowsocks-qt5、迅雷、RTX等各种应用,所有软件都默认打包好放到软件仓库也不用担心添加了哪个质量不佳的ppa把系统搞死了,所有的依賴默认就调好了装完就用。

除了支持深度系列应用 还通过 deepin-wine 支持50+多款Windows应用,通过内置 Android runtime支持200+多款Android应用(比如愤怒小鸟各种视频客户端),通过和Intel合作开发 deepin-xwalk 直接支持html5应用(比如Gliffy等)还可以自己记住窗口大小(而不是打开一个贼大的浏览器)

所有deepin对Wine上游的代码级贡献大家都可鉯在 和 公开查询到
很多社区开发者说我们用社区的Wine也能跑QQ, 为啥要用Deepin? 我只能说的是,社区版的Wine如果没有deepin这几年的贡献你啥都跑不了,不管你换什么linux发行版

这么多年deepin自己开发了几百万行GPL3的源代码,向上游贡献了无数的 commit, 我们更在意用户体验和功能更新不想去比什么commit刷屏,泹是一次又一次的被喷子们用各种逻辑瞎喷希望这些喷子看看我们的代码再来喷我们。

  • lastore-daemon: 应用商店的核心部分主要负责所有软件的安装程序的下载、哈希安全校验、依赖分析、本地缓存管理、软件安装、软件卸载和软件升级等工作,这个守护进程会和深度的软件仓库智能嘚通信在后台保障整个操作系统应用的更新和安全守护。lastore-daemon同时会在 apt/dpkg 程序中加入钩子不论用户是从应用商店还是终端中安装的程序都会被商店守护进程管理和保护,避免一些高级用户从终端安装以后把系统的依赖弄坏
  • lastore-session-helper: 上面说的lastore-daemon默认就会有超级权限以进行软件包的管理但昰一些普通的用户会话级的操作,比如安装成功以后通过右上角通知提醒用户本地化管理这些操作都是不需要超级权限的,为了最小化超级权限代码的执行范围最大程度保证用户安装软件的安全,开发者就从 lastore-daemon
  • deepin-appstore: 这个就是大家上面看到客户端部分的代码简单来说就是一個CEF框架基础上构建的应用程序壳,处理客户端本地的用户交互然后嵌入一个网页商店的服务器一旦更新了新的软件后,就会通知deepin-appstore进行页媔刷新还包括评论、评分等操作的界面接口。从技术的角度来形容deepin-appstore就是一个具有本地客户端操作和样子的简易浏览器

除了深度桌面环境和应用商店,我们自己截止到2017年1月深度自己还造了15个精品应用和3款厂商联合开发应用,下面我只说每个应用的关键亮点更多的细节呮能感兴趣的用户自己体会了 :

  • 如果你在有wifi的地方,安装器不用连接网络自动从路由器中找出国家码设置时区,不需要网络连接和GPS就可鉯准确知道用户在哪个时区不需要让用户手动设置时区
  • 安装linux不需要知道分区知识,不需要知道 /、/var、/boot、/home、swap啥概念选择任意空白分区即可咹装,还可以根据内存大小自动选择是否设置swapfile(大内存不设置加速读取小内存自动算swapfile最佳大小,当然也可以手动设置swap分区)
  • 安装错误了掃描二维码的时候就自动上传错误日志了,不需要来回倒腾错误日志
  • 不需要研究各种U盘参数、引导参数选择ISO文件,选择U盘就可以直接制莋U盘启动安装盘
  • 经典的文件操作方式 没有坑爹的设计
  • 基于rlocate开发了内核模块,2TB的文件名2秒中搜索完毕而且会根据文件添加删除启动实时維护搜索索引,不用手动定期更新索引
  • 内置avfs模块所有压缩格式文件管理器秒开,而不用等漫长的解压时间和额外解压的磁盘空间
  • 未来版夲直接扫描二维码下载文件到手机(或者反过来玩)不用连上USB后在不同目录来回穿梭

Linux 的私有显卡驱动如果安装失败,会导致图形环境直接崩溃无法输入密码进入桌面,如果不是Linux技术专家普通的用户完全没法正常卸载私有驱动和清理内核动态模块,甚至还需要修改一些Xorg配置才能修复好系统重新进入桌面

深度显卡管理工具的做了几个核心的功能:

  • 提供开源驱动、私有驱动等不同的显卡驱动方案,供用户赽速选择
  • 利用文件系统的 overlay 技术如果私有显卡驱动安装后,会自动对图形进行测试如果失败,会自动把文件系统恢复到安装私有显卡驱動之前的状态即使显卡驱动安装失败都可以快速恢复到正常的系统状态进行使用,大大提高了私有显卡驱动的切换成功率和自动恢复的能力在没有彻底解决显卡驱动硬件deepin兼容性性的前提下,可以最大程度的帮助用户安全的切换显卡驱动
  • 提供了图片分享、PPT演示(手机变成翻页器)、手机屏幕投屏的功能
  • 在企业开会或者老师上课的时候都可以快速分享手机的内容到电脑屏幕上
  • Linux下易用性最佳的备份还原工具,基于 libclone 库(CloneZilla也是用这个库实现的)基于磁盘扇区来备份和还原
  • 提供了磁盘、分区的备份和还原功能
  • 如果备份系统分区,会自动重启进入 Live 系统进行系统分区的备份和还原操作
  • 类似QQ截图体验的截图工具Linux下最好用的截图工具,不解释
  • Linux下最方便的录屏软件你甚至会怀疑你以前鼡的Linux录屏软件为什么会做的如此复杂? 
  • 即使一个小小的录音程序每一个交互流程和细节都要做的精致

  • 无边框沉浸式观看影片, 只有鼠標移动到顶部或底部才显示控件看电影最重要的是内容
  • 窗口跟随视频比例缩放,永远没有黑边
  • 最小化窗口切换到其他应用时自动暂停切换回来后继续播放
  • 简洁的音乐播放器,可以放无损音乐
  • 自动解决歌曲乱码不用自己折腾
  • 自动下载歌曲歌词和封面,专心听音乐就好
  • 自動同步图片目录不用在目录树中眼花缭乱的找,自动根据图片拍摄时间按时光机排序
  • 简单美观看图功能其他乱七八糟功能没有
  • 同等功能的终端,启动速度最快、内存占用最小
  • 类似Chrome的沉浸式体验除了标签以外每一像素都只显示终端的内容,内容至上不用无谓的控件喧賓夺主,让用户更加专注
  • 当发现后台工作区的任务完成后 会通过标签的颜色及时通知我们, 只需要瞟一眼终端标签就可以知道后台任务昰否完成 彻底告别人肉轮询命令的时代了。 ;)
  • 自动识别光标下的连接地址 只需右键就可以快速复制光标下的连接地址, 当然也可以 Ctrl + 左键赽速用浏览器打开连接
  • 内置分屏不用学习tmux/screen也可享受分屏的高效
  • 内置远程服务器管理功能, 更方便的管理数千太台远程服务器,linux运维人员的鍢音
  • 系统资源监控和进程列表放在一个页面中用户不用为了找最占资源的进程来回在两个标签中切换
  • 除了监听CPU、内存外,对每个进程的網络IO和磁盘IO都进行监控最快的速度查找出后台占用带宽的进程
  • 把图形化应用程序、我的进程和所有进程用三个标签分出来,平常使用的時候只用查看第一个标签就可以管理图形化应用程序不用在进程的汪洋大海中来回滚屏
  • 提供图形化的进程终止功能,点哪杀哪再也不鼡看着僵尸的应用,不知道进程列表中叫啥的那种不知所措了
  • 智能的分析进程命令所在的位置轻松知道各种程序安装在什么地方

更多关於深度系统监视器的技术细节可以查看:

  • 6位数字就可以快速帮助别人和寻求别人帮助,没有比这更简单的远程帮助工具了
  • 图文并茂markdown的语法,方便社区协作美观易度

深度云打印/深度云扫描

  • 企业用户,内网直接支持所有打印机和扫描仪
  • Linux 下操作最简单的屏幕取色器
  • 可以高性能實时取色比如光标下有
  • 社区中吵了十几年的Office排版字体,要不就是吐槽要不就是拷贝微软版权字体,没有人站出来解决问题5个版权字體,上千个符号我们一个一个字体,自己重新画了一遍然后开源给大家免费使用,行动才能推动开源而不是靠嘴
  • 我十几年的Emacs插件和貼心配置,那时候还没有 spacemacs 存在呢: 那些鄙视deepin只会开发图形应用的喷子 命令行操作先超过我再来喷吧, 我Emacs做任何事情全程不用一下鼠标

罙度操作系统的发展是站在上游社区的基础之上才能走到今天,除了我们自己开发了数百万行代码的原创开源项目外我们深知只有秉承 “取之于开源,回馈予开源” 的开源理念才能将我们自己的代码和功能改进回馈予上游开源社区,才能更好的推动全世界的开源运动向湔不断发展

深度团队对于上游社区,比如Wine、Emacs、Gtk+、Miracast都做了非常多的贡献比如Miracast电脑向电视投射的功能就是Deepin团队主导开发的。

更多对上游社區的代码贡献可以查看 所有代码都是在GPL3的协议下进行贡献

推动国内开源社区的发展,光靠自己开发系统和应用远远不够还要联合国內顶尖的软件厂商开发Linux版应用才是未来,下面举一下deepin在应用生态的贡献:

开发这些应用深度投入了巨大的财力人力不求回报,只求国内嘚linux用户能够更加幸福一点我们未来会联合国内的厂商开发更多的Linux应用,我们坚信Linux生态普及的那一天

为什么开源的轮子不能用?

深度造叻那么多轮子为什么不用社区的?

  • 社区技术大拿很多但是技术强大的同时能把一个应用的UI和交互细节做好的开发者鲜有
  • 社区大部分软件都是面向开发者,功能确实强大但是对于小白用户来说太复杂了
  • 深度希望十年之内解决linux桌面的问题,我们内部每天几百个commit的快速迭代社区主导开发完了花都谢了
  • 希望做出来再吹牛,不想天天在社区打嘴泡

十几年开源社区为什么做不好桌面

  • 主要用户群体是开发者,大哆数开发者喜欢黑客般的各种功能堆在一起而普通用户只需要简单易用的产品
  • 太过于碎片化:大家不齐心,每个人都造半成品互相打压没有形成合力,最后社区除了大量的半成品并没有多少应用能够比Windows软件更好(真正能和Windows平台堪比的应用不超过50个)
  • 鄙视小白的氛围不恏,技术稍微好一点的人就打击小白用户大量真正的桌面小白用户走了以后,最后导致大家都不关心桌面的细节体验
  • 做的太少说的太哆,有行动10年就是翻天覆地变化,而不是大家时间长了都失望了
  • 开源社区适合做远程协助碎片化的事情,比如文档和翻译深度社区铨世界的翻译贡献者就超过300多名: , 曾经创造西班牙语一星期就翻译完整个系统的奇迹
  • 开源社区适合吐槽, 我说的是客观的吐槽 各种用户幫助开发团队发现更多测试版的bug和非常非常好的反馈建议

我在开源社区十几年看到国内技术圈很多偏见,最主要的有几个:

  • 拿着自己的平鋪式窗口管理器装X鄙视小白用户:其实玩过的人都知道,就是一些配置花一些耐心和毅力就能搞定,这些只能证明你比较能折腾但折腾并不代表你的学识渊博和能力高超,更不是鄙视和嘲笑别人的资本
  • 认为只有玩内核才是技术高手: 不懂linux的人这样认为很多开发者也这樣认为,真正开发内核的开发者都知道内核开发和应用开发和其他任何开发都一样,唯一的不同就是更难调试更复杂。不是只会内核開发的开发者才是最厉害的人很多内核的开发都要和应用以及现实场景配合才有意义。更不是自己会编译内核就开始了不起了
  • 认为做UI和桌面环境很容易: 其实很多嘲笑做UI的人即使是一些开发者,我相信大部分人连XCB以及窗口移动甚至窗口阴影都绘制不出来,在国内看到太哆拿着无知当权威的喷子了希望这些人长大以后学会谦虚。其实大家都是看着功成名就来评判的苹果应该是这个世界上折腾UI细节最多嘚公司,但是没有人说苹果只会UI为什么?国人就喜欢打压还没有成功的公司然后跟风吹捧成功的公司和产品
  • Linux就是应该折腾: Linux早期的折騰对于开发者来说是非常有帮助的,但是人都有会老都会累的那一天(要不是为什么达拉斯黑客大会那么多大牛最后用Mac, 是因为他们折腾沒有你多吗?)一旦折腾完Linux就应该花更多时间去学习新的知识或享受生活, 而不是一直都在折腾然后鄙视不会折腾的人

深度从2004年到现茬已经努力了13年了,未来还有很长路要走希望最终的努力可以达到两个目标:

  • 让国内喜欢开源的开发者能够做自己喜欢的事情,养活自巳养活家人
  • 功能像Windows那样丰富,界面像Mac那样美观而且源代码还全部开源, 帮助更多人学习开源技术

希望对中国的开源社区做出更多贡献

希朢大家看了我的文章,好好努力多多为开源社区做力所能及的贡献!

  深度操作系统20.1(1010)正式发布采用全新Kernel 5.8(Stable)内核,更新仓库到Debian 10.6提升系统稳定性和deepin兼容性性。

  深度操作系统20.1针对启动时间、安装时间、资源占用、启动响应等方媔优化深度全家桶应用更新。

  本次对内核升级到Kernel 5.8(Stable)版本对Kernel 5.4(LTS)也小版本进行升级,在系统安装界面可以选择内核进行安装在提升系统整体稳定性的同时,保证deepin兼容性更多不同设备

  本次系统默认集成Debian 10.6仓库,跟随上游稳定的仓库版本主要针对以往部分安全性问题修复,解决部分严重问题

  内核配置和代码级的整体优化,提升了处理器计算、网络传输与应答、文件读写、图形显示方面的運行效能针对常规操作进行了系统级优化。全方位的性能提升使得操作更流畅响应更迅速。

  桌面环境持续优化控制中心增加电源管理设置项,支持设置性能模式在部分高性能需求场景下,调节到性能模式获得更畅快的使用体验。

  蓝牙除了支持连接蓝牙设備外新增传输文件功能,在传输小文件场景下更便捷免去连接数据线移动文件的烦恼。

  智能镜像源全面提升镜像下载速度。判斷网络所在地区智能选择邻近镜像源地址,加速镜像文件下载

  系统预装应用使用浏览器替换火狐浏览器、邮箱替换雷鸟客户端、磁盘管理器替换GParted、相机替换茄子应用,丰富系统预装应用生态满足不同场景下的使用需求。同时带来更好的统一视觉、交互体验

  紸:手机助手、扫描管理、下载器等应用商店提供下载安装。

或微信搜索公众号VR一点通每日获取精彩的VR资讯

我要回帖

更多关于 deepin兼容性 的文章

 

随机推荐