diff --git a/.config/X11/xprofile b/.config/X11/xprofile
index 9534c30a..f1406b9f 100755
--- a/.config/X11/xprofile
+++ b/.config/X11/xprofile
@@ -7,3 +7,4 @@ export QT_QPA_PLATFORMTHEME="gtk2"   # Have QT use gtk2 theme.
 export SUDO_ASKPASS="$dmenupasspath"
 export MOZ_USE_XINPUT2="1"                # Mozilla smooth scrolling/touchpads.
 export AWT_TOOLKIT="MToolkit wmname LG3D" #May have to install wmname
+export ERRFILE="$XDG_CACHE_HOME/X11/xsession-errors"
diff --git a/.config/lf/shortcutrc b/.config/lf/shortcutrc
index 83ddc5b6..db89df89 100644
--- a/.config/lf/shortcutrc
+++ b/.config/lf/shortcutrc
@@ -11,7 +11,7 @@ map gdm cd "/home/luca/Documents"
 map gms cd "/home/luca/Music" 
 map gpc cd "/home/luca/Pictures" 
 map gvd cd "/home/luca/Videos" 
-map gdot cd "/home/luca/.dotfiles" 
+map gdot cd "/home/luca/.local/share/stow/dots" 
 map Ebf $$EDITOR "/home/luca/.config/shell/bm-files" 
 map Ebd $$EDITOR "/home/luca/.config/shell/bm-dirs" 
 map Ecfx $$EDITOR "/home/luca/.config/x11/xresources" 
diff --git a/.config/shell/bm-dirs b/.config/shell/dir-bookmarks
similarity index 95%
rename from .config/shell/bm-dirs
rename to .config/shell/dir-bookmarks
index cce82f9c..8a65b36c 100644
--- a/.config/shell/bm-dirs
+++ b/.config/shell/dir-bookmarks
@@ -12,5 +12,4 @@ dm  ${XDG_DOCUMENTS_DIR:-$HOME/Documents}
 ms  ${XDG_MUSIC_DIR:-$HOME/Music}
 pc  ${XDG_PICTURES_DIR:-$HOME/Pictures}
 vd  ${XDG_VIDEOS_DIR:-$HOME/Videos}
-
-dot $HOME/.dotfiles
+dot $STOW_DIR/dots
diff --git a/.config/shell/bm-files b/.config/shell/file-bookmarks
similarity index 100%
rename from .config/shell/bm-files
rename to .config/shell/file-bookmarks
diff --git a/.config/zsh/profile b/.config/zsh/.zprofile
similarity index 92%
rename from .config/zsh/profile
rename to .config/zsh/.zprofile
index efd048e1..5e4a9057 100644
--- a/.config/zsh/profile
+++ b/.config/zsh/.zprofile
@@ -1,6 +1,9 @@
 #!/bin/zsh
 # profile file. Runs on login. Environmental variables are set here.
 
+# If you don't want this in your home directory, execute this command and move this file
+# echo 'export ZDOTDIR="$HOME/.config/zsh"' | sudo tee -a /etc/zsh/zshenv
+
 export EDITOR="nvim"
 export TERMINAL="kitty"
 export BROWSER="firefox"
@@ -59,7 +62,8 @@ export XDG_CONFIG_HOME="$HOME/.config"
 export XDG_DATA_HOME="$HOME/.local/share"
 export XDG_CACHE_HOME="$HOME/.cache"
 export XINITRC="$XDG_CONFIG_HOME/X11/xinitrc"
-export DOTFILES_DIR="$HOME/.dotfiles"
+export STOW_DIR="$XDG_DATA_HOME/stow"
+export DOTS_DIR="$STOW_DIR/dots"
 
 export ZSH_COMPDUMP="$XDG_CACHE_HOME/zcompdump"
 export NOTMUCH_CONFIG="$XDG_CONFIG_HOME/notmuch-config"
@@ -67,7 +71,6 @@ export GTK2_RC_FILES="$XDG_CONFIG_HOME/.config}/gtk-2.0/gtkrc-2.0"
 export LESSHISTFILE="-"
 export WGETRC="$XDG_CONFIG_HOME/wget/wgetrc"
 export INPUTRC="$XDG_CONFIG_HOME/shell/inputrc"
-export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
 export GNUPGHOME="$XDG_DATA_HOME/gnupg"
 export WINEPREFIX="$XDG_DATA_HOME/wineprefixes/default"
 export TMUX_TMPDIR="$XDG_RUNTIME_DIR"
@@ -85,6 +88,7 @@ export NODE_REPL_HISTORY="$XDG_DATA_HOME/node_repl_history"
 export CUDA_CACHE_PATH="$XDG_CACHE_HOME/nv"
 export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME/java"
 export MOZBUILD_STATE_PATH="$XDG_DATA_HOME/mozbuild"
