图形外壳与图形外壳

Tim*_*Tim 4 linux shell gui

从理解 Linux 内核开始

Unix 是具有可抢占进程的多处理操作系统。即使没有用户登录并且没有应用程序在运行,几个系统进程也会监视外围设备。特别是,有几个进程在等待用户登录的系统终端上进行监听。当用户输入登录名时,监听进程会运行一个验证用户密码的程序。如果用户身份得到确认,该进程将创建另一个进程,该进程运行一个 shell,在其中输入命令。 当图形显示被激活时,一个进程运行窗口管理器,并且显示上的每个窗口通常由一个单独的进程运行。当用户创建图形外壳时,一个进程运行图形窗口,而另一个进程运行。用户可以在其中输入命令的 shell。对于每个用户命令,shell 进程都会创建另一个进程来执行相应的程序。

“图形外壳”在这里是什么意思?

gnome shell 是图形外壳吗?

我之前的问题是“图形外壳”在“窗口系统、窗口管理器、桌面环境”的层次结构中处于什么位置? 与这里的一个有关?问题链接到https://en.wikipedia.org/wiki/Shell_(computing)#GUI,它说

图形外壳提供了基于图形用户界面 (GUI) 操作程序的方法,允许进行诸如打开、关闭、移动和调整窗口大小以及在窗口之间切换焦点等操作。图形外壳可能包含在桌面环境中或单独提供,甚至作为一组松散耦合的实用程序。

接近尾声的“外壳”是否意味着“图形外壳”?它是在终端模拟器中运行的命令行 shell 吗?

小智 8

该术语graphics shell既可以是图形外壳,也可以是在其下运行的命令行外壳。意思是,用户图形界面 (GUI) 或控制 GUI 功能的命令行。

首先,让我们从shell开始,“shell”是什么意思:“shell”这个词的定义是指一个程序,甚至是一组协同工作的程序,它控制着操作系统,也控制着硬件,所以shell真的是该软件可让您直接控制计算机。

图形外壳是将输出呈现为 2D 或 3D 图形而不是纯文本的外壳。换句话说,正是包括窗口、菜单等在内的图形用户界面 (GUI) 为用户和系统之间提供了更灵活的交互,而不是终端界面提供的纯文本。

但是,鉴于 GUI 的核心是作为 shell 构建的,那么它的所有功能都可以通过命令行来控制。例如,genome-shell命令是GNOME 桌面的图形化shell,该命令为GNOME 桌面提供了核心用户界面功能,可以通过命令行进行调整。另一个例子是 nautilus,它是 Gnome 中文件资源管理器的主要 GUI 界面,该界面可用作名为nautilus的命令行。该命令行具有以下功能:

$ nautilus --help
Usage:
  nautilus [OPTION...] [URI...]

Help Options:
  -h, --help                  Show help options
  --help-all                  Show all help options
  --help-gapplication         Show GApplication options
  --help-gtk                  Show GTK+ Options

Application Options:
  -c, --check                 Perform a quick set of self-check tests.
  --version                   Show the version of the program.
  -w, --new-window            Always open a new window for browsing specified URIs
  -n, --no-default-window     Only create windows for explicitly specified URIs.
  -q, --quit                  Quit Nautilus.
  -s, --select                Select specified URI in parent folder.
  --display=DISPLAY           X display to use
Run Code Online (Sandbox Code Playgroud)

意思是,您可以通过命令行控制 GUI 功能。

在 Linux 中,图形外壳通常由几层软件组成。操作系统应提供图形驱动程序以及键盘和鼠标驱动程序。然后在驱动程序之上,你有一个像 X11 或 Wayland 这样的窗口系统。它围绕输入创建更高级别的包装器(例如提供键盘布局),以管理存储传输到显示驱动程序的 2D 图像的内存,并为应用程序提供在内存中绘制这些 2D 图像的功能。

在窗口系统上方,您有一个窗口管理器,这就是应用程序如何将键盘和鼠标事件转换为系统调用来操作应用程序正在绘制的窗口。这包括启动、暂停、隐藏、显示和关闭应用程序、检测应用程序何时失败并在之后进行清理等任务。

有几十种流行的窗口管理器,包括 Unity、Gnome Shell、Xfwm、OpenBox、i3、Xmonad 等等。

应用程序可以绘制他们认为合适的图形,但是应用程序开发人员通常更喜欢使用一组通用的绘图工具,因此他们的应用程序看起来与系统上运行的所有其他应用程序一致。这些是您导入到应用程序中的软件库。然后调用它们的函数来绘制菜单、按钮、文本输入和显示 PNG 和 JPG 图像等图像。

这些常见的绘图工具被称为“小部件工具包”。Linux 上两个最流行的小部件工具包是 Gtk+ 和 Qt。您可以同时使用 Gtk+ 和 Qt,这就是为什么 Linux 上的不同应用程序有时会在外观和感觉上不一致的原因。

这些层非常特定于 Linux 软件生态系统。Mac OS、Windows 和 Android 的处理方式各不相同,但它们都倾向于将这些层中的每一层集成到一个单一的图形外壳软件中。它简化了事情,但也阻止了大量定制。

Linux 使事情复杂化的原因是因为人们更喜欢有选择,而且他们喜欢定制自己的 shell。如果您正在管理自己的 Linux 发行版,最好花一些精力选择默认的应用程序集,以便它们都使用相同的小部件工具包,并提供一致的外观和感觉。

在图形外壳之上,您可以构建图形应用程序,例如文件系统浏览器、应用程序启动器、通知和系统状态应用程序以及系统配置(“控制面板”)应用程序。这些应用程序共同构成了我们所说的“桌面环境”。

  • 恭喜你综合了这么好的读物,希望你不介意语法上的调整。 (2认同)