저는 Manjaro 17과 i3wm을 사용하고 있습니다(해당되는 경우).
터치패드 클릭 설정을 수정하기 위해 시작 시 명령을 실행하고 싶습니다. /usr/bin/
옵션을 활성화하고 해당 모드를 실행 가능으로 변경하는 스크립트를 작성했습니다 .
/usr/bin/터치패드-활성화-탭-클릭:
#!/bin/bash
exec xinput set-prop 11 290 1
스크립트는 터미널에서 문제 없이 원활하게 실행될 수 있습니다.
내 연구를 바탕으로 간단한 서비스 파일을 준비했습니다 /etc/systemd/system/
.
/etc/systemd/system/touchpad-enable-tap-click.service:
[Unit]
Description=Allow touchpad tap click
[Service]
Type=oneshot
ExecStart=/usr/bin/touchpad-enable-tap-click
[Install]
WantedBy=multi-user.target
재부팅하기 전에 다음 명령을 실행하십시오.
[sercan@compaq ~]$ sudo systemctl enable touchpad-enable-tap-click.service
Created symlink /etc/systemd/system/multi-user.target.wants/touchpad-enable-tap-click.service → /etc/systemd/system/touchpad-enable-tap-click.service.
나는 또한 전체 경로를 시도했습니다.
서비스가 제대로 작동하지 않으며 결과는 다음과 같습니다.
시스템 제어 상태
[sercan@compaq ~]$ systemctl status touchpad-enable-tap-click.service
● touchpad-enable-tap-click.service - Allow touchpad tap click
Loaded: loaded (/etc/systemd/system/touchpad-enable-tap-click.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Sat 2017-04-22 01:51:17 +03; 14min ago
Main PID: 32429 (code=exited, status=1/FAILURE)
Nis 22 01:51:17 compaq systemd[1]: Starting Allow touchpad tap click...
Nis 22 01:51:17 compaq bash[32429]: Unable to connect to X server
Nis 22 01:51:17 compaq systemd[1]: touchpad-enable-tap-click.service: Main process exited, code=exited, status=1/FAILURE
Nis 22 01:51:17 compaq systemd[1]: Failed to start Allow touchpad tap click.
Nis 22 01:51:17 compaq systemd[1]: touchpad-enable-tap-click.service: Unit entered failed state.
Nis 22 01:51:17 compaq systemd[1]: touchpad-enable-tap-click.service: Failed with result 'exit-code'.
로그-xe서비스를 다시 시작한 후:
Nis 22 02:09:52 compaq sudo[21550]: sercan : TTY=pts/0 ; PWD=/home/sercan ; USER=root ; COMMAND=/usr/bin/systemctl restart touchpad-enable-tap-click.service
Nis 22 02:09:52 compaq sudo[21550]: pam_unix(sudo:session): session opened for user root by (uid=0)
Nis 22 02:09:52 compaq systemd[1]: Starting Allow touchpad tap click...
-- Subject: Unit touchpad-enable-tap-click.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit touchpad-enable-tap-click.service has begun starting up.
Nis 22 02:09:52 compaq bash[21553]: Unable to connect to X server
Nis 22 02:09:52 compaq systemd[1]: touchpad-enable-tap-click.service: Main process exited, code=exited, status=1/FAILURE
Nis 22 02:09:52 compaq systemd[1]: Failed to start Allow touchpad tap click.
-- Subject: Unit touchpad-enable-tap-click.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit touchpad-enable-tap-click.service has failed.
--
-- The result is failed.
Nis 22 02:09:52 compaq systemd[1]: touchpad-enable-tap-click.service: Unit entered failed state.
Nis 22 02:09:52 compaq systemd[1]: touchpad-enable-tap-click.service: Failed with result 'exit-code'.
Nis 22 02:09:52 compaq sudo[21550]: pam_unix(sudo:session): session closed for user root
당신이 나를 도울 수 있기를 바랍니다. 감사합니다.
답변1
GUI는 운영 체제의 고유한 부분이며 시스템은 여러 GUI 환경을 가질 수 있습니다. 서비스가 GUI 컨텍스트 외부에서 실행되기 때문에 systemd를 사용한 시도가 작동하지 않습니다. 실제로 GUI가 시작되기 전에 실행됩니다. 을 실행하려면 xinput
다음으로 구성된 GUI가 필요합니다.X 서버.
애플리케이션은 환경 변수를 통해 GUI 컨텍스트가 무엇인지(즉, 어떤 X 서버와 통신할지) 알고 있습니다 DISPLAY
. 이는 GUI를 사용할 수 있는지 확인하는 방법입니다. 변수가 설정되지 않은 경우 GUI 컨텍스트 외부에 있는 것입니다. (변수를 설정해도 GUI 컨텍스트가 생성되지 않습니다. 기존 GUI 컨텍스트에 외부적으로 연결할 수 있지만 여기서는 관련이 없습니다.)
로그인 프롬프트가 그래픽 모드인 경우 다음을 사용하고 있습니다.디스플레이 관리자. xinput
로그인 프롬프트가 표시되면 즉시 설정을 실행하고 적용하도록 디스플레이 관리자를 구성할 수 있습니다 . 이를 수행하는 방법은 사용 중인 디스플레이 관리자에 따라 다릅니다.로그인 화면 전에 시작되는 스크립트를 실행하는 방법은 무엇입니까?자세한 내용은.
로그인 방법에 관계없이 이러한 설정을 로그인 스크립트의 일부로 적용할 수 있습니다. GUI 세션을 사용하거나 .xinitrc
시작 .xsession
하려면 여기에 명령을 추가하십시오. 시작 응용 프로그램 개념이 적용된 데스크톱 환경을 사용하는 경우 xinput
이를 실행하는 명령이나 스크립트를 시작 응용 프로그램에 추가합니다. 창 관리자를 직접 사용하는 경우 설명서를 확인하여 시작 시 명령을 실행하는 방법을 알아보세요(거의 모든 창 관리자가 이 작업을 수행할 수 있습니다).
i3을 사용하고 있으므로 GUI에 로그인한 상태에서 다음을 입력하여 명령을 실행할 수 있습니다.exec
주문하다당신의 ~/.i3/config
:
exec xinput set-prop 11 290 1
systemd는 디스플레이 관리자를 서비스로 시작하지만 생성된 GUI의 컨텍스트에서 명령을 실행하는 방법을 제공하지 않는다고 생각합니다. 그러나 로그인할 때 명령을 실행하는 방법을 제공할 수도 있습니다.아치스 위키몇 가지 예를 들어보세요.
답변2
이는 X가 로드되기 전에 X 시스템(GUI)의 동작을 수정하는 명령을 실행하려고 하기 때문에 발생합니다. 따라서 당연히 X 서버에 연결할 수 없다고 불평합니다. 프롬프트는 실행 중인 명령의 이름입니다.엑스입력하다.
이제 systemd가 가까운 시일 내에 시작되지 않은 서버와 상호 작용하는 기능을 개발하지 않을 것이라고 보장할 수는 없지만 현재로서는 해당 작업에 적합한 도구가 아닙니다.
가장 먼저 시도해야 할 것은 (불필요하지 않은 exec
) 명령을 에 추가하는 것입니다 ~/.profile
(또는 를 사용하고 bash
해당 명령이 존재하는 경우 ~/.bash_profile
).
xinput set-prop 11 290 1
하지만 그래픽이 아닌 방식으로 로그인하면 불만이 생길 수 있다는 점에 유의하세요. 그래도 작동하지 않으면(참조여기자세한 내용은) 데스크탑 환경의 런처에 추가하는 방법을 찾아보세요. 가장 널리 사용되는 데스크탑 환경(예: Gnome, Cinnamon, KDE, Unity 등)에는 로그인 시 프로그램을 로드할 수 있는 GUI 도구가 있습니다. 바라보다여기openbox에서 이 작업을 수행하는 방법을 알아보고여기LXDE의 경우. 또는 다음을 참조하세요.여기보다 글로벌한 솔루션을 사용하십시오 ~/config/autostart
.