Отправка Ctrl-L через dbus в эмулятор терминала

Через эмулятор терминала можно отправить текст на консоль эмулятора терминала следующим образом:

qdbus org.kde.konsole /Sessions/1 sendText "hello"

Однако я хочу удаленно очистить экран указанного окна терминала. Итак, я попробовал:

qdbus org.kde.konsole /Sessions/1 runCommand "clear"

Отчасти делает то, что хочу. Единственная проблема: экран не очищается, когда запущен процесс.

В эмуляторе терминала, в этом случае комбинация клавиш "Ctrl + L" сделает работу.

Поэтому я пытаюсь отправить строку с escape-символами для этого ярлыка. Это сработает? Это, однако, не делает;

qdbus org.kde.konsole /Sessions/1 sendText "\033[2J"

(runCommand нет)

1 ответ

Это работает для меня:

qdbus org.kde.konsole /Sessions/1 sendText $'\014'

Во-первых, чтобы создать символ из его восьмеричного кода, синтаксис "\033" будет работать в C, но не в Bash.

Во-вторых, хотя "ESC [ 2 J" - это код VT100 для стирания экрана, он работает для меня, только если я echo $'\033[2J', и это не будет работать, если команда выполняется.

В-третьих, Ctrl-L будет работать, если программа ожидает ввода от терминала (например, irb или же python сделать), но это не будет работать для while sleep 1; do echo Still running; done петля.

Другие вопросы по тегам