Поиск по этому блогу

среда, 10 августа 2011 г.

awesome, policykit и выключение компьютера, автомонтирование сменных носителей

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

Если в «продвинутых» рабочих окружениях (KDE, Gnome) это должно уже работать «из коробки», то в awesome нужно чуть «поработать напильником» :)



Убеждаюсь, что sys-auth/consolekit собран с поддержкой policykit:

lupo@gentoo-laptop ~ % emerge -pv consolekit

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild R ] sys-auth/consolekit-0.4.5-r1 USE="pam policykit -debug -doc -test" 0 kB

Total: 1 package (1 reinstall), Size of downloads: 0 kB


Так как в качестве менеджера дисплеев я использую Slim, добавляю в файл ~/.xinitrc следующую строку:

ck-launch-session awesome


В каталоге /etc/polkit-1/localauthority/50-local.d создаём файлы 01-local-consolekit.pkla:

[System Shutdown permissions for users]
Identity=unix-group:users
Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.restart
ResultAny=yes
ResultInactive=no
ResultActive=no


01-local-upower.pkla:

[Suspend permissions for users]
Identity=unix-group:users
Action=org.freedesktop.upower.suspend
ResultAny=yes
ResultInactive=no
ResultActive=no


*маленькая ремарка: так как ноутбуком я пользуюсь один, решил не создавать отдельную группу пользователей для управления энергосбережением, однако и разрешение только одному пользователю я считаю недостаточным , потому что иногда логинюсь под другим именем. Остановился на группе users.

Привёл файл ~/.config/awesome/shutdown_dialog.sh из поста «Меню выхода в awesome» к следующему виду:

#!/bin/sh
ACTION=$(kdialog --radiolist "Опции выхода:" quit "Выйти" on halt "Выключить" off reboot "Перегрузить" off sleep "Усыпить" off)

if [ -n "${ACTION}" ];then
  case $ACTION in
  quit)
   # pkill awesome
  echo "awesome.quit()" | awesome-client
    ;;
  halt)
#    sudo halt
dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit \
/org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop 
    ;;
  reboot)
#    sudo reboot
dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit \
/org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart 
    ;;
  sleep)
#    sudo pm-suspend
dbus-send --system --print-reply --dest=org.freedesktop.UPower \
/org/freedesktop/UPower org.freedesktop.UPower.Suspend 
    ;;
  esac
fi
Для того, чтобы заработало автомонтирование сменных носителей и возможность программного извлечения CD/DVD-дисков, следует создать файл

01-local-udisks.pkla

[Mount Permissions for users]
Action=org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.drive-eject
ResultAny=yes
ResultInactive=no
ResultActive=no


Комментариев нет: