diff --git a/README.md b/README.md
index a0f8141..e593d38 100644
--- a/README.md
+++ b/README.md
@@ -1,16 +1,16 @@
# Aporia
-Aporia is a login manager that displays ascii art. It supports x11 and wayland sessions.
+Aporia is a login manager that displays ascii art. It supports x11 and wayland sessions, and the [XDG base directory specification](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html).
Only systemd is supported.
-## Installtion
+## Compilation & Installtion
Install the dependencies:
- Go compiler
- gcc
-- pam (libpam-dev on ubuntu)
+- pam (libpam-dev on debian based distros)
Run the install.sh script as root.
```sh
@@ -68,15 +68,13 @@ font and all font sizes available on your computer.
Why does my ascii art show up as diamonds?
-
-Some terminal fonts do not support certain braille characters. Using a different ascii art generator will likely
-fix your problem.
+Some terminal fonts do not support braille characters. Using an ascii art generator that does not output braille characters will fix your problem.
Is aporia production ready?
-There is a bug where somethimes the window manager will refuse to launch. I am looking into this.
+I daily drive aporia with no issues.
diff --git a/login/env.go b/login/env.go
index 8671c7a..f0685d7 100644
--- a/login/env.go
+++ b/login/env.go
@@ -63,15 +63,22 @@ func makeEnv(pam_handle *C.struct_pam_handle, pwnam *C.struct_passwd, desktopNam
setEnv("PATH", "/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin")
- // pam_systemd options
+ // XDG Session environment.
+ // See: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
setEnv("XDG_SESSION_TYPE", sessionType)
setEnv("XDG_SESSION_DESKTOP", desktopName)
setEnv("XDG_SESSION_DESKTOP", desktopName)
setEnv("XDG_SESSION_CLASS", "user")
+
+ setEnv("XDG_CONFIG_HOME", fmt.Sprint(homeDir, "/.config"))
+ setEnv("XDG_CACHE_HOME", fmt.Sprint(homeDir, "/.cache"))
+ setEnv("XDG_DATA_HOME", fmt.Sprint(homeDir, "/.local/share"))
+ setEnv("XDG_STATE_HOME", fmt.Sprint(homeDir, "/.local/state"))
setEnv("XDG_RUNTIME_DIR", user)
- // setEnv("XDG_SESSION_ID", "1")
- // setEnv("XDG_SEAT", "seat0")
- // setEnv("XDG_VTNR", "1")
+
+ // System Directories
+ setEnv("XDG_DATA_DIRS", "/usr/local/share:/usr/share")
+ setEnv("XDG_CONFIG_DIRS", "/etc/xdg")
os.Chown(user, int(pwnam.pw_uid), int(pwnam.pw_gid))