「Greetd」の版間の差分
一部翻訳 |
同期 |
||
| (3人の利用者による、間の9版が非表示) | |||
| 1行目: | 1行目: | ||
{{Lowercase title}} |
|||
[[Category:ディスプレイマネージャ]] |
[[Category:ディスプレイマネージャ]] |
||
[[en: |
[[en:greetd]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|ディスプレイマネージャ}} |
{{Related|ディスプレイマネージャ}} |
||
| 6行目: | 7行目: | ||
{{Related|Sway}} |
{{Related|Sway}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
[https://git.sr.ht/~kennylevinsen/greetd greetd] は、コンソールベースであれグラフィカルであれ、ユーザが何を起動したいのかを仮定しない、軽量で柔軟な |
[https://git.sr.ht/~kennylevinsen/greetd greetd] は、コンソールベースであれグラフィカルであれ、ユーザが何を起動したいのかを仮定しない、軽量で柔軟な[[ディスプレイマネージャ|ログインマネージャ]]デーモンです。コンソールから起動できるスクリプトやプログラムはすべて greetd で起動できるので、[[Wayland#コンポジタ|Wayland コンポジタ]]に特に適しています。[[#Greeter|greeter]] を起動して、他のディスプレイマネージャと同様にユーザセッションを開始することもできます。 |
||
== インストール == |
== インストール == |
||
{{ |
{{Pkg|greetd}} パッケージか {{AUR|greetd-git}} パッケージを[[インストール]]してください。 |
||
デフォルトの |
デフォルトの設定ファイルは {{ic|/etc/greetd/config.toml}} です。[[PAM]] 固有のオプションは、{{ic|/etc/pam.d/greetd}} で設定します。 |
||
=== |
=== Greeter === |
||
Greetd には greetd-agreety という内蔵の greeter がありますが、これは最小限の実装です。他の利用可能な greeter を使用することを検討するべきでしょう: |
|||
ユーザーセッションを開始できるようにするには、greetd に greeter が必要です。いくつかの greeter が利用可能です: |
|||
* {{ |
* {{App|greetd-agreety|デフォルト。[[agetty]] に似たテキストベースの greeter。|https://git.sr.ht/~kennylevinsen/greetd|{{Pkg|greetd-agreety}}}} |
||
* https://git.sr.ht/~kennylevinsen/dlm |
* {{App|dlm|fbdev の greeter。|https://git.sr.ht/~kennylevinsen/dlm|{{AUR|greetd-dlm-git}}}} |
||
* {{App|ddlm|fbdev の greeter。{{ic|dlm}} の強化/拡張バージョン。|https://github.com/deathowl/ddlm|{{AUR|greetd-ddlm-git}}}} |
|||
* [https://git.sr.ht/~kennylevinsen/gtkgreet gtkgreet] ({{AUR|greetd-gtkgreet}}/{{AUR|greetd-gtkgreet-git}} によって提供されています) [[GTK]] greeter です。 |
|||
* [https://git.sr.ht/~kennylevinsen/ |
* {{App|gtkgreet|[[GTK]] の greeter。|https://git.sr.ht/~kennylevinsen/gtkgreet|{{Pkg|greetd-gtkgreet}}, {{AUR|greetd-gtkgreet-git}}}} |
||
* {{App|ReGreet|[[GTK]] の greeter。様々なカスタムオプションが利用可能。Wayland 限定。|https://github.com/rharish101/ReGreet|{{Pkg|greetd-regreet}}, {{AUR|greetd-regreet-git}}}} |
|||
* [https://github.com/apognu/tuigreet tuigreet] ({{AUR|greetd-tuigreet}} によって提供されています)、コンソール UI greeter です。 |
|||
* {{App|wlgreet|[[Wayland]] の greeter。|https://git.sr.ht/~kennylevinsen/wlgreet|{{AUR|greetd-wlgreet}}, {{AUR|greetd-wlgreet-git}}}} |
|||
* [https://github.com/deathowl/ddlm ddlm] ({{AUR|greetd-dlm-git}} によって提供されています), fbdev greeter です。{{ic|dlm}} の強化/拡張版です。 |
|||
* {{App|tuigreet|コンソール UI の greeter。|https://github.com/apognu/tuigreet|{{Pkg|greetd-tuigreet}}}} |
|||
* [https://gitlab.com/marcusbritanicus/QtGreet qtgreet] ({{AUR|greetd-qtgreet}} によって提供されています), [[Qt]] greeter です。 |
|||
* {{App|qtgreet|[[Qt]] の greeter。|https://gitlab.com/marcusbritanicus/QtGreet|{{AUR|greetd-qtgreet}}}} |
|||
== |
== Greetd を開始する == |
||
{{ic|greetd.service}} を[[有効化]]してください。これで、greetd がブート時に開始されます。 |
|||
[[ディスプレイマネージャ#ディスプレイマネージャをロードする]] も参照。 |
|||
== Greeter |
== Greeter の設定 == |
||
greetd によって実行される greeter は、{{ic|/etc/greetd/config.toml}} 内の {{ic|default_session}} セクションで {{ic|command}} オプションを使用して設定します。設定に変更が加えられていない場合は、同梱されている {{ic|agreety}} greeter が使用されます。また、[[#agreety]] も参照してください。 |
|||
Configuring the greeter run by greetd is done using the {{ic|command}} option in the {{ic|default_session}} section in {{ic|/etc/greetd/config.toml}}. |
|||
The included {{ic|agreety}} greeter will be used if no changes are made. Also see [[#agreety]]. |
|||
デフォルトでは、greeter は {{ic|greeter}} ユーザーとして実行されます。設定ファイル内の {{ic|default_session}} セクションで {{ic|user}} オプションを変更すれば、別のユーザとして実行できます。例 (''another_user'' の部分は置き換えてください): |
|||
By default, greeters are run as the {{ic|greeter}} user. This can be changed by editing the {{ic|user}} option in the {{ic|default_session}} section of the configuration file and replacing ''another_user'' with the chosen user: |
|||
... |
... |
||
| 44行目: | 45行目: | ||
... |
... |
||
また、{{ic|/etc/greetd}} ディレクトリの[[所有権]]も適切に変更してください。 |
|||
Make sure the [[ownership]] of the {{ic|/etc/greetd}} directory is set accordingly. |
|||
=== agreety === |
=== agreety === |
||
これがデフォルトの greeter です。以下のように設定ファイルを変更すれば、agreety が起動されます: |
|||
This is the default greeter. It is launched by greetd with the configuration file set as follows: |
|||
... |
... |
||
| 55行目: | 56行目: | ||
... |
... |
||
agreety は、ユーザのログイン時に任意のコマンドを実行することができます。例えば、[[Sway]] を起動するには、上の例の {{ic|$SHELL}} を {{ic|sway}} に置き換えてください。 |
|||
agreety can launch any arbitrary command once a user logs in. For example, in order to start [[Sway]], replace {{ic|$SHELL}} in the example above with {{ic|sway}}. |
|||
=== gtkgreet === |
=== gtkgreet === |
||
gtkgreet が動作するには、コンポジターが必要です。完全なエクスペリエンスを得るには、{{ic|wlr-layer-shell-unstable}} をサポートするコンポジターが必要ですが、他のものでも動作します。そのため、{{pkg|sway}} を使うことが推奨されますが、{{pkg|cage}} のようなものを使うことも可能です。cage と sway の両方の例が以下に示されています。 |
|||
In order to run, gtkgreet needs a compositor. For the full experience, a compositor with {{ic|wlr-layer-shell-unstable}} support is required but others can work. As such, it is recommended to use {{pkg|sway}}, but something like {{pkg|cage}} can also be used. Examples for both cage and sway are provided below. |
|||
gtkgreet で起動できるログイン環境を指定するには、{{ic|/etc/greetd/environments}} にその一覧を記述してください。例: |
|||
In order to specify which login environments can be started by gtkgreet, list them in {{ic|/etc/greetd/environments}}. |
|||
For example: |
|||
sway |
sway |
||
bash |
bash |
||
また、gtkgreet を呼び出す際に {{ic|-c ''mycommand''}} パラメータを使うこともできます (''mycommand'' はログイン成功時に実行したいプログラムに置き換えてください。例えば、{{ic|gtkgreet -c bash}} や {{ic|gtkgreet -c sway}})。以下のコンポジタの例では、必要に応じてそのようにしてください。 |
|||
==== |
==== cage を使う ==== |
||
{{Pkg|cage}} を[[インストール]]し、以下のように {{ic|command}} オプションを設定してください: |
|||
... |
... |
||
| 78行目: | 78行目: | ||
... |
... |
||
==== |
==== sway を使う ==== |
||
{{Pkg|sway}} を[[インストール]]してください。[[Sway]] を gtkgreet のコンポジタとして使用する場合、ユーザがログインしたら終了しなければなりません。そのために、特定の設定ファイル (例えば {{ic|/etc/greetd/sway-config}}) を以下の内容で作成する必要があります: |
|||
[[Install]] {{pkg|sway}}. When using [[Sway]], it must be terminated once the user logs in. For that purpose, a specific configuration file must be created, for example in {{ic|/etc/greetd/sway-config}}, with the following content: |
|||
{{bc| |
{{bc| |
||
# `-l` |
# `-l` は layer-shell モードを有効化します。 |
||
# `swaymsg exit` が gtkgreet の後に実行されることに注意してください。 |
|||
exec "gtkgreet -l; swaymsg exit" |
exec "gtkgreet -l; swaymsg exit" |
||
| 95行目: | 96行目: | ||
}} |
}} |
||
次に、上記の設定ファイルで [[Sway]] を開始するように greetd を設定する必要があります。{{ic|command}} オプションを以下のように設定してください: |
|||
Then, greetd must be set to start [[Sway]] with the configuration file above. Set the {{ic|command}} option as follows: |
|||
... |
... |
||
| 101行目: | 102行目: | ||
command = "sway --config /etc/greetd/sway-config" |
command = "sway --config /etc/greetd/sway-config" |
||
... |
... |
||
=== ReGreet === |
|||
gtkgreet と同じように、ReGreet もコンポジタが必要です。例えば、Cage と Sway は両方とも gtkgreet のときのように使用することができます (ただし、''gtkgreet'' コマンドは ''regreet'' に置き換えてください)。Sway をコンポジタとして使用する場合の設定は以下のようになるでしょう: |
|||
{{bc| |
|||
# `swaymsg exit` は ReGreet の後に実行されることに注意してください。 |
|||
exec "regreet; swaymsg exit" |
|||
bindsym Mod4+shift+e exec swaynag \ |
|||
-t warning \ |
|||
-m 'What do you want to do?' \ |
|||
-b 'Poweroff' 'systemctl poweroff' \ |
|||
-b 'Reboot' 'systemctl reboot' |
|||
include /etc/sway/config.d/* |
|||
}} |
|||
ReGreet は {{ic|/usr/share/xsession}} ディレクトリ (X11 セッション) と {{ic|/usr/share/wayland-sessions}} ディレクトリ (Wayland セッション) から利用可能なセッションを認識します。なので、{{ic|/etc/greetd/environments}} にセッションのリストを記述する必要はありません。 |
|||
ReGreet は TOML ファイル {{ic|/etc/greetd/regreet.toml}} で設定することができます。サンプルのファイルは {{ic|/usr/share/doc/greetd-regreet/regreet.sample.toml}} にあり、このファイルには利用可能な全オプションが記述されています。このファイルを {{ic|/etc/greetd/regreet.toml}} にコピーし、好きなように変更してください。必要ない行はコメントアウトしたり削除したりしてください。無効なオプションは全て無視されます。 |
|||
=== wlgreet === |
=== wlgreet === |
||
wlgreet を開始するには、{{ic|wlr-layer-shell-unstable}} をサポートするコンポジタが必要です。[[#sway を使う]] で説明されているように gtkgreet を Sway でセットアップするときと同じ手順を行ってください。ただし、{{ic|/etc/greetd/sway-config}} ファイルは以下のようにしてください: |
|||
In order to start wlgreet, a compositor with {{ic|wlr-layer-shell-unstable}} is required. Follow the steps required to set up gtkgreet with Sway as [[#Using sway|described above]] but use the following for {{ic|/etc/greetd/sway-config}} instead: |
|||
{{bc| |
{{bc| |
||
| 120行目: | 142行目: | ||
=== tuigreet === |
=== tuigreet === |
||
tuigreet は特別な設定を必要しないので、以下のように {{ic|command}} オプションを設定するだけで十分です: |
|||
tuigreet does not require any special setup, just set the {{ic|command}} option as follows: |
|||
... |
... |
||
| 127行目: | 149行目: | ||
... |
... |
||
{{ic|tuigreet --help}} |
{{ic|tuigreet --help}} を実行すればカスタマイズオプションが表示されます。 |
||
=== ddlm === |
=== ddlm === |
||
ddlm は特別な設定を必要しないので、以下のように {{ic|command}} オプションを設定するだけで十分です: |
|||
ddlm does not require any special setup, just set the {{ic|command}} option as follows: |
|||
... |
... |
||
| 140行目: | 162行目: | ||
=== qtgreet === |
=== qtgreet === |
||
qtgreet を使用するには、WLR ベースのコンポジタ ({{AUR|wayfire}}、{{Pkg|sway}} など) が必要です。 |
|||
==== |
==== Wayfire を使う ==== |
||
{{AUR|wayfire}} を[[インストール]]し、以下のように {{ic|command}} オプションを設定してください: |
|||
... |
... |
||
| 151行目: | 173行目: | ||
... |
... |
||
ここで参照されている Wayfire の設定ファイルは qtgreet に同梱されています。 |
|||
The Wayfire configuration file referred to is included with qtgreet. |
|||
== |
==== Hyprland を使う ==== |
||
以下のように {{ic|command}} オプションを設定してください: |
|||
If you want a user to be logged in automatically, an {{ic|initial_session}} section must be defined in {{ic|/etc/greetd/config.toml}}: |
|||
... |
|||
[default_session] |
|||
command = "Hyprland --config /etc/greetd/hyprland.conf" |
|||
... |
|||
そして、以下のように {{ic|/etc/greetd/hyprland.conf}} を作成してください: |
|||
{{hc|/etc/greetd/hyprland.conf|2= |
|||
exec-once = qtgreet; hyprctl dispatch exit |
|||
}} |
|||
== ヒントとテクニック == |
|||
=== 自動ログインを有効にする === |
|||
特定のユーザに自動的にログインするようにしたい場合は、{{ic|/etc/greetd/config.toml}} 内に {{ic|initial_session}} セクションを定義する必要があります: |
|||
... |
... |
||
| 163行目: | 202行目: | ||
... |
... |
||
{{ic|command}} オプションには、任意の実行可能ファイルの名前を指定することができます。上記の例では、ブート時に Sway が {{ic|''myuser''}} ユーザによって開始され、ユーザーがログアウトシた後に ''gtkgreet'' が起動されます。 |
|||
The {{ic|command}} option may contain the name of any executable file. In the example above, Sway will be started by {{ic|''myuser''}} at boot and ''gtkgreet'' will be launched after the user logs out. |
|||
''greetd'' を使用せず、常に自動ログインを有効にしておきたい場合は、[https://git.sr.ht/~kennylevinsen/autologin autologin] を参照してください。 |
|||
=== ローカルのプログラムを実行する === |
|||
== See also == |
|||
パスを {{ic|~/.profile}} に追加してください。さもないと、greetd によって呼び出されたデスクトップ環境がローカルのプログラムを実行できません。Greetd はユーザのホームディレクトリ内の {{ic|.bashrc}} と {{ic|.zshrc}} にアクセスできないので、これらのファイルにパスを指定しても意味がありません。 |
|||
* [https://sr.ht/~kennylevinsen/greetd/ greetd project page] |
|||
* [https://git.sr.ht/~kennylevinsen/greetd/ greetd source code] |
|||
{{hc|~/.profile|2= |
|||
export PATH="$HOME/.local/bin:$PATH" |
|||
}} |
|||
=== 環境変数を設定する === |
|||
選択済みのセッションに応じて環境変数を設定する greeter を使用していない限り (例えば、TUI は、セッションファイルの場所に応じて XDG_SESSION_TYPE を設定します)、デフォルトでは greetd は XDG_SESSION_TYPE や XDG_CURRENT_DESKTOP といった環境変数を設定しません。環境変数を設定する方法としては、実際のコマンドを実行する前に環境変数を設定するラッパスクリプトを使用するというものがあります。例えば、sway を起動する場合は: |
|||
{{hc|/usr/local/bin/start-sway|2= |
|||
#!/bin/sh |
|||
export XDG_SESSION_TYPE=wayland |
|||
export XDG_SESSION_DESKTOP=sway |
|||
export XDG_CURRENT_DESKTOP=sway |
|||
# Wayland stuff |
|||
export QT_QPA_PLATFORM=wayland |
|||
export SDL_VIDEODRIVER=wayland |
|||
export _JAVA_AWT_WM_NONREPARENTING=1 |
|||
exec sway "$@" |
|||
}} |
|||
Greeter が実行するコマンドとしてこのラッパスクリプトを使用してください。例えば、{{ic|gtkgreet}} の場合: |
|||
{{hc|/etc/greetd/config.toml|2= |
|||
... |
|||
[default_session] |
|||
command = "gtkgreet -c /usr/local/bin/start-sway" |
|||
... |
|||
}} |
|||
あるいは、{{ic|/etc/greetd/environments}} に {{ic|start-sway}} を配置してください。 |
|||
[https://man.sr.ht/~kennylevinsen/greetd/#how-to-set-xdg_session_typewayland How to Set XDG_SESSION_TYPE=wayland] を参照。 |
|||
=== Logind セッションタイプを設定する === |
|||
{{Note|これは GNOME を Wayland で正常に動作させるために必要です。}} |
|||
Logind セッションタイプは {{ic|XDG_SESSION_TYPE}} [[環境変数]]で設定されます。しかし、この環境変数は PAM セッションが開かれる'''前に'''設定しなければなりません。そのため、{{ic|~/.profile}} やラッパースクリプトを使ってこの環境変数を設定する方法ではうまく行きません (これらは両方とも PAM セッションが開かれた後に実行されます)。 |
|||
正しい方法は greeter から環境変数を送ることです (これはセッションが開かれる前に設定されます)。なので、greeter がサポートしているのであれば、適切な {{ic|1=XDG_SESSION_TYPE=xxx}} を送るだけです。 |
|||
Greeter がこれをサポートしていない場合は、auth セクションで [[環境変数#pam_env を使う|pam_env]] を使っても同じことができます。欠点は、greetd によって開始されたセッションは全て同じセッションタイプに設定されてしまうことです。場合によっては、これは問題になり得ます。 |
|||
以下は pam_env の方法で Wayland セッションを設定する例です: |
|||
{{hc|/etc/greetd/config.toml|2= |
|||
[general] |
|||
service = "greetd-spawn" |
|||
}} |
|||
{{hc|/etc/greetd/greetd-spawn.pam_env.conf|2= |
|||
XDG_SESSION_TYPE DEFAULT=wayland OVERRIDE=wayland |
|||
}} |
|||
{{hc|/etc/pam.d/greetd-spawn|2= |
|||
auth include greetd |
|||
auth required pam_env.so conffile=/etc/greetd/greetd-spawn.pam_env.conf |
|||
account include greetd |
|||
session include greetd |
|||
}} |
|||
=== マウスカーソルが表示されない === |
|||
{{ic|qtgreet}} を {{ic|wayfire}} といったコンポジタで使用している場合、マウスカーソルを正しく機能させるには {{ic|1=WLR_NO_HARDWARE_CURSORS=1}} などの環境変数を export しなければならない場合があります。解決方法としては、別の[[実行可能属性|実行可能な]]スクリプトを作成し、{{ic|/etc/greetd/config.toml}} からそのスクリプトを呼び出すというものがあります。 |
|||
{{hc|/usr/local/bin/greetd-startup.sh|2= |
|||
#!/bin/sh |
|||
export WLR_NO_HARDWARE_CURSORS=1 |
|||
exec wayfire --config /etc/qtgreet/wayfire.ini |
|||
}} |
|||
{{hc|/etc/greetd/config.toml|2= |
|||
... |
|||
[default_session] |
|||
command = "/usr/local/bin/greetd-startup.sh" |
|||
... |
|||
}} |
|||
== 参照 == |
|||
* [https://sr.ht/~kennylevinsen/greetd/ greetd のプロジェクトページ] |
|||
* [https://git.sr.ht/~kennylevinsen/greetd/ greetd のソースコード] |
|||
* [https://man.sr.ht/%7Ekennylevinsen/greetd/ greetd wiki] |
* [https://man.sr.ht/%7Ekennylevinsen/greetd/ greetd wiki] |
||
{{TranslationStatus|greetd|2024-07-23|812781}} |
|||
2024年7月23日 (火) 16:24時点における最新版
関連記事
greetd は、コンソールベースであれグラフィカルであれ、ユーザが何を起動したいのかを仮定しない、軽量で柔軟なログインマネージャデーモンです。コンソールから起動できるスクリプトやプログラムはすべて greetd で起動できるので、Wayland コンポジタに特に適しています。greeter を起動して、他のディスプレイマネージャと同様にユーザセッションを開始することもできます。
インストール
greetd パッケージか greetd-gitAUR パッケージをインストールしてください。
デフォルトの設定ファイルは /etc/greetd/config.toml です。PAM 固有のオプションは、/etc/pam.d/greetd で設定します。
Greeter
Greetd には greetd-agreety という内蔵の greeter がありますが、これは最小限の実装です。他の利用可能な greeter を使用することを検討するべきでしょう:
- greetd-agreety — デフォルト。agetty に似たテキストベースの greeter。
- dlm — fbdev の greeter。
- ddlm — fbdev の greeter。
dlmの強化/拡張バージョン。
- gtkgreet — GTK の greeter。
- ReGreet — GTK の greeter。様々なカスタムオプションが利用可能。Wayland 限定。
- wlgreet — Wayland の greeter。
- tuigreet — コンソール UI の greeter。
- qtgreet — Qt の greeter。
Greetd を開始する
greetd.service を有効化してください。これで、greetd がブート時に開始されます。
ディスプレイマネージャ#ディスプレイマネージャをロードする も参照。
Greeter の設定
greetd によって実行される greeter は、/etc/greetd/config.toml 内の default_session セクションで command オプションを使用して設定します。設定に変更が加えられていない場合は、同梱されている agreety greeter が使用されます。また、#agreety も参照してください。
デフォルトでは、greeter は greeter ユーザーとして実行されます。設定ファイル内の default_session セクションで user オプションを変更すれば、別のユーザとして実行できます。例 (another_user の部分は置き換えてください):
... [default_session] user = "another_user" ...
また、/etc/greetd ディレクトリの所有権も適切に変更してください。
agreety
これがデフォルトの greeter です。以下のように設定ファイルを変更すれば、agreety が起動されます:
... [default_session] command = "agreety --cmd $SHELL" ...
agreety は、ユーザのログイン時に任意のコマンドを実行することができます。例えば、Sway を起動するには、上の例の $SHELL を sway に置き換えてください。
gtkgreet
gtkgreet が動作するには、コンポジターが必要です。完全なエクスペリエンスを得るには、wlr-layer-shell-unstable をサポートするコンポジターが必要ですが、他のものでも動作します。そのため、sway を使うことが推奨されますが、cage のようなものを使うことも可能です。cage と sway の両方の例が以下に示されています。
gtkgreet で起動できるログイン環境を指定するには、/etc/greetd/environments にその一覧を記述してください。例:
sway bash
また、gtkgreet を呼び出す際に -c mycommand パラメータを使うこともできます (mycommand はログイン成功時に実行したいプログラムに置き換えてください。例えば、gtkgreet -c bash や gtkgreet -c sway)。以下のコンポジタの例では、必要に応じてそのようにしてください。
cage を使う
cage をインストールし、以下のように command オプションを設定してください:
... [default_session] command = "cage gtkgreet" ...
sway を使う
sway をインストールしてください。Sway を gtkgreet のコンポジタとして使用する場合、ユーザがログインしたら終了しなければなりません。そのために、特定の設定ファイル (例えば /etc/greetd/sway-config) を以下の内容で作成する必要があります:
# `-l` は layer-shell モードを有効化します。 # `swaymsg exit` が gtkgreet の後に実行されることに注意してください。 exec "gtkgreet -l; swaymsg exit" bindsym Mod4+shift+e exec swaynag \ -t warning \ -m 'What do you want to do?' \ -b 'Poweroff' 'systemctl poweroff' \ -b 'Reboot' 'systemctl reboot' include /etc/sway/config.d/*
次に、上記の設定ファイルで Sway を開始するように greetd を設定する必要があります。command オプションを以下のように設定してください:
... [default_session] command = "sway --config /etc/greetd/sway-config" ...
ReGreet
gtkgreet と同じように、ReGreet もコンポジタが必要です。例えば、Cage と Sway は両方とも gtkgreet のときのように使用することができます (ただし、gtkgreet コマンドは regreet に置き換えてください)。Sway をコンポジタとして使用する場合の設定は以下のようになるでしょう:
# `swaymsg exit` は ReGreet の後に実行されることに注意してください。 exec "regreet; swaymsg exit" bindsym Mod4+shift+e exec swaynag \ -t warning \ -m 'What do you want to do?' \ -b 'Poweroff' 'systemctl poweroff' \ -b 'Reboot' 'systemctl reboot' include /etc/sway/config.d/*
ReGreet は /usr/share/xsession ディレクトリ (X11 セッション) と /usr/share/wayland-sessions ディレクトリ (Wayland セッション) から利用可能なセッションを認識します。なので、/etc/greetd/environments にセッションのリストを記述する必要はありません。
ReGreet は TOML ファイル /etc/greetd/regreet.toml で設定することができます。サンプルのファイルは /usr/share/doc/greetd-regreet/regreet.sample.toml にあり、このファイルには利用可能な全オプションが記述されています。このファイルを /etc/greetd/regreet.toml にコピーし、好きなように変更してください。必要ない行はコメントアウトしたり削除したりしてください。無効なオプションは全て無視されます。
wlgreet
wlgreet を開始するには、wlr-layer-shell-unstable をサポートするコンポジタが必要です。#sway を使う で説明されているように gtkgreet を Sway でセットアップするときと同じ手順を行ってください。ただし、/etc/greetd/sway-config ファイルは以下のようにしてください:
exec "wlgreet --command sway; swaymsg exit" bindsym Mod4+shift+e exec swaynag \ -t warning \ -m 'What do you want to do?' \ -b 'Poweroff' 'systemctl poweroff' \ -b 'Reboot' 'systemctl reboot' include /etc/sway/config.d/*
tuigreet
tuigreet は特別な設定を必要しないので、以下のように command オプションを設定するだけで十分です:
... [default_session] command = "tuigreet --cmd sway" ...
tuigreet --help を実行すればカスタマイズオプションが表示されます。
ddlm
ddlm は特別な設定を必要しないので、以下のように command オプションを設定するだけで十分です:
... [default_session] command = "ddlm --target sway" ...
qtgreet
qtgreet を使用するには、WLR ベースのコンポジタ (wayfireAUR、sway など) が必要です。
Wayfire を使う
wayfireAUR をインストールし、以下のように command オプションを設定してください:
... [default_session] command = "wayfire --config /etc/qtgreet/wayfire.ini" ...
ここで参照されている Wayfire の設定ファイルは qtgreet に同梱されています。
Hyprland を使う
以下のように command オプションを設定してください:
... [default_session] command = "Hyprland --config /etc/greetd/hyprland.conf" ...
そして、以下のように /etc/greetd/hyprland.conf を作成してください:
/etc/greetd/hyprland.conf
exec-once = qtgreet; hyprctl dispatch exit
ヒントとテクニック
自動ログインを有効にする
特定のユーザに自動的にログインするようにしたい場合は、/etc/greetd/config.toml 内に initial_session セクションを定義する必要があります:
... [initial_session] command = "sway" user = "myuser" ...
command オプションには、任意の実行可能ファイルの名前を指定することができます。上記の例では、ブート時に Sway が myuser ユーザによって開始され、ユーザーがログアウトシた後に gtkgreet が起動されます。
greetd を使用せず、常に自動ログインを有効にしておきたい場合は、autologin を参照してください。
ローカルのプログラムを実行する
パスを ~/.profile に追加してください。さもないと、greetd によって呼び出されたデスクトップ環境がローカルのプログラムを実行できません。Greetd はユーザのホームディレクトリ内の .bashrc と .zshrc にアクセスできないので、これらのファイルにパスを指定しても意味がありません。
~/.profile
export PATH="$HOME/.local/bin:$PATH"
環境変数を設定する
選択済みのセッションに応じて環境変数を設定する greeter を使用していない限り (例えば、TUI は、セッションファイルの場所に応じて XDG_SESSION_TYPE を設定します)、デフォルトでは greetd は XDG_SESSION_TYPE や XDG_CURRENT_DESKTOP といった環境変数を設定しません。環境変数を設定する方法としては、実際のコマンドを実行する前に環境変数を設定するラッパスクリプトを使用するというものがあります。例えば、sway を起動する場合は:
/usr/local/bin/start-sway
#!/bin/sh export XDG_SESSION_TYPE=wayland export XDG_SESSION_DESKTOP=sway export XDG_CURRENT_DESKTOP=sway # Wayland stuff export QT_QPA_PLATFORM=wayland export SDL_VIDEODRIVER=wayland export _JAVA_AWT_WM_NONREPARENTING=1 exec sway "$@"
Greeter が実行するコマンドとしてこのラッパスクリプトを使用してください。例えば、gtkgreet の場合:
/etc/greetd/config.toml
... [default_session] command = "gtkgreet -c /usr/local/bin/start-sway" ...
あるいは、/etc/greetd/environments に start-sway を配置してください。
How to Set XDG_SESSION_TYPE=wayland を参照。
Logind セッションタイプを設定する
Logind セッションタイプは XDG_SESSION_TYPE 環境変数で設定されます。しかし、この環境変数は PAM セッションが開かれる前に設定しなければなりません。そのため、~/.profile やラッパースクリプトを使ってこの環境変数を設定する方法ではうまく行きません (これらは両方とも PAM セッションが開かれた後に実行されます)。
正しい方法は greeter から環境変数を送ることです (これはセッションが開かれる前に設定されます)。なので、greeter がサポートしているのであれば、適切な XDG_SESSION_TYPE=xxx を送るだけです。
Greeter がこれをサポートしていない場合は、auth セクションで pam_env を使っても同じことができます。欠点は、greetd によって開始されたセッションは全て同じセッションタイプに設定されてしまうことです。場合によっては、これは問題になり得ます。
以下は pam_env の方法で Wayland セッションを設定する例です:
/etc/greetd/config.toml
[general] service = "greetd-spawn"
/etc/greetd/greetd-spawn.pam_env.conf
XDG_SESSION_TYPE DEFAULT=wayland OVERRIDE=wayland
/etc/pam.d/greetd-spawn
auth include greetd auth required pam_env.so conffile=/etc/greetd/greetd-spawn.pam_env.conf account include greetd session include greetd
マウスカーソルが表示されない
qtgreet を wayfire といったコンポジタで使用している場合、マウスカーソルを正しく機能させるには WLR_NO_HARDWARE_CURSORS=1 などの環境変数を export しなければならない場合があります。解決方法としては、別の実行可能なスクリプトを作成し、/etc/greetd/config.toml からそのスクリプトを呼び出すというものがあります。
/usr/local/bin/greetd-startup.sh
#!/bin/sh export WLR_NO_HARDWARE_CURSORS=1 exec wayfire --config /etc/qtgreet/wayfire.ini
/etc/greetd/config.toml
... [default_session] command = "/usr/local/bin/greetd-startup.sh" ...