packages feed

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