У терминала есть ещё разные параметры, например $LINES, $COLUMNS, $LANG Возможно, что есть и другие (я в этом плохо разбираюсь). Они автоматически меняются, если изменить размер окна. Хотя я вот не знаю, как это обрабатывают другие программы, запущенные в терминале, насколько я понимаю, у них своя копия окружения и эти изменения уже на них не должны повлиять. Т.е. если мы запустили что-то в терминале, а потом поменяли размер окна терминала, то по идее запущенная программа не узнает об этих изменениях, если не сделать каких-то особых костылей. Я ведь правильно понимаю, что окружение наследуется целиком, а потом можно уже в дочернем процессе менять его? Однако mc же как-то умеет перерисовываться под размер терминала. Видимо, здесь действительно какое-то "API", т.е. программа должна быть подписана на события терминала, в котором она запущена, или ещё как-то быть с ним связана. Никогда этого не изучал под линуксом.

Что касается переменной DISPLAY. Вот у меня сейчас есть рабочий стол на компьютере и tigervnc. Если я физически на компьютере, я запускаю несколько программ. Допустим, хромиум, codium, lxterminal, leafpad, gitk.  Если я из дома, то я подключаюсь через tigervnc и запускаю те же программы, они должны показаться на экране vnc, а не на экране физического компьютера. Кроме того, я ещё захожу через ssh и там нет дисплея. Как поступить с переменной $DISPLAY? Если речь о конфигах и параметрах, то, я так понимаю, Вы предлагаете каждый раз, когда я захожу через удалённый рабочий стол, править конфиги всех этих программ? Или запускать каждый раз каждую программу с явным параметром? Соответственно, сейчас у меня всё само работает, а при таком решении произойдёт снижение уровня механизации моей работы, будет вероятность ошибиться и запустить программу не на том дисплее и т.п. Это не выглядит слишком конкурентоспособным решением.

Насчёт API вообще не понял, что имеется в виду, поясните, пожалуйста.