起動時にノートブックでxinput設定を指定しようとしたので、すべての設定とデフォルトのsystemdサービスファイルを含むスクリプトを作成しました。
[Unit]
Description=Sets my preferred xinput settings
[Service]
ExecStart=/usr/local/bin/SCRIPTS/xinput.sh
[Install]
WantedBy=multi-user.target
実行してもsystemctl enable xinput-settings.service
動作しませんが、systemctl start
実行sudo bash /usr/local/bin/SCRIPTS/xinput.sh
(スクリプトにルートが必要です)も動作しませんが、このシステムサービスは機能しません。私が見た他のいくつかの修正でユーザーをrootに設定しようとしましたが、何も解決しませんでした。
スクリプトの内容は次のとおりです。
xinput --set-prop "TPPS/2 IBM TrackPoint" 320 -0.4
exit 0
私はArch Linuxカーネル5.6.12-arch1-1を使用しています。
systemctl status xinput-settings
説明する:
● xinput-settings.service - Sets my preferred xinput settings
Loaded: loaded (/etc/systemd/system/xinput-settings.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2020-05-15 23:34:35 +04; 42ms ago
Process: 16809 ExecStart=/usr/local/bin/SCRIPTS/xinput.sh (code=exited, status=203/EXEC)
Main PID: 16809 (code=exited, status=203/EXEC)
May 15 23:34:35 ThinkX250 systemd[1]: Started Sets my preferred xinput settings.
May 15 23:34:35 ThinkX250 systemd[16809]: xinput-settings.service: Failed to execute command: No such file or directory
May 15 23:34:35 ThinkX250 systemd[16809]: xinput-settings.service: Failed at step EXEC spawning /usr/local/bin/SCRIPTS/xinput.sh: No such file or directory
May 15 23:34:35 ThinkX250 systemd[1]: xinput-settings.service: Main process exited, code=exited, status=203/EXEC
May 15 23:34:35 ThinkX250 systemd[1]: xinput-settings.service: Failed with result 'exit-code'.
答え1
次のサービスユニットを検討してください。
[Unit]
Description=Sets my preferred xinput settings
[Service]
Type=oneshot
ExecStart=/usr/local/bin/SCRIPTS/xinput.sh
Environment="DISPLAY=:0"
RemainAfterExit=yes
[Install]
WantedBy=graphical.target
1行ずつ説明:
Type=oneshot
一度実行した後に終了するスクリプトに適しています。これを指定しないと、Type=simple
デフォルト値は systemd に設定され、systemd はサービスの終了が早すぎるのに驚くことがあります。私の考えでは、これが最初の理由かもしれません。Active: failed
Environment="DISPLAY=:0"
。複数のユーザーがログインして複数のモニターを同時にアクティブにできます。 systemdはデスクトップ/モニタに接続されていないため、xinputを実行するとxinputが失敗します。この環境変数を設定すると、使用するディスプレイをxinputに通知できます。RemainAfterExit=yes
。必ずしも必要なわけではありませんが、私はこんなoneshot
ものが好きです。つまり、サービスが完了すると状態にactive (exited)
なりますinactive (dead)
。WantedBy=graphical.target
これは、xserverの起動後にこのサービスが開始されることを意味します。
それでも問題がある場合は、xauthorityに関連している可能性があります。この場合は、ここで良い答えを確認してください。
答え2
KDE自動起動に私のスクリプトを追加すると、sudoでも機能します。