[xmonad] Re: Emergency terminal

Brent Yorgey byorgey at gmail.com
Tue Feb 19 17:41:14 EST 2008

On Fri, Feb 15, 2008 at 11:02 PM, Braden Shepherdson <
Braden.Shepherdson at gmail.com> wrote:

> Don Stewart wrote:
> > xmonad-bounces:
> >> The attached message has been automatically discarded.
> >> Date: Fri, 15 Feb 2008 08:45:01 +0200
> >> From: Salvatore Iovene <salvatore.iovene at googlemail.com>
> >> To: xmonad at haskell.org
> >> Subject: Emergency terminal
> >>
> >> Hi all,
> >> sometimes I need to open a terminal window just for a quick task (i.e.
> >> quickly view an image). Using Mod+p and opening a dmenu is not really
> >> good for that (lack of good completation support) and I don't want to
> >> open a new terminal that will change the existing layout (not good on
> >> the eye).
> >>
> >> The ideal solution would be having a special key that'd fire up a
> >> floating terminal on the bottom of the screen, only, say, 5 lines
> >> high, so you could quickly give your command without interfering with
> >> the existing layout.
> >>
> >> Is there anything like this already around?
> >> Thanks!
> >>
> >
> > There's been much talk about a 'scratchpad' terminal.
> > This doesn't exist, but would be easy to implement as
> > an extension -- just open up a terminal with a
> > property set on it, then write a manageHook rule that
> > looks for that property, and positions the window as floating,
> > and with particular geometry.
> >
> > This would be a great extension to have, if someone
> > would like to write it.
> >
> > -- Don
> This will find its way onto the wiki and/or into Contrib eventually, but
> here's code and instructions for now.

This is great!  If you're up to it, please package this as a contrib module,
probably in XMonad.Util.  If you're not sure how to do that, or need any
help just send an e-mail or ask in the #xmonad channel on irc.freenode.net.
This should definitely go in the xmonad-contrib library as opposed to on the

> Add the following manageHook entry:
> title     =? "scratchpad"     --> doRectFloat scratchpadRect

You could give this rule a name like 'manageScratchpad' (maybe two versions,
one with a default rectangle and one that takes the rectangle as a
parameter) so users could just drop that into their manageHook.

> and the following functions
> doRectFloat :: W.RationalRect -> ManageHook
> doRectFloat r = ask >>= \w -> doF (W.float w r)
> scratchpadRect :: W.RationalRect
> scratchpadRect = W.RationalRect 0.25 0.375 0.5 0.25

doRectFloat should perhaps eventually go into ManageHook in the core, but
for now I think it's fine to put it in a contrib module.

> and the following keys entry:
> (( modMask, xK_s ), unsafeSpawn $ terminal conf ++ " -title scratchpad")

Again, you could define a function that performs this spawn and export it
from the contrib module, so users can just drop it into their keybindings
list with minimal effort.

> I'm not sure how easily this could be bundled into a contrib package. It
> seems like it might be better just as an example minimal config for
> others to merge with their own.
> I'm willing to package it up, but I don't have any experience sending
> darcs patches or uploading to hackage yet.

No uploading to hackage necessary here! =)  Just make sure you have the
latest darcs sources (instructions for getting them are on xmonad.org; to
get the latest patches just do a 'darcs pull').  Once you've made the
changes you'd like, do a 'darcs add' to add any new files you created to the
repository, then do 'darcs record' to record your changes into a patch.
Finally, 'darcs send' will send your patch to the mailing list (if you have
a mail agent configured correctly to do this; otherwise you can just do
'darcs send -o /path/to/some/file.dpatch' and then manually attach the
generated file to a message to the list.  Again, if you need any help, don't
hesitate to ask!

as are critiques of my code (it seems like my
> doRectFloat should exist in contrib already somewhere, this can't be the
> first time someone's wanted that feature).

The code looks great.  And you'd be surprised how many obvious, simple, yet
really nice features there are that no one's thought of or wanted yet. =)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/xmonad/attachments/20080219/f823dcc1/attachment-0001.htm

More information about the xmonad mailing list