Оболочка должна обрабатывать специальные управляющие символы и что-то делать, но в остальном не мешать действительному приложению.(пытается создать приложение, похожее на tmux)
Пока у меня есть следующий пример изменения в doc: https://docs.python.org/3/library/pty.html#example
import pty
import os
def handle_special_cmd(data):
# TODO
raise NotImplementedError
def inread(fd):
data = os.read(fd, 1024)
if b'\x02' in data: # ctrl B
return handle_special_cmd(data)
return data
def main():
cmd="vim"
pty.spawn(cmd, stdin_read=inread)
if __name__=='__main__':
main()
Приведенный выше код работает, но открытый vim не покрываетвсе окно терминала.Он запускает vim с уменьшенными строками и столбцами
Если я просто наберу vim из оболочки, он будет работать нормально:
Почему это происходит и как это исправить?Моя цель - не просто исправить строки и столбцы, но обертка должна быть по-настоящему прозрачной, за исключением перехвата специального символа ctrl и выполнения некоторых действий.Независимо от tty / colors и других настроек, которые имеет текущая оболочка, она должна быть передана фактическому исполняемому файлу.Это должно работать так, как будто я набрал vim
.(Специальное решение для Linux хорошо. Не нужно работать во всех posix. Если это нужно, расширение ac тоже хорошо).