Как узнать текущую ширину вкладки терминала?

Вопрос, не связанный с xfce4 или чем-либо еще из его зависимостей. Проблема была вызвана переключателем раскладки клавиатуры XNeur. Он определяет Tabдля своего действия abbreviation completionи Shift Tabдля некоторых других действий. После очистки этих привязок все работает. Без него эти ярлыки никогда не улавливаются xev.

1
27.04.2020, 10:26
1 ответ

Можно использовать tab-width.shтакой скрипт:

#!/usr/bin/env bash

echo -ne 'a\tb'  &&
    echo -ne "\033[6n"            # ask the terminal for the position
read -rs -d\[ _                   # discard the first part of the response
read -rs -dR foo                  # store the position in bash variable 'foo'
foo=$(cut -d";" -f2 <<< "$foo")   # discard row number
printf "\r\e[0K%d\n" $((foo - 2)) # subtract 2 for 'a' and 'b'

Адаптировано из этого ответа на Переполнение стека . Пример:

$ tabs 10

$./tab-width.sh
10
$ tabs 20

$./tab-width.sh
20
$ tabs 3

$./tab-width.sh
3

Используйте осторожно, скрипт тщательно не тестировался. Кажется работают хорошо в большинстве случаев, хотя одно и то же значение возвращается как для 1 и 2:

$ tabs 1

$./tab-width.sh
2
$ tabs 2

$./tab-width.sh
2

, но следует заметить, что вывод, возвращаемый echo -e 'a\tb', также одинаков в обоих случаях.

0
19.03.2021, 02:25

Теги

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