Изменить размер терминала с Python? - PullRequest
3 голосов
/ 21 июня 2011

Я не смог найти ничего с помощью быстрого поиска Google, и ничего здесь, кроме этого .Тем не менее, это не сработает.Так как именно do вы изменяете размер терминала, используя Python?

Ответы [ 2 ]

15 голосов
/ 21 июня 2011

Чтобы изменить настройку tty / pty, вы должны использовать ioctl в дескрипторе файла stdin.

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)

Но для изменения фактического размера окна вы можете использовать escape-последовательности терминала, но не все терминалы поддерживаютили включите эту функцию.Если вы используете urxvt, вы можете сделать это:

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

Но это может работать не на всех терминалах.

0 голосов
/ 21 июня 2011

Если вы установите 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()

PS.На Ubuntu xdotool предоставляется пакет с таким же именем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...