Я знаю, что уже есть аналогичный вопрос по этой теме . Но этот вопрос был только о том, как получить диалог выключения в целом. Мне нужно вернуть обратный отсчет старого диалогового окна выключения (Ubuntu < = 12.10), которое выключало систему через 60 секунд.
geobuntu предложил этот вызов dbus в своем ответе :
dbus-send --print-reply --dest="org.gnome.Shell" /org/gnome/SessionManager/EndSessionDialog org.gnome.SessionManager.EndSessionDialog.Open uint32:2 uint32:0 uint32:60 array:objpath:/org/gnome/SessionManager/EndSessionDialog
qdbus
указывают, что третий аргумент - max_wait
, который должен (на мой взгляд) установить и начать обратный отсчет :
~$ qdbus org.gnome.Shell /org/gnome/SessionManager/EndSessionDialog
[...]
method void org.gnome.SessionManager.EndSessionDialog.Open(uint type, uint arg_1, uint max_wait, QList<QDBusObjectPath> inhibitors)
Но это не так. Я уже попробовал различные значения для type
и arg_1
без удачи.
РЕДАКТИРОВАТЬ: На самом деле обратный отсчет более "приятно иметь". Что мне действительно нужно, так это то, что система отключится без каких-либо дополнительных действий пользователя. Он должен работать без sudo
(включая любые sudoers без пароля).
Я бы предпочел вызовы dbus, потому что у меня уже есть хороший список вызовов dbus , который отключит все DE, кроме Unity> = 13.04
EDIT2: я посмотрел в Источник единства . Я не знаю C++
, но для меня похоже, что arg1
и timeout_length
не обрабатываются в источнике (может кто-нибудь со знанием C++
подтвердить это?). Возможно, это будет добавлено в более поздних выпусках.
EDIT3: я сообщил об этом как ошибка # 1256703 на панели запуска.
Запустите sudo visudo
в терминале и добавьте следующую строку:
%user_name ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot, /sbin/shutdown
Это позволяет вам запускать вышеупомянутые три команды, , используя sudo , однако без пароля.
Таким образом, sudo poweroff
теперь будет приводить к отключению пароля.
затем создайте псевдоним, поместив следующее в конце ~/.bashrc_aliases
, открыв его как -
gedit ~/.bash_aliases
и добавив следующее в последнем -
alias shutdown='sudo shutdown -h now'
Теперь давайте загрузим изменения в файл .bash_aliases.
source ~/.bash_aliases
Попробуйте shutdown
. надеюсь, что это сработает.
Был большой ответ из Маджал Мирасол по этому поводу. Он предложил использовать
/usr/bin/dbus-send --system --print-reply \
--dest="org.freedesktop.ConsoleKit" \
/org/freedesktop/ConsoleKit/Manager \
org.freedesktop.ConsoleKit.Manager.Stop
Это будет работать идеально для меня.
Если вам нравится это решение, пожалуйста, пришлите благодарность ответу Маджала, а не этому.