Вам нужно добавить что-то вроде этого в дерево устройств (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 сброшен правильно, и укажите адрес, который вы настроили во время сброса.
Процесс 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
Когда уже запущен процесс 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 :-)"