Выполнить команду после закрытия окна файлового менеджера (Thunar )

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

&i2c1 { /* Use the correct name of the bus you're device is on */

 - other dts code here -

    gt911: touchscreen@14 {
            compatible = "goodix,gt911";
            reg = <0x14>;
            interrupt-parent = <&gpioc>; /* Use the correct gpio controller here */
            interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
            irq-gpios = <&gpioc 11 GPIO_ACTIVE_HIGH>;
            reset-gpios = <&gpioc ? GPIO_ACTIVE_LOW>; /* Use the correct gpio controller and pin */
    };

 - other dts code here -

};

См. привязки дерева устройств здесь :https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/input/touchscreen/goodix.txt

Когда оба контакта IRQ и RESET могут управляться драйвером, он автоматически настроит микросхему на адрес, который вы указали в дереве устройств. (Это достигается путем сброса gt911 с правильным установленным уровнем INT и переключением линии обратно на вход )В приведенном выше случае это 0x14, другой используемый адрес — 0x5d.

ПРИМЕЧАНИЕ :Если у вас есть однонаправленная линия INT :Использование линии сброса через драйвер не является жестким требованием, если у вас есть только однонаправленный сигнал (, например, между ними используется буфер ). Просто убедитесь, что GT911 сброшен правильно, и укажите адрес, который вы настроили во время сброса.

0
28.10.2021, 12:27
2 ответа

Процесс Thunar уже запущен с параметром «--daemon», так что любой новый вызов Thunar будет использовать этот параметр, а ваша попытка запустить новый процесс Thunar завершится неудачно, и rm немедленно запустится. Обратите внимание, что сам «демон Thunar --» не открывает окно Thunar.

Процесс демона обычно запускается при входе в систему по определению в /etc/xdg/xfce4/xfconf/xfce -perchannel -xml/xfce4 -session.xml ("/etc", а не " ~"). Удаление флага «--daemon» повлияет на существующие сценарии, которые не ожидают закрытия Thunar, и заблокирует вашу командную строку, если вы запустите Thunar оттуда.

Вы можете «убить» демона Thunar перед соответствующей строкой скрипта с помощью Thunar -q, запустить строку и перезапустить демон с помощью Thunar --daemon &после того, как она -помните о &в конце, чтобы начать демон в фоновом режиме, в противном случае ваш сценарий ожидает его завершения ). Предостережение:Все окна Thunar, которые были открыты «на» демоне Thunar, которого вы «убили», исчезнут без предупреждения.

Таким образом, ваша полная строка может быть

Thunar -q && thunar $dirname && rm -r $dirname && Thunar --daemon &

Вы можете взглянуть на справочную страницу Thunar

1
29.10.2021, 20:27

Когда уже запущен процесс Thunar, (диспетчер рабочего стола или другое окно ), новое окно Thunar будет отсоединено от вызывающего процесса и будет запущена следующая команда, а pidдля конкретное окно. Это хорошо описано в ответе hh skladby.

Хочу решить проблему, не отключая уже запущенный процесс Thunar.

Кажется сложным использовать pid[отдельно], но естьwid(идентификатор окна ), который можно найти с помощьюwmctrl -lp(в сочетании с некоторой умной логикой ). Пусть шеллскрипт многократно проверяет его (в цикле ), и когда widисчезнет, ​​вы можете удалить каталог.

Следующий сценарий оболочки показывает, как это можно сделать. Это всего лишь демо-скрипт, потому что нет другого действия, кроме решения проблемы, указанной в вопросе.

#!/bin/bash

if [ "$1" == "" ]
then
 echo "No directory on command line"
 dirname="MyDir"
else
 dirname="$1"
fi
mkdir -p "$dirname"
if [ $? -ne 0 ]
then
 echo "Bad directory name, try again"
 exit 1
fi

thunar "$dirname"

pid=$(ps -e | grep -i thunar | sed -e 's/ *//' -e 's/.*//')
#echo "$pid"
sleep 1
wid=$(wmctrl -lp | grep " $pid " | grep "${dirname##*/}" | tail -n1)
wid=$(echo "$wid" | tee /dev/stderr | sed 's/.*//')
#echo "$wid"
echo "Waiting for you to close the Thunar window '${dirname##*/}'..."
while wmctrl -lp | grep "$wid" > /dev/null
do
 sleep 1
done
rm -r "$dirname"
echo "Done :-)"
0
29.10.2021, 22:25

Теги

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