<div dir="ltr">On Tue, Feb 28, 2012 at 10:44, Alexander Batischev <span dir="ltr">&lt;<a href="mailto:eual.jp@gmail.com">eual.jp@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
I want workspace layout to reset to some default once last window is<br>
closed. Quick glance though Xmonad-related modules names didn&#39;t give me<br>
any hints on what hook (or some other facility) to use, so I&#39;m seeking<br>
your advice, fellow Xmonaders: how can I accomplish that?<span class="HOEnZb"><font color="#888888"><br></font></span></blockquote><div><br>Use XMonad.Layout.LayoutCombinators; you want its version of the (|||) operator so you can send the JumpToLayout message.<br>
<br>Beyond that, you want to use a handleEventHook which matches DestroyWindowEvent and checks the contents of the current workspace; if only one window is present, send the JumpToLayout message.  It should end up being something like this (untested):<br>
<br>&gt; import XMonad hiding (|||)<br>&gt; import XMonad.Layout.LayoutCombinators<br>&gt; import qualified XMonad.StackSet as W<br>&gt; import Data.Monoid -- for All<br>...<br>&gt; handleEventHook DestroyWindowEvent {} =<br>
&gt;   n &lt;- (length . index) `fmap` withWindowSet<br>&gt;   guard (n == 1) $ sendMessage $ JumpToLayout &quot;name of initial layout here&quot;<br>&gt;   return (All True)<br></div></div><br>-- <br>brandon s allbery                                      <a href="mailto:allbery.b@gmail.com" target="_blank">allbery.b@gmail.com</a><br>
wandering unix systems administrator (available)     (412) 475-9364 vm/sms<br><br>
</div>