私は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サーバーに接続できないと文句を言います。プロンプトは、実行中のコマンドの名前です。X入力する。
systemdが近いうちに起動していないサーバーと対話する機能を開発しないことを保証することはできませんが、現時点ではそのタスクに適したツールではありません。
最初に試す必要があるのは、(不要なexec
)コマンドをに追加することです~/.profile
(またはを使用し、bash
そのコマンドが存在する場合~/.bash_profile
)。
xinput set-prop 11 290 1
ただし、グラフィック以外の方法でログインすると不満が生じる可能性があることに注意してください。それでも機能しない場合(参照ここ詳細については)デスクトップ環境のランチャーに追加する方法を見つけてください。最も一般的なデスクトップ環境(Gnome、Cinnamon、KDE、Unityなど)には、ログイン時にプログラムをロードできるGUIツールがあります。バラよりここopenboxでこれを行う方法を学びます。ここLXDEの場合または以下を参照してください。ここよりグローバルなソリューションを使用してください~/config/autostart
。