2016-01-15 3 views
1

можно отправить текст через DBus к эмулятора терминала Konsole как следует:Отправка 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 цикла.

 Смежные вопросы

  • Нет связанных вопросов^_^