module Hbro.Extra.History where
import Hbro.Core
import Hbro.Types
import Data.List
import Data.Time
import System.Environment
import System.Exit
import System.Locale
import System.Process
addToHistory :: String -> String -> IO ()
addToHistory uri title = do
now <- getCurrentTime
configHome <- getEnv "XDG_CONFIG_HOME"
let time = formatTime defaultTimeLocale "%Y-%m-%d %H:%M:%S" now
appendFile (configHome ++ "/hbro/history") $ time ++ " " ++ uri ++ " " ++ title ++ "\n"
loadFromHistory :: Browser -> IO ()
loadFromHistory browser = do
configHome <- getEnv "XDG_CONFIG_HOME"
file <- readFile $ configHome ++ "/hbro/history"
let file' = unlines . sort . nub $ map reformat (lines file)
(code, result, e) <- readProcessWithExitCode "dmenu" ["-l", "10"] file'
return ()
case (code, result) of
(ExitSuccess, r) ->
let
_:_:uri:_ = words $ r
in
loadURL uri browser
_ -> putStrLn e
where
reformat line =
let
date:time:uri:title = words line
in
unwords $ [uri] ++ title