如何启动屏幕会话并使用指定的终端大小运行应用程序

如何启动屏幕会话并使用指定的终端大小运行应用程序

我正在尝试使用具有固定屏幕尺寸的旧应用程序,并且确实无法适应不同的屏幕尺寸。看起来 screen 命令应该能够做到这一点,但我不知道如何做到。请注意,由于内核模式切换、VGA 字体和现代 LCD 尺寸之间的愚蠢交互,系统控制台并没有真正调整大小。 80 x 25 在我的硬件上是禁止的尺寸。

然而,一些文档说,-w [lines [cols]]当我尝试screen -w 80 25 ./runmescreen 时,只是抱怨这-w不是一个命令。我认为该文档写得不好,它实际上描述了一个 termcap 条目。

我真的希望能够使用 shell 脚本自动启动,但运行一个以另一个 shell 脚本作为目标启动屏幕的 shell 脚本没有问题。

答案1

您似乎想使用该screen命令在固定屏幕尺寸内运行旧应用程序,但您在如何实现这一点方面遇到了一些困惑。您是对的,该-w选项不是用于设置屏幕尺寸,而是用于设置终端硬状态线的宽度。

不幸的是,screen它本身没有提供内置的方法来为应用程序设置固定的屏幕尺寸。终端大小通常由终端仿真器和终端仿真器的设置决定,而不是由screen.

要解决此问题,您可以在会话stty中运行应用程序之前尝试使用命令设置终端大小screen。以下是如何创建 shell 脚本来自动执行此过程的示例:

#!/bin/bash

# Set the terminal size to 80x25
stty rows 25 cols 80

# Start your application inside a screen session
screen -dmS myapp ./runme

# Attach to the screen session to interact with your application
screen -r myapp

在此脚本中:

  1. 在启动会话之前,我们使用stty命令将终端大小设置为 80x25 screen

  2. 我们screen以分离模式 ( -dmS) 启动会话,指定名称 ( myapp) 并指定要运行的命令 ( ./runme)。

  3. 最后,我们附加到screen会话以使用 与您的应用程序交互screen -r myapp

此脚本应帮助您确保旧应用程序在指定的终端大小内运行。请记住调整脚本和终端大小以满足您的特定要求。

请注意,某些应用程序在非标准终端尺寸中可能无法按预期运行,并且此方法可能无法完美地适用于所有应用程序。如果您的应用程序严重依赖于特定的终端大小设置,您可能需要寻找替代解决方案或考虑在更合适的环境中运行它,例如具有兼容终端大小的虚拟机或容器。

相关内容