Принимая ввод от пользователя, когда USB-устройство подключено - PullRequest
0 голосов
/ 27 января 2012

Я запускаю сценарий, когда USB-устройство подключено с использованием правил udev (команда RUN) и отображаю уведомление с помощью notify-send

Я хочу попросить пользователя ввести некоторые входы в USB.Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 07 апреля 2012

Поскольку сеанс X, который вы запускаете, неизвестен udev, udev не имеет представления, кому отправлять сообщения, и X может запустить более одного активного сеанса.И для работы скрипта типа Zenity вам также понадобится X-Auth cookie из текущей запущенной X сессии.Который теперь изменится с домашнего на временное местоположение, у вас не будет сценария исправления, чтобы взломать это.

Есть много способов сделать то, что вам нужно, но это зависит от того, сколько работы вы хотите сделать.

уведомлять-отправлять только отображать информацию, поэтому она не будет работать.Как и в приведенном выше предложении, вам нужен тип zenity или kdialog для ввода.Но что более важно, вам нужен текущий сеанс, поэтому вы можете захотеть подключить ваш скрипт с помощью gnome-session-properties.Таким образом, ваш перехват будет выполняться каждый раз, когда вы входите в систему.

Это всего лишь один способ подключиться к gnome-session-propoties

#!/bin/sh 

mkfifo /tmp/usb_notify
mkfifo /tmp/usb_feedback

while ( true ) do {
    CALLBACK=`cat /tmp/usb_notify`
    # check CALLBACK for some specific password :) if you needed 
    notify-send "USB plugged in something, input something for me!";
    USERINPUT=$(zenity --entry --title "USB plugged in" --text "Please enter something")
    echo $USERINPUT > /tmp/usb_feedback 
} done;

Затем вы можете подключить его в RUN udev для вашего usb-устройства

#!/bin/sh

echo "password" > /tmp/usb_notify 
REPLY=`cat /tmp/usb_feedback` 
# then you can do whatever you need to with the feedback
0 голосов
/ 01 февраля 2012

Вы можете использовать zenity. В вашем сценарии оболочки:

USERINPUT = $ (zenity --entry --title "USB подключен" --text "Пожалуйста, введите что-то")

Для полной справки см .: http://library.gnome.org/users/zenity/stable/

Существует также KDE-couterpart, называемая kdialog.

...