xmonad-contrib-0.6: Third party extensions for xmonadSource codeContentsIndex

A module for easily running Internet searches on web sites through XMonad. Modeled after the handy Surfraw CLI search tools https://secure.wikimedia.org/wikipedia/en/wiki/Surfraw.

Additional sites welcomed.

search :: MonadIO m => Browser -> SearchEngine -> String -> m ()
simpleEngine :: String -> SearchEngine
promptSearch :: XPConfig -> Browser -> SearchEngine -> X ()
selectSearch :: MonadIO m => Browser -> SearchEngine -> m ()
google :: SearchEngine

This module is intended to allow easy access to databases on the Internet through XMonad's interface. The idea is that one wants to run a search but the query string and the browser to use must come from somewhere. There are two places the query string can come from - the user can type it into a prompt which pops up, or the query could be available already in the X Windows copy/paste buffer (perhaps you just highlighted the string of interest).

Thus, there are two main functions: promptSearch, and selectSearch (implemented using the more primitive search). To each of these is passed an engine function; this is a function that knows how to search a particular site.

For example, the google function knows how to search Google, and so on. You pass promptSearch and selectSearch the engine you want, the browser you want, and anything special they might need; this whole line is then bound to a key of you choosing in your xmonad.hs. For specific examples, see each function. This module is easily extended to new sites by using simpleEngine.

search :: MonadIO m => Browser -> SearchEngine -> String -> m ()Source
simpleEngine :: String -> SearchEngineSource

Given a base URL, create the SearchEngine that escapes the query and appends it to the base. You can easily define a new engine locally using simpleEngine without needing to modify Search.hs:

 newEngine = simpleEngine "http://site.com/search="

The important thing is that the site has a interface which accepts the query string as part of the URL. Alas, the exact URL to feed simpleEngine varies from site to site, often considerably. Generally, examining the resultant URL of a search will allow you to reverse-engineer it if you can't find the necessary URL already described in other projects such as Surfraw.

promptSearch :: XPConfig -> Browser -> SearchEngine -> X ()Source

Like search, but in this case, the string is not specified but grabbed from the user's response to a prompt. Example:

 , ((modm,               xK_g     ), promptSearch greenXPConfig "firefox" google)
selectSearch :: MonadIO m => Browser -> SearchEngine -> m ()Source

Like search, but for use with the X selection; it grabs the selection, passes it to a given searchEngine and opens it in the given browser. Example:

 , ((modm .|. shiftMask, xK_g     ), selectSearch "firefox" google)
google :: SearchEngineSource
Produced by Haddock version 2.3.0