Linuxカーネルの理解から
Unixは、プリエンプタブルプロセスを備えたマルチプロセッシングオペレーティングシステムです。ユーザーがログインしておらず、アプリケーションも実行していない場合でも、いくつかのシステムプロセスが周辺機器を監視しています。特に、いくつかのプロセスは、ユーザーのログインを待機するシステム端末で待機します。 ユーザーがログイン名を入力すると、リスニングプロセスは、ユーザーパスワードを検証するプログラムを実行します。ユーザーIDが確認されると、プロセスは、コマンドが入力されるシェルを実行する別のプロセスを作成します。 グラフィカルディスプレイがアクティブになっている場合、1つのプロセスがウィンドウマネージャーを実行し、ディスプレイ上の各ウィンドウは通常、個別のプロセスによって実行されます。 ユーザーがグラフィックシェルを作成するとき、1つのプロセスがグラフィックスウィンドウを実行し、2番目のプロセスが実行されますシェルユーザーがコマンドを入力できます。ユーザーコマンドごとに、シェルプロセスは、対応するプログラムを実行する別のプロセスを作成します。
ここで「グラフィックシェル」とはどういう意味ですか?
Gnome Shellはグラフィックシェルですか?
私の以前の質問は 「グラフィカルシェル」は「ウィンドウシステム、ウィンドウマネージャー、デスクトップ環境」の階層のどこにあるのですか? ここの質問に関連していますか?質問は https://en.wikipedia.org/wiki/Shell_(computing)#GUI にリンクしています。
グラフィカルシェルウィンドウのオープン、クローズ、移動、サイズ変更、およびウィンドウ間のフォーカスの切り替えなどの操作を可能にすることにより、グラフィカルユーザーインターフェイス(GUI)に基づいてプログラムを操作する手段を提供します。グラフィカルシェルは、緩やかに結合されたユーティリティのセットとしても、デスクトップ環境に含まれている場合と、個別に付属している場合があります。
末尾の「シェル」は「グラフィックシェル」を意味しますか?ターミナルエミュレータで実行されているコマンドラインシェルですか?
用語 graphics Shell
は、グラフィカルシェルでも、その下で実行されているコマンドラインシェルでもかまいません。つまり、ユーザーグラフィカルインターフェイス(GUI)またはGUI機能を制御するコマンドライン。
まず、シェルから始めましょう。「シェル」の意味:「シェル」という言葉の定義は、プログラム、または一緒に動作するプログラムのグループを意味し、オペレーティングシステムとハードウェアを制御するので、シェルは本当にソフトウェアはコンピュータを直接制御します。
グラフィカルシェルは、プレーンテキストではなく、2Dまたは3Dグラフィックとして出力を表示するシェルです。言い換えると、グラフィカルユーザーインターフェイス( GUI)ウィンドウ、メニューなどを含み、端末インターフェースによって提供されるプレーンな鈍いテキストの代わりに、ユーザーとシステム間のより柔軟な相互作用を提供します。
ただし、GUIのコアがシェルとして構築されている場合、そのすべての機能はコマンドラインで制御できます。たとえば、コマンド genome-Shell はGNOMEデスクトップのグラフィカルシェルです。このコマンドは、コマンドラインで調整できるGNOMEデスクトップのコアユーザーインターフェイス機能を提供します。別の例として、GnomeのファイルエクスプローラーのメインGUIインターフェイスであるnautilusがあります。このインターフェイスは、 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
つまり、コマンドラインからGUI機能を制御できます。
Linuxでは、グラフィカルシェルは通常、ソフトウェアの2つの層で構成されています。オペレーティングシステムは、グラフィックスドライバー、およびキーボードとマウスのドライバーを提供する必要があります。次に、ドライバーの上に、X11やWaylandのようなウィンドウシステムがあります。入力(キーボードレイアウトの提供など)の上位レベルのラッパーを作成し、ディスプレイドライバーに送信される2D画像を格納するメモリを管理し、メモリ内のこれらの2D画像にペイントする機能をアプリに提供します。
ウィンドウシステムの上にはウィンドウマネージャーがあり、これがアプリケーションがキーボードとマウスのイベントを、アプリがペイントしているウィンドウを操作するシステムコールに変換する方法です。これには、アプリの起動、一時停止、非表示、表示、閉じるなどのタスクが含まれ、アプリの失敗を検出し、その後クリーンアップします。
Unity、Gnome Shell、Xfwm、OpenBox、i3、Xmonadなど、数十の人気のウィンドウマネージャーがあります。
アプリは適切にグラフィックを描画できますが、アプリ開発者は通常、描画ツールの共通セットを利用することを好むため、アプリはシステム上で実行されている他のすべてのアプリと一貫性があるように見えます。これらは、アプリにインポートするソフトウェアライブラリです。次に、それらの関数を呼び出して、メニュー、ボタン、テキスト入力を描画し、PNGやJPG画像などの画像を表示します。
これらの一般的な描画ツールは「ウィジェットツールキット」と呼ばれます。 Linuxで最も人気のある2つのウィジェットツールキットは、Gtk +とQtです。 Gtk +とQtの両方を同時に使用できます。そのため、Linux上のさまざまなアプリのルックアンドフィールに一貫性がない場合があります。
これらのレイヤーは、Linuxソフトウェアエコシステムにかなり固有のものです。 Mac OS、Windows、およびAndroid=すべての機能は異なりますが、これらのレイヤーはすべて、これらの各レイヤーを単一のモノリシックグラフィカルシェルソフトウェアに統合する傾向があります。これにより、処理が簡素化されますが、多くのカスタマイズもできなくなります。 。
Linuxが物事を複雑にしている理由は、人々が選択肢を持つことを好み、シェルをカスタマイズすることを楽しんでいるからです。独自のLinuxディストリビューションを管理している場合は、デフォルトのアプリのセットを選択して、すべてが同じウィジェットツールキットを使用し、一貫したルックアンドフィールを提供するように努力することをお勧めします。
グラフィカルシェルの上に、ファイルシステムブラウザー、アプリランチャー、通知およびシステムステータスアプリ、システム構成(「コントロールパネル」)アプリなどのグラフィカルアプリを構築できます。これらのアプリをまとめて、「デスクトップ環境」と呼んでいます。