module Manatee.Plugin.Anything.AnythingExecuteFile where
import Control.Monad
import DBus.Client hiding (Signal)
import Data.ByteString.UTF8
import Manatee.Plugin.Anything.Anything
import Manatee.Plugin.Anything.Types
import Manatee.Toolkit.General.Process
import Manatee.Toolkit.Gio.Gio
anythingExecuteFile :: Anything
anythingExecuteFile =
Anything {anythingColumnTitle = ["ExecuteFile"]
,anythingColumnFun = [anythingCandidateUnpack]
,anythingSearch = AnythingSearch anythingExecuteFileSearch
,anythingFilterRule = anythingFuzzyFilterRule False
,anythingCompletionRule = id
,anythingInputDepend = False
,anythingCommandFun = anythingExecuteFileCommandFun
,anythingCalculateDelay = 0
}
anythingExecuteFileSearch :: AnythingInput -> Client -> IO [String]
anythingExecuteFileSearch _ _ =
liftM (map toString) getAllExecuteFiles
anythingExecuteFileCommandFun :: AnythingCommandFun
anythingExecuteFileCommandFun _ (AnythingCandidateWrap a) _ = do
let command = candidateCommandName a
return [("Execute", anythingExecuteFileActionExecute command)
,("Running in terminal", anythingExecuteFileActionRunInTerminal command)]
anythingExecuteFileActionExecute :: String -> Client -> IO ()
anythingExecuteFileActionExecute command _ =
runExternalCommand command
anythingExecuteFileActionRunInTerminal :: String -> Client -> IO ()
anythingExecuteFileActionRunInTerminal command _ =
launchCommandInTerminal command