如何用Python调整终端大小?

9 投票
2 回答
19754 浏览
提问于 2025-04-16 19:57

我在谷歌上快速搜索了一下,没找到什么有用的信息,也没有在这里找到相关内容,除了这个。不过那个方法并没有解决我的问题。那么,使用Python到底怎么调整终端的大小呢?

2 个回答

1

如果你安装了 xdotool,你可以用下面的方式来改变终端窗口的大小:

import subprocess
import shlex

id_cmd='xdotool getactivewindow'
resize_cmd='xdotool windowsize --usehints {id} 100 30'

proc=subprocess.Popen(shlex.split(id_cmd),stdout=subprocess.PIPE)
windowid,err=proc.communicate()
proc=subprocess.Popen(shlex.split(resize_cmd.format(id=windowid)))
proc.communicate()

附注:在Ubuntu系统上,xdotool 是通过一个同名的软件包提供的。

26

要改变tty/pty的设置,你需要对标准输入的文件描述符使用一个叫做ioctl的命令。

import termios
import struct
import fcntl

def set_winsize(fd, row, col, xpix=0, ypix=0):
    winsize = struct.pack("HHHH", row, col, xpix, ypix)
    fcntl.ioctl(fd, termios.TIOCSWINSZ, winsize)

不过,要真正改变窗口的大小,你可以使用终端的转义序列,但并不是所有的终端都支持或者开启这个功能。如果你使用的是urxvt终端,你可以这样做:

import sys
sys.stdout.write("\x1b[8;{rows};{cols}t".format(rows=32, cols=100))

不过,这可能在所有终端上都不一定有效。

撰写回答