私のdebian jessieデスクトップボックスが(新しい光沢のあるsystemdを介して)スリープから復帰すると、マウスの設定がデフォルトに戻り、カスタマイズがリセットされました
xinput set-prop 12 'Device Accel Constant Deceleration' 2.5
ログイン時に実行されます。
ウェイクアップ時に任意のユーザースクリプトを実行するにはどうすればよいですか?(ユーザーがXセッションの所有者であると想定します)
私が思い出せる限り、以下はsystemd
セットアップに対して行った唯一のカスタマイズです(そうです、それは任意のユーザーに対しては機能しないので完全に間違っていることはわかっていますが、私は機能していませんまだそれを行う方法を...これはやや関連しています)
さらに、現在X画面を使用しているユーザーとして、ウェイクアップ前に任意のユーザースクリプトをどのように実行できますか?
cat /etc/systemd/system/i3lock.service
#systemctl enable i3lock.service
[Unit]
Description=i3lock
Before=sleep.target
[Service]
User=fommil
Type=forking
Environment=DISPLAY=:0
ExecStart=/usr/bin/i3lock -c 000000
[Install]
WantedBy=sleep.target
この回答は askubuntu.com/a/661747/394818 (@ Sun-bearの comment でも参照)、 askubuntu.comに基づいています)/q/616272/394818 および superuser.com/a/1269158/58595 。
ファイル/etc/systemd/system/my_user_script.service
を作成します。
[Unit]
Description=Run my_user_script
After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target
[Service]
ExecStart=/path/to/my_user_script
#User=my_user_name
#Environment=DISPLAY=:0
[Install]
WantedBy=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target
特定の種類のスリープから復帰した後にのみサービスを実行する必要がある場合は、サスペンド/ハイバネート/ハイブリッドを削除します。特定のユーザーがサービスを実行する必要がある場合は、User=
およびEnvironment=
行のコメントを外して、関連するユーザー名を置き換えます。
以下を使用してサービスファイルをインストールします。
Sudo systemctl enable my_user_script
User=
でハードコードされたユーザー名を設定することを回避するために、.local/share/systemd/user/my_user_script.service
でまったく同じサービスファイルを作成し、
systemctl --user enable my_user_script
ただし、これは機能しません。 @grawityは nix.stackexchange.com/a/174837/163108 で詳細を説明しています。
sleep.target
はシステムサービスに固有です。その理由は、sleep.target
はスリープ状態になるときに自動的にアクティブになる魔法のターゲットではないためです。これは、システムをスリープ状態にするputが通常のターゲットであるだけなので、当然、「ユーザー」インスタンスには同等のものはありません。 (そして残念ながら、現在「ユーザー」インスタンスはシステム全体のサービスに依存する方法がありません。)
/ lib/systemd/system-sleepにファイルを作成しました。
#!/bin/sh
case $1 in
post)
/bin/runme
;;
esac
postはウェイクアップ時に呼び出されます。
編集:
https://www.freedesktop.org/software/systemd/man/systemd-suspend.service.html
このファイルを開きます。
Sudo vim/lib/systemd/system-sleep/hdparm
目次:
#!/ bin/sh case $ 1 in post) /usr/lib/pm-utils/power.d/95hdparm-apm resume ##コマンドを貼り付けてスクリプトを実行します ;; esac
コマンドは管理者権限で実行されます。