![使用此开源窗口环境一次运行多个控制台](http://img.jiangsulong.com/220412/0436224939-0.jpg)
文章插图
在我们的 20 个使用开源提升生产力的系列的第十四篇文章中用 twin 模拟了老式的 DESQview 体验 。-- Kevin Sonney(作者)
去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具 。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境 。
通过 twin 克服“一个屏幕,一个应用程序”的限制还有人记得 DESQview 吗?我们在 windows、linux 和 macOS 中理所当然地可以在屏幕上同时运行多个程序,而 DESQview 赋予了 DOS 同样的功能 。在我运营拨号 BBS 服务的初期,DESQview 是必需的,它使我能够让 BBS 在后台运行,同时在前台进行其他操作 。例如,当有人拨打电话时,我可能正在开发新功能或设置新的外部程序而不会影响他们的体验 。后来,在我早期做支持工作的时候,我可以同时运行我的工作电子邮件( MHS 上的 DaVinci 电子邮件 )、支持单据系统和其他 DOS 程序 。这是令人吃惊的!
![使用此开源窗口环境一次运行多个控制台](http://img.jiangsulong.com/220412/0436226163-1.jpg)
文章插图
twin
【使用此开源窗口环境一次运行多个控制台】从那时起,运行多个控制台应用程序的功能已经发展了很多 。但是 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-devgit clone git@github.com:cosmos72/twin.gitcd twin./configuremakesudo make install
注意:如果要在 MacOS 或 BSD 上进行编译,则需要在运行 make 之前在文件 include/Tw/autoconf.h 和 include/twautoconf.h 中注释掉 #define socklen_t int 。这个问题应该在 twin #57 解决了 。![使用此开源窗口环境一次运行多个控制台](http://img.jiangsulong.com/220412/043622L03-2.jpg)
文章插图
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 会话:
twdisplay --twin@20days2020.local:0 --hw=tty,TERM=linux
![使用此开源窗口环境一次运行多个控制台](http://img.jiangsulong.com/220412/04362214E-3.jpg)
文章插图
remote twin session
通过多做一些工作,你还可以将其用作登录外壳,以代替控制台上的 getty。这需要 gdm 鼠标守护程序、twdm 应用程序(包括)和一些额外的配置 。在使用 systemd 的系统上,首先安装并启用 gdm(如果尚未安装),然后使用 systemctl 为控制台(我使用 tty6)创建一个覆盖 。这些命令必须以 root 用户身份运行;在 Ubuntu 上,它们看起来像这样:
apt install gdmsystemctl enable gdmsystemctl start gdmsystemctl edit getty@tty6
systemctl edit getty@tty6 命令将打开一个名为 override.conf 的空文件 。它可以定义 systemd 服务设置以覆盖 tty6 的默认设置 。将内容更新为:[service]ExecStart=ExecStart=-/usr/local/sbin/twdm --hw=tty@/dev/tty6,TERM=linuxStandardInput=ttyStandardOutput=tty
现在,重新加载 systemd 并重新启动 tty6 以获得 twin 登录提示界面:systemctl daemon-reloadsystemctl restart getty@tty6
![使用此开源窗口环境一次运行多个控制台](http://img.jiangsulong.com/220412/0436223208-4.jpg)
推荐阅读
- 在 Linux 下使用 fstrim 延长 SSD 驱动器的寿命
- 一篇文章学会使用摩斯密码,简单易懂,你也可以使用“降维打击”
- 茶具使用,茶具的保养方法
- 如何使用 Python 完成 Git 管理?
- 蒸茶壶使用方法,紫砂壶使用方法
- 使用场景模糊 搭配PS图层混合模式 快速打造夜景照片光斑效果
- 抖音平台优惠券谁在承担 抖音无门槛优惠券使用规则
- 过度的运动也会使脑子变笨
- 银行从业资格考试使用的是什么教材? 考银行需要看什么书
- 电脑系统重装GHOST使用图解说明