Я сделал интерфейс для 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 не работает должным образом, и я потратил много часов на поиски в интернете безрезультатно.

0