Это зависит от того, сколько у вас таких патчей.
Я не думаю, что какой-либо код для выполнения того, что вы хотите сделать, существует, поэтому вам придется написать что-то самостоятельно.
Если это всего лишь горстка, то, что вы делаете прямо сейчас, кажется правильным подходом. Все остальное почти наверняка будет стоить вам много времени, и тогда вы столкнетесь с XKCD #1205 .
Если у вас есть приличный набор патчей,вы можете использовать какую-нибудь систему непрерывной интеграции (, скажем, buildbot )вместе с dgit , чтобы поддерживать ваши патчи в git и перебазировать ветку патчей на версию, которая была недавно загружена. После этого ваша система CI вызывает dch
для создания новой записи журнала изменений с новым номером версии, передает ееsbuild
для сборки пакета и загружает его в локальный репозиторий (примерно так reprepro , который вы включаете на всех своих хостах.
Это выполнимо, но потребуется много работы для настройки; и в зависимости от того, сколько времени вы тратите на поддержание своих исправлений, возможно, оно того не стоит.
Вы можете перечислить открытые окна и вкладки, используя 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
Это не скажет вам, где какая вкладка, но я не уверен, что это важно (насколько я могу судить, нет способа определить, какая вкладка запущена ). Вы можете использовать варианты этого, чтобы узнать, что работает, а не только текущие рабочие каталоги.