diff --git a/aliases/xdg b/aliases/xdg
new file mode 100644
index 0000000..5d654f8
--- /dev/null
+++ b/aliases/xdg
@@ -0,0 +1,2 @@
+#!/bin/zsh
+alias adb='HOME="$XDG_DATA_HOME"/android adb'
diff --git a/env/00_xdg.zsh b/env/00_xdg.zsh
index 38e3967..6b09eb8 100644
--- a/env/00_xdg.zsh
+++ b/env/00_xdg.zsh
@@ -1,3 +1,4 @@
 XDG_CACHE_HOME=${XDG_CACHE_HOME:-${HOME}/.cache}
 XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-${HOME}/.config}
 XDG_DATA_HOME=${XDG_DATA_HOME:-${HOME}/.local/share}
+XDG_STATE_HOME=${XDG_STATE_HOME:-${HOME}/.local/state}
diff --git a/env/01_xdg-fixes.zsh b/env/01_xdg-fixes.zsh
new file mode 100644
index 0000000..595e5ea
--- /dev/null
+++ b/env/01_xdg-fixes.zsh
@@ -0,0 +1,19 @@
+export ANDROID_USER_HOME="$XDG_DATA_HOME"/android
+export ANSIBLE_HOME="$XDG_DATA_HOME"/ansible
+export BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle
+export BUNDLE_USER_CONFIG="$XDG_CONFIG_HOME"/bundle
+export BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle
+export CARGO_HOME="$XDG_DATA_HOME"/cargo
+export ELINKS_CONFDIR="$XDG_CONFIG_HOME"/elinks
+export GNUPGHOME=$XDG_CONFIG_HOME/gnupg
+export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle
+export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc
+export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history
+export SQLITE_HISTORY="$XDG_CACHE_HOME"/sqlite_history
+export TERMINFO="$XDG_DATA_HOME"/terminfo
+export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo
+export TEXMFCONFIG=$XDG_CONFIG_HOME/texlive/texmf-config
+export TEXMFHOME=$XDG_DATA_HOME/texmf
+export TEXMFVAR=$XDG_CACHE_HOME/texlive/texmf-var
+export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc
+export _JAVA_OPTIONS="-Djava.util.prefs.userRoot=$XDG_CONFIG_HOME/java"
diff --git a/zprofile b/zprofile
index 22109b2..29e991c 100644
--- a/zprofile
+++ b/zprofile
@@ -40,5 +40,6 @@ set -$shopts
 unset sh shopts
 
 if [[ $TTY == /dev/tty1 ]]; then
+	export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority
 	exec startx :1
 fi
diff --git a/zshrc b/zshrc
index c0908dd..f05b987 100644
--- a/zshrc
+++ b/zshrc
@@ -1,6 +1,12 @@
 typeset -U path
 
-HISTFILE=~/.histfile
+HISTFILE=${XDG_STATE_HOME:-$HOME/.local/state}/zsh/histfile
+if [[ ! -d ${HISTFILE:h} ]]; then
+	mkdir -p ${HISTFILE:h}
+fi
+if [[ ! -e $HISTFILE && -e ~/.histfile ]]; then
+	mv ~/.histfile $HISTFILE
+fi
 HISTSIZE=100000
 SAVEHIST=100000
 unsetopt histsavenodups