Рейтинг:0

Как настроить кнопку Hibernate, чтобы не спрашивать пароль для перехода в режим гибернации (для расширения Simpler Off Menu для Ubuntu 20.04)

флаг it

Я настроил спящий режим, как описано здесь и установлен Простое меню выключения гном-оболочка-расширение с помощью это инструкция. Спящий режим Кнопка работает, но каждый раз требует пароль для перехода в спящий режим. Как настроить его, чтобы он не спрашивал пароль и сразу переходил в спящий режим, например приостановить кнопка выполняет приостановку?

Рейтинг:0
флаг it

В Ubuntu 18,19,20 спящий режим системы команда требует судо для его выполнения: Разрешение «systemctl suspend» и «systemctl hibernate»

Чтобы отключить запрос пароля спящий режим systemctl команда должна быть добавлена ​​в список sudoers (/etc/sudoers.tmp) Использовать Судо Визудо команду и добавьте в конец файла следующую строку:

<user_name> ALL=NOPASSWD: /usr/bin/systemctl hibernate

Но теперь есть ошибка в Простое меню выключения расширение. Спящий режим выполняется в нем с помощью спящий режим systemctl, не по sudo systemctl спящий режим как требуется. Эта реализация находится в файле [email protected]/extension.js

Я создал соответствующую проблему для этого расширения: Ошибка в Ubuntu 20.04: нажатие кнопки [Hibernate] просит ввести пароль перед переходом в спящий режим

Последний коммит был сделан около 1 года назад. Таким образом, расширение активно не поддерживается.

Ниже приведены полные сведения о проблеме с обходным путем:

Ожидаемое поведение

Нажатие Спящий режим кнопка выполнения sudo systemctl спящий режим. Если в списке sudoers есть соответствующий пользователь (/etc/sudoers.tmp Отредактировано Судо Визудо):

<user_name> ALL=NOPASSWD: /usr/bin/systemctl hibernate

действие hibernate выполняется сразу после нажатия Спящий режим кнопка.

Фактический результат

При нажатии кнопки [Hibernate] запрашивается ввод пароля пользователя для выполнения авторизации действия. В системном журнале (меньше /var/log/syslog) возникает ошибка - "Не удалось перевести систему в спящий режим через logind: Отказано в доступе":

02:51:06 gnome-shell[1983]: st_widget_get_theme_node вызвал виджет [0x564b127af6f0 Gjs_ui_popupMenu_PopupSubMenuMenuItem.popup-menu-item popup-submenu-menu-item:last-child ("")], который не находится на стадии.
02:51:06 Tgnome-shell[1983]: st_widget_get_theme_node вызвал виджет [0x564b127b6d00 StWidget:last-child], который не находится на стадии.
02:51:06 gnome-shell[1983]: st_widget_get_theme_node вызвал виджет [0x564b12781480 StBoxLayout ("")], который не находится на сцене.
02:51:13 systemd[1735]: Запущено приложение, запущенное gnome-shell.
02:51:13 gnome-shell[5729]: не удалось перевести систему в спящий режим через logind: доступ запрещен
02:51:27 gnome-shell[5729]: не удалось запустить hibernate.target: доступ запрещен
02:51:27 gnome-shell[5729]: подробности см. в системных журналах и 'systemctl status hibernate.target'.

После ввода пароля действие гибернации, вероятно, выполняется не спящий режим systemctl но какая-то другая команда. Я не уверен, но может быть спящий режим или же впадать в спячку команды - что не рекомендуется.

Разница между «pm-hibernate» и «systemctl hibernate»

Довольно кратким ответом на это будет то, что systemd активно поддерживается, а pm-utils — нет. На самом деле pm-utils не обновлялся с 2010 года, так что я бы считал этот софт и древним, и устаревшим. С этого момента рекомендуется использовать systemctl.

Разница между «systemctl hibernate» и «hibernate»:

Команда hibernate была заменена на systemctl hibernate. Рекомендуется использовать systemctl hibernate. Команда hibernate по-прежнему доступна в системе из соображений совместимости.

В Ubuntu 18,19,20 спящий режим системы команда требует судо для его выполнения: Разрешение «systemctl suspend» и «systemctl hibernate»

В реализации SimplerOffMenu расширение в Спящий режим кнопка, которую использует обработчик спящий режим systemctl, нет sudo systemctl спящий режим который необходим для решения этой проблемы.

Исправить

Изменять расширение.js файл следующим образом:

функция FuncHibernate (виджет, событие) {
    Основной.обзор.скрыть(); пытаться {
       //исправить запуск: добавлен sudo
       //Util.trySpawnCommandLine('systemctl hibernate');
       Util.trySpawnCommandLine('sudo systemctl hibernate');
       //исправить конец
    } поймать (ошибиться) {
        Main.notify("Ошибка" + ошибка);
    }
}

Зафиксированный расширение.js файл здесь.

Обходной путь

Чтобы решить эту проблему в Ubuntu 20.04 после того, как расширение уже установлено, необходимо сделать следующее:

Измените JS-скрипт расширения, которое было установлено здесь:

/home/<your_user_name>/.local/share/gnome-shell/extensions/[email protected]/extension.js

(вы можете найти местонахождение расширение.js файл по sudo найти /* -имя "extension.js")

Затем добавьте судо как описано в исправлении выше, и сохраните файл.

Для применения исправления может быть достаточно просто сохранить файл. Я на всякий случай выполнил инструкцию от здесь:

  • Отключил и включил расширение, нажал кнопку конфигурации вкл. страница расширения
  • Нажатый Альт+F2, вошел р и нажал Войти
  • Вышел и снова вошел

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.