mmagorsc/taskmonad

View on GitHub
docs/src/TaskMonad.ScratchPad.html

Summary

Maintainability
Test Coverage
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LANGUAGE ScopedTypeVariables, TypeSynonymInstances, FlexibleInstances #-}</span><span>
</span><a name="line-2"></a><span>
</span><a name="line-3"></a><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><a name="line-4"></a><span class="hs-comment">-- |</span><span>
</span><a name="line-5"></a><span class="hs-comment">-- Module      :  TaskMonad.ScratchPad</span><span>
</span><a name="line-6"></a><span class="hs-comment">-- Copyright   :  Max Magorsch &lt;max@magorsch.de&gt;</span><span>
</span><a name="line-7"></a><span class="hs-comment">-- License     :  BSD-style (see LICENSE)</span><span>
</span><a name="line-8"></a><span class="hs-comment">--</span><span>
</span><a name="line-9"></a><span class="hs-comment">-- Maintainer  :  Max Magorsch &lt;max@magorsch.de&gt;</span><span>
</span><a name="line-10"></a><span class="hs-comment">-- Stability   :  unstable</span><span>
</span><a name="line-11"></a><span class="hs-comment">-- Portability :  unportable</span><span>
</span><a name="line-12"></a><span class="hs-comment">--</span><span>
</span><a name="line-13"></a><span class="hs-comment">-- A wrapper around [XMonad.Util.NamedScratchpad]</span><span>
</span><a name="line-14"></a><span class="hs-comment">-- (hackage.haskell.org/package/xmonad-contrib/docs/XMonad-Util-NamedScratchpad.html)</span><span>
</span><a name="line-15"></a><span class="hs-comment">-- that can be used to display taskwarrior commands </span><span>
</span><a name="line-16"></a><span class="hs-comment">--</span><span>
</span><a name="line-17"></a><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><a name="line-18"></a><span>
</span><a name="line-19"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">TaskMonad.ScratchPad</span><span>
</span><a name="line-20"></a><span>  </span><span class="hs-special">(</span><span>
</span><a name="line-21"></a><span>       </span><span class="hs-comment">-- * Usage</span><span>
</span><a name="line-22"></a><span>       </span><span class="hs-comment">-- $usage</span><span>
</span><a name="line-23"></a><span>
</span><a name="line-24"></a><span>       </span><span class="hs-comment">-- * Screenshots</span><span>
</span><a name="line-25"></a><span>       </span><span class="hs-comment">-- $screenshots</span><span>
</span><a name="line-26"></a><span>    </span><a href="TaskMonad.ScratchPad.html#taskwarriorScratchpad"><span class="hs-identifier hs-var">taskwarriorScratchpad</span></a><span>
</span><a name="line-27"></a><span>  </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.ScratchPad.html#taskwarriorScratchpads"><span class="hs-identifier hs-var">taskwarriorScratchpads</span></a><span>
</span><a name="line-28"></a><span>  </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.ScratchPad.html#hideScratchpadAction"><span class="hs-identifier hs-var">hideScratchpadAction</span></a><span>
</span><a name="line-29"></a><span>  </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.ScratchPad.html#twscratchpad"><span class="hs-identifier hs-var">twscratchpad</span></a><span>
</span><a name="line-30"></a><span>  </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.ScratchPad.html#runTmuxCommand"><span class="hs-identifier hs-var">runTmuxCommand</span></a><span>
</span><a name="line-31"></a><span>  </span><span class="hs-special">)</span><span>
</span><a name="line-32"></a><span class="hs-keyword">where</span><span>
</span><a name="line-33"></a><span>
</span><a name="line-34"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">Data.List</span><span>
</span><a name="line-35"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">Data.Maybe</span><span>
</span><a name="line-36"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">System.Process</span><span>
</span><a name="line-37"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">System.IO</span><span>
</span><a name="line-38"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">Control.Monad</span><span>                  </span><span class="hs-special">(</span><span> </span><span class="hs-identifier hs-var">filterM</span><span> </span><span class="hs-special">)</span><span>
</span><a name="line-39"></a><span>
</span><a name="line-40"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad</span><span>                  </span><span class="hs-keyword">hiding</span><span> </span><span class="hs-special">(</span><span> </span><span class="hs-identifier hs-var">liftX</span><span> </span><span class="hs-special">)</span><span>
</span><a name="line-41"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Util.Font</span><span>
</span><a name="line-42"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">XMonad.StackSet</span><span>               </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">W</span><span>
</span><a name="line-43"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Layout.Decoration</span><span>
</span><a name="line-44"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Prompt</span><span>
</span><a name="line-45"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Prompt.Input</span><span>
</span><a name="line-46"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Util.Image</span><span>
</span><a name="line-47"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Util.NamedWindows</span><span>
</span><a name="line-48"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Util.XUtils</span><span>
</span><a name="line-49"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Util.NamedScratchpad</span><span>
</span><a name="line-50"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Util.Run</span><span>
</span><a name="line-51"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Actions.GridSelect</span><span>
</span><a name="line-52"></a><span>
</span><a name="line-53"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><a href="GridSelect.Extras.html"><span class="hs-identifier">GridSelect.Extras</span></a><span>
</span><a name="line-54"></a><span>
</span><a name="line-55"></a><span class="hs-comment">-- $usage</span><span>
</span><a name="line-56"></a><span class="hs-comment">--</span><span>
</span><a name="line-57"></a><span class="hs-comment">-- Just add a manage hook:</span><span>
</span><a name="line-58"></a><span class="hs-comment">--</span><span>
</span><a name="line-59"></a><span class="hs-comment">-- &gt; , manageHook = namedScratchpadManageHook taskwarriorScratchpads</span><span>
</span><a name="line-60"></a><span class="hs-comment">--</span><span>
</span><a name="line-61"></a><span>
</span><a name="line-62"></a><span>
</span><a name="line-63"></a><span>
</span><a name="line-64"></a><span class="hs-comment">-- $screenshots</span><span>
</span><a name="line-65"></a><span class="hs-comment">--</span><span>
</span><a name="line-66"></a><span class="hs-comment">-- TaskMonad.Scratchpad in action:</span><span>
</span><a name="line-67"></a><span class="hs-comment">--</span><span>
</span><a name="line-68"></a><span class="hs-comment">-- &lt;&lt;./taskmonad-scratchpad.png&gt;&gt;</span><span>
</span><a name="line-69"></a><span>
</span><a name="line-70"></a><span>
</span><a name="line-71"></a><span class="hs-comment">-- | Open the TaskWarrior-ScratchPad</span><span>
</span><a name="line-72"></a><span class="hs-identifier">taskwarriorScratchpad</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-73"></a><a name="taskwarriorScratchpad"><a href="TaskMonad.ScratchPad.html#taskwarriorScratchpad"><span class="hs-identifier">taskwarriorScratchpad</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-74"></a><span>  </span><span class="hs-identifier hs-var">namedScratchpadAction</span><span> </span><a href="TaskMonad.ScratchPad.html#taskwarriorScratchpads"><span class="hs-identifier hs-var">taskwarriorScratchpads</span></a><span> </span><span class="hs-string">&quot;taskwarrior&quot;</span><span>
</span><a name="line-75"></a><span>
</span><a name="line-76"></a><span class="hs-comment">-- | The TaskWarrior-Scratchpad which contains a tmux session</span><span>
</span><a name="line-77"></a><span class="hs-identifier">taskwarriorScratchpads</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="hs-identifier hs-type">NamedScratchpad</span><span class="hs-special">]</span><span>
</span><a name="line-78"></a><a name="taskwarriorScratchpads"><a href="TaskMonad.ScratchPad.html#taskwarriorScratchpads"><span class="hs-identifier">taskwarriorScratchpads</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-79"></a><span>  </span><span class="hs-special">[</span><span class="hs-identifier hs-var">NS</span><span> </span><span class="hs-string">&quot;taskwarrior&quot;</span><span> </span><a href="#local-6989586621679052910"><span class="hs-identifier hs-var">spawnTaskwarrior</span></a><span> </span><a href="#local-6989586621679052911"><span class="hs-identifier hs-var">findTerm</span></a><span> </span><a href="#local-6989586621679052912"><span class="hs-identifier hs-var">manageTerm</span></a><span class="hs-special">]</span><span> </span><span class="hs-comment">-- and a second ]</span><span>
</span><a name="line-80"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-81"></a><span>  </span><a name="local-6989586621679052910"><a href="#local-6989586621679052910"><span class="hs-identifier">spawnTaskwarrior</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-82"></a><span>    </span><span class="hs-string">&quot;urxvt&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot; -name scratchpad&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot; -e tmux new -A -s tw-scratch&quot;</span><span>
</span><a name="line-83"></a><span>  </span><a name="local-6989586621679052911"><a href="#local-6989586621679052911"><span class="hs-identifier">findTerm</span></a></a><span>   </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">appName</span><span> </span><span class="hs-operator hs-var">=?</span><span> </span><span class="hs-string">&quot;scratchpad&quot;</span><span> </span><span class="hs-comment">-- its window will be named &quot;scratchpad&quot; (see above)</span><span>
</span><a name="line-84"></a><span>  </span><a name="local-6989586621679052912"><a href="#local-6989586621679052912"><span class="hs-identifier">manageTerm</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">customFloating</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">W.RationalRect</span><span> </span><span class="hs-number">0.25</span><span> </span><span class="hs-number">0</span><span> </span><span class="hs-number">0.5</span><span> </span><span class="hs-number">0.6</span><span> </span><span class="hs-comment">-- l t w h</span><span>
</span><a name="line-85"></a><span>
</span><a name="line-86"></a><span>
</span><a name="line-87"></a><span class="hs-comment">-- | Finds named scratchpad configuration by name</span><span>
</span><a name="line-88"></a><span class="hs-identifier">findByName</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">NamedScratchpads</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Maybe</span><span> </span><span class="hs-identifier hs-type">NamedScratchpad</span><span>
</span><a name="line-89"></a><a name="findByName"><a href="TaskMonad.ScratchPad.html#findByName"><span class="hs-identifier">findByName</span></a></a><span> </span><a name="local-6989586621679052913"><a href="#local-6989586621679052913"><span class="hs-identifier">c</span></a></a><span> </span><a name="local-6989586621679052914"><a href="#local-6989586621679052914"><span class="hs-identifier">s</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">listToMaybe</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">filter</span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><a href="#local-6989586621679052914"><span class="hs-identifier hs-var">s</span></a><span> </span><span class="hs-operator hs-var">==</span><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier">name</span><span class="hs-special">)</span><span> </span><a href="#local-6989586621679052913"><span class="hs-identifier hs-var">c</span></a><span>
</span><a name="line-90"></a><span>
</span><a name="line-91"></a><span>
</span><a name="line-92"></a><span class="hs-comment">-- | Runs application which should appear in specified scratchpad</span><span>
</span><a name="line-93"></a><span class="hs-identifier">runApplication</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">NamedScratchpad</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-94"></a><a name="runApplication"><a href="TaskMonad.ScratchPad.html#runApplication"><span class="hs-identifier">runApplication</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">spawn</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier">cmd</span><span>
</span><a name="line-95"></a><span>
</span><a name="line-96"></a><span>
</span><a name="line-97"></a><span class="hs-comment">-- | Modified version of XMonad.Util.NamedScratchpad.hideScratchpadAction</span><span>
</span><a name="line-98"></a><span class="hs-comment">-- which can be used to just show a scratchpad and don't hide it</span><span>
</span><a name="line-99"></a><span class="hs-comment">-- in case it is already shown</span><span>
</span><a name="line-100"></a><span class="hs-identifier">hideScratchpadAction</span><span>
</span><a name="line-101"></a><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">NamedScratchpads</span><span> </span><span class="hs-comment">-- ^ Named scratchpads configuration</span><span>
</span><a name="line-102"></a><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span>           </span><span class="hs-comment">-- ^ Scratchpad name</span><span>
</span><a name="line-103"></a><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-104"></a><a name="hideScratchpadAction"><a href="TaskMonad.ScratchPad.html#hideScratchpadAction"><span class="hs-identifier">hideScratchpadAction</span></a></a><span> </span><a name="local-6989586621679052915"><a href="#local-6989586621679052915"><span class="hs-identifier">confs</span></a></a><span> </span><a name="local-6989586621679052916"><a href="#local-6989586621679052916"><span class="hs-identifier">n</span></a></a><span>
</span><a name="line-105"></a><span>  </span><span class="hs-glyph">|</span><span> </span><span class="hs-identifier hs-var">Just</span><span> </span><a name="local-6989586621679052917"><a href="#local-6989586621679052917"><span class="hs-identifier">conf</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="TaskMonad.ScratchPad.html#findByName"><span class="hs-identifier hs-var">findByName</span></a><span> </span><a href="#local-6989586621679052915"><span class="hs-identifier hs-var">confs</span></a><span> </span><a href="#local-6989586621679052916"><span class="hs-identifier hs-var">n</span></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">withWindowSet</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679052918"><a href="#local-6989586621679052918"><span class="hs-identifier">s</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-106"></a><span>        </span><span class="hs-comment">-- try to find it on the current workspace</span><span>
</span><a name="line-107"></a><span>    </span><a name="local-6989586621679052919"><a href="#local-6989586621679052919"><span class="hs-identifier">filterCurrent</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier hs-var">filterM</span><span>
</span><a name="line-108"></a><span>      </span><span class="hs-special">(</span><span class="hs-identifier hs-var">runQuery</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">query</span><span> </span><a href="#local-6989586621679052917"><span class="hs-identifier hs-var">conf</span></a><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-109"></a><span>      </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-identifier hs-var">maybe</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-identifier hs-var">W.integrate</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier">W.stack</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier">W.workspace</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier">W.current</span><span class="hs-special">)</span><span> </span><a href="#local-6989586621679052918"><span class="hs-identifier hs-var">s</span></a><span class="hs-special">)</span><span>
</span><a name="line-110"></a><span>    </span><span class="hs-keyword">case</span><span> </span><a href="#local-6989586621679052919"><span class="hs-identifier hs-var">filterCurrent</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-111"></a><span class="hs-comment">--            {- The following part is commented out, as it would hide the scratchpad -}                </span><span>
</span><a name="line-112"></a><span class="hs-comment">--            (x:_) -&gt; do</span><span>
</span><a name="line-113"></a><span class="hs-comment">--                -- create hidden workspace if it doesn't exist</span><span>
</span><a name="line-114"></a><span class="hs-comment">--                if null (filter ((== scratchpadWorkspaceTag) . W.tag) (W.workspaces s))</span><span>
</span><a name="line-115"></a><span class="hs-comment">--                    then addHiddenWorkspace scratchpadWorkspaceTag</span><span>
</span><a name="line-116"></a><span class="hs-comment">--                    else return ()</span><span>
</span><a name="line-117"></a><span class="hs-comment">--                -- push window there</span><span>
</span><a name="line-118"></a><span class="hs-comment">--                windows $ W.shiftWin scratchpadWorkspaceTag x</span><span>
</span><a name="line-119"></a><span>      </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-120"></a><span>          </span><span class="hs-comment">-- try to find it on all workspaces</span><span>
</span><a name="line-121"></a><span>        </span><a name="local-6989586621679052920"><a href="#local-6989586621679052920"><span class="hs-identifier">filterAll</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier hs-var">filterM</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">runQuery</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">query</span><span> </span><a href="#local-6989586621679052917"><span class="hs-identifier hs-var">conf</span></a><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">W.allWindows</span><span> </span><a href="#local-6989586621679052918"><span class="hs-identifier hs-var">s</span></a><span class="hs-special">)</span><span>
</span><a name="line-122"></a><span>        </span><span class="hs-keyword">case</span><span> </span><a href="#local-6989586621679052920"><span class="hs-identifier hs-var">filterAll</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-123"></a><span>          </span><span class="hs-special">(</span><a name="local-6989586621679052921"><a href="#local-6989586621679052921"><span class="hs-identifier">x</span></a></a><span> </span><span class="hs-glyph">:</span><span> </span><span class="hs-identifier">_</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">windows</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">W.shiftWin</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">W.currentTag</span><span> </span><a href="#local-6989586621679052918"><span class="hs-identifier hs-var">s</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679052921"><span class="hs-identifier hs-var">x</span></a><span>
</span><a name="line-124"></a><span>          </span><span class="hs-special">[</span><span class="hs-special">]</span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TaskMonad.ScratchPad.html#runApplication"><span class="hs-identifier hs-var">runApplication</span></a><span> </span><a href="#local-6989586621679052917"><span class="hs-identifier hs-var">conf</span></a><span>
</span><a name="line-125"></a><span>  </span><span class="hs-glyph">|</span><span> </span><span class="hs-identifier hs-var">otherwise</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">return</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-126"></a><span>
</span><a name="line-127"></a><span>
</span><a name="line-128"></a><span class="hs-comment">-- | Send a taskwarrior command to the taskwarrior tmux session and open the taskwarrior scratchpad</span><span>
</span><a name="line-129"></a><span class="hs-identifier">twscratchpad</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-130"></a><a name="twscratchpad"><a href="TaskMonad.ScratchPad.html#twscratchpad"><span class="hs-identifier">twscratchpad</span></a></a><span> </span><a name="local-6989586621679052922"><a href="#local-6989586621679052922"><span class="hs-identifier">command</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-131"></a><span>  </span><a href="TaskMonad.ScratchPad.html#runTmuxCommand"><span class="hs-identifier hs-var">runTmuxCommand</span></a><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;clear &amp;&amp; task &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679052922"><span class="hs-identifier hs-var">command</span></a><span class="hs-special">)</span><span>
</span><a name="line-132"></a><span>    </span><span class="hs-operator hs-var">&gt;&gt;</span><span> </span><a href="TaskMonad.ScratchPad.html#hideScratchpadAction"><span class="hs-identifier hs-var">hideScratchpadAction</span></a><span> </span><a href="TaskMonad.ScratchPad.html#taskwarriorScratchpads"><span class="hs-identifier hs-var">taskwarriorScratchpads</span></a><span> </span><span class="hs-string">&quot;taskwarrior&quot;</span><span>
</span><a name="line-133"></a><span>
</span><a name="line-134"></a><span>
</span><a name="line-135"></a><span class="hs-comment">-- | Send a command to the taskwarrior tmux session</span><span>
</span><a name="line-136"></a><span class="hs-identifier">runTmuxCommand</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">MonadIO</span><span> </span><a href="#local-6989586621679052909"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679052909"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-137"></a><a name="runTmuxCommand"><a href="TaskMonad.ScratchPad.html#runTmuxCommand"><span class="hs-identifier">runTmuxCommand</span></a></a><span> </span><a name="local-6989586621679052923"><a href="#local-6989586621679052923"><span class="hs-identifier">command</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-138"></a><span>  </span><span class="hs-identifier hs-var">unsafeSpawn</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-string">&quot;tmux send-keys -t tw-scratch.0 '&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679052923"><span class="hs-identifier hs-var">command</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;' ENTER&quot;</span><span>
</span><a name="line-139"></a></pre></body></html>