터미널 환경에서 그래픽 애플리케이션을 실행 가능하게 만드는 것은 정확히 무엇입니까? X11에 관한 한, 애플리케이션이 tty에서 실행될 수 있도록 하려면 무엇을 해야 합니까?
omxplayer
, minecraft
또는 gedit
tty와 같은 프로그램은 실행할 수 없지만 예를 들어 "Angry Drunk Dwarf"(Python 게임) 또는 Retroarch 에뮬레이터는 왜 실행할 수 있습니까?
물론 이것은 단지 예일 뿐이며 이것이 구체적으로 작동하거나 작동하지 않는 이유를 설명하지 않기를 바랍니다. 그러나 나는 몇 가지 공통된 스레드가 있다고 생각합니다. 가능하다면 자세히 설명해주세요. 하지만 올바른 문헌/기사에 대한 링크만 제공하는 것도 환영합니다. 감사해요.
- 편집하다 -
글쎄요, 약간의 오해가 있었습니다. 명확히 하기 위해 Xorg가 tty7에서 실행되고 있다고 가정하고 Xorg 인스턴스가 실행되지 않는 다른 터미널(tty1이라고 가정)에서 그래픽 프로그램을 실행하려고 합니다.
답변1
실제로 사용자(또는 더 정확하게는 실행하는 GUI 애플리케이션)에는 일반적으로 두 가지가 필요합니다.
- 다음을 통해
X11
서버에 액세스합니다.xhost
DISPLAY
환경 변수를 제공합니다 .
실제 작업 예는 다음과 같습니다.내 오래된 답변 중 하나ssh
여기에서 Dad-OP는 GUI를 통해 로그인한 어린이에게 터미널의 메시지가 (가상적으로) 표시되도록 요청합니다.
DBUS를 사용하는 일부 데스크탑 환경의 경우 DBUS 세션에 대한 환경 변수를 제공해야 할 수도 있습니다. 이러한 유형의 조언은 GUI 애플리케이션 실행/사용자에게 보내는 메시지에 대한 질문에서 자주 나타납니다 /etc/rc.local
.
답변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픽셀 장치(80x25)로 간주될 수도 있지만 직렬 회선 속도로 인해 이 접근 방식을 사용할 수 없습니다.
그래픽을 로컬로 표시할 수 있는 터미널도 있었습니다.저것:
오늘날 Unix 및 Linux에서 실행되는 대부분의 그래픽 애플리케이션은 기본 X11 프로토콜을 기반으로 합니다. 이 프로토콜을 사용하려면 화면을 제어하는 컴퓨터에서 실행되는 X11 호환 서버가 필요합니다. 서버는 기본 콘솔 또는 모든 구현의 가상 터미널 중 하나를 제어하므로 어느 정도 모든 그래픽 응용 프로그램은 터미널 환경(일반적으로 tty7)에서 실행되지만 물론 해당 터미널은 다음에 의해 제어될 때 원래 기능을 잃습니다. X11.
대부분의 Unix/Unix 계열 운영 체제에서 사용되는 콘솔은 그래픽 응용 프로그램에 대한 일부 지원을 제공합니다. 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 서버가 단일 응용 프로그램을 실행하도록 할 수 있습니다. 하지만 자세한 내용은 제공할 수 없습니다.