Как я выхожу из менеджера окон на токе X дисплеев?

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

cd new
for i in */*/*.new; do cp "$i" "path/to/old/${i}" && rm "path/to/old/${i//new/old}"; done
3
27.01.2015, 13:29
3 ответа

Вот решение, вдохновленное ответом Soubunmei:

#!/bin/sh

ActiveWindowManagerPID()
{
    local windowManager="$1"

    local windowManagerPIDs="$(pidof "$windowManager")"

    local displayNumber="$(echo $DISPLAY \
        | awk 'BEGIN { FS = "[:.]" } { print $2 }')"

    ps e -p "$windowManagerPIDs" \
        | awk -v n="$displayNumber" \
            '$0 ~ " DISPLAY=:" n "[\n .]" { print $1 }'
}

kill "$(ActiveWindowManagerPID blackbox)"
0
27.01.2020, 21:31

Раствор представляет собой

grep -E '^([a-z][A-Z])+$'
-121--118780-

PS E перечислены процессы с их командной строкой вместе с (начальными?) Переменными среды. Процессы фильтра Соответствующие либо -DISPLAY: 0 CommandLine или дисплей =: 0 Окружающая среда. Я считаю, что это найдет вопрос WM в вопросе, независимо от того, запущен ли вручную или по некоторым сценариям сеанса. Тогда мы можем просто Убить .


Я слышу, что есть разные реализации PS, приведенные выше (BSD?) Стиль командлайн работает на моей машине с Debian Procps-NG. Обратитесь к руководству при необходимости.


На основании наблюдения WM является владельцем корневого окна , эта страница Arch Wiki имеет минимурцию с подходом XPROP -ROOT _NET_WM_PID Найдите PID. Но это не работает для меня, казалось бы, потому что это только добровольно для X Windows, чтобы обеспечить это свойство, и мой WM случается, чтобы не следовать этой моде.

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

1
27.01.2020, 21:31

Если вы определили tty, с которого вы запустили черный ящик, ps -t tty1 перечислит процессы, запущенные с этого терминала (предполагается, что tty1 - это тот, с которого вы запустили openbox, который хотите убить. ), то вы можете идентифицировать и убить того, кого хотите.

0
27.01.2020, 21:31

Теги

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