+export W3M_DIR="$XDG_DATA_HOME"/w3m
 
 localpath="$(find -L ~/.local/bin -type d -printf %p: | sed 's/.$//')"
 export PATH="$PATH:$HOME/.local/share/npm-global/bin:$localpath"
diff --git a/.config/zsh/configs/autogenerated/hashes b/.config/zsh/configs/autogenerated/hashes
index 62133b55..f37f0c35 100644
--- a/.config/zsh/configs/autogenerated/hashes
+++ b/.config/zsh/configs/autogenerated/hashes
@@ -1,4 +1,3 @@
-# vim: filetype=zsh
 hash -d h=/home/luca 
 hash -d ch=/home/luca/.cache 
 hash -d cf=/home/luca/.config 
@@ -12,7 +11,7 @@ hash -d dm=/home/luca/Documents
 hash -d ms=/home/luca/Music 
 hash -d pc=/home/luca/Pictures 
 hash -d vd=/home/luca/Videos 
-hash -d dot=/home/luca/.dotfiles 
+hash -d dot=/home/luca/.local/share/stow/dots 
 hash -d bf=/home/luca/.config/shell/bm-files 
 hash -d bd=/home/luca/.config/shell/bm-dirs 
 hash -d cfx=/home/luca/.config/x11/xresources 
diff --git a/.config/zsh/configs/autogenerated/shortcuts b/.config/zsh/configs/autogenerated/shortcuts
index 3b29e91c..319bb55f 100644
--- a/.config/zsh/configs/autogenerated/shortcuts
+++ b/.config/zsh/configs/autogenerated/shortcuts
@@ -1,18 +1,18 @@
-# vim: filetype=zsh
-alias h="cd /home/luca && tput cuu1;tput el" \
-ch="cd /home/luca/.cache && tput cuu1;tput el" \
-cf="cd /home/luca/.config && tput cuu1;tput el" \
-dt="cd /home/luca/.local/share && tput cuu1;tput el" \
-sr="cd /home/luca/.local/src && tput cuu1;tput el" \
-it="cd /home/luca/.local/src/git && tput cuu1;tput el" \
-sc="cd /home/luca/.local/bin && tput cuu1;tput el" \
-mn="cd /mnt && tput cuu1;tput el" \
-dl="cd /home/luca/Downloads && tput cuu1;tput el" \
-dm="cd /home/luca/Documents && tput cuu1;tput el" \
-ms="cd /home/luca/Music && tput cuu1;tput el" \
-pc="cd /home/luca/Pictures && tput cuu1;tput el" \
-vd="cd /home/luca/Videos && tput cuu1;tput el" \
-dot="cd /home/luca/.dotfiles && tput cuu1;tput el" \
+# vim: filetype=sh
+alias h="cd /home/luca" \
+ch="cd /home/luca/.cache" \
+cf="cd /home/luca/.config" \
+dt="cd /home/luca/.local/share" \
+sr="cd /home/luca/.local/src" \
+it="cd /home/luca/.local/src/git" \
+sc="cd /home/luca/.local/bin" \
+mn="cd /mnt" \
+dl="cd /home/luca/Downloads" \
+dm="cd /home/luca/Documents" \
+ms="cd /home/luca/Music" \
+pc="cd /home/luca/Pictures" \
+vd="cd /home/luca/Videos" \
+dot="cd /home/luca/.local/share/stow/dots" \
 bf="$EDITOR /home/luca/.config/shell/bm-files" \
 bd="$EDITOR /home/luca/.config/shell/bm-dirs" \
 cfx="$EDITOR /home/luca/.config/x11/xresources" \
diff --git a/.gitignore b/.gitignore
index 4ed8793b..760dac61 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,5 @@
 .config/gtk-2.0/gtkfilechooser.ini
 .local/share/firefox/user.js
 .local/share/firefox/userjs_backups
+
+.local/share/fonts/.uuid
\ No newline at end of file
diff --git a/.local/bin/dotsync b/.local/bin/dotsync
index 486b7083..be6bfbc9 100755
--- a/.local/bin/dotsync
+++ b/.local/bin/dotsync
@@ -6,9 +6,9 @@ BLUE='\033[34m'
 RED='\033[31m'
 NC='\033[0m'
 
