From d48b9d4ce5685d5297440447d9e534dbe3c3dc49 Mon Sep 17 00:00:00 2001
From: Olivier DOSSMANN <git@dossmann.net>
Date: Fri, 10 Jan 2025 18:41:18 +0100
Subject: [PATCH] fix(sway): Load .config/environment.d/envvars.conf in another
 way

---
 .config/environment.d/envvars.conf |  2 ++
 .config/sway/config                |  1 +
 .config/zsh/.zprofile              | 24 ++++++++++++++--
 .profile                           | 46 ++++++++++++++++++------------
 4 files changed, 51 insertions(+), 22 deletions(-)

diff --git a/.config/environment.d/envvars.conf b/.config/environment.d/envvars.conf
index 633417d..8166ab7 100644
--- a/.config/environment.d/envvars.conf
+++ b/.config/environment.d/envvars.conf
@@ -10,6 +10,8 @@ ELECTRON_OZONE_PLATFORM_HINT=wayland
 # Pour wayland
 SDL_VIDEODRIVER=wayland
 # Session : déjà fait par sway-systemd. Cf. https://github.com/alebastr/sway-systemd/blob/main/src/session.sh
+# Regarder dans .config/sway/config, à la fin ça importe /etc/sway/config.d/ qui contient 10-systemd-session.conf qui exécute session.sh
+# Ce qui import XDG_SESSION_TYPE, XDG_SESSION_DESKTOP, XDG_CURRENT_DESKTOP, etc.
 #export XDG_SESSION_TYPE=wayland
 #export XDG_SESSION_DESKTOP=sway
 # gammastep-indicator n'est plus utilisé dans mon Wayland
diff --git a/.config/sway/config b/.config/sway/config
index 1ebb672..9570a0c 100644
--- a/.config/sway/config
+++ b/.config/sway/config
@@ -226,6 +226,7 @@ bar 1 {
     }
 }
 
+# Va lancer notamment session.sh pour les variables XDG_SESSION et touti quanti
 include /etc/sway/config.d/*
 
 # Ajout pour Olivier
diff --git a/.config/zsh/.zprofile b/.config/zsh/.zprofile
index 8028907..b3c322e 100644
--- a/.config/zsh/.zprofile
+++ b/.config/zsh/.zprofile
@@ -1,10 +1,28 @@
+# .profile permet d'avoir
+# 1. TERMINAL (choix d'un terminal par défaut)
+# 2. BATPATH (pour la batterie)
+# 3. PATH initial # TODO: vraiment nécessaire ?
 emulate sh -c '. ~/.profile'
 
-export PYENV_ROOT="$HOME/.pyenv"
-export PATH="$PYENV_ROOT/bin:$PATH"
-eval "$(pyenv init --path)"
+# TODO: vérifier si ce code commenté fonctionne
+#export PYENV_ROOT="$HOME/.pyenv"
+#export PATH="$PYENV_ROOT/bin:$PATH"
+#eval "$(pyenv init --path)"
 
 # Start X automatically
 if systemctl -q is-active graphical.target && [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then
+  case $HOST in
+    roc | zou)
+      : # Exceptions : On ne fait rien pour ces machines qui sont sous Xorg.
+      ;;
+    *)
+      # Pour toutes les autres on charge le contenu de .config/environment.d
+      # Cf. https://wiki.archlinux.org/title/Environment_variables#Per_Wayland_session
+      # use systemd-environment-d-generator(8) to generate environment, and export those variables
+      set -o allexport
+      source <(/usr/lib/systemd/user-environment-generators/30-systemd-environment-d-generator)
+      set +o allexport
+      ;;
+  esac
   exec sway
 fi
diff --git a/.profile b/.profile
index 41286cb..a38b9ed 100644
--- a/.profile
+++ b/.profile
@@ -17,7 +17,7 @@ done
 # Pour la batterie des ordinateurs portables (~/bin/battery)
 export BATPATH="/sys/class/power_supply/BAT1"
 
-# Permit DBUS to be launched
+# Permit DBUS to be launched on i3
 if [ "$0" = "/usr/sbin/lightdm-session" -a "$DESKTOP_SESSION" = "i3" ]; then
   export $(gnome-keyring-daemon -s)
 fi
@@ -27,22 +27,30 @@ export PYENV_ROOT="$HOME/.pyenv"
 export PATH="$PYENV_ROOT/bin:$PATH"
 eval "$(pyenv init --path)"
 
-# Démarrage de l'environnement préféré
-if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then
-  case $HOST in
-    fuz | fuztest)
-      variables_file="${HOME}/.config/environment.d/envvars.conf"
-      if [[ -f "${variables_file}" ]]; then
-        # charge seulement les lignes sans "#" (non commentées)
-        for line in `cat "${variables_file}"|grep -Ev '^#'`; do
-          export "$line"
-        done
-      fi
-      exec sway
-      ;;
-    *)
-      : # on ne fait rien, car c'est .xinitrc qui lance i3
-      ;;
-  esac
-fi
+
+## ATTENTION : ce code n'est plus nécessaire pour le moment.
+## 1. C'est ZSH (.zprofile) qui va charger SWAY sur les machines Wayland
+## 2. C'est le .zprofile qui charge aussi .config/environment.d/envvars.conf
+## 3. Dans le cas de Xorg : on a pas besoin de .config/environment.d/envvars.conf
+## 4. Dans le cas de Xorg : xinitrc lance i3 # TODO: comment xinitrc se lance ? Par qui ?
+
+## Démarrage de l'environnement préféré
+#if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then
+#  case $HOST in
+#    fuz | fuztest)
+#      # Cf. https://wiki.archlinux.org/title/Environment_variables#Per_Wayland_session
+#      variables_file="${HOME}/.config/environment.d/envvars.conf"
+#      if [[ -f "${variables_file}" ]]; then
+#        # charge seulement les lignes sans "#" (non commentées)
+#        for line in `cat "${variables_file}"|grep -Ev '^#'`; do
+#          export "$line"
+#        done
+#      fi
+#      exec sway
+#      ;;
+#    *)
+#      : # on ne fait rien, car c'est .xinitrc qui lance i3
+#      ;;
+#  esac
+#fi
 # vim: ts=2 sw=2 et nu