将监视器分辨率转换为行和列?

时间:2017-11-15 08:39:15

标签: python shell terminal

将监视器分辨率转换为行和列。

以下代码是我迄今为止所拥有的

python << EOF
import subprocess
import sys
results = subprocess.Popen(['xrandr'],stdout=subprocess.PIPE).communicate()[0].split("current")[1].split(",")[0]
width = results.split("x")[0].strip()
height = results.split("x")[1].strip()
print width + "x" + height

row = width
col = height
sys.stdout.write("\x1b[8;{rows};{cols}t".format(rows=row, cols=col))

print """
      TEST
      """
EOF

1 个答案:

答案 0 :(得分:1)

由于您正在使用 dtterm 窗口操作控件(请参阅XTerm Control Sequences),因此终端可能会实施相应的报告。本节包含以下信息:

CSI Ps ; Ps ; Ps t
          Window manipulation (from dtterm, as well as extensions).
          These controls may be disabled using the allowWindowOps
          resource.  Valid values for the first (and any additional
          parameters) are:

这是相关的:

        Ps = 1 4  -> Report xterm window in pixels.
      Result is CSI  4  ;  height ;  width t

也就是说,您可以使用该控制序列获取 pixels 中窗口的大小,并且通过了解窗口的行/列,您可以计算字体大小。给定该信息(以及监视器的大小),您可以确定适合的字符行数和列数。