- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Linux桌面进化史由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本周Linux刚刚迎来它的28岁生日。自20世纪90年代初期以来,Linux桌面也已从简单的窗口管理器发展为成熟、完整的桌面。那么它究竟是如何一步步发展至今的呢?作为从1993年就开始使用Linux的资深用户,FreeDOS创始人Jim Hall从初代窗口管理器开始,仔细梳理了一遍Linux桌面的进化史.
X和窗口管理器 。
Linux上的第一个“桌面”是在X Window系统上运行的窗口管理器。X为图形用户界面提供了基本构建块,例如在屏幕上创建窗口并提供键盘和鼠标输入。要运行X图形环境,用户需要一种方法来管理会话中的所有窗口,这就是窗口管理器的用武之地。运行像xterm或xclock这样的X程序,它们就会在窗口中打开.
窗口管理器负责跟踪窗口并执行基本的任务管理,例如移动窗口并最小化。剩下的则取决于个人,你可以在通过将X列在~/.xinitrc文件中来启动程序,不过通常,用户会从xterm运行新程序.
1993年最常见的窗口管理器是TWM,它可以追溯至1988年。TWM非常简单,只提供基本的窗口管理功能.
▲SLM 1.05上的TWM,图中为xterm、xclock和Emacs编辑器 。
另一个早期的窗口管理器是OpenLook虚拟窗口管理器(OLVWM)。OpenLook是Sun Microsystems在20世纪80年代开发的图形用户界面,后来也被移植到其他Unix平台。作为虚拟窗口管理器,OLVWM支持多个工作区.
▲SLS 1.05上的OLVWM,图为xterm和Virtual Workspaces选择器 。
当Linux开始普及时,创建一个具有流畅性能和改进界面的新窗口管理器并不需要花费很大力气。这些新窗口管理器中的首个便是FVWM,一个虚拟窗口管理器。FVWM比TWM或OLVWM更具现代感。当然对于现代人来说,TWM和FVWM可能看起来很平常.
▲SLS 1.05上的FVWM,图为xterm和文件管理器 。
当时的Windows桌面看起来相当简单。Windows版本1到3使用称为“程序管理器”的普通启动程序.
▲Windows 3.11上的程序管理器和记事本编辑器 。
1995年8月,微软发布了Windows 95并改变了现代PC桌面环境。在当时,Windows 3.x看起来是笨拙而丑陋的,Windows 95显然更为流畅好看。更重要的是,Windows 95改变了人们对桌面的定义.
Windows 95桌面意味着集成。程序管理器消失了,取而代之的是屏幕底部的任务栏,可以使用更简单的“开始”菜单启动新程序。与之前版本的Windows甚至其他Linux窗口管理器相比,Windows 95界面更加灵活且易于使用.
▲Windows 95上的记事本编辑器 。
Linux开发人员不甘示弱,创建了一个模仿Windows 95界面的新版FVWM,并称为FVWM95。新的窗口管理器仍然不是桌面,但它看起来比以前好得多。用户可以在任务栏中使用“开始”菜单启动新的X程序,任务栏还使用类似于Windows 95的按钮显示正在运行的程序.
▲Red Hat Linux 5.2上的FVWM95 。
虽然FVWM95和其他窗口管理器在不断改进,但核心问题仍然存在:Linux并没有真正拥有桌面。它只有一系列窗口管理器罢了.
首个Linux桌面 。
1996年,Matthias Ettrich希望将所有内容集成在一起,就像一个真正的桌面一样。于是他开始研究K桌面环境(KDE),并于1998年7月完成。KDE 1.0比FVWM95这样的普通窗口管理器有了明显的改进.
▲KDE 1.0 。
KDE代表着Linux的一大进步,从此Linux拥有了真正的桌面应用程序集成和更现代的桌面图标.
KDE的设计与Windows 95相差无几。它在屏幕底部有一个任务栏,提供了相当于Windows 95的开始菜单以及几个应用程序的快捷方式。此外,KDE还支持虚拟桌面.
但并非所有人都对KDE感到满意。为了从系统中抽象GUI,KDE使用了Trolltech的Qt工具包库。不幸的是,Qt没有在免费软件许可下发布。Trolltech允许Qt在免费软件应用程序中免费使用,但在商业或专有应用程序中使用它需要付费。这使Linux发行版陷入两难抉择:应该包含KDE吗?或者默认使用较旧但免费的软件图形用户界面,如FVWM?
很快,事情有了新的变化。Miguel de Icaza和Federico Mena于1997年开始为新的Linux桌面工作。这个新项目被称为GNOME,用于GNU网络对象模型环境。GNOME旨在成为完全免费的软件,并使用来自GIMP图像编辑器的不同工具包,即GTK(GIMP Tool Kit).
当GNOME 1.0最终在1999年发布时,Linux又拥有了一个现代桌面环境.
▲GNOME 1.0 。
此后,KDE与GNOME的竞争持续了一段时间。转眼来到1999年,Trolltech根据新的公共许可证——Q公共许可证(QPL)重新发布了Qt库。但新许可证仍然有所限制,QPL仅适用于Qt在开源软件项目中的使用,而非商业项目。因此,自由软件基金会认为QPL与GNU通用公共许可证(GNU GPL)不兼容。这个许可问题将一直持续到Trolltech在2000年GNU GPL第2版下重新发布Qt库.
随着时间的发展 。
Linux桌面继续成熟。KDE和GNOME进入良性竞争状态,互相推动新的发展。到2004年,GNOME和KDE都取得了重大进展,但只对用户界面进行了增量更改.
KDE 2和3继续依赖于屏幕底部的任务栏概念,但包含了用于运行应用程序的按钮。KDE最明显的变化之一是增加了Konqueror浏览器,它最初出现在KDE 2中.
▲KDE 2.2.2(2001) 。
▲Fedora Core 2上的KDE 3.2.2(2004) 。
GNOME 2也使用了任务栏概念,但它将栏分成两部分:屏幕顶部用于启动应用程序并响应桌面警报,页面底部显示正在运行的应用程序。除了简化的用户界面外,GNOME还添加了一个名为Nautilus的文件管理器,由Eazel开发.
▲Fedora Core 2上的GNOME 2.6.0(2004) 。
随着时间的推移,KDE和GNOME采取了不同的发展路径。两者都提供功能丰富、强大且现代化的桌面环境,但它们具有不同的用户界面目标。2011年可以说是GNOME和KDE的分水岭。KDE 4.6(2011年1月)和KDE 4.7(2011年7月)提供了更为传统的桌面,同时继续依赖许多用户熟悉的任务栏概念。从外观上来看,KDE并没有什么太大的变化.
▲KDE 4.6 。
另一边的GNOME则在2011年通过新的桌面概念完全改变了方向。GNOME 3旨在创建更简化的桌面体验,使用户能够专注于他们正在进行的工作。任务栏消失,取而代之的是屏幕顶部的黑色状态栏,其中包括音量和网络控制,显示时间和电池状态,并允许用户通过重新设计的菜单启动新程序.
▲GNOME 3.0 。
选择合适的桌面 。
有人喜欢KDE,有人喜欢GNOME,选择最适合自己的就好。可以肯定的是,KDE和GNOME都有批评者和支持者。这其中最著名的批评者也许是Linus Torvalds,他在2011年大声谴责GNOME为"unholy mess"并放弃了它,两年后却又再度回归.
其他不少人对GNOME 3也提出了类似的批评,以至于一些开发人员将GNOME 2源代码分叉并创建MATE桌面。MATE继承了GNOME 2的传统任务栏界面.
无论如何,毫无疑问,今天最流行的两个Linux桌面是KDE和GNOME。它们目前的版本都非常成熟,并且功能丰富。KDE 5.16(2019)和GNOME 3.32(2019)都试图简化Linux桌面体验,不过是以不同的方式。GNOME 3.32继续瞄准最简洁的外观,删除所有令人分心的用户界面元素,以便用户可以专注于应用程序和工作。而KDE 5.16仍旧采用了较为熟悉的任务栏方法,但增加了其他视觉改进,特别是改进了图标和小部件处理.
▲KDE 5.6 。
▲GNOME 3.32 。
每个主要的Linux发行版都提供兼容性库,因此兼容性不会丢失,用户可以在GNOME上运行KDE应用程序,反之亦然.
KDE和GNOME之间的良性竞争使两个阵营的开发人员都能够不断突破,这是一件好事。无论你使用的是KDE还是GNOME,你都拥有一个集成度很高的现代化桌面.
最重要的是,这意味着Linux拥有自由软件中的最佳功能:选择.
最后此篇关于Linux桌面进化史的文章就讲到这里了,如果你想了解更多关于Linux桌面进化史的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
Linux 管道可以缓冲多少数据?这是可配置的吗? 如果管道的两端在同一个进程中,但线程不同,这会有什么不同吗? 请注意:这个“同一个进程,两个线程”的问题是理论上的边栏,真正的问题是关于缓冲的。 最
我找到了here [最后一页] 一种有趣的通过 Linux 启动 Linux 的方法。不幸的是,它只是被提及,我在网上找不到任何有用的链接。那么有人听说过一种避免引导加载程序而使用 Linux 的方法
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我试图了解 ld-linux.so 如何在 Linux 上解析对版本化符号的引用。我有以下文件: 测试.c: void f(); int main() { f(); } a.c 和 b.c:
与 RetroPie 的工作原理类似,我可以使用 Linux 应用程序作为我的桌面环境吗?我实际上并不需要像实际桌面和安装应用程序这样的东西。我只需要一种干净简单的方法来在 RaspberryPi 上
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
有什么方法可以覆盖现有的源代码,我应该用 PyQt、PyGTK、Java 等从头开始构建吗? 最佳答案 如果您指的是软件本身而不是它所连接的存储库,那么自定义应用程序的方法就是 fork 项目。据我所
我的情况是:我在一个磁盘上安装了两个 linux。我将第一个安装在/dev/sda1 中,然后在/dev/sda2 中安装第二个然后我运行第一个系统,我写了一个脚本来在第一个系统运行时更新它。
我在 i2c-0 总线上使用地址为 0x3f 的系统监视器设备。该设备在设备树中配置有 pmbus 驱动程序。 问题是,加载 linux 内核时,这个“Sysmon”设备没有供电。因此,当我在总线 0
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
我正试图在 linux 模块中分配一大块内存,而 kalloc 做不到。 我知道唯一的方法是使用 alloc_bootmem(unsigned long size) 但我只能从 linux 内核而不是
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我有 .sh 文件来运行应用程序。在该文件中,我想动态设置服务器名称,而不是每次都配置。 我尝试了以下方法,它在 CentOS 中运行良好。 nohup /voip/java/jdk1.8.0_71/
我是在 Linux 上开发嵌入式 C++ 程序的新手。我有我的 Debian 操作系统,我在其中开发和编译了我的 C++ 项目(一个简单的控制台进程)。 我想将我的应用程序放到另一个 Debian 操
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
我使用4.19.78版本的稳定内核,我想找到带有企鹅二进制数据的C数组。系统启动时显示。我需要在哪里搜索该内容? 我在 include/linux/linux_logo.h 文件中只找到了一些 Log
我知道可以使用 gdb 的服务器模式远程调试代码,我知道可以调试针对另一种架构交叉编译的代码,但是是否可以更进一步,从远程调试 Linux 应用程序OS X 使用 gdbserver? 最佳答案 当然
是否有任何可能的方法来运行在另一个 Linux 上编译的二进制文件?我知道当然最简单的是在另一台机器上重建它,但假设我们唯一能得到的是一个二进制文件,那么这可能与否? (我知道这可能并不容易,但我只是
我是一名优秀的程序员,十分优秀!