LINUX.ORG.RU

Как root может узнать имя пользователя X сессии

 ,


0

1

Настроил acpid кнопку блокировки экрана.

Создал файл /etc/acpi/evenst/lock

event=button/screenlock SCRNLCK
action=sudo -H -u juffinhalli sh -c "DISPLAY=:0 i3lock -b -p win -t --color=000000"

.

Всё работает, но требуется автоматически определять имя пользователя X сессии, вместо явно прописанного «juffinhalli»

Прошу помочь советом

$ who | grep ":0" | head -n 1 | awk '{print($1)}'
Kroz ★★★★★ ()

А вот так еще лучше:

$ getent passwd $( dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Session2 org.freedesktop.ConsoleKit.Session.GetUser | tail -n 1 | awk '{print($2)}' ) | cut -d: -f1

Kroz ★★★★★ ()
Ответ на: комментарий от Kroz

Ага.

$ getent passwd $( dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Session2 org.freedesktop.ConsoleKit.Session.GetUser | tail -n 1 | awk '{print($2)}' ) | cut -d: -f1
Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.ConsoleKit was not provided by any .service files
root
bin
daemon
mail
ftp
http
uuidd
dbus
nobody
systemd-journal-gateway
systemd-timesync
systemd-network
systemd-bus-proxy
systemd-resolve
halo
git
avahi
mpd
polkitd
colord
dnsmasq

Extraterrestrial ★★★★★ ()

тащем-то у меня (в слаке) иксы запускаются с указанием файла ~/.serverauth.*

root       883  1.2  1.5  47368 16104 tty7     Ss+  Sep04   4:53 /usr/bin/X :0 -auth /home/drb/.serverauth.866

т.е. имя юзера можно получить так

ps a|sed  -rn 's~^\s*(\S+\s+){4}/usr/bin/X.*/([^/]+)/.*~\2~p'

если оно конечно совпадает с $HOME

emulek ()

Реакция на кнопку должна быть определена в юзерской сессии. Юзером. А в acpid - только для случаев когда никто не залогинен.

no-dashi ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.