diff --git a/CHANGELOG.md b/CHANGELOG.md
index f87bd2602a277c146ee8bf935831a1f0b949255d..a134325ed43969ba6f9bec0faf43c1aebb6d7554 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
 and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
 
 ## [Unreleased]
+### Changed
+- Switched from using Fluxbox to Xfce for the window manager.
 
 ## [0.2.0] - 2018-02-26
 ### Added
diff --git a/template/config/menus/xfce-applications.menu b/template/config/menus/xfce-applications.menu
new file mode 100644
index 0000000000000000000000000000000000000000..2bbf6bd0f016e1f6b28fbd3cf5ee26ae4915bba5
--- /dev/null
+++ b/template/config/menus/xfce-applications.menu
@@ -0,0 +1,20 @@
+<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
+  "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
+
+<Menu>
+    <Name>Xfce</Name>
+
+    <DefaultAppDirs/>
+    <DefaultDirectoryDirs/>
+    <DefaultMergeDirs/>
+
+    <Include>
+        <All/>
+    </Include>
+
+    <Layout>
+        <Filename>firefox.desktop</Filename>
+        <Filename>xfce4-terminal.desktop</Filename>
+        <Filename>Thunar.desktop</Filename>
+    </Layout>
+</Menu>
diff --git a/template/config/xfce4/terminal/terminalrc b/template/config/xfce4/terminal/terminalrc
new file mode 100644
index 0000000000000000000000000000000000000000..b705be2d7657f6ec84546c9f7458ae1319891f84
--- /dev/null
+++ b/template/config/xfce4/terminal/terminalrc
@@ -0,0 +1,3 @@
+[Configuration]
+CommandLoginShell=TRUE
+FontName=DejaVu Sans Mono 11
diff --git a/template/config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/template/config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7ab1d6b1c0467cc61d65f42f7b4bdecb3aecefbf
--- /dev/null
+++ b/template/config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<channel name="xfce4-panel" version="1.0">
+  <property name="configver" type="int" value="2"/>
+  <property name="panels" type="array">
+    <value type="int" value="1"/>
+    <property name="panel-1" type="empty">
+      <property name="position" type="string" value="p=6;x=99;y=24"/>
+      <property name="position-locked" type="bool" value="true"/>
+      <property name="size" type="uint" value="48"/>
+      <property name="length" type="uint" value="100"/>
+      <property name="length-adjust" type="bool" value="false"/>
+      <property name="plugin-ids" type="array">
+        <value type="int" value="1"/>
+        <value type="int" value="3"/>
+        <value type="int" value="8"/>
+        <value type="int" value="4"/>
+        <value type="int" value="5"/>
+      </property>
+      <property name="mode" type="uint" value="0"/>
+    </property>
+  </property>
+  <property name="plugins" type="empty">
+    <property name="plugin-3" type="string" value="tasklist">
+      <property name="flat-buttons" type="bool" value="false"/>
+      <property name="show-handle" type="bool" value="true"/>
+    </property>
+    <property name="plugin-4" type="string" value="pager"/>
+    <property name="plugin-5" type="string" value="clock">
+      <property name="digital-format" type="string" value="%r"/>
+      <property name="mode" type="uint" value="2"/>
+    </property>
+    <property name="plugin-8" type="string" value="separator">
+      <property name="expand" type="bool" value="true"/>
+      <property name="style" type="uint" value="2"/>
+    </property>
+    <property name="plugin-1" type="string" value="applicationsmenu">
+      <property name="show-generic-names" type="bool" value="true"/>
+      <property name="show-menu-icons" type="bool" value="true"/>
+      <property name="button-icon" type="string" value="fedora-logo-icon"/>
+      <property name="show-tooltips" type="bool" value="true"/>
+    </property>
+  </property>
+</channel>
diff --git a/template/fluxbox.rc.erb b/template/fluxbox.rc.erb
deleted file mode 100644
index 26ee0b3b73599b686ab7b389cacd8118613d85a1..0000000000000000000000000000000000000000
--- a/template/fluxbox.rc.erb
+++ /dev/null
@@ -1,6 +0,0 @@
-session.configVersion: 13
-session.screen0.toolbar.widthPercent: 60
-session.screen0.toolbar.tools: prevworkspace, workspacename, nextworkspace, iconbar, systemtray, prevwindow, nextwindow, clock
-session.menuFile: <%= session.staged_root.join("fluxbox", "menu") %>
-session.keyFile: <%= session.staged_root.join("fluxbox", "keys") %>
-session.styleOverlay: <%= session.staged_root.join("fluxbox", "overlay") %>
diff --git a/template/fluxbox/keys b/template/fluxbox/keys
deleted file mode 100644
index bf555cc38f9f92edbb953b59ccd7046bf34945a3..0000000000000000000000000000000000000000
--- a/template/fluxbox/keys
+++ /dev/null
@@ -1,18 +0,0 @@
-# click on the desktop to get menus
-OnDesktop Mouse1 :HideMenus
-OnDesktop Mouse2 :WorkspaceMenu
-OnDesktop Mouse3 :RootMenu
-
-# left click on the titlebar to move the window
-OnTitlebar Mouse1 :MacroCmd {Raise} {Focus} {ActivateTab}
-OnTitlebar Move1  :StartMoving
-
-# right click on the titlebar for a menu of options
-OnTitlebar Mouse3 :WindowMenu
-
-# double click on the titlebar to maximize
-OnTitlebar Double Mouse1 :Maximize
-
-# resize from bottom left or right corners
-OnLeftGrip Move1 :StartResizing bottomleft
-OnRightGrip Move1 :StartResizing bottomright
diff --git a/template/fluxbox/menu b/template/fluxbox/menu
deleted file mode 100644
index 3d79c78a4abbeb3b6e2157efe8fe66c90da05fa1..0000000000000000000000000000000000000000
--- a/template/fluxbox/menu
+++ /dev/null
@@ -1,6 +0,0 @@
-[begin] (OnDemand)
-  [encoding] {UTF-8}
-    [exec] (xterm) {xterm -fa 'Monospace' -fs 10}
-    [exec] (top) {xterm -fa 'Monospace' -fs 10 -e top}
-  [endencoding]
-[end]
diff --git a/template/fluxbox/overlay b/template/fluxbox/overlay
deleted file mode 100644
index bd4eb9095d46e06aff4ac807965f006452a04cfb..0000000000000000000000000000000000000000
--- a/template/fluxbox/overlay
+++ /dev/null
@@ -1,8 +0,0 @@
-toolbar.height: 40
-toolbar.iconbar.focused.font: sans-12:bold
-toolbar.iconbar.unfocused.font: sans-12
-toolbar.clock.font: sans-12
-toolbar.workspace.font: sans-12:bold
-window.font: sans-12
-menu.title.font: sans-12
-menu.frame.font: sans-11
diff --git a/template/script.sh.erb b/template/script.sh.erb
index f9a991ab1aed2182936153a46c3169029bfa3677..3f4d585919ecde6ffb797c8fcea88314efc12954 100755
--- a/template/script.sh.erb
+++ b/template/script.sh.erb
@@ -9,22 +9,20 @@ module purge
 cd "${HOME}"
 
 #
