使用此開源視窗環境一次執行多個控制檯
在我們的 20 個使用開源提升生產力的系列的第十四篇文章中用 twin 模擬了老式的 DESQview 體驗。
去年,我在 19 天裡給你介紹了 19 個新(對你而言)的生產力工具。今年,我換了一種方式:使用你在使用或者還沒使用的工具,構建一個使你可以在新一年更加高效的環境。
通過 twin 克服“一個螢幕,一個應用程式”的限制
還有人記得 DESQview 嗎?我們在 Windows、Linux 和 MacOS 中理所當然地可以在螢幕上同時執行多個程式,而 DESQview 賦予了 DOS 同樣的功能。在我運營撥號 BBS 服務的初期,DESQview 是必需的,它使我能夠讓 BBS 在後臺執行,同時在前臺進行其他操作。例如,當有人撥打電話時,我可能正在開發新功能或設定新的外部程式而不會影響他們的體驗。後來,在我早期做支援工作的時候,我可以同時執行我的工作電子郵件(MHS 上的 DaVinci 電子郵件)、支援單據系統和其他 DOS 程式。這是令人吃驚的!
從那時起,執行多個控制檯應用程式的功能已經發展了很多。但是 tmux 和 Screen 等應用仍然遵循“一個螢幕,一個應用”的顯示方式。好吧,是的,tmux 具有螢幕拆分和窗格,但是不像 DESQview 那樣具有將視窗“浮動”在其他視窗上的功能,就我個人而言,我懷念那個功能。
讓我們來看看 twin(文字模式視窗環境)。我認為,這個相對年輕的專案是 DESQview 的精神繼任者。它支援控制檯和圖形環境,並具有與會話脫離和重新接駁的功能。設定起來並不是那麼容易,但是它可以在大多數現代作業系統上執行。
Twin 是從原始碼安裝的(現在是這樣)。但是首先,你需要安裝所需的開發庫。庫名稱將因作業系統而異。 以下示例顯示了在我的 Ubuntu 19.10 系統中的情況。一旦安裝了依賴庫,請從 Git 中檢出 twin 原始碼,並執行 ./configure
和 make
,它們應自動檢測所有內容並構建 twin:
sudo apt install libx11-dev libxpm-dev libncurses-dev zlib1g-dev libgpm-dev
git clone git@github.com:cosmos72/twin.git
cd twin
./configure
make
sudo make install
注意:如果要在 MacOS 或 BSD 上進行編譯,則需要在執行 make
之前在檔案 include/Tw/autoconf.h
和 include/twautoconf.h
中註釋掉 #define socklen_t int
。這個問題應該在 twin #57 解決了。
第一次呼叫 twin 是一個挑戰。你需要通過 --hw
引數告訴它正在使用哪種顯示。例如,要啟動文字模式的 twin,請輸入 twin --hw=tty,TERM=linux
。這裡指定的 TERM
變數替代了你當前 Shell 中終端變數。要啟動圖形版本,執行 twin --hw=X@$DISPLAY
。在 Linux 上,twin 一般都“可以正常工作”,而在 MacOS 上,Twin 基本是隻能在終端上使用。
真正的樂趣是可以通過 twattach
和 twdisplay
命令接駁到正在執行的會話的功能。它們使你可以接駁到其他正在執行的 twin 會話。例如,在 Mac 上,我可以執行以下命令以接駁到演示機器上執行的 twin 會話:
twdisplay --twin@20days2020.local:0 --hw=tty,TERM=linux
通過多做一些工作,你還可以將其用作登入外殼,以代替控制檯上的 getty。這需要 gdm 滑鼠守護程式、twdm 應用程式(包括)和一些額外的配置。在使用 systemd 的系統上,首先安裝並啟用 gdm(如果尚未安裝),然後使用 systemctl
為控制檯(我使用 tty6)建立一個覆蓋。這些命令必須以 root 使用者身份執行;在 Ubuntu 上,它們看起來像這樣:
apt install gdm
systemctl enable gdm
systemctl start gdm
systemctl edit getty@tty6
systemctl edit getty@tty6
命令將開啟一個名為 override.conf
的空檔案。它可以定義 systemd 服務設定以覆蓋 tty6 的預設設定。將內容更新為:
[service]
ExecStart=
ExecStart=-/usr/local/sbin/twdm --hw=tty@/dev/tty6,TERM=linux
StandardInput=tty
StandardOutput=tty
現在,重新載入 systemd 並重新啟動 tty6 以獲得 twin 登入提示介面:
systemctl daemon-reload
systemctl restart getty@tty6
這將為登入的使用者啟動一個 twin 會話。我不建議在多使用者系統中使用此會話,但是對於個人桌面來說,這是很酷的。並且,通過使用 twattach
和 twdisplay
,你可以從本地 GUI 或遠端桌面訪問該會話。
我認為 twin 真是太酷了。它還有一些細節不夠完善,但是基本功能都已經有了,並且有一些非常好的文件。另外,它也使我可以在現代作業系統上稍解對 DESQview 式的體驗的渴望。我希望隨著時間的推移它會有所改進,希望你和我一樣喜歡它。
via: https://opensource.com/article/20/1/multiple-consoles-twin
作者:Kevin Sonney 選題:lujun9972 譯者:wxy 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- 使用 Terminator 在一個視窗中執行多個終端
- c# 多執行緒環境下控制對共享資源訪問的辦法C#執行緒
- 如何禁用控制檯視窗的關閉按鈕?
- 多個開源的js補環境框架測試JS框架
- WAMP環境下如何安裝執行多個網站網站
- win10怎樣開啟執行視窗快捷鍵_win10開啟執行視窗的4個方法Win10
- idea建立、執行、打包控制檯程式Idea
- windows 系統下 workerman 在同一個執行視窗中開啟多個 websocket 服務WindowsWeb
- 搭建一個本地 Laravel 執行環境Laravel
- 使用 github action 在多個環境中快速地測試你的開源專案Github
- IDEA--執行maven時控制檯亂碼IdeaMaven
- Docker容器中執行.net framework控制檯程式DockerFramework
- 淺談公司java開發執行環境搭建(ubuntu環境)JavaUbuntu
- Kali Linux開啟多個終端視窗Linux
- 執行緒Thread練習題1買票,使用多執行緒的方式模擬四個視窗賣100張票執行緒thread
- 4個用於在雲原生環境中執行虛擬機器的開源工具虛擬機開源工具
- JavaScript執行環境與執行棧JavaScript
- linux下使用tomcat檢視控制檯資訊LinuxTomcat
- 執行緒的【生命週期】和【執行緒的同步】(多視窗售票例子)執行緒
- mysql一次執行多個SQL檔案MySql
- 一套測試用例如何實現支援多個環境執行
- 如何安裝Python執行環境Anaconda?(視訊教程)Python
- goland 把多個專案視窗合併到一個視窗GoLand
- laradock swoole 執行環境
- openGauss-執行環境
- linux執行環境&命令Linux
- Docker執行資源控制Docker
- 漫畫:多執行緒經典例子之一視窗售票執行緒
- 大資料執行環境的執行大資料
- 使用ansible搭建python多版本開發環境Python開發環境
- golang開發:環境篇(六) Go執行監控Supervisord的使用Golang
- 開源專案分享:ChatGPT 控制檯聊天應用ChatGPT
- WIN10開啟XBOX控制檯閃退怎麼辦 WIN10執行XBOX控制檯閃退解決方法Win10
- 多執行緒環境下 PyQtGraph 繪畫解決方案執行緒QT
- Mac使用dinghy和laradock搭建php執行環境MacPHP
- 使用委託開啟多執行緒(多執行緒深入)執行緒
- Java使用Scanner類進行控制檯輸入Java
- 解決Vue3專案執行控制檯警告Vue