02.14 使用此開源窗口環境一次運行多個控制檯

使用此開源窗口環境一次運行多個控制檯

在我們的 20 個使用開源提升生產力的系列的第十四篇文章中用 twin 模擬了老式的 DESQview 體驗。-- Kevin Sonney(作者)


去年,我在 19 天裡給你介紹了 19 個新(對你而言)的生產力工具。今年,我換了一種方式:使用你在使用或者還沒使用的工具,構建一個使你可以在新一年更加高效的環境。

通過 twin 克服“一個屏幕,一個應用程序”的限制

還有人記得 DESQview 嗎?我們在 Windows、Linux 和 MacOS 中理所當然地可以在屏幕上同時運行多個程序,而 DESQview 賦予了 DOS 同樣的功能。在我運營撥號 BBS 服務的初期,DESQview 是必需的,它使我能夠讓 BBS 在後臺運行,同時在前臺進行其他操作。例如,當有人撥打電話時,我可能正在開發新功能或設置新的外部程序而不會影響他們的體驗。後來,在我早期做支持工作的時候,我可以同時運行我的工作電子郵件( MHS 上的 DaVinci 電子郵件 )、支持單據系統和其他 DOS 程序。這是令人吃驚的!

使用此開源窗口環境一次運行多個控制檯

twin


從那時起,運行多個控制檯應用程序的功能已經發展了很多。但是 tmux 和 Screen 等應用仍然遵循“一個屏幕,一個應用”的顯示方式。好吧,是的,tmux 具有屏幕拆分和窗格,但是不像 DESQview 那樣具有將窗口“浮動”在其他窗口上的功能,就我個人而言,我懷念那個功能。

讓我們來看看 twin (文本模式窗口環境)。我認為,這個相對年輕的項目是 DESQview 的精神繼任者。它支持控制檯和圖形環境,並具有與會話脫離和重新接駁的功能。設置起來並不是那麼容易,但是它可以在大多數現代操作系統上運行。

Twin 是從源代碼安裝的(現在是這樣)。但是首先,你需要安裝所需的開發庫。庫名稱將因操作系統而異。 以下示例顯示了在我的 Ubuntu 19.10 系統中的情況。一旦安裝了依賴庫,請從 Git 中檢出 twin 源代碼,並運行 ./configure 和 make,它們應自動檢測所有內容並構建 twin:

<code>sudo apt install libx11-dev libxpm-dev libncurses-dev zlib1g-dev libgpm-dev
git clone [email protected]:cosmos72/twin.git
cd twin
./configure
make
sudo make install/<code>

注意:如果要在 MacOS 或 BSD 上進行編譯,則需要在運行 make 之前在文件 include/Tw/autoconf.h 和 include/twautoconf.h 中註釋掉 #define socklen_t int。這個問題應該在 twin #57 解決了。

使用此開源窗口環境一次運行多個控制檯

twin text mode


第一次調用 twin 是一個挑戰。你需要通過 --hw 參數告訴它正在使用哪種顯示。例如,要啟動文本模式的 twin,請輸入 twin --hw=tty,TERM=linux。這裡指定的 TERM 變量替代了你當前 Shell 中終端變量。要啟動圖形版本,運行 twin --hw=X@$DISPLAY。在 Linux 上,twin 一般都“可以正常工作”,而在 MacOS 上,Twin 基本是隻能在終端上使用。

真正的樂趣是可以通過 twattach 和 twdisplay 命令接駁到正在運行的會話的功能。它們使你可以接駁到其他正在運行的 twin 會話。例如,在 Mac 上,我可以運行以下命令以接駁到演示機器上運行的 twin 會話:

<code>twdisplay [email protected]:0 --hw=tty,TERM=linux/<code>
使用此開源窗口環境一次運行多個控制檯

remote twin session


通過多做一些工作,你還可以將其用作登錄外殼,以代替控制檯上的 getty 。這需要 gdm 鼠標守護程序、twdm 應用程序(包括)和一些額外的配置。在使用 systemd 的系統上,首先安裝並啟用 gdm(如果尚未安裝),然後使用 systemctl 為控制檯(我使用 tty6)創建一個覆蓋。這些命令必須以 root 用戶身份運行;在 Ubuntu 上,它們看起來像這樣:

<code>apt install gdm
systemctl enable gdm
systemctl start gdm
systemctl edit getty@tty6/<code>

systemctl edit getty@tty6 命令將打開一個名為 override.conf 的空文件。它可以定義 systemd 服務設置以覆蓋 tty6 的默認設置。將內容更新為:

<code>[service]
ExecStart=
ExecStart=-/usr/local/sbin/twdm --hw=tty@/dev/tty6,TERM=linux
StandardInput=tty
StandardOutput=tty/<code>

現在,重新加載 systemd 並重新啟動 tty6 以獲得 twin 登錄提示界面:

<code>systemctl daemon-reload
systemctl restart getty@tty6/<code>
使用此開源窗口環境一次運行多個控制檯

twin


這將為登錄的用戶啟動一個 twin 會話。我不建議在多用戶系統中使用此會話,但是對於個人桌面來說,這是很酷的。並且,通過使用 twattach 和 twdisplay,你可以從本地 GUI 或遠程桌面訪問該會話。

我認為 twin 真是太酷了。它還有一些細節不夠完善,但是基本功能都已經有了,並且有一些非常好的文檔。另外,它也使我可以在現代操作系統上稍解對 DESQview 式的體驗的渴望。我希望隨著時間的推移它會有所改進,希望你和我一樣喜歡它。


via: https://opensource.com/article/20/1/multiple-consoles-twin

作者: Kevin Sonney 選題: lujun9972 譯者: wxy 校對: wxy

本文由 LCTT 原創編譯, Linux中國 榮譽推出


分享到:


相關文章: