измените текстовую консольную скорость прокрутки Linux - без перезагрузки

По моему опыту, лучший способ управлять PDF через Inkscape.

Если PDF хорошо структурирован (не верный каждый раз...), можно выбрать элементы и управлять ими, как изменение масштаба или изменение размера шрифта:

not-so-well-behaved PDF

(Этот пример от not-so-well-behaved PDF, хотя).

3
24.01.2015, 04:12
2 ответа

stty не имеет значения.

Аппаратная линейная скорость, установленная через линейную дисциплину, не имеет значения для виртуального терминала, если она не равна нулю. Он имеет значение только для «терминалов», которые сформированы с реальными последовательными устройствами, потому что он контролирует линейную скорость последовательного устройства.Во встроенном эмуляторе терминала ядра нет последовательных устройств.

ywrap не панацея.

Аппаратные механизмы отображения, подобные тем, которые разрешены ywrap , могут помочь эмулятору терминала только с (почти) прокруткой на всю высоту и ширину строки.

По очевидным причинам эмулятор терминала не может использовать такие аппаратные механизмы вообще , если он поддерживает левое и правое поля, и, таким образом, действия прокрутки не прокручивают всю ширину строки. Встроенный эмулятор терминала ядра Linux не поддерживает управляющую последовательность DECSLRM («DEC Set Left and Right Margins») (или что-то подобное) в первую очередь, поэтому частичная прокрутка строк здесь не является проблемой.

Но прокрутка с частичной высотой есть. Встроенный в ядро ​​Linux эмулятор терминала действительно поддерживает последовательность управления DECSTBM («DEC Set Top and Bottom Margins»), которая позволяет приложениям устанавливать первую и последнюю строки на экране для прокрутки. И эта последовательность управления правильно указана как возможность change_scroll_region в записи terminfo linux . Использование таких областей прокрутки действительно довольно распространено в полноэкранных приложениях TUI. vim использует их, например, при прокрутке окон во всю ширину.

Драйвер fbcon ядра Linux использует механизм ywrap , только если более трех четвертей всего изображения на экране сохраняется и перемещается с помощью действия прокрутки.Это связано с тем, что прокрутка с частичной высотой с использованием ywrap также включает в себя некоторое копирование, так что «непрокрученные» части экрана, кажется, остаются на том же месте, даже несмотря на то, что аппаратное обеспечение прокрутки целиком экран. Чем меньше область прокрутки, тем менее полезно ywrap , потому что тем больше объем копирования, который должен иметь место, чтобы создать иллюзию того, что некоторые части дисплея не прокручиваются.

Управляющие последовательности не поддерживаются.

На реальных терминалах, в отличие от виртуальных терминалов, иногда существуют управляющие последовательности, позволяющие выбирать скорость прокрутки. Например: Семейство DEC VT имеет флаг с именем DECSCLM («Режим прокрутки DEC», флаг частного режима DEC №4). При сбросе (через управляющую последовательность ECMA-48 RM) терминал прокручивается настолько быстро, насколько это возможно. Если установлено (через управляющую последовательность ECMA-48 SM), терминал прокручивается медленнее, вставляя задержки при прокрутке.

Если бы встроенный эмулятор терминала ядра Linux был полной эмуляцией DEC VT, это был бы способ управления скоростью прокрутки. Но это не так. Хотя некоторые эмуляторы терминала пользовательского пространства, такие как xterm , реализуют этот флаг режима, я не знаю ни одного эмулятора терминала ядра, который бы его реализовал. Встроенный эмулятор терминала ядра Linux, конечно же, этого не делает.

1
27.01.2020, 21:27

Вы можете удалить модуль драйвера кадрового буфера ядра Linux без перезагрузки, если вы прикажете подсистеме VT прекратить его использование (см. подробности в Documentation/console/console.txt ):

# tl;dr
reload_fb() {
  echo 0 > /sys/devices/virtual/vtconsole/vtcon1/bind
  rmmod uvesafb
  modprobe uvesafb scroll=ywrap
}
reload_fb

Внимание:Если vtcon0 является фиктивным драйвером (, например. на EFI )или если есть ошибки (В прошивке BIOS часто есть ошибки ), это может привести к тому, что у вас не будет работать дисплей консоли, пока вы не перезагрузите компьютер или не загрузите работающий драйвер fb. Только дисплей перестает работать; вы по-прежнему можете вводить команды, но вы не сможете увидеть их вывод. X11, похоже, не пострадал. Поэтому я рекомендую вам войти в систему удаленно через SSH или через X-терминал на той же машине.

Примечание:Если вы используете драйвер uvesafb(, предложенный eyoung100 ), вам также потребуется установить пакет v86d.

Вы можете вывести список всех загруженных драйверов консоли:

[root@linflas ~]# cd /sys/devices/virtual/vtconsole
[root@linflas vtconsole]# grep -H "" vtcon*/[bn]*
vtcon0/bind:0
vtcon0/name:(S) dummy device
vtcon1/bind:1
vtcon1/name:(M) frame buffer device
1
27.01.2020, 21:27

Теги

Похожие вопросы