2016-07-28 68 views
0

作爲一個練習,我想從頭開始編寫一個Linux終端模擬器,以便了解涉及哪些運動部件。我選擇的語言是D(因爲我目前正在學習它)。如何從頭開始編寫終端仿真程序(或不是從頭開始)?

它顯然不具備成爲一件大事。我希望它有一個背景顏色的窗口(以及不透明度,稍後)顯示命令promt。用戶可以輸入一個命令並輸出結果。基本的東西。除了我甚至不知道從哪裏開始。

我想視覺應該由像GTK(我從來沒有工作過)來處理,但對於一切?有人可以描述一個可能的架構,我應該看什麼?

這也將是有益的知道它使這部分感覺從頭開始編寫(給我選擇的語言)和哪些部分,我可以作爲第三方庫或二進制文件的使用。

我也意識到可能存在這樣一個別的問題,但是我無法找到質量答案。如果你知道這樣的答案,請鏈接到他們。

+0

爲什麼不將您最喜愛的開源終端從當前語言「翻譯」爲「D」。然後你可以決定你是否學到了足夠的知識,並且可以找到更好的術語(特殊術語)來進一步研究。祝你好運。 – shellter

+2

我不認爲這個問題適合堆棧溢出,因爲它不是很具體。我猜你可以做的最好的事情是查看其他終端仿真程序(也可能不用D編寫),並移植一些代碼或查看它們。但我不認爲你應該做什麼是一個普遍的答案,因爲它是你的項目,你將決定你將添加什麼,你不會添加什麼。但是,如果你想看看用D編寫的終端仿真器,那麼在github上有一個:https://github.com/gnunn1/terminix – WebFreak001

+2

我懷疑你可能會把終端仿真器與shell混淆。終端仿真器只是模擬一個I/O設備,它不運行命令或知道任何關於提示的信息。在Linux上,終端仿真器通過打開多路複用器設備'/ dev/ptmx'(可能使用'posix_openpt()')來分配僞終端,這會導致從設備出現在'/ dev/pts'處。然後,終端仿真器通常會生成一個std {in,out,err}連接到從設備的shell。 – ninjalj

回答

3

您已經在Mozilla公共許可協議中的d實現優良的終端模擬器。代碼在這裏:https://github.com/gnunn1/terminix/tree/master/source/gx/terminix/terminal

然而,一個好的開始是Adam Ruppe's(作者爲「D Cookbook」)https://github.com/adamdruppe/terminal-emulator

+1

是的,我的終端模擬器正是OP所要求的:它從頭開始是100%(當然,我使用xlib和內核,但不計算:))並處理很多常見程序,包括vim。它實際上比你想象的要複雜得多......終端仿真是一個令人頭痛的問題。順便說一句:我實際上使用我的每一天的終端,在兩個Windows(sshing回到我的Linux盒子像膩子)和Linux。這是輕微的錯誤和低效率的地方,但沒有dealbreakbreakers,此外,它是我的:P –