Я сделал интерфейс для rtcwake, потому что он мне нужен на нескольких компьютерах, но я обнаружил странное поведение kdesu. Вот мой рабочий скрипт для систем на основе gnome:
#!/bin/bash
userinput=`zenity --title "RTCwake" --entry --text "Type how many seconds you want the computer to be asleep"`
var=$?
if [[ $var = 0 ]]; then
if [[ $userinput =~ ^[0-9]+$ ]]; then
if [[ $userinput < 60 ]]; then
notify-send -t 4000 'RTCwake' 'Number too small. You have to put an integer >= 60'
else
pkexec rtcwake -m disk -s $userinput
fi
else
notify-send -t 4000 'RTCwake' 'You have to put an integer >= 60'
fi
else
notify-send -t 4000 'RTCwake' 'Operation canceled'
fi
для KDE я сделал эти изменения:
userinput=`kdialog --title "RTCwake" --inputbox "Type how many seconds you want the computer to be asleep"`
вместо использования zenity
,
а также
kdesu -c 'rtcwake -m disk -s $userinput'
вместо использования pkexec
Проблема в этой команде: kdesu -c 'rtcwake -m disk -s $userinput'
Например, я протестировал kdesu -c 'rtcwake -m disk -s 60'
и он работает в терминале. Но когда я помещаю число в переменную внутри скрипта, он предлагает мне ввести пароль администратора, но когда я нажимаю Enter, ничего не происходит. Также kdesu notify-send test test
или kdesu echo test
не работает в терминале, но с sudo
это работает.
Подводя итог, мне нужен графический универсальный интерфейс для rtcwake, так
pkexec
установлен на все системы по умолчанию (чтобы использовать это вместо kdesu)?- это какая-то странная ошибка в kdesu или я делаю что-то не так?
- Есть ли другой способ, о котором я не думал делать то, что я хочу сделать?
Заранее спасибо и простите за длинный пост :). Меня просто смущает, почему kdesu не работает должным образом, и я потратил много часов на поиски в интернете безрезультатно.