New patches:
[Scratchpad terminal
Braden Shepherdson **20080225183633
Key binding and ManageHook to pop up a small, floating terminal window for a few quick commands.
Combined with a utility like detach[1], makes a great X application launcher.
Requires my two new ManageHooks (doRectFloat, specifically).
[1] http://detach.sourceforge.net
] {
addfile ./XMonad/Util/Scratchpad.hs
hunk ./XMonad/Util/Scratchpad.hs 1
+-----------------------------------------------------------------------------
+-- |
+-- Module : XMonad.Util.Scratchpad
+-- Copyright : (c) Braden Shepherdson 2008
+-- License : BSD-style (as xmonad)
+--
+-- Maintainer : Braden.Shepherdson@gmail.com
+-- Stability : unstable
+-- Portability : unportable
+--
+-- Very handy hotkey-launched floating terminal window.
+--
+-- A tool like detach (http://detach.sourceforge.net) turns it
+-- into a launchpad for X apps.
+--
+-- By default, your xmonad terminal is used, and mod+s is the hotkey.
+-- The default ManageHook uses a centered, half-screen-wide,
+-- quarter-screen-tall window.
+-- The key, position and size are configurable.
+--
+-- The terminal application must support the @-title@ argument.
+-- Known supported terminals: rxvt, rxvt-unicode, xterm.
+-- Most others are likely to follow the lead set by xterm.
+--
+-- Add the following to your xmonad.hs keybindings to use the default mod+s:
+--
+-- > scratchpadSpawnDefault conf
+--
+-- Or specify your own key binding, with the action:
+--
+-- > scratchpadSpawnAction conf
+--
+-- And add one of the @scratchpadManageHook*@s to your ManageHook list.
+-- The default rectangle is half the screen wide and a quarter of the
+-- screen tall, centered.
+--
+-----------------------------------------------------------------------------
+
+module XMonad.Util.Scratchpad (
+ scratchpadSpawnDefault
+ ,scratchpadSpawnAction
+ ,scratchpadManageHookDefault
+ ,scratchpadManageHook
+ ) where
+
+import XMonad
+import XMonad.Core
+import XMonad.Hooks.ManageHelpers (doRectFloat)
+import qualified XMonad.StackSet
+
+
+
+-- | Complete key binding. Pops up the terminal on mod+s.
+scratchpadSpawnDefault :: XConfig Layout -- ^ The configuration, to retrieve terminal and modMask
+ -> ((KeyMask, KeySym), X ())
+scratchpadSpawnDefault conf = ((modMask conf, xK_s), scratchpadSpawnAction conf)
+
+
+-- | Action to pop up the terminal, for the user to bind to a custom key.
+scratchpadSpawnAction :: XConfig Layout -- ^ The configuration, to retrieve the terminal
+ -> X ()
+scratchpadSpawnAction conf = spawn $ terminal conf ++ " -title scratchpad"
+
+
+
+-- | The ManageHook, with the default rectangle:
+-- Half the screen wide, a quarter of the screen tall, centered.
+scratchpadManageHookDefault :: ManageHook
+scratchpadManageHookDefault = scratchpadManageHook scratchpadDefaultRect
+
+
+-- | The ManageHook, with a user-specified StackSet.RationalRect.
+scratchpadManageHook :: XMonad.StackSet.RationalRect -- ^ User-specified screen rectangle.
+ -> ManageHook
+scratchpadManageHook rect = title =? "scratchpad" --> doRectFloat rect
+
+
+scratchpadDefaultRect :: XMonad.StackSet.RationalRect
+scratchpadDefaultRect = XMonad.StackSet.RationalRect 0.25 0.375 0.5 0.25
+
+
hunk ./xmonad-contrib.cabal 164
+ XMonad.Util.Scratchpad
}
Context:
[Fix haddock hyperlink.
Roman Cheplyaka **20080224205416]
[Add XMonad.Layout.IM
Roman Cheplyaka **20080221085752]
[Export XMonad.Layout.Grid.arrange (for use in XMonad.Layout.IM)
Roman Cheplyaka **20080221062204]
[Decoration: some haddock updates
Andrea Rossato **20080220214934]
[Small refactoring.
Nils Anders Danielsson **20080210224756]
[Fixed off-by-one error which broke strut handling for some panels.
Nils Anders Danielsson **20080210222600]
[Decoration: fix an issue with decoration window creation and more
Andrea Rossato **20080220204355
- fix a bug reported by Roman Cheplyaka: when decorate returned
Nothing the window was never going to be created, even if decorate
was reporting a Just Rectangle in the next run. Quite a deep issue,
still visible only with TabbedDecoration at the present time.
- remove decorateFirst (decorate has enough information to decide
whether a window is the first one or not, am I right, David?)
- some point free.
]
[DynamicLog.hs: haddock fix
Andrea Rossato **20080220204033
Someone forgot to check if her patch was going to break haddock docs
generation or not. So, while I was recording a patch with quite a long
description I had to manually write - sound strange? -, I found out
that my patch did not pass the tests, because of this haddock problem
left behind.
And so I fixed it, recorded this patch, with the hope the my next
description of the next patch I'm going to record will survive the
test suite we created to avoid this kind of problems for.
]
[improvements to XMonad.Hooks.DynamicLog, and new contrib module XMonad.Util.Loggers
Brent Yorgey **20080219210128
Improvements to DynamicLog include:
* Greatly expanded and improved documentation and examples
* remove seemingly useless makeSimpleDzenConfig function
* factor out xmobarPP
* add new ppExtras field to PP record, for specifying 'extra'
loggers which can supply information other than window title,
layout, and workspace status to a status bar (for example, time and date,
battery status, mail status, etc.)
The new XMonad.Util.Loggers module provides some example loggers that
can be used in the new ppExtras field of the PP record. Create your own,
add them to this module, go crazy! =)
]
[LayoutHints: fix a wrong fix
Andrea Rossato **20080219165127
The case analisys of my fix should be the other way around... this is
the real fix.
]
[Arossato: updated to latest changes
Andrea Rossato **20080219163058]
[Decoration: comment only
Andrea Rossato **20080219161339
This is a detailed commentary of all the code.
]
[Decoratione: generate rectangles first, and create windows accordingly
Andrea Rossato **20080219122115
With this patch Decoration will first generate a rectangle and only if
there is a rectangle available a window will be created.
This makes the Decoration state a bit more difficult to process, but
should reduce resource consumption.
]
[Fix doc for Tabbed
Roman Cheplyaka **20080219055650]
[Tabbed and TabBarDecoration: no need to implement decorateFirst (the default is used)
Andrea Rossato **20080218184950]
[TabBarDecoration: simpleTabBar automatically applies resizeVertical
Andrea Rossato **20080218180922
Added some comments too.
]
[DwmStyle: comment fix only
Andrea Rossato **20080218180727]
[ResizeScreen: add resizeHorizontalRight and resizeVerticalBottom
Andrea Rossato **20080218180504]
[Add TabBarDecoration, a layout modifier to add a bar of tabs to any layout
Andrea Rossato **20080218161121
... and port DecorationMadness to the new system.
]
[add Eq superclass to DecorationStyle and change styles in order not to decorate non managed windows
Andrea Rossato **20080218131320]
[Refactor MouseResize, remove isDecoration and introduce isInStack, isVisible, isInvisible
Andrea Rossato **20080218105726
This patch includes several changes, which are strictly related and
cannot be recorded separately:
- remove Decoraion.isDecoartion and introduce Decoration.isInStack
(with the related change to LayoutHints)
- in Decoration introduce useful utilities: isVisible, isInvisible,
isWithin and lookFor'
- MouseResize: - invisible inputOnly windows will not be created;
- fix a bug in the read instance which caused a failure
in the state deserialization.
]
[Prompt: regenerate completion list if there's just one completion
Andrea Rossato **20080217132734]
[Prompt.Theme: use mkComplFunFromList' to generate completions
Andrea Rossato **20080217124453]
[some code formatting
Andrea Rossato **20080217124434]
[Prompt: comment only (clafiry completionToCommand uses)
Andrea Rossato **20080216181620]
[Prompt: comment only (remove confusing remarks about commandToComplete)
Andrea Rossato **20080216180412]
[Prompt: haddock fixes only
Andrea Rossato **20080216172331]
[Prompt.XMonad: use mkComplFunFromList' to get all the completions with an empty command line
Andrea Rossato **20080216133949]
[Prompt.Window: remove unneeded and ugly escaping/unescaping
Andrea Rossato **20080216133842]
[Theme: move theme's nextCompletion implementation to Prompt.getNextCompletion
Andrea Rossato **20080216133738]
[Shell: escape the string in the command line only
Andrea Rossato **20080216133651]
[Prompt: add some methods to make completions more flexible
Andrea Rossato **20080216133454
- now it is possible to decide if the prompt will complete the last
word of the command line or the whole line (default is the last
word);
- completing the last word can be fine tuned by implementing
'commandToComplete' and 'completionToCommand': see comments for
details;
- move mkComplFunFromList' from TagWindows to Prompt.
]
[Prompt.Theme: display all theme information and handle completion accordingly
Andrea Rossato **20080216114159]
[Prompt.Shell: if there's just one completion and it is a directory add a trailing slash
Andrea Rossato **20080216114005]
[Prompt: added nextCompletion and commandToComplete methods to fine tune prompts' completion functions
Andrea Rossato **20080216113723]
[Util.Themes: add ppThemeInfor to render the theme info
Andrea Rossato **20080216113635]
[DecorationMadness: resizable layouts now use MouseResize too
Andrea Rossato **20080212173645]
[SimpleFloat now uses MouseResize
Andrea Rossato **20080212173615]
[Add Actions.MouseResize: a layout modifier to resize windows with the mouse
Andrea Rossato **20080212173455]
[Decoration: remove mouse resize and more
Andrea Rossato **20080212165306
- since mouse resize is not related to decoration, I removed the code
from here. Mouse resize will be handled by a separated layout
modifier (in a separated module)
- now also stacked decoration will be removed (I separated insert_dwr
from remove_stacked)
]
[Decoration.hs: variable names consistency only
Andrea Rossato **20080211123056]
[Tabbed and SimpleTabbed (in DecorationMadness) define their own decorationMouseDragHook method
Andrea Rossato **20080211114043
... to disable mouse drag in tabbed layouts
]
[Decoration: DecorationStyle class cleanup and focus/drag unification
Andrea Rossato **20080211113650
- moved decoEventHook to decorationEventHook
- added decorationMouseFocusHook, decorationMouseDragHook,
decorationMouseResizeHook methods
- added a handleMouseFocusDrag to focus and drag a window (which makes
it possible to focus *and* drag unfocused windows too
]
[Refactor XMonad.Hooks.DynamicLog
Roman Cheplyaka **20080210222406
This allows using DynamicLog not only for statusbar.
]
[DecorationMadness: comment only
Andrea Rossato **20080210131427]
[DecorationMadness: added a few floating layouts
Andrea Rossato **20080210122523]
[SimpleFloat: export SimpleFloat and add documentation
Andrea Rossato **20080210113159]
[Move DefaultDecoration from DecorationMadness to Decoration
Andrea Rossato **20080210104304]
[Themes: added robertTheme and donaldTheme
Andrea Rossato **20080210083016]
[DecorationMadness: make tunable tabbed layouts respect the Theme decoHeight field
Andrea Rossato **20080210075322]
[ScreenResize: vertical and horizontal now respond to SetTheme
Andrea Rossato **20080210074544
And so they will change the screen dimension accordingly.
]
[WindowGo.hs: fix syntax in example
Brent Yorgey **20080209225135]
[+doc for WindowGo.hs: I've discovered a common usecase for me for raiseMaybe
gwern0@gmail.com**20080205032155]
[Run.hs: add an option to runinterms
gwern0@gmail.com**20080205031824
It turns out that for urxvt, and most terminal, apparently, once you give a '-e' option, that's it.
They will not interpret anything after that as anything but input for /bin/sh, so if you wanted to go 'runInTerm "'screen -r session' -title IRC"',
you were SOL - the -title would not be seen by urxvt. This, needless to say, is bad, since then you can't do stuff like set the title which means
various hooks and extensions are helpless. This patch adds an extra options argument which is inserted *before* the -e. If you want the old behaivour,
you can just go 'runInTerm "" "executable"', but now if you need to do something extra, 'runInTerm "-title mutt" "mutt"' works fine.
This patch also updates callers.
]
[Add DecorationMadness: a repository of weirdnesses
Andrea Rossato **20080209182515]
[Decoration: change mouseEventHook to decoEventHook and more
Andrea Rossato **20080209165101
Fix also the problem with window's movement when the grabbing starts
]
[Tabbed: add simpleTabbed and fx documentation
Andrea Rossato **20080209163917
simpleTabbed is just a version of tabbed with default theme and
default srhinker.
]
[Arossato: update to latest changes
Andrea Rossato **20080208140604]
[Decoration: enable mouse dragging of windows
Andrea Rossato **20080208083602]
[WindowArranger: add a SetGeometry message - needed to enable mouseDrag
Andrea Rossato **20080208083413]
[Decoration: add a mouseEventHook methohd and move mouse button event there
Andrea Rossato **20080208073514]
[Util.Thems: some more typos in comments
Andrea Rossato **20080207233341]
[Util.Themes: documentation and export list (added themes that have been left out)
Andrea Rossato **20080207232251]
[Prompt.Theme: comments and some point-free
Andrea Rossato **20080207232155]
[oxymor00nTheme
**20080207213100]
[add swapScreen to CycleWS
**20080206191032
* add support for swapping the workspaces on screens to CycleWS
]
[Decoration: consistency of variable names
Andrea Rossato **20080207191442
Since the configuration is now called Theme, the variable 'c' is now a
't'
]
[Add Prompt.Theme: a prompt for dynamically applying a theme to the current workspace
Andrea Rossato **20080207184321]
[Decoration: add a SetTheme message and releaseResources
Andrea Rossato **20080207184048
...which should make it harder to forget to release the font structure.
]
[cabal file: respect alphabetic order for modules
Andrea Rossato **20080207183153]
[Add Util.Themes to collect user contributed themes
Andrea Rossato **20080207182843]
[SimpleFloat: comment only
Andrea Rossato **20080207182438]
[Update to safer initColor api
Don Stewart **20080206192232]
[use Util.WorkspaceCompare in Prompt.Workspace.
David Roundy **20080206004057]
[roll back to previous version of Droundy.hs.
David Roundy **20080205204043
A cleaner WindowNavigation fix made the separation of tabbed and addTabs
not strictly necessary (but still a desireable possibility in my opinion,
as it allows pretty decoration of non-composite layouts that might want to
have some of their windows tabbed.
]
[make WindowNavigation ignore decorations.
David Roundy **20080205203556]
[make tabbed work nicely with LayoutCombinators and WindowNavigation.
David Roundy **20080205202343
The problem is that WindowNavigation assumes all windows are navigable, and
it was getting confused by decorations. With a bit of work, we can
decorate windows *after* combining layouts just fine.
]
[make WindowNavigation work when windows are stacked.
David Roundy **20080205202027]
[ XMonad.Actions.WindowGo: add a runOrRaise module for Joseph Garvin with the help of Spencer Janssen
gwern0@gmail.com**20080204173402]
[enable proper handling of panels in droundy config.
David Roundy **20080204030843]
[enable button click for focus in tabbed.
David Roundy **20080204010536
Note that this patch doesn't work with
Thu Dec 27 03:03:56 EST 2007 Spencer Janssen
* Broadcast button events to all layouts, fix for issue #111
but this isn't a regression, since button events have never worked with
tabbed and this change.
]
[in Decoration, remove windows that are precisely hidden underneath other windows.
David Roundy **20080204005413
This is needed for WindowNavigation to work properly with the new
Decorations framework.
]
[switch tabbed back to using Simplest (so tabs will be shown).
David Roundy **20080204005350]
[CycleWS: change example binding for toggleWS from mod-t to mod-z. example bindings shouldn't conflict with default key bindings.
Brent Yorgey **20080201202126]
[REMOVE RotView: use CycleWS instead.
Brent Yorgey **20080201180618
See CycleWS docs for info on switching, or just look at the changes to
XMonad.Config.Droundy.
]
[CycleWS: add more general functionality that now subsumes the functionality of RotView. Now with parameterized workspace sorting and predicates!
Brent Yorgey **20080201121524]
[WorkspaceCompare: some refactoring.
Brent Yorgey **20080201120430
* Export WorkspaceCompare and WorkspaceSort types.
* Extract commonality in sort methods into mkWsSort, which creates
a workspace sort from a workspace comparison function.
* Rename getSortByTag to getSortByIndex, since it did not actually sort
by tag at all; it sorts by index of workspace tags in the user's config.
* Create a new getSortByTag function which actually does sort
lexicographically by tag.
* Enhance documentation.
]
[Search.hs: haddock cleanup
Brent Yorgey **20080131161948]
[Added a handy tip to the documentation of XMonad.Actions.Search
v.dijk.bas@gmail.com**20080131122620
The tip explains how to use the submap action to create a handy submap of keybindings for searching.
]
[Make LayoutHints a decoration aware layout modifier
Andrea Rossato **20080131082314]
[Remove LayoutCombinator class and revert PerWorkspace to its Maybe Bool state
Andrea Rossato **20080131063929
As I said in order to have a CombinedLayout type instace of
LayoutClass and a class for easily writing pure and impure combinators
to be feeded to the CombinedLayout together with the layouts to be
conbined, there's seems to be the need to change the type of the
LayoutClass.description method from l a -> String to l a -> X String.
Without that "ugly" change - loosing the purity of the description
(please note the *every* methods of that class unless description
operates in the X monad) - I'm plainly unable to write something
really useful and maintainable. If someone can point me in the right
direction I would really really appreciate.
Since, in the meantime, PerWorkspace, which has its users, is broken
and I broke it, I'm reverting it to it supposedly more beautiful
PerWorkspac [WorkspaceId] (Maybe Bool) (l1 a) (l2 a) type.
]
[Extending.hs: documentation update
Brent Yorgey **20080131012728]
[DynamicLog: lots of additional documentation; add byorgeyPP as an example dzen config
Brent Yorgey **20080130205219]
[Extended PP with sorting algorithm specification and added xinerama sorting
Juraj Hercek **20080109154923
algorithm
- idea is to specify sorting algorithm from user's xmonad.hs
- xinerama sorting algorithm produces same ordering as
pprWindowSetXinerama
- default ppSort is set to getSortByTag, so the default functionality
is the same as it was before
]
[SimpleDecoration: export defaultTheme
Andrea Rossato **20080130124609]
[Various decorations related updates
Spencer Janssen **20080130064624
* remove deprecated TConf stuff
* Remove 'style' from DeConf
* Change DeConf to Theme
* share defaultTheme across all decorations
]
[TwoPane: add description string
Joachim Fasting **20080126141332]
[add XMonad.Actions.CycleSelectedLayouts
Roman Cheplyaka **20080116205020]
[Search.hs: add documentation and two more search engines (MathWorld and Google Scholar)
Brent Yorgey **20080128190443]
[xmonad-contrib.cabal: add build-type field to get rid of Cabal warning
Brent Yorgey **20080128190137]
[LayoutCombinator class: code clean up
Andrea Rossato **20080129224952
- ComboType becomes CombboChooser
- removed the stupid doFirst
- better comboDescription default implemenation
]
[Add a LayoutCombinator class and a CombinedLayout and port PerWorkspace to the new system
Andrea Rossato **20080129192903]
[Named: reimplemented as a LayoutModifier and updated Config.Droundy accordingly
Andrea Rossato **20080128161343]
[LayoutModifier: add modifyDescription for completely override the modified layout description
Andrea Rossato **20080128160614]
[Make ToggleLayouts and Named implement emptyLayout
Andrea Rossato **20080128151535]
[Decoration: the fontset must be released even when we don't decorate the first window
Andrea Rossato **20080128004411
This is quite an old bug! It affected Tabbed since the very beginning..;)
]
[Decoration: I forgot we need to release the fontset too!
Andrea Rossato **20080127233521]
[Decoration: after deleting the windows we must update the layout modifier
Andrea Rossato **20080127231815
Thanks to Feuerbach for reporting this.
]
[Reflect: reimplemented as a layout modifier (which makes it compatible with windowArranger and decoration)
Andrea Rossato **20080127165854]
[SimpleFLoat: change the description to Float (Simple is the decoration description)
Andrea Rossato **20080127144556]
[ManageDocks: implement AvoidStruts as a layout modifier
Andrea Rossato **20080127144301]
[ResizeScreen has been rewritten as a layout modifier
Andrea Rossato **20080127140837]
[LayoutModifier add a modifyLayout
Andrea Rossato **20080127140219
Many layouts are written as layout modifiers because they need to
change the stack of the rectangle before executing doLayout.
This is a major source of bugs. all layout modifiers should be using the
LayoutModifier class. This method (modifyLayout) can be used to
manipulate the rectangle and the stack before running doLayout by the
layout modifier.
]
[Make LayoutCombinators deal with emptyLayout
Andrea Rossato **20080127092415]
[Add ResizeScreen, a layout modifier for modifing the screen geometry
Andrea Rossato **20080127010755]
[WindowArranger can now arrange all windows
Andrea Rossato **20080126233053
This is useful for SimpleFloat, whose state can now persists across
layout switches.
]
[Arossato: updated my config to recent changes
Andrea Rossato **20080126205638]
[Add SimpleFloat a very basic floating layout that will place windows according to their size hints
Andrea Rossato **20080126205410]
[WindoWrranger: export the WindowArranger type (see the upcoming SimpleFloat)
Andrea Rossato **20080126204605]
[ShowWName: show the name of empty layouts too
Andrea Rossato **20080126190214]
[ManageDocks: add emptyLayout definition for supporting the new decoration framework
Andrea Rossato **20080126185936]
[Decoration: code formatting only
Andrea Rossato **20080126101354]
[export DeConfig to avoid importing Decoration
Andrea Rossato **20080126101049]
[Prompt: code formatting only
Andrea Rossato **20080126093234]
[Don't export TConf anymore and export DeConfig instead
Andrea Rossato **20080126092141
WARNING: this patch may be breaking your configuration. While it is
still possible to use:
tabbed shrinkText defaultTConf
updating the fields of the defaultTConf record is not possible
anymore, since the type TConf is now hidden.
WARNING: "tabSize" has been substituted by "decoHeight"
You can change your configuration this way:
myTConf :: TConf
myTConf = defaultTConf
{ tabSize = 15
, etc....
becomes:
myTConf :: DeConfig TabbedDecoration Window
myTConf = defaultTabbedConfig
{ decoHeight = 15
, etc....
and
tabbed shrinkText myTConf
becomes:
tabDeco shrinkText myTConf
]
[Tabbed now uses Decoration
Andrea Rossato **20080125152311]
[Add DwmStyle, a layout modifier to add dwm-style decorations to windows in any layout
Andrea Rossato **20080125152152]
[Adde SimpleDecoration, a layout modifier to add simple decorations to windows in any layout
Andrea Rossato **20080125152106]
[Add Layout.Simplest, the simplest layout
Andrea Rossato **20080125152015]
[Add Decoration, a layout modifier and a class for easily writing decorated layouts
Andrea Rossato **20080125151726]
[Add WindowArranger, a layout modifier to move and resize windows with the keyboard
Andrea Rossato **20080125151633]
[ShowWName: moved fi to XUtils
Andrea Rossato **20080124134725]
[XUtils: add functions for operating on lists of windows and export fi
Andrea Rossato **20080124134638]
[LayoutModifier: add emptyLayoutMod for dealing with empty workspaces
Andrea Rossato **20080124015605]
[LayoutModifier: add pureMess and pureModifier to the LayoutModifier class
Andrea Rossato **20080122111319]
[Layout.ShowWName: generalize the instance
Andrea Rossato **20080115045139]
[add emptyLayout to MultiToggle
Lukas Mai **20080128175313]
[grammar fix
Lukas Mai **20080128175059]
[TAG 0.6
Spencer Janssen **20080127222114]
Patch bundle hash:
4d075323fe86913b055726a8f4a3a123e0629619