-printf "%b" "$BOLD${BLUE}Changing directory to $DOTFILES_DIR$NC\n"
-if ! cd "$DOTFILES_DIR"; then
-    printf "%b" "${RED}Could not CD into $DOTFILES_DIR$NC\n"
+printf "%b" "$BOLD${BLUE}Changing directory to $DOTS_DIR$NC\n"
+if ! cd "$DOTS_DIR"; then
+    printf "%b" "${RED}Could not CD into $DOTS_DIR$NC\n"
     exit
 fi
 printf "\n"
@@ -35,18 +35,18 @@ unmerged_files=$(git diff --name-only --diff-filter=U)
 if [ -n "$unmerged_files" ]; then
     printf "%b" "${RED}The following files have merge conflicts after popping the stash:$NC\n"
     printf "\n"
-    printf "$unmerged_files\n"
+    printf "%s" "$unmerged_files\n"
 else
-    stow --dotfiles -t "$HOME" . || printf "%b" "${RED}Failed to run stow!$NC\n"
+    stow -R -t "$HOME" dots || printf "%b" "${RED}Failed to run stow!$NC\n"
 fi
 
 printf "%b" "$BOLD${BLUE}Generating firefox profiles...$NC\n\n"
-"$DOTFILES_DIR/.mozilla/firefox/generate.sh"
+"$DOTS_DIR/.mozilla/firefox/generate.sh"
 printf "\n"
 
-printf "${BOLD}Recompile/Install src files? ${GREEN}Y/N?$NC\n"
-read ans
-[ "$ans" = "y" ] && for f in "$DOTFILES_DIR"/.local/src/*; do
+printf "%b" "${BOLD}Recompile/Install src files? ${GREEN}Y/N?$NC\n"
+read -r ans
+[ "$ans" = "y" ] && for f in "$DOTS_DIR"/.local/src/*; do
     if ! cd "$f"; then
         printf "%b" "${RED}Could not CD into $f$NC\n"
         exit
diff --git a/.local/bin/shortcuts b/.local/bin/shortcuts
index 61cfd0a3..1a0ced85 100755
--- a/.local/bin/shortcuts
+++ b/.local/bin/shortcuts
@@ -1,8 +1,8 @@
 #!/bin/sh
 
 # Inputs
-bmdirs="$XDG_DATA_HOME/bookmarks/dirs"
-bmfiles="$XDG_DATA_HOME/bookmarks/files"
+bmdirs="$XDG_CONFIG_HOME/shell/dir-bookmarks"
+bmfiles="$XDG_CONFIG_HOME/shell/file-bookmarks"
 
 # Outputs
 shell_shortcuts="$ZDOTDIR/configs/autogenerated/shortcuts"
diff --git a/.local/share/bookmarks/dirs b/.local/share/bookmarks/dirs
deleted file mode 100644
index 801ba182..00000000
--- a/.local/share/bookmarks/dirs
+++ /dev/null
@@ -1,14 +0,0 @@
-h   $HOME
-ch  $XDG_CACHE_HOME
-cf  $XDG_CONFIG_HOME
-dt  $XDG_DATA_HOME
-sr  $HOME/.local/src
-it  $HOME/.local/src/git
-sc  $HOME/.local/bin
-mn  /mnt
-dl  $XDG_DOWNLOAD_DIR
-dm  $XDG_DOCUMENTS_DIR
-ms  $XDG_MUSIC_DIR
-pc  $XDG_PICTURES_DIR
-vd  $XDG_VIDEOS_DIR
-dot $HOME/.dotfiles
diff --git a/.local/share/bookmarks/files b/.local/share/bookmarks/files
deleted file mode 100644
index f4c74140..00000000
--- a/.local/share/bookmarks/files
+++ /dev/null
@@ -1,13 +0,0 @@
-bf  $XDG_CONFIG_HOME/shell/bm-files
-bd  $XDG_CONFIG_HOME/shell/bm-dirs
-cfx $XDG_CONFIG_HOME/x11/xresources
-cfX $XDG_CONFIG_HOME/x11/xprofile
-cfb $HOME/.local/src/dwmblocks/config.h
-cfk $XDG_CONFIG_HOME/kitty/kitty.conf
-cfK $XDG_CONFIG_HOME/kitty/kittyfullscreen.conf
-cfv $XDG_CONFIG_HOME/lvim/config.lua
-cfz $ZDOTDIR/.zshrc
-cfa $XDG_CONFIG_HOME/shell/aliasrc
-cfp $XDG_CONFIG_HOME/shell/profile
-cfl $XDG_CONFIG_HOME/lf/lfrc
-cfL $XDG_CONFIG_HOME/lf/preview
diff --git a/.zprofile b/.zprofile
deleted file mode 120000
index 5db19f9b..00000000
--- a/.zprofile
+++ /dev/null
@@ -1 +0,0 @@
-.config/zsh/profile
\ No newline at end of file