お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2025-05-31 21:44:55

gaziroh
新しいメンバ
登録日: 2016-04-28

GUI 環境でのログイン時に読み込まれる設定

Ubuntu 24.04 を PC にインストールして使っています。

日本語の入力でいまひとつピンとこなかったので、ibus を fcitx5 に変更しました。Ubuntu 24.04 上での fcitx5 の話はいくつかブログ等が見つかり、以下の設定を $HOME/.profile でしておけというのを見て、設定したところ順調に使えていました。

    export GTK_IM_MODULE=fcitx
    export QT_IM_MODULE=fcitx
    export XMODIFIERS="@im=fcitx"

次に、zsh をインストールしてログインシェルを zsh に変更したところ、GNOME が起動しても fcitx5 が起動しない状態になりました。画面左下の Ubuntu マークをクリックして表示される fcitx5 をクリックすると起動するのですが、これまでは起動していたのに起動しなくなったという状態がおかしいと思うのですが、検索しても Startup Application で fcitx5 を起動させるといったバッドノウハウのような解決法がほとんどでした。最終的には /etc/xdg/autostart/im-launch.desktop を修正して起動するようになりました。

で、ここから疑問点なんですが、Ubuntu が起動して GUI のログイン画面が出てきますが(これは今もディスプレイマネージャと呼ばれているのでしょうか?)、ここでログインしたときに $HOME/.profile って読み込まれるのでしょうか?
昔、ワークステーションを使っていたときは俗に「黒い画面」と呼ばれる画面になっていて、そこでログインするとログインシェルが起動され $HOME/.profile が読まれる。startx を実行すると X が起動する($HOME/.profile で読まれて設定された環境変数も当然引き継いでいる)みたいな感じでした。ディスプレイマネージャを使っているとき、普通に Ubuntu を起動して(GUI で)ログインしたときに $HOME/.profile を読んでくれないと(例えば Ubuntu で)ログイン時に起動するものに環境変数で情報を伝えるのが難しいから、なんらかの方法を取っているのだと思いますが…

#$HOME/.profile って「sh とかがログインシェルのときに読むファイル」だと思うんで、これを使っているってのもよくわからんのですが。

XDG とかいろいろな仕組みがあるみたいですが、Ubuntu ではこうなっているというのが知りたいです。「ここに書いてある」みたいな情報でもあればありがたいです。

オフライン

 

#2 2025-06-02 15:43:02

elliptic
メンバ
登録日: 2020-03-05

Re: GUI 環境でのログイン時に読み込まれる設定

fcitx5をインストールした時に 開始用ファイル/etc/profile.d/im-config_wayland.sh が配置されます。
bashがログインシェルとして起動したときに /etc/profileを通してここが実行されます。

#1 gaziroh による投稿:

次に、zsh をインストールしてログインシェルを zsh に変更したところ、GNOME が起動しても fcitx5 が起動しない状態になりました。

ログインシェルがzshの時は/etc/profileを読み込みません。
代わりに /etc/zsh/zprofileを読み込みます。(Ubuntuの場合)
bashの場合と同様に働かせたい時は /etc/zsh/zprofileに

コード:

emulate sh -c 'source /etc/profile'

の1行を書き足すとよいです。

#1 gaziroh による投稿:

Ubuntu が起動して GUI のログイン画面が出てきますが(これは今もディスプレイマネージャと呼ばれているのでしょうか?)

はい。
Ubuntu desktopはGDMという名のディスプレイマネージャを使ってます。

#1 gaziroh による投稿:

普通に Ubuntu を起動して(GUI で)ログインしたときに $HOME/.profile を読んでくれないと(例えば Ubuntu で)ログイン時に起動するものに環境変数で情報を伝えるのが難しいから、なんらかの方法を取っているのだと思いますが…

$HOME/.profileが決め打ちで固定されているわけではなく、ログインシェルの動きにまかされています。
zshなら$HOME/.zprofileを読みます。
ログインシェルを走らせるカラクリはディスプレイマネージャではなく、gnome-sessionスクリプトにあるようです。
↓のブログの後半に書いてありました。
zshの設定ファイルが読み込まれるタイミング - Magnolia Tech
https://blog.magnolia.tech/entry/2025/02/11/210905

https://github.com/GNOME/gnome-session/ … session.in

オフライン

 

#3 2025-06-02 23:00:11

Beats
メンバ
登録日: 2015-03-14

Re: GUI 環境でのログイン時に読み込まれる設定

Ubuntu の作法がどうなのか詳しくないので少しオフトピックになるかもしれませんが、わたしは /etc/environment に環境変数を書き込んだりすることが多いです。

Fcitx5のWikiによるとこう述べられています。

Due to the transition phase in a lot of different places, there is no perfect solution that works for every one.

https://fcitx-im.org/wiki/Setup_Fcitx_5#Environment_variables

オフライン

 

#4 2025-06-03 08:15:41

gaziroh
新しいメンバ
登録日: 2016-04-28

Re: GUI 環境でのログイン時に読み込まれる設定

返信、ありがとうございます。

以前、fcitx5 を入れても、環境変数 GTK_IM_MODULE, QT_IM_MODULE, XMODIFIERS が設定されないという話を見たことがあったので、~/.profile に入れていましたが、設定しないようにして確認してみました。結果としては ~/.profile での設定が無くとも環境変数は期待したように設定されていました。ということで、現在、~/.profile で前記の環境変数は設定していません。

] ログインシェルを走らせるカラクリはディスプレイマネージャではなく、gnome-sessionスクリプトにあるようです。

ログインシェルを /bin/bash にしたとき(`chsh -s /bin/bash` したとき)には ~/.profile が、/bin/zsh にしたときには ~/.zprofile が読み込まれているのを確認しました。ディスプレイマネージャは教えていただいたブログにかかれているように(というか、GNOME Github Mirror のコードにあるように) ログインシェル経由でセションを開始しているんですね。

] わたしは /etc/environment に環境変数を書き込んだりすることが多いです。

システムワイドに設定するなら、こちらで設定するのが確実という感じがします。
今どき、複数人でログインして使うなんてないだろうから、この方法も全然アリだなと思いました。

なんかモヤモヤしていたものが解決され嬉しいです。
ありがとうございました。

オフライン

 

Board footer

Powered by FluxBB