ターミナル環境でグラフィカルアプリケーションを実行可能にするのは正確に何ですか? X11に関する限り、アプリケーションがttyで実行できるようにするにはどうすればよいですか?
omxplayer
、minecraft
またはgedit
ttyのようなプログラムは実行できませんが、たとえば「Angry Drunk Dwarf」(Pythonゲーム)やRetroarchエミュレータはなぜ実行できますか?
もちろん、これは単なる例であり、これが具体的に機能するか機能しないのかを説明しないことを願っています。しかし、私はいくつかの共通のスレッドがあると思います。可能であれば詳しく説明してください。しかし、正しい文献/記事へのリンクだけを提供することも歓迎します。ありがとうございます。
- 編集する -
まあ、少し誤解がありました。明確にするために、Xorgがtty7で実行されていると仮定し、Xorgインスタンスが実行されていない他の端末(tty1と仮定)でグラフィックプログラムを実行しようとしています。
答え1
実際、ユーザー(またはより正確には実行するGUIアプリケーション)には通常2つのことが必要です。
- 以下を介して
X11
サーバーにアクセスします。xhost
DISPLAY
環境変数を提供します。
実際の作業例は次のとおりです。私の古い答えの一つssh
ここで、Dad-OPはGUIを介してログインした子供に端末のメッセージを(仮想的に)表示するように要求します。
DBUS を使用する一部のデスクトップ環境では、DBUS セッションに環境変数を提供する必要がある場合があります。この種のアドバイスは、GUIアプリケーションの実行/ユーザーに送信されるメッセージに関する質問でよく表示されます/etc/rc.local
。
答え2
ターミナルがグラフィックアプリケーションを表示できるかどうかは、ターミナル機能とグラフィックアプリケーションデザインの2つの要因によって異なります。
古代、端末はシリアル回線を介してコンピュータに接続された実際のデバイスであり、ほとんどの端末、特に実際に紙にテキストを印刷した端末(別名テレタイプ)はテキストのみを表示できました。
これに似たコンテンツを印刷できるグラフィックス「アプリ」の一種がすでにあります。
From: pk6811s_acad_drake_edu (Paul Kline)
[Here bingle and boobie.]
"They're 'just' pixellated art, but they're original and not overly long.
Best when viewed with light characters on dark background."
Frank Sinatra
"The old crooner himself:"
QB" . . ....^FBQQBQBQ
#^ ..../,, ,/yyBQBDBt`"B
B" ._L_yQ&Qy&&QQBQQDlL;S; (Q
B^ /DQQQBQQQQQQBQBDQQD1: "B
Q~ ,GQBDQDQQQQQQBBQQDQ&EC 7B
D lQQQQQBQBQQQQQQQQBBID(' {
E .iDDBQQBQQQQBBBQBQQDQ1!: (
3 .(BQBBQBBQQQQBBQBBBDBS' } I'm
Q '~~<MMBQQBBQBP"""<BD1EL. Q dreaming
Q LuL `7QBBB?../LL;.!JDL Q of a
" , ,__&L.DBBEEL1L_,'EylEE! ,U white
1 :s&yyQQQ6-DQBBQ&QQQQQQQQJY! lyB1Q Christmas.
S ?DDQQBD'.QQBDQDBQBQQQDD1< LIQDG
Q j8BQE2 LQQBE9EBBEBQQES{! /BQSE
Q_ 'TS7L <#P~^,G1?TXC3({! 3PEy
Q, ,_>'.,___yBD1DU;,'(''' yQ
L "Qy, 'IIIZl',L/&;!;: LQ
Q; FD( (`IE2L/QDB&lY! 6Q
Q, (/. `!?"21iQDU&/~ L FB
Q_ (EL/&&QDBQBDJ" ,y^ `FB
Qy 75EEBBQESf` _yB^ "M
Q7 `'^""~` _yQQM' `"FQ
F; _yQQQQF Q
その後、ほとんどの最新の端末エミュレータが準拠する規格を実装したDEC VT100などのCRTベースの端末が登場しました。これらの端末は本質的にテキストであるため、一部のグラフィック文字はサポートされていますが(高解像度)グラフィックを表示することはできません。 80列、25行のディスプレイは、低解像度の2000ピクセルデバイス(80×25)と見なすことができますが、シリアル回線速度のため、このアプローチは使用できません。
グラフィックをローカルで表示できる端末もありました。それ:
今日、UnixとLinuxで動作するほとんどのグラフィックアプリケーションは、基本的なX11プロトコルに基づいています。このプロトコルを使用するには、画面を制御するコンピュータで実行されているX11互換サーバーが必要です。サーバーはデフォルトのコンソールまたはすべての実装の仮想端末のいずれかを制御するため、ある程度すべてのグラフィックアプリケーションは端末環境(通常はtty7)で実行されますが、もちろん、その端末は次の制御によって元の機能を失います。 X11。
ほとんどのUnix / Unixシリーズオペレーティングシステムで使用されているコンソールは、グラフィックアプリケーションのいくつかのサポートを提供します。 Linuxでは、このサポートは以下を介して提供されます。Linuxフレームバッファ(fbdev - /dev/fb0).たとえば、起動時にLinux Penguin Tuxを表示するために使用されます。
以前は、doomのようにデバイスを直接使用するいくつかのアプリケーションがありましたが、現在、ほとんどのグラフィックアプリケーションはfbdevに依存するX11を使用しています。非常に一般的なアプリケーション。vlcとmplayerLinuxフレームバッファを直接使用する機能。
アプリケーションにグラフィックデバイスを提供しますが、実際には、60年代のテレタイププライターや80年代のBBSに接続されたPCで行われたのと同様に、テキストコンソールに表示するグラフィックレイヤーを実装するライブラリもあります。違う。よく知られているのはリブカカmplayerを使用して端末で映画を見ることもできます。
最後に、一部の端末エミュレータはグラフィックもサポートしています。注目すべき例は、歴史的なxtermです。テクトロニクス4014エミュレータ提供gnuplotや他のアプリケーション/ライブラリを使用してベクターグラフィックを表示するためのウィンドウ:
答え3
グラフィックアプリケーションは端末で実行されません。 Xサーバーで実行されます。通常は接続されていますが、Xサーバーはttyに接続する必要はありません。
したがって、アプリケーションはttyに接続されず、Xサーバーにのみ接続されます。 Xサーバーはアプリケーションではなくttyでのみ起動できます。
ただし、IIRCでは、Xサーバーに単一のアプリケーションを実行させることができます。ただし、詳細は提供できません。