부팅 시 노트북에서 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
(스크립트에 루트가 필요함)도 작동하지 않지만 이 시스템 서비스는 작동하지 않습니다. 내가 본 몇 가지 다른 수정 사항과 함께 사용자를 루트로 설정하려고 시도했지만 아무것도 해결되지 않았습니다.
스크립트 내용은 다음과 같습니다.
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
한 줄씩 설명:
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에서도 작동합니다.