hbro-0.7.0.0: Hbro/Extra/Session.hs
module Hbro.Extra.Session where
-- {{{ Imports
--import Hbro.Types
import Hbro.Util
import qualified Data.Text as T
import qualified Data.Text.IO as T
import Graphics.UI.Gtk.General.General
import Graphics.UI.Gtk.WebKit.WebView
import System.Directory
import System.Environment
import System.Glib.Signals
import System.IO
import System.Posix.Process
import System.Process
-- }}}
setupSession :: WebView -> String -> IO ()
setupSession webView sessionDirectory = do
pid <- getProcessID
previousSession <- getDirectoryContents sessionDirectory
let sessionFile = sessionDirectory ++ show pid
_ <- on webView loadFinished $ \_ -> do
uri <- webViewGetUri webView
case uri of
Just u -> writeFile sessionFile u
_ -> return ()
_ <- quitAdd 0 $ do
removeFile sessionFile
return False
return ()
--loadFromSession :: [String] -> String -> IO ()
--loadFromSession dmenuOptions sessionDirectory = do
-- previousSession <- getDirectoryContents sessionDirectory
-- sessionURIs <- mapM getSessionURI previousSession
--
-- selection <- dmenu dmenuOptions (T.unlines sessionURIs)
--
-- case selection of
-- "" -> return ()
-- u -> do
-- _ <- spawn "hbro" ["-u", u]
-- return ()
--
--getSessionURI :: String -> IO T.Text
--getSessionURI fileName = do
-- configHome <- getEnv "XDG_CONFIG_HOME"
-- file <- T.readFile $ configHome ++ "/hbro/sessions/" ++ fileName
--
-- return $ (head . T.lines) file