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
プライマリであることを確認し(1つのセッションだけがその環境変数をユーザーの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