logind
전원 관리 용으로 사용하고 싶습니다 . 30분 동안 활동이 없으면 컴퓨터를 일시 중지하고 싶습니다.
문제는 지금 마우스와 키보드를 사용해도 30분쯤 지나면 멈춥니다. 내 거 logind.conf
:
[Login]
HandlePowerKey=suspend
IdleAction=suspend
IdleActionSec=30min
Ubuntu 15.04에서는 최소한의 설정만 사용하고 있으며 그대로 유지하고 싶습니다. 콘솔에 로그인하고(세션 관리자가 필요하지 않음) 을 입력하면 startx
내가 ~/.xinitrc
선호하는 i3
창 관리자가 시작됩니다. 데스크탑 환경을 사용하고 싶지 않습니다.
특정 시간이 지나면 컴퓨터가 멈추고 잠기도록 하고 싶습니다.
따라서 내 ~/.config/i3/config
파일에는 다음이 포함됩니다.
exec "xss-lock -- i3lock -c 000000"
화면 잠금은 잘 작동하고 잘 통합되어 있습니다. 그러니 거기에는 문제가 없습니다.
관심이 있으시면:
loginctl show-seat -p IdleHint
생산하다:
IdleHint=yes
내가 먼저 나서면 '아니요'가 되어야 할 것 같죠?
내가 이렇게 하면:
gdbus call --system --dest org.freedesktop.login1 --object-path /org/freedesktop/login1/session/c1 --method org.freedesktop.login1.Session.SetIdleHint false
아니면 이거:
dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1/session/c1 "org.freedesktop.login1.Session.SetIdleHint" boolean:false
IdleHint를 읽으면 여전히 "IdleHint=yes"가 출력됩니다!
그렇다면 내가 무엇을 놓치고 있는 걸까요? 세션 관리자나 데스크탑 환경을 사용하지 않고 systemd-logind
활동하는 동안 정지를 방지하려면 어떻게 해야 합니까?
lxqt-powermanagement
예를 들어 을 사용할 수 있다는 것을 알고 있지만 불필요하다고 생각하는 것이 옳다고 생각합니다. 물론 데스크탑 환경에 대한 개인 기본 설정을 변경할 수 있으며 필요한 경우 그렇게 할 것입니다. 그러나 이 문제는 해결 가능한 것으로 보인다.
답변1
내가 할 때
dbus-send --system --print-reply \
--dest=org.freedesktop.login1 /org/freedesktop/login1/session/self \
"org.freedesktop.login1.Session.SetIdleHint" boolean:false
알겠어요
Error org.freedesktop.DBus.Error.NotSupported: Idle hint control is not supported on non-graphical sessions.
이는 로그인 시 세션이 그래픽으로 간주되지 않는다는 문제가 있음을 나타냅니다. 물론:
$ loginctl show-session --property=Type self
Type=tty
이것이 sddm을 사용하는 것이 도움이 되는 이유입니다. 세션 유형을 설정합니다.
그런데 세션 유형을 수동으로 설정할 수 있나요?
org.freedesktop.login1(5)설명하다:
SetType()을 사용하면 세션 유형을 동적으로 변경할 수 있습니다. 세션의 현재 컨트롤러에서만 호출할 수 있습니다. TakeControl()이 호출되지 않은 경우 이 메서드는 실패합니다. 또한 제어가 해제되면(ReleaseControl()을 호출하거나 D-Bus 연결을 닫음) 세션 유형이 원래 값으로 재설정됩니다. 이렇게 하면 세션이 컨트롤러 충돌과 같은 일관성 없는 상태로 들어가는 것을 방지하는 데 도움이 됩니다. 유일한 매개변수 유형은 새 세션 유형입니다.
Xorg 서버세션 컨트롤러 되기그러나 설정 유형이 없으므로 세션 컨트롤러만이 이를 수행할 수 있으므로 다른 곳(xinitrc, xsession 또는 유사)에서 설정하는 것이 불가능할 수 있습니다.
하지만 이를 수행하는 다소 해킹적인 방법이 있습니다 $XDG_SESSION_TYPE
.pam_systemd(8). 나는 이것을 넣어 보았습니다 :/etc/systemd/system/[email protected]/override.conf
[Service]
Environment=XDG_SESSION_TYPE=x11
이제 vt10에 로그인하고 exec startx /etc/X11/Xsession
IdleHint 업데이트를 하면 xss-lock에 의해 업데이트됩니다.
더욱 강력하게 만들기 위해 내 .bash_profile은 $XDG_SESSION_TYPE
세션이 기본인지 확인하고(단 하나의 세션만 해당 환경 변수를 사용자 systemd 인스턴스에 푸시해야 함) X를 시작하여 vt10을 매우 간단한 데스크탑 관리자로 전환합니다. :-)
#!bash
if [[ ! $DISPLAY && $XDG_SESSION_TYPE == "x11" ]]; then
[[ "$(loginctl show-user --property=Display "$USER")" == "Display=$XDG_SESSION_ID" ]] && primary=: || primary=
journal=(/usr/bin/systemd-cat --priority=info --stderr-priority=warning --level-prefix=false)
[[ $primary ]] && session=(/etc/X11/xinit/xinitrc) || session=(~/.xsession)
exec startx "${journal[@]}" "${session[@]}"
exit 1
fi
. ~/.bashrc
답변2
안타깝게도 답이 없다는 것은 답이 없다는 뜻일 수도 있습니다. 하지만 틀려도 좋아요!
혹시 같은 내용을 고민하고 계시는 분들을 위해 결국 포기하고 세션관리자를 사용하고 있습니다. 구체적으로, sddm
. 이제 모든 것이 잘 작동하는 것 같고 세션 관리자는 실제로 너무 부풀어 오르지 않고 거의 방해가 되지 않습니다.