Какие команды позволят мне программно запрашивать терминал gnome :, сколько у него вкладок и каковы их pwd

Это зависит от того, сколько у вас таких патчей.

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

Если это всего лишь горстка, то, что вы делаете прямо сейчас, кажется правильным подходом. Все остальное почти наверняка будет стоить вам много времени, и тогда вы столкнетесь с XKCD #1205 .

Если у вас есть приличный набор патчей,вы можете использовать какую-нибудь систему непрерывной интеграции (, скажем, buildbot )вместе с dgit , чтобы поддерживать ваши патчи в git и перебазировать ветку патчей на версию, которая была недавно загружена. После этого ваша система CI вызывает dchдля создания новой записи журнала изменений с новым номером версии, передает ееsbuildдля сборки пакета и загружает его в локальный репозиторий (примерно так reprepro , который вы включаете на всех своих хостах.

Это выполнимо, но потребуется много работы для настройки; и в зависимости от того, сколько времени вы тратите на поддержание своих исправлений, возможно, оно того не стоит.

0
09.09.2020, 09:27
1 ответ

Вы можете перечислить открытые окна и вкладки, используя dbus; переходим сразу к вкладкам:

dbus-send --session --dest="org.gnome.Terminal" --print-reply /org/gnome/Terminal org.freedesktop.DBus.ObjectManager.GetManagedObjects | grep -c /screen/

сообщит вам, сколько из них открыто.

Если ваша оболочка взаимодействует с VTE, терминал GNOME будет знать о последнем текущем каталоге для каждой запущенной оболочки на вашей вкладке (, а не о текущем каталоге конечного процесса, работающего на каждой вкладке, если это не оболочка ); но я не думаю, что есть способ получить это через автобус.

Что вы можете сделать, так это перечислить текущие рабочие каталоги всех «конечных» процессов, чьим родителем является Терминал GNOME:

pstree -T -p $(pgrep gnome-terminal) |
sed -E 'sX^.*\(([0-9]+)\)$X/proc/\1/cwdX' |
xargs readlink -f

Это не скажет вам, где какая вкладка, но я не уверен, что это важно (насколько я могу судить, нет способа определить, какая вкладка запущена ). Вы можете использовать варианты этого, чтобы узнать, что работает, а не только текущие рабочие каталоги.

1
18.03.2021, 23:06

Теги

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