「Greetd」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
 
(3人の利用者による、間の10版が非表示)
1行目: 1行目:
  +
{{Lowercase title}}
 
[[Category:ディスプレイマネージャ]]
 
[[Category:ディスプレイマネージャ]]
[[en:Greetd]]
+
[[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://wiki.archlinux.jp/index.php/%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%A3 login manager] デーモンです。コンソールから起動できるスクリプトやプログラムはすべて greetd で起動できるので、 [[Wayland#Compositors|Wayland Compositors]] に特に適しています。[[#Greeters|greeter]] を起動して、他のディスプレイマネージャと同様にユーザセッションを開始することもできます。
+
[https://git.sr.ht/~kennylevinsen/greetd greetd] は、コンソールベースであれグラフィカルであれ、ユーザが何を起動したいのかを仮定しない、軽量で柔軟な[[ディスプレイマネージャ|ログインマネージャ]]デーモンです。コンソールから起動できるスクリプトやプログラムはすべて greetd で起動できるので、[[Wayland#コンポジタ|Wayland コンポジタ]]に特に適しています。[[#Greeter|greeter]] を起動して、他のディスプレイマネージャと同様にユーザセッションを開始することもできます。
   
 
== インストール ==
 
== インストール ==
   
{{AUR|greetd}} または {{AUR|greetd-git}} パッケージを [[インストール]] ます
+
{{Pkg|greetd}} パッケージか {{AUR|greetd-git}} パッケージを[[インストール]]してください
   
  +
デフォルトの設定ファイルは {{ic|/etc/greetd/config.toml}} です。[[PAM]] 固有のオプションは、{{ic|/etc/pam.d/greetd}} で設定します。
== 設定 ==
 
   
  +
=== Greeter ===
デフォルトの構成ファイルは {{ic|/etc/greetd/config.toml}} です。[[PAM]] 固有のオプションは、 {{ic|/etc/pam.d/greetd}} で設定する必要があります。
 
   
  +
Greetd には greetd-agreety という内蔵の greeter がありますが、これは最小限の実装です。他の利用可能な greeter を使用することを検討するべきでしょう:
=== Greeters ===
 
   
  +
* {{App|greetd-agreety|デフォルト。[[agetty]] に似たテキストベースの greeter。|https://git.sr.ht/~kennylevinsen/greetd|{{Pkg|greetd-agreety}}}}
ユーザーセッションを開始できるようにするために、GreetD は Greeter を起動できます。 いくつかの Greeters が利用可能です:
 
  +
* {{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}}}}
  +
* {{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}}}}
  +
* {{App|wlgreet|[[Wayland]] の greeter。|https://git.sr.ht/~kennylevinsen/wlgreet|{{AUR|greetd-wlgreet}}, {{AUR|greetd-wlgreet-git}}}}
  +
* {{App|tuigreet|コンソール UI の greeter。|https://github.com/apognu/tuigreet|{{Pkg|greetd-tuigreet}}}}
  +
* {{App|qtgreet|[[Qt]] の greeter。|https://gitlab.com/marcusbritanicus/QtGreet|{{AUR|greetd-qtgreet}}}}
   
  +
== Greetd を開始する ==
* {{ic|agreety}} は、 {{AUR|greetd}}/{{AUR|greetd-git}} パッケージで提供されている [[agetty]] に似たテキストベースの Greeter です。
 
* [https://git.sr.ht/~kennylevinsen/gtkgreet gtkgreet] ({{AUR|greet-gtkgreet}}/{{AUR|greet-gtkgreet-git}}で提供) [[GTK]] Greeter。
 
* [https://git.sr.ht/~kennylevinsen/wlgreet wlgreet] ({{AUR|greet-wlgreet}}/{{AUR|greet-wlgreet-git}} によって提供) は、 [[Wayland]] Greeterです。
 
* [https://git.sr.ht/~kennylevinsen/dlm dlm] ({{AUR|greetd-dlm-git}} で提供) は fbdev を使用するシンプルな greeter です。
 
* コンソール UI Greeter の [https://github.com/apognu/tuigreet tuigreet] ({{AUR|greetd-tuigreet}} によって提供)
 
   
  +
{{ic|greetd.service}} を[[有効化]]してください。これで、greetd がブート時に開始されます。
デフォルトでは、 greeter は {{ic|greeter}} ユーザーとして実行されます。これを変更するには、構成ファイルの {{ic|default_session}} セクションの {{ic|user}} オプションを編集し、''another_user'' を選択したユーザーに置き換えます。
 
   
  +
[[ディスプレイマネージャ#ディスプレイマネージャをロードする]] も参照。
...
 
user = "another_user"
 
...
 
   
  +
== Greeter の設定 ==
{{ic|/etc/greetd}}ディレクトリの [https://wiki.archlinux.jp/index.php/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%83%91%E3%83%BC%E3%83%9F%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E5%B1%9E%E6%80%A7 所有者を変更] が適切に設定されていることを確認します。
 
   
  +
greetd によって実行される greeter は、{{ic|/etc/greetd/config.toml}} 内の {{ic|default_session}} セクションで {{ic|command}} オプションを使用して設定します。設定に変更が加えられていない場合は、同梱されている {{ic|agreety}} greeter が使用されます。また、[[#agreety]] も参照してください。
==== agreety ====
 
   
  +
デフォルトでは、greeter は {{ic|greeter}} ユーザーとして実行されます。設定ファイル内の {{ic|default_session}} セクションで {{ic|user}} オプションを変更すれば、別のユーザとして実行できます。例 (''another_user'' の部分は置き換えてください):
In order to launch a normal console session with agreety, edit the configuration file as follows:
 
...
 
[default_session]
 
command = "agreety --cmd $SHELL"
 
...
 
   
  +
...
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}}.
 
  +
[default_session]
  +
user = "another_user"
  +
...
   
  +
また、{{ic|/etc/greetd}} ディレクトリの[[所有権]]も適切に変更してください。
==== gtkgreet ====
 
   
  +
=== agreety ===
In order to run, gtkgreet needs a compositor. It is recommended to use Sway, but {{pkg|cage}} can also be used. Make sure the compositor you would like to use is [[install]]ed before starting greetd.
 
If you want to use cage, your {{ic|[default_session]}} section should be:
 
...
 
[default_session]
 
command = "cage gtkgreet"
 
...
 
   
  +
これがデフォルトの greeter です。以下のように設定ファイルを変更すれば、agreety が起動されます:
If you want to use Sway, the greeter must be terminated once the user logs in. For that purpose, a specific configuration file must be created for Sway, for example in {{ic|/etc/greetd/sway-config}}, with the following content:
 
# `-l` activates layer-shell mode. Notice that `swaymsg exit` will run after 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/*
 
   
  +
...
Then, gtkgreeter must be set to start Sway with the configuration file above:
 
  +
[default_session]
...
 
  +
command = "agreety --cmd $SHELL"
[default_session]
 
  +
...
command = "sway --config /etc/greetd/sway-config"
 
...
 
   
  +
agreety は、ユーザのログイン時に任意のコマンドを実行することができます。例えば、[[Sway]] を起動するには、上の例の {{ic|$SHELL}} を {{ic|sway}} に置き換えてください。
In order to specify which login environments can be started by gtkgreet, list them in {{ic|/etc/greetd/environments}}. For example:
 
sway
 
bash
 
   
  +
=== gtkgreet ===
Instead, you can also invoke gtkgreet with the {{ic|-c ''mycommand''}} parameter, replacing ''mycommand'' with the desired program (for example, {{ic|bash}} or {{ic|sway}}) either in {{ic|/etc/greetd/config.toml}}, if you use Cage, or in {{ic|/etc/greetd/sway-config}}, if you use Sway.
 
   
  +
gtkgreet が動作するには、コンポジターが必要です。完全なエクスペリエンスを得るには、{{ic|wlr-layer-shell-unstable}} をサポートするコンポジターが必要ですが、他のものでも動作します。そのため、{{pkg|sway}} を使うことが推奨されますが、{{pkg|cage}} のようなものを使うことも可能です。cage と sway の両方の例が以下に示されています。
==== wlgreet ====
 
   
  +
gtkgreet で起動できるログイン環境を指定するには、{{ic|/etc/greetd/environments}} にその一覧を記述してください。例:
In order for greetd to start wlgreet, follow the steps required to set up gtkgreet with Sway as [[#gtkgreet|described above]] with the following {{ic|/etc/greetd/sway-config}} instead:
 
  +
exec "wlgreet --command sway; swaymsg exit"
 
  +
sway
 
  +
bash
bindsym Mod4+shift+e exec swaynag \
 
  +
-t warning \
 
  +
また、gtkgreet を呼び出す際に {{ic|-c ''mycommand''}} パラメータを使うこともできます (''mycommand'' はログイン成功時に実行したいプログラムに置き換えてください。例えば、{{ic|gtkgreet -c bash}} や {{ic|gtkgreet -c sway}})。以下のコンポジタの例では、必要に応じてそのようにしてください。
-m 'What do you want to do?' \
 
  +
-b 'Poweroff' 'systemctl poweroff' \
 
  +
==== cage を使う ====
-b 'Reboot' 'systemctl reboot'
 
  +
 
  +
{{Pkg|cage}} を[[インストール]]し、以下のように {{ic|command}} オプションを設定してください:
include /etc/sway/config.d/*
 
  +
  +
...
  +
[default_session]
  +
command = "cage gtkgreet"
  +
...
  +
  +
==== sway を使う ====
  +
  +
{{Pkg|sway}} を[[インストール]]してください。[[Sway]] を gtkgreet のコンポジタとして使用する場合、ユーザがログインしたら終了しなければなりません。そのために、特定の設定ファイル (例えば {{ic|/etc/greetd/sway-config}}) を以下の内容で作成する必要があります:
  +
  +
{{bc|
  +
# `-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 を設定する必要があります。{{ic|command}} オプションを以下のように設定してください:
  +
  +
...
  +
[default_session]
  +
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 を開始するには、{{ic|wlr-layer-shell-unstable}} をサポートするコンポジタが必要です。[[#sway を使う]] で説明されているように gtkgreet を Sway でセットアップするときと同じ手順を行ってください。ただし、{{ic|/etc/greetd/sway-config}} ファイルは以下のようにしてください:
  +
  +
{{bc|
  +
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 ===
   
  +
tuigreet は特別な設定を必要しないので、以下のように {{ic|command}} オプションを設定するだけで十分です:
tuigreet does not require any special setup, just refer to it in {{ic|/etc/greetd/config.toml}}:
 
   
 
...
 
...
99行目: 149行目:
 
...
 
...
   
{{ic|tuigreet --help}} will display customization options.
+
{{ic|tuigreet --help}} を実行すればカスタマイズオプションが表示されます。
   
=== Autologin ===
+
=== ddlm ===
If you want a user to be logged in automatically, an {{ic|initial session}} must be defined in the configuration file:
 
   
  +
ddlm は特別な設定を必要しないので、以下のように {{ic|command}} オプションを設定するだけで十分です:
[default_session]
 
command = "cage gtkgreet"
 
 
[initial_session]
 
command = "sway"
 
user = "myuser"
 
   
  +
...
The ''command'' option may contain the name of any executable file.
 
  +
[default_session]
In the example above, Sway will be started by ''myuser'' at boot and gtkgreet will be launched after the user logs out.
 
  +
command = "ddlm --target sway"
  +
...
   
  +
=== qtgreet ===
If you don't want to use greetd and always want autologin to be enabled, see [https://git.sr.ht/~kennylevinsen/autologin autologin].
 
   
  +
qtgreet を使用するには、WLR ベースのコンポジタ ({{AUR|wayfire}}、{{Pkg|sway}} など) が必要です。
== Starting greetd at boot ==
 
   
  +
==== Wayfire を使う ====
[[Enable]] {{ic|greetd.service}} for greetd to be started at boot.
 
   
  +
{{AUR|wayfire}} を[[インストール]]し、以下のように {{ic|command}} オプションを設定してください:
== See also ==
 
   
  +
...
* [https://git.sr.ht/~kennylevinsen/greetd/ greetd project page]
 
  +
[default_session]
  +
command = "wayfire --config /etc/qtgreet/wayfire.ini"
  +
...
  +
  +
ここで参照されている Wayfire の設定ファイルは qtgreet に同梱されています。
  +
  +
==== Hyprland を使う ====
  +
  +
以下のように {{ic|command}} オプションを設定してください:
  +
  +
...
  +
[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}} セクションを定義する必要があります:
  +
  +
...
  +
[initial_session]
  +
command = "sway"
  +
user = "''myuser''"
  +
...
  +
  +
{{ic|command}} オプションには、任意の実行可能ファイルの名前を指定することができます。上記の例では、ブート時に Sway が {{ic|''myuser''}} ユーザによって開始され、ユーザーがログアウトシた後に ''gtkgreet'' が起動されます。
  +
  +
''greetd'' を使用せず、常に自動ログインを有効にしておきたい場合は、[https://git.sr.ht/~kennylevinsen/autologin autologin] を参照してください。
  +
  +
=== ローカルのプログラムを実行する ===
  +
  +
パスを {{ic|~/.profile}} に追加してください。さもないと、greetd によって呼び出されたデスクトップ環境がローカルのプログラムを実行できません。Greetd はユーザのホームディレクトリ内の {{ic|.bashrc}} と {{ic|.zshrc}} にアクセスできないので、これらのファイルにパスを指定しても意味がありません。
  +
  +
{{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。
https://git.sr.ht/~kennylevinsen/greetd || greetd-agreety
  • dlm — fbdev の greeter。
https://git.sr.ht/~kennylevinsen/dlm || greetd-dlm-gitAUR
  • ddlm — fbdev の greeter。dlm の強化/拡張バージョン。
https://github.com/deathowl/ddlm || greetd-ddlm-gitAUR
  • gtkgreetGTK の greeter。
https://git.sr.ht/~kennylevinsen/gtkgreet || greetd-gtkgreet, greetd-gtkgreet-gitAUR
  • ReGreetGTK の greeter。様々なカスタムオプションが利用可能。Wayland 限定。
https://github.com/rharish101/ReGreet || greetd-regreet, greetd-regreet-gitAUR
https://git.sr.ht/~kennylevinsen/wlgreet || greetd-wlgreetAUR, greetd-wlgreet-gitAUR
  • tuigreet — コンソール UI の greeter。
https://github.com/apognu/tuigreet || greetd-tuigreet
  • qtgreetQt の greeter。
https://gitlab.com/marcusbritanicus/QtGreet || greetd-qtgreetAUR

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 を起動するには、上の例の $SHELLsway に置き換えてください。

gtkgreet

gtkgreet が動作するには、コンポジターが必要です。完全なエクスペリエンスを得るには、wlr-layer-shell-unstable をサポートするコンポジターが必要ですが、他のものでも動作します。そのため、sway を使うことが推奨されますが、cage のようなものを使うことも可能です。cage と sway の両方の例が以下に示されています。

gtkgreet で起動できるログイン環境を指定するには、/etc/greetd/environments にその一覧を記述してください。例:

sway
bash

また、gtkgreet を呼び出す際に -c mycommand パラメータを使うこともできます (mycommand はログイン成功時に実行したいプログラムに置き換えてください。例えば、gtkgreet -c bashgtkgreet -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 ベースのコンポジタ (wayfireAURsway など) が必要です。

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/environmentsstart-sway を配置してください。

How to Set XDG_SESSION_TYPE=wayland を参照。

Logind セッションタイプを設定する

ノート: これは GNOME を Wayland で正常に動作させるために必要です。

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

マウスカーソルが表示されない

qtgreetwayfire といったコンポジタで使用している場合、マウスカーソルを正しく機能させるには 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"
...

参照

翻訳ステータス: このページは en:greetd の翻訳バージョンです。最後の翻訳日は 2024-07-23 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。