深度桌面操作系统架构设计

作者: ManateeLazyCat | 来源:发表于2017-02-02 20:17 被阅读41949次

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

    什么是桌面操作系统?

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

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

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

    • 内核、驱动以及固件:主要用于驱动硬件可以正常工作,除了CPU、内存、磁盘外,最主要的是要广泛兼容不同的网卡、显卡、声卡和外设等硬件设备
    • 软件仓库及众多开发库:如果没有开源社区众多大神打包好的软件仓库和各种开发库,要基于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渲染的机制都导致软件实际运行的性能不好。

    深度这么多年几乎把所有的界面编程语言(Python、C、C++、CoffeeScript/JS、Golang)和几乎所有的图形界面库(wx、GTK+、Qt、WebKit、QML)都折腾过了。
    最后停留在 Golang、C++、QtWidget 的技术选型上,因为这些技术不论从稳定性、兼容性还是性能都非常好。

    什么是桌面环境?

    桌面环境简单来说,就是在内核和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虽然性能极佳,但是从桌面环境的功能完整性和交互设计的精致性上都不够,比较适合有一定技术深度,追求性能和自己配置多于开箱即用的技术型用户。

    剩下的就是一堆平铺类窗口管理器,比如大家熟知的:awesome, i3, xmonad, dwm, 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各处都粗糙不一样,你会不会砸了它?但是为啥这么多开源爱好者就能忍受这些粗糙的东西?(因为自己没有花钱,花了钱你看他不把客服电话打爆...)

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

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

    深度截图20170202162735.png 094325u3k3lym0yu034nc1.png launcher5.jpg

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

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

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

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

    • 内核驱动层:前面已经说了,主要是保障硬件的基本功能和兼容性,所有的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 上面查看我们的代码: https://github.com/linuxdeepin/ , 深度所有项目的源代码都是按照 GPL3 许可证实时开源的(只要内部代码审查机器人通过代码质量审查以后就会由机器人自动推送到 github )

    深度截图20170202165633.png

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

    深度截图20170202170531.png

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

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

    当显示管理器认证成功以后,就会调用 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-initializer 本来是 dde-session-daemon 的一部分,为了加快用户的登录到桌面的速度,从 dde-session-daemon 中分离出来,用以加速任务栏和启动器的显示。

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

    dde-session-daemon 和 dde-system-daemon 做的事情我简单列举一下吧:

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

    dde-sessin-initalizer、dde-session-daemon以及dde-system-daemon从功能上,相当于Gnome的 gnome-session-daemon 所做的事情,只不过深度团队根据用户的需要以及很多优化加速设计,用 golang 重写了整个后台守护进程的代码。可以说 DDE 和 Gnome以及KDE一样,都是调用底层的库(network-manager、upower、udisk、bluez、pluseaudio、cups、polkitd、gvfsd) 对桌面环境和应用提供更为抽象和高级的服务。

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

    深度截图20170203103240.png

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

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

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

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

    dde-api binary utils:
    这一层主要是 dde-session-daemon 和 dde-system-daemon 在开发过程中发展出来的二进制工具,方便深度桌面环境以外的应用可以直接使用这些工具,减少核心技术的重复开发:

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

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

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

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

    深度截图20170203101157.png

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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


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


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


      e4CGn9wNoBklLqVy.png

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

    深度商店


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

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

    所有deepin对Wine上游的代码级贡献大家都可以在 https://www.google.com.hk/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#newwindow=1&safe=strict&q=deepin.com+site:winehq.orghttp://source.winehq.org/git/wine.git/?a=search&h=HEAD&st=commit&s=deepin 公开查询到
    很多社区开发者说,我们用社区的Wine也能跑QQ, 为啥要用Deepin? 我只能说的是,社区版的Wine如果没有deepin这几年的贡献,你啥都跑不了,不管你换什么linux发行版。

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

    深度截图20170203101553.png

    深度应用商店从技术架构上,主要分为lastore-daemon、lastore-session-helper、deepin-appstore三个部分:

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

    深度造了哪些应用?

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

    深度安装器:

    w5lHLhyRd1IgMUL1.png EkpcTsDu8vE3doxo.png bk4SJmc6hHwbQPHQ.png
    • 如果你在有wifi的地方,安装器不用连接网络,自动从路由器中找出国家码设置时区,不需要网络连接和GPS就可以准确知道用户在哪个时区,不需要让用户手动设置时区
    • 安装linux不需要知道分区知识,不需要知道 /、/var、/boot、/home、swap啥概念,选择任意空白分区即可安装,还可以根据内存大小自动选择是否设置swapfile(大内存不设置加速读取,小内存自动算swapfile最佳大小,当然也可以手动设置swap分区)
    • 安装错误了,扫描二维码的时候就自动上传错误日志了,不需要来回倒腾错误日志

    深度启动盘制作工具

    深度启动盘制作工具
    • 不需要研究各种U盘参数、引导参数,选择ISO文件,选择U盘就可以直接制作U盘启动安装盘
    • 系统安装盘里包含了Windows安装器,可以直接安装在windows xp/windows 7/windows 8/windows 10的NTFS分区安装深度操作系统

    深度文件管理器

    • 经典的文件操作方式, 没有坑爹的设计
    • 基于rlocate开发了内核模块,2TB的文件名2秒中搜索完毕,而且会根据文件添加删除启动实时维护搜索索引,不用手动定期更新索引
    • 内置avfs模块,所有压缩格式文件管理器秒开,而不用等漫长的解压时间和额外解压的磁盘空间
    • 未来版本直接扫描二维码下载文件到手机(或者反过来玩),不用连上USB后在不同目录来回穿梭

    深度显卡管理工具

    1.png 2.png

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

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

    • 提供开源驱动、私有驱动等不同的显卡驱动方案,供用户快速选择
    • 利用文件系统的 overlay 技术,如果私有显卡驱动安装后,会自动对图形进行测试,如果失败,会自动把文件系统恢复到安装私有显卡驱动之前的状态,即使显卡驱动安装失败都可以快速恢复到正常的系统状态进行使用,大大提高了私有显卡驱动的切换成功率和自动恢复的能力,在没有彻底解决显卡驱动硬件兼容性的前提下,可以最大程度的帮助用户安全的切换显卡驱动

    深度演示助手

    deepin-presentation-assistant-cn1.png deepin-presentation-assistant-cn2.png deepin-presentation-assistant-cn3.png
    • 提供了图片分享、PPT演示(手机变成翻页器)、手机屏幕投屏的功能
    • 在企业开会或者老师上课的时候,都可以快速分享手机的内容到电脑屏幕上

    深度备份还原工具

    1-1.png 2 (1).png
    • Linux下易用性最佳的备份还原工具,基于 libclone 库(CloneZilla也是用这个库实现的),基于磁盘扇区来备份和还原
    • 提供了磁盘、分区的备份和还原功能
    • 如果备份系统分区,会自动重启进入 Live 系统进行系统分区的备份和还原操作

    深度截图工具

    project-screenshot-1.png
    • 类似QQ截图体验的截图工具,Linux下最好用的截图工具,不解释

    深度录屏工具

    deepin-screen-recorder2_zh.jpg

    深度录音工具

    2-cn.jpg
    • 即使一个小小的录音程序,每一个交互流程和细节都要做的精致

    深度影院


    deepin-movie-1.png
    • 无边框沉浸式观看影片, 只有鼠标移动到顶部或底部才显示控件,看电影最重要的是内容
    • 窗口跟随视频比例缩放,永远没有黑边
    • 最小化窗口切换到其他应用时自动暂停,切换回来后继续播放

    深度音乐

    project-music-3.png
    • 简洁的音乐播放器,可以放无损音乐
    • 自动解决歌曲乱码,不用自己折腾
    • 自动下载歌曲歌词和封面,专心听音乐就好

    深度看图

    deepin-imageviewer-3.png
    • 自动同步图片目录,不用在目录树中眼花缭乱的找,自动根据图片拍摄时间按时光机排序
    • 简单美观看图功能,其他乱七八糟功能没有

    深度终端

    deepin-terminal-1.png
    • 同等功能的终端,启动速度最快、内存占用最小
    • 类似Chrome的沉浸式体验,除了标签以外每一像素都只显示终端的内容,内容至上,不用无谓的控件喧宾夺主,让用户更加专注
    • 当发现后台工作区的任务完成后, 会通过标签的颜色及时通知我们, 只需要瞟一眼终端标签就可以知道后台任务是否完成, 彻底告别人肉轮询命令的时代了。 ;)
    • 自动识别光标下的连接地址, 只需右键就可以快速复制光标下的连接地址, 当然也可以 Ctrl + 左键快速用浏览器打开连接
    • 内置分屏,不用学习tmux/screen也可享受分屏的高效
    • 内置远程服务器管理功能, 更方便的管理数千太台远程服务器,linux运维人员的福音
    • 支持点阵字体显示

    深度系统监视器

    5957-85f90ad9b3de39b2.png
    • 系统资源监控和进程列表放在一个页面中,用户不用为了找最占资源的进程来回在两个标签中切换
    • 除了监听CPU、内存外,对每个进程的网络IO和磁盘IO都进行监控,最快的速度查找出后台占用带宽的进程
    • 把图形化应用程序、我的进程和所有进程用三个标签分出来,平常使用的时候只用查看第一个标签就可以管理图形化应用程序,不用在进程的汪洋大海中来回滚屏
    • 提供图形化的进程终止功能,点哪杀哪,再也不用看着僵尸的应用,不知道进程列表中叫啥的那种不知所措了
    • 智能的分析进程命令所在的位置,轻松知道各种程序安装在什么地方

    更多关于深度系统监视器的技术细节可以查看:http://www.jianshu.com/p/deb0ed35c1c2

    深度远程协助

    project-remoteassistance-1.png project-remoteassistance-2.png
    • 6位数字就可以快速帮助别人和寻求别人帮助,没有比这更简单的远程帮助工具了

    深度手册

    deepin-manual2.png
    • 图文并茂,markdown的语法,方便社区协作,美观易度

    深度云打印/深度云扫描

    ![project-cloudscan-2.png](http:https://img.haomeiwen.com/i5957/309a61d3871ab835.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    • 企业用户,内网直接支持所有打印机和扫描仪

    深度取色器

    01-255x150.jpg 02-255x150.jpg
    • Linux 下操作最简单的屏幕取色器
    • 可以高性能实时取色,比如光标下有

    深度开源字体

    deepin-opensymbol1.jpg
    • 社区中吵了十几年的Office排版字体,要不就是吐槽,要不就是拷贝微软版权字体,没有人站出来解决问题。5个版权字体,上千个符号,我们一个一个字体,自己重新画了一遍,然后开源给大家免费使用,行动才能推动开源,而不是靠嘴

    deepin-emacs

    deepin-emacs2-1.png f60d05d0-8c1e-11e3-98c7-a14fa75e3ff7.png
    • 我十几年的Emacs插件和贴心配置,那时候还没有 spacemacs 存在呢: 那些鄙视deepin只会开发图形应用的喷子, 命令行操作先超过我再来喷吧, https://www.emacswiki.org/emacs/AndyStewart , 我Emacs做任何事情全程不用一下鼠标

    对上游社区的贡献

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

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

    更多对上游社区的代码贡献可以查看https://www.deepin.org/developer-community/community-contributions/ 所有代码都是在GPL3的协议下进行贡献。

    国内生态应用

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

    • 2013年联合搜狗开发了搜狗输入法 for Linux
    • 2015年联合网易开发了有道词典 for linux
    • 2016年联合网易开发了网易云音乐 for linux
    11293849zi444azmi33e9g.jpg 7fe698e9d1c9f041fc1bc9b8c899fb60_b.png

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

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

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

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

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

    • 主要用户群体是开发者,大多数开发者喜欢黑客般的各种功能堆在一起,而普通用户只需要简单易用的产品
    • 太过于碎片化:大家不齐心,每个人都造半成品互相打压,没有形成合力,最后社区除了大量的半成品,并没有多少应用能够比Windows软件更好(真正能和Windows平台堪比的应用不超过50个)
    • 鄙视小白的氛围不好,技术稍微好一点的人就打击小白用户,大量真正的桌面小白用户走了以后,最后导致大家都不关心桌面的细节体验
    • 做的太少,说的太多,有行动,10年就是翻天覆地变化,而不是大家时间长了都失望了

    开源社区擅长什么?

    • 开源社区适合做远程协助,碎片化的事情,比如文档和翻译,深度社区全世界的翻译贡献者就超过300多名: https://www.transifex.com/linuxdeepin/public/ , 曾经创造西班牙语一星期就翻译完整个系统的奇迹
    • 开源社区适合吐槽, 我说的是客观的吐槽,https://bbs.deepin.org/ 各种用户帮助开发团队发现更多测试版的bug和非常非常好的反馈建议
    • 开源社区适合打包移植, https://www.deepin.org/dde/desktop-transplantation/ 目前深度桌面已经移植到 Arch, Manjaro, SparkyLinux, openSuse, Ubuntu, Gentoo, Fedora 等发行版

    国内技术圈偏见

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

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

    前途漫漫,还需努力

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

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

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

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

    相关文章

      网友评论

      • 2df5a496140c:大神流弊,赞一下,被window系统的弹窗广告烦死了,周末装这个系统试下
      • 无尽悖论:基于Ubuntu,自虐者永远不会放弃自虐的,比如去玩arch但是给新手好多福利也是很好的
      • 我准备注销了请取关:说的好,我就是比较喜欢真性情的人所以就安装使用了Deepin系统,说实话,画面、UI这些都比较适合中国人的实用习惯,Iinux系统我最为喜欢的就三个桌面:Gnome、KDE、XFCE这些,唯一不足的为何terminal终端默认是绿色的,这对视觉障碍者是个麻烦的地方,希望开发者在下个版本能够改正!
      • 5a7d0dca7ca0:很喜欢deepin,专门注册帐号来顶一下,也一直在给周围的人安利deepin。:joy: 不知道深度有没有想给go开发者整一套做界面程序的库。 还有以下几个疑问,1 复制文件到移动硬盘的时候比较慢,20g多个视频往往要好几倍的时间复制,在windows下快多了。 2 回收站bug,有时候清空回收站的时候会卡死整个界面几秒,然后导致dde 重新加载。3.还出现过回收站有一个文件无论怎么清空也请不掉的情况
      • 是Jonathan:最近从Windows转到Linux了。之前也折腾过不少其他Linux发行版,深度早前也用过,但那时候很卡也不稳定。
        现在用Deepin Linux也是很偶然的机会,自己笔记本Ubuntu被我给搞乱了要重装,突然想到还有深度,装好后发现,集成了很多符合国人的软件好开心。立马向朋友推荐了,在我的带领下身边已经有俩人在使用深度了。有几个建议:
        1.深度文件管理器增加右键快捷键
        2.深度日期能不能做的向Windows日期那样,单击时间时不要独立弹出窗口,做成鼠标放上去显示日历 节气等,鼠标移开消失。
        3.最后希望深度的软件仓库更新及时些
        希望Deepin Linux越来越好~!!
      • 330448a00811:系统很好用,最后还是卸载装了ubuntu16.04,希望深度系统能支持tensorflow-gpu的环境安装
      • 别怕_有我在:希望深度越来越完善,很看好深度,毕竟这是我捡到的第一个努力去做linux的。虽然,linux的桌面系统不是那么好做,虽然前方还有做了那么多年的桌面系统的微软,但是,有进步就是好事,总会有一天超越的。
        别怕_有我在:捡到--见到。
      • 知识学者:膜拜打扰:stuck_out_tongue_winking_eye:
      • 爷是奥巴马:我现在的系统就是deepin ,很好用,校内还有镜像站,很棒
      • a8c6ead2f50c:无意在网上看到这篇文章,作者是老王吗?这样的文章为什么不发表在社区论坛呢? @ManateeLazyCat
        ManateeLazyCat: @松一老贼666 发了
      • 622364ec1cf9:一直用的gnome,一直在关注deepin
      • 63ad0af7d390:讲得太好了
      • 63ad0af7d390:超级喜欢,感谢你们的付出,希望国产操作系统能更上一层楼
      • 5925d5123ff6:ManateeLazyCat 你好,曾在几年前用过一段时间 Deepin,感觉良好。感谢你们的努力使 Linux 桌面更多元美好。

        我把此文章放到了 LinkedInfo.co (https://www.linkedinfo.co) ,我的一个业余项目。如觉得不妥,请随时联系我将之撤下。

        LinkedInfo.co 是一个集合了各类优秀技术文章的站点,不展现全文,所有条目都附上作者与原文链接,读者最终都会进入到作者原文的站点。做 LinkedInfo 的初衷是想方便自己和其他想学习的朋友,能更方便地找到自己感兴趣的技术文章。

        各位感兴趣的朋友可以去 https://linkedinfo.co 看看,非常希望能得到你们的意见与建议 (可在about 页面留言 https://linkedinfo.co/about )。
      • aoeuy:赞一个,我用的就是deepin
      • qingguee:我还是很喜欢deepin的,我的小本子用deepin还是满足自己的需求的。
        从另一个角度,中国能够有这么一群人有想法有坚持的人,这么好的linux发行版本,应该值得点赞。
      • bc8d6078b931:把显示管理器叫做登陆管理器,或许更好理解一些
        7e9322d9ede5:@温习江湖 我也觉得。但是其实这个显示管理器也确实有它的含义,比如选择使用哪种显示后端。x还是wayland
        ManateeLazyCat: @温习江湖 是的,登录管理器更容易理解。但是技术文章还是要严谨一点,哈哈哈
      • 从容地狂奔:念念不忘,必有回响
      • 摩诃迦葉:非常同意文章对于开源社区的观点,从深度的纯净版XP开始了解深度,坚持了这么多年Liunx实属不易。只能说国内linux圈里能有这么一只团队在不停努力是我们的幸运和骄傲。
      • 29d4ce6ab047:一直在找一个替换win的系统。以前用过Ubuntu、mint。今天装了Deepin15.4, 一开始有一些小问题,升级系统后问题解决了。非常感谢Deepin开发者。让我找到了替换win,又好用操作系统。给深度点赞:+1: 越来越好
      • 8d679f704e70:最后来点建议,X已经是过时的东西了,由于一些历史遗留问题,迁移到新的Wayland可能会比较困难,但还是希望深度能帮助完善Wayland,抛弃X
      • 8d679f704e70:不知道为啥总感觉你在吹,可能是语气的问题吧。你们的成果是挺不错的!还有啊,你们应该是知道开源社区为啥做不好桌面,因为桌面对developer来说不是必须的,能用即可。而深度面对的用户一般都没这耐心去捣鼓各种配置文件。
        ManateeLazyCat: @神乐坂花火 前途漫漫,埋头做事情,我相信好的东西会得到用户客观的评价
      • SniffingRose:deepin经过这么多年的技术选型和技术沉淀,我个人认为已经达到了一个从桌面到平台的蜕变,逐渐完善的DTK,是未来deepin完善生态的关键,就像Mac的cocoa框架一样,为开发者的涌入准备好了强大的工具,未来5~10年必然是中国桌面Linux系统成熟和领先的品牌,是真正可以发展成为既具有开源精神,又具备成功商业化的类似apple的公司,早到deepin系统选择HTML做桌面的时候,我就想参与到贵公司开发过程中,因为觉得这是在做一件伟大的事情,跟利益无关,这是一种开源精神和用户至上的务实企业,是在用行动而非口号来推动中国开源文化走向世界的情怀家,从15.4版本发布以后,我迫不及待的决定现在是时候参与到这个伟大产品中来的时候了,但是就像你说的,市场上没有一本完整介绍如何从开发到调试这样全栈式的书籍和文档,来具体指导如何开发一个全新的Linux桌面平台,而DDE确实做到了,所以我跟你发这封信息的主要目的就是你是否可以帮助提供一些deepin日常开发的一个完整的过程,对于如何设置开发环境,如何调试从底层的deep-greeter到startdde再到DTK,如果有了这样的桌面环境开发入门教程,我想就可以有更多的人有了尝试的入口点,至少可以动手跑通一下整个deepin桌面的代码,然后做一些修改,并立刻可以在自己的机器上看到修改后的效果,我现在特别想要去做,但是苦于没有这样的开发文档,希望前辈可以闲暇之余,可以给些建议,先谢了,另外我没有找到你的联系方式,这是我的邮箱yong_liang_zhang@163.com,如果有幸,希望可以交流学习,而且对你的hack emac经历甚是羡慕,希望没有打扰到。
        ManateeLazyCat: @SniffRoses 那就加入深度吧,我们可以深入交流,哈哈哈哈
      • 7a3433e44954:深度坚持的不易。不打嘴炮,实干兴邦。
      • 东阿:用了一段时间~~难点在于,独显的驱动搞不定~~装了驱动后黑屏~
        肆不肆傻:@东阿 这个问题应该能在Linux安装Nvidia显卡驱动后黑屏问题中找到solution
      • qare:建议,多在AMD的机子上优化,毕竟便宜…感觉AMD对开源世界的贡献也更大些。持续优化在低频率CPU上的使用体验。以前总是用着卡的感觉。再者还是希望能加入全局菜单和conky,做个按钮用户选择启用。
      • yuanzicheng:居然可以装qq
      • 0f080644a23f:多谢deepin, 希望你们不忘初心!
      • 3230cb9fb289:ManateeLazyCat 您辛苦了,你们的团队的辛勤努力,为我们新手提供了一个使用平台,感谢。万分感谢!
      • 7f3faebee149:又搜到了这篇文章,再看一遍越觉得开发不易,赞赏了2块,加油。
      • c29a882dd9a1:我第一次看这篇文章的时候就被你们的赤诚之心打动了,但后来想了想,还是有一件事不明,文章中只是说GTK+不好,但说到KDE的问题,我认为不是什么大问题啊,如果只是交互设计不好,改掉不就行了吗?你可能会说跟别人讨论会花时间,但也可以基于KDE来开发自己的桌面环境啊,真的有必要完全自己研发吗?
        c29a882dd9a1:我发现深度linux的效率好像很高啊,我开机之后第一次打开chromium浏览器感觉很快就打开了,以前用其它linux发行版的时候总感觉要等一会的,这是真的吗?不是我的错觉吧?
      • 734512570c99:虽然现在也不折腾开始用Mac了,但是看到这样的Linux还是想要大大的赞:)
      • 157140af1372:厉害了,佩服楼主,我们也在深度开发一块桌面安卓系统,收益良多!期待可以多交流!
      • 574d1aec84b0::smile: 我是一名Android开发者,一开始也是折腾各种版本的linux。有一天遇到deepin13,当时只是为了尝鲜,不想折腾。后来迷一般的爱上了,真的很不错,也看到了你们的进步。
      • CLCP:感谢,明天笔记本到了就装上deepin15.4
      • 16936fcb2df9:什么时候迁移wayland
      • 浪子逐梦:您好,与deepin识于颜值,目前使用deepin15.3,请问launcher5.jpg样式的非全屏启动器怎么实现的?普通用户能修改这个样式吗?
      • 菜鸟程序员_:你成功的吸引了我
      • 后现代主义蜗牛:要是能下载使用迅雷的话,那就不要太爽了。目前还有两个不太舒服的地方,一个是nvidia的显卡支持不是很好,想自己装一下先看,结果折腾了大半天,都没折腾好。知道这个对于开发人员来说比较难,但是不管集成没有集成在系统中,给个教程也是很好的,至少不用折腾那么久,还没有折腾好。
        不过还是觉得这个系统很好,加油。
        ManateeLazyCat: @后现代主义蜗牛 谢谢您,不要放弃总有一天会做好的
        后现代主义蜗牛:@ManateeLazyCat 好的,谢谢百忙之中回复。祝你们和深度系统会越来越好。
        ManateeLazyCat:系统中默认带来驱动管理器,打开就可以安装。
      • 后现代主义蜗牛:本来用着centos,今天装了一下deepin,一下子就把我给震撼住了,shitf自动换输入法简直不要太爽,直接可以下载qq,竟然还有微信,而且linux下载东西的时候网速一般都很慢,很需要一个类似迅雷一样的东西,结果里边自带qq旋风,也能下载bt了,真是很有良心的系统,将来我计划将这个系统作为自己的主要操作系统来使用了。
        ManateeLazyCat:@后现代主义蜗牛  迅雷用命令行安装:  sudo apt-get install apps.com.xunlei.mini
      • 7f3faebee149:深度的界面很好看,简直惊艳,然而确实欠稳定了些,之前装过13的版本,那时候经常卡死就卸了,现在装了15.4rc的版本,好了许多,但是卡死还是有,流畅性比Mac 和windows也还是差很多,当然不是打击你们,可能爱之深责之切吧,总体还是很希望你们成功的,这么漂亮好看的系统应该让更多人用上。任重道远,加油吧。
      • wfsovereign:原来使用了那么多优秀的产品都有你们的身影,真是肃然起敬
      • 小杨微刊:感谢您,感谢所有参与deepin的开发人员。

        “让国内喜欢开源的开发者能够做自己喜欢的事情,养活自己,养活家人
        功能像Windows那样丰富,界面像Mac那样美观,而且源代码还全部开源, 帮助更多人学习开源技术”看到这里,很是感动,我从centos到fedora,ubuntu,debian一路过来。虽说debian还是很好用的,然而总感觉缺了点什么。对了,就是本地化问题,美观也稍有欠缺,于是选择了deepin(已是deepin的坚定支持者,相同的产品,如果有国产的,我坚决用国产),真正开箱即用,美观大方,这么好用的系统,傻逼才不用,国内确实一大批动嘴不动手的喷子,请不必理会,相信deepin会越来越好,我们都支持你。感谢你们的辛勤付出,祝你和deepin所有的工作人员生活幸福、工作顺利。
      • b4d9458e93b4:感谢推出了我心目中的linux桌面系统,从2003第一次接触redhat9到尝试各种非windows、非mac系统,从来没有哪一个能像deepin那样一开机就觉得这是我期待的那种linux桌面系统,年轻的时候折腾redhat、opensolaris、freebsd、netbsd、openbsd,为了配置桌面把对计算机的热情兴趣全都耗尽了,工作和彻底跟linux等类unix决裂,昨天在十几年前的笔记本上体验了一下,虽然老本子卡出翔,但deepin linux真心不错。虽然在工业生产还有所欠缺,但普通日常使用足够了,未来中国linux桌面就看你们的了,希望你们1.可以把deepin linux做成一个女孩子喜欢的桌面系统(流畅、界面好看、看片、聊天、游戏)2工业实用(可以炒股、可以安装用友或金蝶、photoshop、网银、支付宝。。。。)。祝你们的明天更美好
      • e1fe90399cc7:非常感谢你们对于Linux以及中国开源事业的贡献。
      • 86fac15ab76e:深度的未来要弄成什么样呢?在国内替代windows吗?但是软件支持以后会跟上吗?比如支付宝,英雄联盟,高校里的课堂教学等等。windows的先入为主的力量太大了,deepin要想壮大,感觉任重而道远啊。
      • 435547b97ea9:支持,希望你们能赚钱
      • b0542f6c4d28:能早点出开发者中心就好了,让第三方写更多的应用
        qare: @那么好了linux的软件,基本上都可以用,只要你做!
      • 4a8ad6f7b0f9:虽然短期内不会用这个系统,但是还是打支持了10块钱,因为有想法并做的人太宝贵了
      • 海雾额北鼻:感谢,了解了Linux桌面,之前装过deepin,看了你的文章决定再次用起来
      • 泥猴:之前只是知道并不了解,看了这篇文章就打算装一个来用了
      • 528e2beb2b6a:这尊神,小的门外汉只说一点,就像有人说界面太艳丽了最终换了Mac,我虽然没有用过该系统,但通过图片和评论,我只是觉得在设计UI的时候应该聘用一个美术指导,说真的,画面的精美与完美不是一个概念。人眼对画面解析的时候,并不是越清晰或者颜色越艳丽越好,这中间有一个度,把控好了就是Mac纯净清澈。 个人建议,如有冒犯,还请海涵。
        8d679f704e70: @礼服漆黑色 设计语言感觉可以直接套用谷歌的Material Design,交互有逻辑,动画绚丽耐看
        qare: @礼服漆黑色 觉得mac好看,更多的还是因为整齐。不过linux有更多的定制空间,享受吧
      • 樓至韋駝:我非常钦佩深度团队这么多年来的付出,我也很欣慰深度在新的时代所选择的正确的方向, 对大多数国内用户,甚至很多所谓的极客来说,UI交互的美观和一致性都是选择一个操作系统的非常重要的方向,相对来说功能反而不是那么重要,Linux经过这么多年发展之所以在桌面上依然建树不行,私以为最重要的原因就是美观和易用性, 美观主要包括系UI和第三方软件的UI交互不统一上,易用性包括硬件驱动,预装软件,第三方软件功能完整程度等方面, 深度团队如果能在这两方面对Linux进行持续投入,我认为将来肯定能吸引很多用户,未来计算机必然越来越普及,以后说不定初中生就对计算机有比较深入的了解,到时候这批人对windows的不满也会越来越多,其他更加有特色的操作系统到时候就极有可能呈爆发态势,希望深度团队能坚定方向,把握机会
      • 喷气式蜗牛:为什么感觉截图上的deepin的设置界面和我的不一样呢,难道我装了假的deepin吗...:joy:
        ManateeLazyCat: @喷气式蜗牛 新版15.4
      • Super7:Awesome!慢慢看,一次没看完,再次给了我坚持的勇气,目前痛点是四角呼出不灵敏
      • alenstar:几年前用过deepinlinux, 那时感觉很漂亮, 只是太卡了, 后来就放弃,现在看来界面部分都用原生代码重写,流畅性应该有很大的提升, 希望能再接再厉。 还有不知道你们是否考虑过支持wayland,如果没有考虑希望你们能考虑一下。
      • de5653107f02:写的很不错,但是我用korora,无他,习惯了gnome3
      • 6c162ab74347:深度真的很好很牛了,做了很多实实在在的工作,就是宣传上还不够,大众还没有太多知道的!祝福!
      • ForrestDouble:麻烦设计下软件仓库的firefox,48。0 现在都开51.0了
      • hzqelf:做用户体验设计最难的是什么?「平衡」是我们一贯以来的答案。在实际工作中,需要我们平衡的因素有很多,比如商业目标与体验目标的平衡、理性思维与感性思维的平衡、追求极致与关注全局的平衡、发散创新与克制专注的平衡、符合习惯与突破常规的平衡……一个好的用户体验设计师能够综合考虑到绝大部分情况,作出最适合当下产品的设计思考与决策,而不是理想化地沿着一个方向走到底。DDE很好地做到了上述几点,是目前最优秀的DE之一。
      • Rim99:用过一段时间,整体很棒,就是感觉UI的颜色太鲜艳了。后来换了mac
      • Moshimol:我都不想用windows了 MacOS感觉差不多 想问一下作者 是不是针对不同的cpu做了不同的版本 ,我看官网的百度下载渠道 有i3和amd之分
        9c95d3f94bf2:cpu有一点点关系,但问题不大。主要的还是显卡,一般intel系的集显核显支持度最高。
      • 721ae4ca6033:牛逼,敬礼!
      • 4590b45f2036:太好了,出了马上用
      • JarvanMo:deepin用户路过...
      • FITZ9311:在学校就一直关注,加油!!!
      • bdc6c1bb54f6:期待新版,也祝愿深度能和更多厂商合作,有稳定的收入,安心的做系统。
      • 无情公子L:作者太厉害了,补了我这方面知识,我一直想了解这方面的解释,佩服:blush:
      • ef91559f0465:文章中所截图的系统不好用,但是这篇文章却写的不错。给我们读者科普了桌面的定义,一个操作系统的组成部分,为我们这些小白扫盲,值得鼓励。
        13d62545fd64: @孤独的毅1 不说用?说理由,说得对,有利于改进,说得不对,也有利于改进,因为会思考如何吸引和引导用户
      • CoderChou:@ManateeLazyCat 看到这篇文章我也想尝试一下,deepin是基于linux吗
        8d679f704e70: @CoderChou deepin不是基于Linux,是基于Debian基于Linux
        CoderChou:@ManateeLazyCat 想尝试下是不是需要重装系统,想试试做开发
        ManateeLazyCat:@CoderChou 是的
      • 892e32a4e1b4:这年头能沉下心来踏踏实实做实事的团队都值得尊敬!希望像Deepin这样的团队越来越多,也希望他们都能走好!
      • 瓦力和伊娃:深度 感谢你一路前行
      • 6e13541eaf76:从大学开始就迷上了linux,苦于身边没有志趣相投的朋友,一路走来也走了不少弯路,好希望能加入deepin开发团队,为国内开源事业贡献自己的一份力量!我是2016年毕业的,湖北人,打算在武汉找工作,想知道深度今年还招人吗?
        6e13541eaf76: @ManateeLazyCat 简历已发到您邮箱,请注意查收😊
        ManateeLazyCat:@kyleP 简历可以先发过来 wangyong@deepin.com 瞅瞅。 ;)
      • Rekols:大赞deepin!
      • sayyanfu:深度是否提供类似iCloud或者小米云,微软 skydrive的云备份?
      • sayyanfu:Android的材料设计语言,Metro风格发展不好,微软好像也在研究一个新的UI设计语言。深度有自己的UI设计语言吗?
      • sayyanfu:深度Linux和以前的Hiweed有什么不同?
      • JunOnes:一直用deepin感觉很好
      • 杨玉杰:说起到现在也已经连续使用deepin做主系统一年了,感谢你们做出这么棒的系统
      • e3fcc74a1bd6:咦,这界面怎么这么好看,为什么我的那么丑,原版的,有扁平有拟物的杂体,丑爆了,怎么弄图上的,是主题还是什么?我已经安装了最新版桌面系统了啊
        hzqelf: @bylii方便面 意思就是15.4还没出呢,预计今年4月出(官网有公告)
        ManateeLazyCat:@bylii方便面 文章里面的是15.4, 可以去论坛内测。网站上是最新的15.3
      • 58c8c410e468:感谢deepin这么务实,让我们用上最贴近用户的系统!!
        15.4的控制中心虽然漂亮了很多,但是在设置时鼠标要进行很长的滚动,这点体验不如15.3好,能否结合一下15.3的侧边导航图标展开对应的设置项目界面呢??
        ManateeLazyCat:@左心房的痛  会有的。 ;)
      • 简书说我的昵称违规:十几年的坚持,不是一般人能做到的。尤其在这个动荡浮躁的年代。
      • aaad567e6daa:你这个太漂亮了,真想搞一个
      • 5a25f10ca10a:能否在底层开发一个巨牛的加密应用,可以简单设置强度和效率,并且可以针对不同用户部门进行定制,很多政府部门需要这个。
      • 狂风落尽深红色绿树成荫子满枝:感觉,在龙芯上下了很大功夫。可是龙芯性能好捉急啊,之前用过一段麒麟,性能捉鸡
      • tangll:太强了!
      • 79cd10e24d2a:虽然文中有些地方还是想吐槽下,但是看到深度这几年的变化(几乎是看到官网发布大的变化就更新一下系统看看),我只想说深度加油!
        --Debian testing/sid user
        ManateeLazyCat:@我可以帮助你哦 欢迎去论坛吐槽我们,只要有道理,客观我们都虚心接受大家的吐槽。;)
      • 海天鹰:写得这么好,必须赏红包!
      • 3b5022f1f3d1:非常棒 关注几年了 深度适合菜鸟用 上网看电影 办公 打刀塔2
      • mesosome:太棒了,一定要用用试试
      • 16c122786c19:66666666666深度一直是我最喜欢的系统,从ghost xp时代就开始了!
        16c122786c19:@hzqelf 好吧我记错了
        hzqelf: @亚当斯密达 原来做盗版的那个深度团队解散了,他们和现在的武汉深之度科技有限公司没有任何关系。
        3c32dd8fb178:你说的是那个做盗版windows的深度吧,是的话那和这里的深度就没有任何关系啦。只是恰巧名字相似
      • 刀尖红叶:希望深度成为开源+商业的完美结合!
      • 08e940dddf32:你这么屌,为什么不被华为收购
      • 知而无知:貌似可以开始考虑Wayland了~😄
      • dawter:这个必须得支持,良心企业
      • 48c2a88c5edc:好文章,补充了知识。
      • 悬雨:我刚刚去官网下了deepin15.3,下好了检测就有更新。更新完了之后和更新前一样啊,桌面环境都是黑色,也没有你截图出来的通知模块高斯模糊。另外,找了半天没有dpi缩放,设置项就那么一点点。而且字体大小的调整并不能应用到全局,观察到只有应用标题栏的变化,再加上没有全局的缩放调整,对于1080p的屏幕已经十分蛋疼了。整个界面显示效果看起来十分有限。还有联网问题,重启才能解决应用商店下载失败和更新无法正常接收的问题。实际整体体验并不好。请问文中那些像极了mac的界面特效比如通知模块高斯模糊,为什么我没看到,还是漆黑的底色
        hzqelf: @小小小悄豆 正解
        @悬雨 由于deepin目前基于debian sid(unstable),所以当官网发布15.4的时候你只需要更新系统就行了。顺便一提,如果嫌更新的下载速度慢,可以手动修改/etc/apt/sources.list 文件,换成中科大或者清华的源就好了。
        3c32dd8fb178:文章里面的截图应该是deepin15.4的截图,但这个版本目前还在内测,官网上下载的是15.3版本,15.4按照官方的计划是在4月份发布,还有两个月时间
        dd1379d7b54e:i7处理器有bug

      本文标题:深度桌面操作系统架构设计

      本文链接:https://www.haomeiwen.com/subject/uphrittx.html