diff --git a/lib/System/Argv0.hs b/lib/System/Argv0.hs
--- a/lib/System/Argv0.hs
+++ b/lib/System/Argv0.hs
@@ -7,6 +7,8 @@
 
 import           Prelude hiding (FilePath)
 
+import qualified Data.ByteString as Bytes
+import qualified Data.Text as Text
 import           Foreign
 import           Foreign.C
 #if defined(mingw32_HOST_OS) && __GLASGOW_HASKELL__ >= 702
@@ -14,7 +16,8 @@
 #endif
 
 import           Filesystem.Path (FilePath)
-import           Filesystem.Path.CurrentOS (decodeString)
+import           Filesystem.Path.CurrentOS ()
+import           Filesystem.Path.Rules (decode, posix, windows)
 
 -- | Get @argv[0]@ as a 'FilePath'. This is how the program was invoked, and
 -- might not correspond to any actual file.
@@ -27,7 +30,7 @@
 getArgv0 = do
 	m_argv0 <- getWin32ProgArgv0
 	argv0 <- maybe (fmap head getFullArgs) return m_argv0
-	return (decodeString argv0)
+	return (decode windows (Text.pack argv0))
 
 getWin32ProgArgv0 :: IO (Maybe String)
 getWin32ProgArgv0 =
@@ -52,10 +55,11 @@
 		argv <- peek p_argv
 #ifdef mingw32_HOST_OS
 		argv0 <- peekCString =<< peekElemOff argv 0
+		return (decode windows (Text.pack argv0))
 #else
-		argv0 <- peekCAString =<< peekElemOff argv 0
+		argv0 <- Bytes.packCString =<< peekElemOff argv 0
+		return (decode posix argv0)
 #endif
-		return (decodeString argv0)
 
 foreign import ccall unsafe "getProgArgv"
 	c_getProgArgv :: Ptr CInt -> Ptr (Ptr CString) -> IO ()
diff --git a/system-argv0.cabal b/system-argv0.cabal
--- a/system-argv0.cabal
+++ b/system-argv0.cabal
@@ -1,5 +1,5 @@
 name: system-argv0
-version: 0.1
+version: 0.1.1
 license: MIT
 license-file: license.txt
 author: John Millikin <jmillikin@gmail.com>
@@ -8,10 +8,10 @@
 cabal-version: >= 1.6
 category: System
 stability: experimental
-homepage: https://john-millikin.com/software/hs-argv0/
+homepage: https://john-millikin.com/software/haskell-filesystem/
 bug-reports: mailto:jmillikin@gmail.com
 
-synopsis: Get @argv[0]@ as a FilePath.
+synopsis: Get argv[0] as a FilePath.
 description:
   Get @argv[0]@ as a FilePath. This is how the program was invoked, and might
   not correspond to any actual file.
@@ -21,12 +21,12 @@
 
 source-repository head
   type: bazaar
-  location: https://john-millikin.com/software/hs-argv0/
+  location: https://john-millikin.com/branches/system-argv0/0.1/
 
 source-repository this
   type: bazaar
-  location: https://john-millikin.com/branches/hs-argv0/0.1/
-  tag: system-argv0_0.1
+  location: https://john-millikin.com/branches/system-argv0/0.1/
+  tag: system-argv0_0.1.1
 
 library
   hs-source-dirs: lib
@@ -34,7 +34,9 @@
 
   build-depends:
       base >= 4.0 && < 5.0
-    , system-filepath >= 0.3.1 && < 0.5
+    , bytestring
+    , system-filepath >= 0.3 && < 0.5
+    , text
 
   exposed-modules:
     System.Argv0
