diff --git a/app/Documents.hs b/app/Documents.hs
--- a/app/Documents.hs
+++ b/app/Documents.hs
@@ -18,6 +18,7 @@
 import Monomer
 import Monomer.Hagrid
 import System.Directory (doesDirectoryExist, getDirectoryContents)
+import Util (getXdgDataDir)
 
 data DocumentsModel = DocumentsModel
   { portalClient :: Client,
@@ -65,7 +66,7 @@
         [childSpacing]
         [ button "Open File" OpenFile,
           button "Open Directory" OpenDirectory,
-          button "Add File (~/.var/app/$appId/data/hello.txt)" AddFile,
+          button "Add File from $XDG_DATA_HOME" AddFile,
           button "Delete Selected" DeleteSelectedDocuments
             `nodeEnabled` (Seq.filter (.selected) model.documents /= mempty)
         ],
@@ -126,7 +127,7 @@
     ]
   AddFile ->
     [ Producer $ \emit -> do
-        filePath <- (<> "/hello.txt") <$> Portal.getXdgDataHome
+        filePath <- (<> "/hello.txt") <$> getXdgDataDir
         writeFile filePath "Hello!"
         catchErrors "Add File Failed" emit $ do
           void (Documents.add model.portalClient (FileSpecPath filePath) True True)
diff --git a/app/OpenURI.hs b/app/OpenURI.hs
--- a/app/OpenURI.hs
+++ b/app/OpenURI.hs
@@ -13,6 +13,7 @@
 import System.Directory (createDirectoryIfMissing)
 import Text.URI (URI, render)
 import Text.URI.QQ (uri)
+import Util (getXdgDataDir)
 
 newtype OpenURIModel = OpenURIModel
   { portalClient :: Client
@@ -58,14 +59,14 @@
   OpenFile ->
     [ Producer $ \emit -> do
         catchErrors "Open File Failed" emit $ do
-          filePath <- (<> "/hello.txt") <$> Portal.getXdgDataHome
+          filePath <- (<> "/hello.txt") <$> getXdgDataDir
           writeFile filePath "Hello!"
           void $ OpenURI.openFile model.portalClient (OpenURI.openFileOptions (FileSpecPath filePath))
     ]
   OpenDirectory ->
     [ Producer $ \emit -> do
         catchErrors "Open Directory Failed" emit $ do
-          dirPath <- (<> "/hello-directory") <$> Portal.getXdgDataHome
+          dirPath <- (<> "/hello-directory") <$> getXdgDataDir
           let filePath = dirPath <> "/hello.txt"
           createDirectoryIfMissing True dirPath
           writeFile filePath "Hello!"
diff --git a/app/Util.hs b/app/Util.hs
new file mode 100644
--- /dev/null
+++ b/app/Util.hs
@@ -0,0 +1,9 @@
+module Util (getXdgDataDir) where
+
+import System.Directory (XdgDirectory (..), createDirectoryIfMissing, getXdgDirectory)
+
+getXdgDataDir :: IO FilePath
+getXdgDataDir = do
+  dir <- getXdgDirectory XdgData "monomer-flatpak-example"
+  createDirectoryIfMissing True dir
+  pure dir
diff --git a/monomer-flatpak-example.cabal b/monomer-flatpak-example.cabal
--- a/monomer-flatpak-example.cabal
+++ b/monomer-flatpak-example.cabal
@@ -1,6 +1,6 @@
 cabal-version:      1.12
 name:               monomer-flatpak-example
-version:            0.0.13.2
+version:            0.0.14.0
 license:            MIT
 license-file:       LICENSE
 maintainer:         garethdanielsmith@gmail.com
@@ -38,6 +38,7 @@
         Documents
         OpenURI
         PipeWire
+        Util
         Paths_monomer_flatpak_example
 
     default-language:   Haskell2010
@@ -60,7 +61,7 @@
         containers >=0.6.7 && <0.7,
         data-default-class >=0.1.2.0 && <0.2,
         dbus >=1.3.1 && <1.4,
-        desktop-portal >=0.3.2.0 && <0.4,
+        desktop-portal >=0.4 && <0.5,
         directory >=1.3.7.1 && <1.4,
         modern-uri >=0.3.6.1 && <0.4,
         monomer >=1.5.1.0 && <1.6,
