紹介する

紹介する

いくつかのLinuxバージョンに関するこの質問を何度も見ましたので、詳しく説明します。
ユーザーがデスクトップセッションにログインする前後にスクリプト/コマンド/プログラムを実行する方法は?

答え1

紹介する

ユーザーがグラフィカル環境にログインする前に、グラフィカル環境でプログラムを実行することは、ディスプレイマネージャによって異なります。ディスプレイマネージャはログインインターフェイスを提供し、ログイン後にグラフィカル環境を設定することを担当します。最も重要なものは次のとおりです。
  • GDMGNOMEディスプレイマネージャです。
  • 光DMすべてのツールキットで作成されたさまざまなフロントエンドで使用できるクロスデスクトップディスプレイマネージャです。
  • LXDMこれはLXDEディスプレイマネージャですが、LXDEデスクトップ環境とは無関係です。
  • SDDM迅速でシンプルで美しく設計されたX11およびWayland用の最新のディスプレイマネージャです。

ユーザーがログインする前にディスプレイマネージャがポップアップしたときにコマンド実行を設定する方法と、誰かが最終的にログインしたときに特定のタスクを実行する方法を確認します。

実行しているものがわからない場合は、次の質問を参照できます。
私のディスプレイマネージャが何であるかを示す単純なLinuxコマンドはありますか?

重要
始める前に実行コマンドが記載されていない限り、ファイルを編集してくださいroot。何をしているのかわからない場合は、このファイルの既存のコンテンツを削除せずにファイルに何を入れるのか注意してください。これによりログインがブロックされる可能性があります。

GDM

GDMを使用するときは注意してください。すべてのスクリプトが「root」として実行され、ゼロ以外のエラーコードによってログイン機能が制限される可能性があり、GDMはスクリプトが完了するのを待ち、コマンドの実行中に応答しなくなります。完全な手順については、[ドキュメントを読む][5]。

ログインする前に

ユーザーがログインする前にコマンドを実行する必要がある場合は、 `/etc/gdm3/Init/Default` ファイルを編集できます。このファイルは、ディスプレイマネージャがユーザーに表示される前に実行されるシェルスクリプトです。

ログイン後

ユーザーログイン後にセッションを初期化する前にジョブを実行する必要がある場合は、 `/etc/gdm3/PostLogin/Default` ファイルを編集してください。セッションの初期化セッション後にコマンド(env、グラフィカル環境)を実行するにはログイン...)ファイルを編集する: `/etc/gdm3/PreSession/Default`

光DM

/etc/lightdm.conf.d/*.conf ではなく lightdm.conf について説明します。好きなようにできます。利用可能なオプションを理解することが重要です。 lightDMを使用するときは注意してください。複数の異なるスクリプトが開始された可能性があるため、構成ファイルを編集する前にそれらを正しく読み取る必要があります。さらに、これらのスクリプトを配置する順序は、セッションのロード方法に影響を与える可能性があります。

LightDMは他とは少し異なる動作をします。デフォルト構成ファイルにオプションを入れて実行するスクリプトを示します。

デフォルトのlightDM confファイルを編集します/etc/lightdm/lightdm.conf

最初の行に以下を追加する必要があります[Seat:*]ここに示すように:

最新バージョンのlightdm(15.10以降)は、廃止された[SeatDefaults]を[Seat:*]に置き換えました。

ログインする前に

`greeter-setup-script=/my/path/to/script` 行を追加してください。このスクリプトは、lightDMがログインインターフェイスを表示したときに実行されます。

ログイン後

ユーザーが正常にログインしたら、スクリプトを `root` として実行する `session-setup-script=/script/to/start/script` 行を追加します。

LXDM

ログインする前に

誰かがログインする前にコマンドを実行したい場合は、シェルスクリプト `/etc/lxdm/LoginReady`を編集してください。

ログイン後

誰かがrootとしてログインした後にコマンドを実行するには、シェルスクリプト `/etc/lxdm/PreLogin`を編集します。ログインしたユーザーでコマンドを実行するには、スクリプトを編集するだけです。 ` /etc/lxdm/login` 以降

SDDM

ログインする前に

のスクリプトを変更します/usr/share/sddm/scripts/Xsetup。このスクリプトはログイン画面が表示される前に実行され、主にX11でモニター表示を調整するために使用されます。Waylandに該当するものが何であるかよくわかりません。

ログイン後

sddm/usr/share/sddm/scripts/Xsessionこれで、ユーザーの情報を取得できるスクリプトが得られます。ファイルをクリックデフォルトのシェルによって異なります。

bashシェルの場合(およびその他)を取得し~/.bash_profile、zshの場合(およびその他)を取得します${ZDOTDIR:-$HOME}/.zprofile。この機会にログインした後、必要な他のコマンドを実行するようにこれらのファイルを変更できます。

答え2

すべてのユーザーが利益を享受できるようにログインする前に、マウスを設定する必要があります。この記事を読んで解決策を見つけました質問。 GDMで設定することを検討してください。セッションの開始時に設定するには、XDG自動起動で設定する必要があります。 /etc/xdg/autostartには、すべてのxsessionsログイン(私のUbuntuシステム)で実行される複数の.desktopファイルがあります。

答え3

/usr/share/gdm/greeter/autostart/GDM3では、ログインする前に実行するスクリプト(sudo権限が必要)を入力する必要があります。たとえば、ログインする前にキーボードのバックライトをオンにするには(暗い部屋でもパスワードを入力するキーを見ることができます):

sudo nano /usr/share/gdm/greeter/autostart/led.desktop

ファイルに書き込みます。

[Desktop Entry]
Type=Application
Name=ledstart
Exec=xset led on
NoDisplay=true
X-GNOME-AutoRestart=true

で始まる行はExec=コマンドを入力する場所です。

残念ながら、Gnomeはログイン後にセッションをリセットしているため、このコマンドは続行されません。その後、xset led on各ユーザーログインに対して新しいコマンドを設定する必要があります。解決策を見つけたら、答えを更新します。

関連情報