2016-07-28 14 views
0

실습으로 나는 움직이는 부분이 무엇인지 이해하기 위해 리눅스 용 터미널 에뮬레이터를 처음부터 작성하고 싶다. 제가 선택한 언어는 D입니다 (왜냐하면 저는 현재 그것을 배우고 있기 때문입니다).맨 처음부터 터미널 에뮬레이터를 작성하는 방법 (처음부터 작성하지 말 것)?

분명히 큰 것이 아니어도됩니다. 나는 배경색 (및 불투명도, 나중에) 명령 프롬프트를 표시하는 창을 가지고 싶습니다. 사용자는 명령을 입력 할 수 있으며 결과를 토해냅니다. 기본적인 것들. 나는 어디서부터 시작할 지조차 모르겠다.

나는 시각적 인 부분이 gtk (내가 한 번도 해본 적이없는)와 같은 것으로 처리되어야한다고 생각하지만, 그 밖의 모든 것은 어떨까요? 누군가 가능한 아키텍처를 설명해 주시겠습니까? 내가 무엇을보고 있어야합니까?

처음부터 (어떤 언어를 선택했는지) 어떤 부분을 써도되고 제 3 자 라이브러리 또는 바이너리로 사용할 수있는 부분을 알면 도움이됩니다.

나는이 같은 다른 질문이있을 수도 있음을 깨달았지만 양질의 대답을 찾지 못했습니다. 그러한 답변을 알고 있다면 그들에게 링크하십시오.

+0

좋아하는 오픈 소스 터미널을 현재 언어에서'D '로 "번역"하지 않는 이유는 무엇입니까? 그런 다음 충분히 배웠는지 결정할 수 있으며 더 많은 연구를 수행하기 위해 더 나은 용어 (특수 사례 용어)를 찾을 수 있습니다. 행운을 빕니다. – shellter

+2

이 질문은 스택 오버플로에 적합하지 않다고 생각합니다. 나는 당신이 할 수있는 최선의 일은 다른 터미널 에뮬레이터 (D로 작성되지 않을 수도 있음)를보고 포트를 열거 나 살펴 보는 것입니다. 그러나 나는 그것이 당신의 프로젝트이기 때문에 당신이해야 할 일에 대한 일반적인 대답은 없다고 생각하며, 당신이 추가 할 내용과 추가하지 않을 내용을 결정할 것입니다. 그러나 D로 작성된 터미널 에뮬레이터를보고 싶다면 github에있는 터미널 에뮬레이터가 필요합니다. https://github.com/gnunn1/terminix – WebFreak001

+2

터미널 에뮬레이터와 쉘이 섞여있을 수 있습니다. 터미널 에뮬레이터는 I/O 장치를 에뮬레이트하기 만하면 명령을 실행하거나 프롬프트에 관해서는 알지 못합니다. 리눅스에서 터미널 에뮬레이터는 멀티플렉서 장치'/ dev/ptmx' (아마'posix_openpt() '를 사용)를 열어 pseudo-terminal을 할당합니다. 그러면 슬레이브 장치가'/ dev/pts'에 나타납니다. 그런 다음, 터미널 에뮬레이터는 일반적으로 슬레이브 장치에 연결된 std {in, out, err}를 가진 셸을 생성합니다. – ninjalj

답변

3

이미 Mozilla Public License에서 D로 구현 된 우수한 터미널 에뮬레이터가 있습니다. 코드는 여기에 있습니다 : https://github.com/gnunn1/terminix/tree/master/source/gx/terminix/terminal

좋은 시작 그러나 아담 Ruppe의 ("요리 책"의 저자) https://github.com/adamdruppe/terminal-emulator 것입니다.

+1

예, 터미널 에뮬레이터는 정확히 OP가 요구하는 것입니다. 처음부터 100 %입니다 (물론 xlib와 커널을 사용하지만 카운트하지는 않습니다 :)) vim을 비롯한 많은 일반적인 프로그램을 처리합니다. 실제로 생각보다 복잡합니다 ... 터미널 에뮬레이션은 엉덩이에 통증이 있습니다. BTW : 저는 실제로 Windows를 사용합니다. (퍼티와 같은 리눅스 박스로 되돌아갑니다.) 리눅스. 그것은 약간 버그가 있고 장소에서 비효율적이지만 딜 브레이커는없고 게다가 그것은 내 것이다 : P –