-# Launch Fluxbox
+# Launch Xfce Window Manager and Panel
 #
 
-# Create Fluxbox root or it will override the below init file
 (
-  umask 077
-  mkdir -p "${HOME}/.fluxbox"
-)
-
-# Start the Fluxbox window manager (it likes to crash on occassion, make it
-# persistent)
-(
-until fluxbox -display "${DISPLAY}.0" -rc "<%= session.staged_root.join("fluxbox.rc") %>"; do
-    echo "Fluxbox crashed with exit code $?. Respawning..." >&2
-    sleep 1
-  done
+  export SEND_256_COLORS_TO_REMOTE=1
+  export XDG_CONFIG_HOME="<%= session.staged_root.join("config") %>"
+  export XDG_DATA_HOME="<%= session.staged_root.join("share") %>"
+  export XDG_CACHE_HOME="$(mktemp -d)"
+  module restore
+  set -x
+  xfwm4 --compositor=off --daemon --sm-client-disable
+  xsetroot -solid "#D3D3D3"
+  xfsettingsd --sm-client-disable
+  xfce4-panel --sm-client-disable
 ) &
 
 #
@@ -37,7 +35,11 @@ module load <%= context.version %>
 # Launch MATLAB
 <%- if gpu -%>
 module load intel/16.0.3 virtualgl
+module list
+set -x
 vglrun matlab -desktop -nosoftwareopengl
 <%- else -%>
+module list
+set -x
 matlab -desktop
 <%- end -%>