Использование xdotool для подсчета количества вкладок в gnome-терминале

Я пытаюсь найти способ определить количество открытых вкладок в окне терминала gnome. В настоящее время лучшим вариантом представляется xdotool. Я могу перейти к следующей вкладке, используя

xdotool key ctrl+Page_Down

, единственная проблема в том, что открыта только одна вкладка. Затем вышеприведенная команда выводит мусор в окно терминала. Мусор состоит из этих трех символов ;5~ (что, вероятно, является символьным представлением для Ctrl + Page_Down).

Как можно избежать xdotool или gnome-terminal для вывода этих трех символов? (Не по теме: я также хотел бы знать, если кто-нибудь знает, есть ли другие способы определить количество открытых вкладок в окне терминала gnome)

4
задан 9 April 2015 в 22:10

2 ответа

От оболочки в терминале Вы хотите рассчитать, вкладки на чем-то вроде этого могли бы работать

ps -h --ppid `ps -ho ppid $` | grep pts | wc -l

, вкладки совместно используют общий родительский процесс и будут связаны с псевдотерминалом (pts). Переменная $$ содержит идентификатор процесса оболочки вызова. Переключатель-h говорит 'PS' подавлять строку заголовка по умолчанию, и переключатель-o говорит ему использовать пользовательский формат для возврата просто идентификатора родительского процесса. Обратные галочки говорят, возвращают значение этой команды. Таким образом, вывод обратных галочек будет числовым идентификатором процесса родителя текущей оболочки. Переданный 'PS' с - ppid переключатель возвращает все процессы с тем родителем. Фильтр с grep для ассоциации TTY и строк количества.

0
ответ дан 9 April 2015 в 22:10

Острота метода № 1

, которая будет выполняться в том же окне, что Вы wann количество:

expr $( echo $( xprop -root | awk '/_NET_ACTIVE_WINDOW/ && /0x/ {print $5}' | xargs xwininfo -all -id | awk '/child/ || /children/ {print $1}' ) ) / 2

Здесь острота в действии и сообщает правильно о 5 открытых вкладках enter image description here

Объяснение:

то, Что я заметил о терминале гнома, - то, что, когда Вы работаете xwininfo -all -id 0xXXXXXXX (где 0xXXXXX является числовым идентификатором того окна), это сообщает о 3 дочерних элементах для одного единственного окна, 5 детях для окна с 2 вкладками, 7 детях для 3 вкладок, и так далее. Видеть шаблон? Если Вы делаете целочисленное деление (т.е. только получите целое число при делении детей на 2 Вы получаете количество вкладок).

, Таким образом, это - то, что та строка в основном делает expr $(stuff that gets number of children) / 2

, Как я получаю число детей? Я ищу вывод xprop -root для строки, которая имеет числовой идентификатор активного окна, дайте тот числовой идентификатор xwindowinfo -all -id как аргумент, и затем ищите тот вывод число детей.

Преимущество этого метода? Дает точное количество вкладок в окне, Вы выполняете его. Недостаток? только работы в терминале гнома, не работает в сакуре

метод № 2 (сырая нефть и не как хороший)

существует иначе, что я нашел, но это только работает на одно окно. Если Вы будете работать who -a, то Вы будете видеть что-то вроде этого:

serg  + pts/7        2015-04-11 08:47 00:02       17540 (:0)
serg  + pts/2        2015-04-11 08:27 00:12       17540 (:0)
serg  + pts/12       2015-04-11 08:50 00:08       17540 (:0)
serg  + pts/13       2015-04-11 08:56 00:01       17540 (:0)
serg  + pts/14       2015-04-11 08:58   .         17540 (:0)

Уведомление + знак? Да, если Вы находитесь в единственном окне, тогда Вы могли бы выполнить эту команду в том же самом окне who -a | grep "+" | wc -l. Теперь, Kenneth Stevenson правильно упомянул, что они совместно используют то же изодромное с предварением и связаны с псевдотерминалом? Да, все окна делают это. Таким образом, если у Вас будет другое открытое окно, этот метод даст Вам неправильный результат.

0
ответ дан 9 April 2015 в 22:10

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

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