xmonad
Threads by month
- ----- 2025 -----
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
August 2007
- 48 participants
- 153 discussions
I don't know what folks will think of this, but I'd rather have WorkspaceId
be a String. Then we don't need to worry about associating Strings with
workspaces, and everything's pretty.
David
Mon Aug 20 04:36:58 PDT 2007 David Roundy <droundy(a)darcs.net>
* switch WorkspaceId to String.
5
5
Hi all,
I've been thinking that we'd be better off if the contents of layouts were
moved to Workspace, something like
data Workspace i l a = Workspace { tag :: !i, layouts :: (l a,[l a]), stack :: StackOrNot a }
deriving (Show, Read, Eq)
Thus the layout for each workspace would be stored with that workspace.
This seems cleaner than the current approach of using a Data.Map.Map to
figure out what the layout is for each workspace, since the data type would
enforce that a layout exists for each workspace, rather than relying on an
invarient that each workspace must have an entry in the map (an invarient I
broke while writing DynamicWorkspaces, embarassingly crashing xmonad).
This change would be pretty pervasive, and a fair amount of work, so I'm
not keen on making it unless there's some sort of consensus that it looks
like a good idea. Personally, I think it'll be far more beautiful. There
*are* bits of code that'll get trickier (e.g. Operations.broadcastMessage).
But in my mind any such complexities are outweighed by the greater
modularity, that one can modify a Workspace in isolation--and in a way that
doesn't cause xmonad to crash when the workspace ids get out of sync with
the contents of the Data.Map layouts.
--
David Roundy
http://www.darcs.net
2
1
These are the same patches I committed last Monday but updated against
subsequent commits to main and contrib.
--
Alex Tarkovsky
New patches:
[Docstring parser for generating xmonad build configs with default settings for extensions
Alex Tarkovsky <alextarkovsky(a)gmail.com>**20070820235459] {
addfile ./scripts/generate-configs.sh
hunk ./Accordion.hs 30
+
+-- %import XMonadContrib.Accordion
+-- %layout , accordion
hunk ./Anneal.hs 19
+
+-- %import XMonadContrib.Anneal
hunk ./Circle.hs 32
+
+-- %import XMonadContrib.Circle
hunk ./Combo.hs 35
--- > simpleStacking $ combo (twoPane 0.03 0.5) [(full,1),(tabbed shrinkText,1)]
+-- > simpleStacking $ combo (twoPane 0.03 0.5) [(full,1),(tabbed shrinkText defaultTConf,1)]
hunk ./Combo.hs 46
+-- %import XMonadContrib.Combo
+-- %import XMonadContrib.SimpleStacking
+-- %layout , simpleStacking $ combo (twoPane 0.03 0.5) [(full,1),(tabbed shrinkText defaultTConf,1)]
+
hunk ./Commands.hs 45
--- > , ((modMask .|. controlMask, xK_y), runCommand)
+-- > , ((modMask .|. controlMask, xK_y), runCommand commands)
hunk ./Commands.hs 57
+-- %def commands :: [(String, X ())]
+-- %def commands = defaultCommands
+-- %import XMonadContrib.Commands
+-- %keybind , ((modMask .|. controlMask, xK_y), runCommand commands)
+
hunk ./CopyWindow.hs 45
+
+-- %import XMonadContrib.CopyWindow
+-- %keybind -- comment out default close window binding above if you uncomment this:
+-- %keybind , ((modMask .|. shiftMask, xK_c ), kill1) -- @@ Close the focused window
+-- %keybindlist ++
+-- %keybindlist -- mod-[1..9] @@ Switch to workspace N
+-- %keybindlist -- mod-shift-[1..9] @@ Move client to workspace N
+-- %keybindlist -- mod-control-shift-[1..9] @@ Copy client to workspace N
+-- %keybindlist [((m .|. modMask, k), f i)
+-- %keybindlist | (i, k) <- zip workspaces [xK_1 ..]
+-- %keybindlist , (f, m) <- [(view, 0), (shift, shiftMask), (copy, shiftMask .|. controlMask)]]
hunk ./DeManage.hs 50
+
+-- %import XMonadContrib.DeManage
+-- %keybind , ((modMask, xK_d ), withFocused demanage)
hunk ./Dmenu.hs 32
+
+-- %import XMonadContrib.Dmenu
hunk ./DwmPromote.hs 38
+
+-- %import XMonadContrib.DwmPromote
+-- %keybind , ((modMask, xK_Return), dwmpromote)
hunk ./DynamicLog.hs 42
+
+-- %import XMonadContrib.DynamicLog
+-- %def -- comment out default logHook definition above if you uncomment this:
+-- %def logHook = dynamicLog
hunk ./FindEmptyWorkspace.hs 43
+
+-- %import XMonadContrib.FindEmptyWorkspace
+-- %keybind , ((modMask, xK_m ), viewEmptyWorkspace)
+-- %keybind , ((modMask .|. shiftMask, xK_m ), tagToEmptyWorkspace)
hunk ./FlexibleManipulate.hs 50
+
+-- %import qualified XMonadContrib.FlexibleManipulate as Flex
+-- %mousebind , ((modMask, button1), (\\w -> focus w >> Flex.mouseWindow Flex.linear w))
hunk ./FlexibleResize.hs 34
+
+-- %import qualified XMonadContrib.FlexibleResize as Flex
+-- %mousebind , ((modMask, button3), (\\w -> focus w >> Flex.mouseResizeWindow w))
hunk ./FocusNth.hs 29
+
+-- %import XMonadContrib.FocusNth
+-- %keybdindextra ++
+-- %keybdindextra -- mod4-[1..9] @@ Switch to window N
+-- %keybdindextra [((mod4Mask, k), focusNth i)
+-- %keybdindextra | (i, k) <- zip [0 .. 8] [xK_1 ..]]
hunk ./HintedTile.hs 32
--- > import XMonadContrib.HintedTile
+-- > import qualified XMonadContrib.HintedTile
+
+-- %import qualified XMonadContrib.HintedTile
hunk ./LayoutHints.hs 29
+
+-- %import XMonadContrib.LayoutHints
+-- %layout , layoutHints tiled
+-- %layout , layoutHints $ mirror tiled
hunk ./LayoutScreens.hs 42
+
+-- %import XMonadContrib.LayoutScreens
+-- %keybind , ((modMask .|. shiftMask, xK_space), layoutScreens 2 (twoPane 0.5 0.5))
+-- %keybind , ((controlMask .|. modMask .|. shiftMask, xK_space), rescreen)
hunk ./MagicFocus.hs 26
+
+-- %import XMonadContrib.MagicFocus
+-- %layout , magicFocus tiled
+-- %layout , magicFocus $ mirror tiled
hunk ./Magnifier.hs 32
+
+-- %import XMonadContrib.Magnifier
+-- %layout , magnifier tiled
+-- %layout , magnifier $ mirror tiled
hunk ./Mosaic.hs 61
+
+-- %import XMonadContrib.Mosaic
+-- %keybind , ((controlMask .|. modMask .|. shiftMask, xK_h), withNamedWindow (sendMessage . tallWindow))
+-- %keybind , ((controlMask .|. modMask .|. shiftMask, xK_l), withNamedWindow (sendMessage . wideWindow))
+-- %keybind , ((modMask .|. shiftMask, xK_h ), withNamedWindow (sendMessage . shrinkWindow))
+-- %keybind , ((modMask .|. shiftMask, xK_l ), withNamedWindow (sendMessage . expandWindow))
+-- %keybind , ((modMask .|. shiftMask, xK_s ), withNamedWindow (sendMessage . squareWindow))
+-- %keybind , ((modMask .|. shiftMask, xK_o ), withNamedWindow (sendMessage . myclearWindow))
+-- %keybind , ((controlMask .|. modMask .|. shiftMask, xK_o ), withNamedWindow (sendMessage . flexibleWindow))
+-- %layout , mosaic 0.25 0.5 M.empty
hunk ./NoBorders.hs 42
+
+-- %import XMonadContrib.NoBorders
+-- %layout -- prepend noBorders to default layouts above to remove their borders, like so:
+-- %layout , noBorders full
hunk ./Roledex.hs 32
+
+-- %import XMonadContrib.Roledex
+-- %layout , roledex
hunk ./RotSlaves.hs 36
+
+-- %import XMonadContrib.RotSlaves
+-- %keybind , ((modMask .|. shiftMask, xK_Tab ), rotSlavesUp)
hunk ./RotView.hs 37
+
+-- %import XMonadContrib.RotView
+-- %keybind , ((modMask .|. shiftMask, xK_Right), rotView True)
+-- %keybind , ((modMask .|. shiftMask, xK_Left), rotView False)
hunk ./ShellPrompt.hs 50
+
+-- %cabalbuilddep readline>=1.0
+-- %import XMonadContrib.XPrompt
+-- %import XMonadContrib.ShellPrompt
+-- %keybind , ((modMask .|. controlMask, xK_x), shellPrompt defaultXPConfig)
hunk ./SimpleDate.hs 34
+
+-- %import XMonadContrib.SimpleDate
+-- %keybind , ((modMask, xK_d ), date)
hunk ./SinkAll.hs 27
+
+-- %import XMonadContrib.SinkAll
+-- %keybind , ((modMask .|. shiftMask, xK_t), sinkAll)
hunk ./Spiral.hs 36
--- > defaultLayouts :: [Layout]
--- > defaultLayouts = [ full,
--- > tall defaultWindowsInMaster defaultDelta (1%2),
--- > wide defaultWindowsInMaster defaultDelta (1%2),
--- > spiral (1 % 1) ]
+-- > defaultLayouts = [ full, spiral (1 % 1), ... ]
+
+-- %import XMonadContrib.Spiral
+-- %layout , spiral (1 % 1)
hunk ./Square.hs 40
+
+-- %import XMonadContrib.Square
hunk ./SshPrompt.hs 39
+
+-- %import XMonadContrib.XPrompt
+-- %import XMonadContrib.SshPrompt
+-- %keybind , ((modMask .|. controlMask, xK_x), xmonadPrompt defaultXPConfig)
hunk ./Submap.hs 45
+
+-- %import XMonadContrib.Submap
+-- %keybind , ((modMask, xK_a), submap . M.fromList $
+-- %keybind [ ((0, xK_n), spawn "mpc next")
+-- %keybind , ((0, xK_p), spawn "mpc prev")
+-- %keybind , ((0, xK_z), spawn "mpc random")
+-- %keybind , ((0, xK_space), spawn "mpc toggle")
+-- %keybind ])
hunk ./Tabbed.hs 53
+
+-- %import XMonadContrib.Tabbed
+-- %layout , tabbed shrinkText defaultTConf
hunk ./ThreeColumns.hs 40
--- > threeCol
+-- > threeCol nmaster delta ratio
+
+-- %import XMonadContrib.ThreeColumns
+-- %layout , threeCol nmaster delta ratio
hunk ./TwoPane.hs 35
--- > twoPane defaultDelta (1%2)
+-- > twoPane delta (1%2)
+
+-- %import XMonadContrib.TwoPane
+-- %layout , twoPane delta (1%2)
hunk ./Warp.hs 47
+
+-- %import XMonadContrib.Warp
+-- %keybind , ((modMask, xK_z ), warpToWindow (1%2) (1%2)) -- @@ Move pointer to currently focused window
+-- %keybindlist ++
+-- %keybindlist -- mod-ctrl-{w,e,r} @@ Move mouse pointer to screen 1, 2, or 3
+-- %keybindlist [((modMask .|. controlMask, key), warpToScreen sc (1%2) (1%2))
+-- %keybindlist | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]]
hunk ./WorkspaceDir.hs 48
+
+-- %import XMonadContrib.WorkspaceDir
+-- %keybind , ((modMask .|. shiftMask, xK_x ), changeDir defaultXPConfig)
+-- %layout -- prepend 'map (workspaceDir "~")' to defaultLayouts definition above,
+-- %layout -- just before the list, like the following (don't uncomment next line):
+-- %layout -- defaultLayouts = map (workspaceDir "~") [ tiled, ... ]
hunk ./XMonadPrompt.hs 36
+
+-- %import XMonadContrib.XPrompt
+-- %import XMonadContrib.XMonadPrompt
+-- %keybind , ((modMask .|. controlMask, xK_x), xmonadPrompt defaultXPConfig)
hunk ./scripts/generate-configs.sh 1
+#!/bin/bash
+
+# generate-configs.sh - Docstring parser for generating xmonad build configs
+# with default settings for extensions
+# Author: Alex Tarkovsky <alextarkovsky(a)gmail.com>
+# Released into the public domain
+
+# This script parses custom docstrings specifying build-time configuration data
+# from xmonad extension source files, then inserts the data into copies of
+# xmonad's Config.hs and xmonad.cabal files accordingly.
+#
+# Usage: generate-configs.sh PATH_TO_CONTRIBS
+#
+# Run this script from the directory containing xmonad's main Config.hs and
+# xmonad.cabal files, otherwise you'll need to change the value of
+# $REPO_DIR_BASE below.
+#
+# The docstring markup can be extended as needed. Currently the following tags
+# are defined, shown with some examples:
+#
+# ~~~~~
+#
+# %cabalbuilddep
+#
+# Cabal build dependency. Value is appended to the "build-depends" line in
+# xmonad.cabal and automatically prefixed with ", ". NB: Don't embed
+# comments in this tag!
+#
+# -- %cabalbuilddep readline>=1.0
+#
+# %def
+#
+# General definition. Value is appended to the end of Config.sh.
+#
+# -- %def commands :: [(String, X ())]
+# -- %def commands = defaultCommands
+#
+# %import
+#
+# Module needed by Config.sh to build the extension. Value is appended to
+# the end of the default import list in Config.sh and automatically
+# prefixed with "import ".
+#
+# -- %import XMonadContrib.Accordion
+# -- %import qualified XMonadContrib.FlexibleManipulate as Flex
+#
+# %keybind
+#
+# Tuple defining a key binding. Must be prefixed with ", ". Value is
+# inserted at the end of the "keys" list in Config.sh.
+#
+# -- %keybind , ((modMask, xK_d), date)
+#
+# %keybindlist
+#
+# Same as %keybind, but instead of a key binding tuple the definition is a
+# list of key binding tuples (or a list comprehension producing them). This
+# list is concatenated to the "keys" list must begin with the "++" operator
+# rather than ", ".
+#
+# -- %keybindlist ++
+# -- %keybindlist -- mod-[1..9] @@ Switch to workspace N
+# -- %keybindlist -- mod-shift-[1..9] @@ Move client to workspace N
+# -- %keybindlist -- mod-control-shift-[1..9] @@ Copy client to workspace N
+# -- %keybindlist [((m .|. modMask, k), f i)
+# -- %keybindlist | (i, k) <- zip [0..fromIntegral (workspaces-1)] [xK_1 ..]
+# -- %keybindlist , (f, m) <- [(view, 0), (shift, shiftMask), (copy, shiftMask .|. controlMask)]]
+#
+# %layout
+#
+# A layout. Must be prefixed with ", ". Value is inserted at the end of the
+# "defaultLayouts" list in Config.sh.
+#
+# -- %layout , accordion
+#
+# %mousebind
+#
+# Tuple defining a mouse binding. Must be prefixed with ", ". Value is
+# inserted at the end of the "mouseBindings" list in Config.sh.
+#
+# -- %mousebind , ((modMask, button3), (\\w -> focus w >> Flex.mouseResizeWindow w))
+#
+# ~~~~~
+#
+# NB: '/' and '\' characters must be escaped with a '\' character!
+#
+# Tags may also contain comments, as illustrated in the %keybindlist examples
+# above. Comments are a good place for special user instructions:
+#
+# -- %def -- comment out default logHook definition above if you uncomment this:
+# -- %def logHook = dynamicLog
+
+if [[ -z "$1" || $# > 1 || ! -d "$1" ]] ; then
+ echo "Usage: generate-configs.sh PATH_TO_CONTRIB"
+ exit 1
+fi
+
+REPO_DIR_BASE="."
+
+CABAL_FILE_BASE="${REPO_DIR_BASE}/xmonad.cabal"
+CABAL_FILE_CONTRIB="${1}/xmonad.cabal"
+
+CONFIG_FILE_BASE="${REPO_DIR_BASE}/Config.hs"
+CONFIG_FILE_CONTRIB="${1}/Config.hs"
+
+# Markup tag to search for in source files.
+TAG_CABALBUILDDEP="%cabalbuilddep"
+TAG_DEF="%def"
+TAG_IMPORT="%import"
+TAG_KEYBIND="%keybind"
+TAG_KEYBINDLIST="%keybindlist"
+TAG_LAYOUT="%layout"
+TAG_MOUSEBIND="%mousebind"
+
+# Insert markers to search for in Config.sh and xmonad.cabal. Values are
+# extended sed regular expressions.
+INS_MARKER_CABALBUILDDEP='^build-depends:.*'
+INS_MARKER_DEF='-- Extension-provided definitions$'
+INS_MARKER_IMPORT='-- Extension-provided imports$'
+INS_MARKER_KEYBIND='-- Extension-provided key bindings$'
+INS_MARKER_KEYBINDLIST='-- Extension-provided key bindings lists$'
+INS_MARKER_LAYOUT='-- Extension-provided layouts$'
+INS_MARKER_MOUSEBIND='-- Extension-provided mouse bindings$'
+
+# Literal indentation strings. Values may contain escaped chars such as \t.
+INS_INDENT_CABALBUILDDEP=""
+INS_INDENT_DEF=""
+INS_INDENT_IMPORT=""
+INS_INDENT_KEYBIND=" "
+INS_INDENT_KEYBINDLIST=" "
+INS_INDENT_LAYOUT=" "
+INS_INDENT_MOUSEBIND=" "
+
+# Prefix applied to inserted values after indent strings have been applied.
+INS_PREFIX_CABALBUILDDEP=", "
+INS_PREFIX_DEF="-- "
+INS_PREFIX_IMPORT="--import "
+INS_PREFIX_KEYBIND="-- "
+INS_PREFIX_KEYBINDLIST="-- "
+INS_PREFIX_LAYOUT="-- "
+INS_PREFIX_MOUSEBIND="-- "
+
+cp -f "${CABAL_FILE_BASE}" "${CABAL_FILE_CONTRIB}"
+cp -f "${CONFIG_FILE_BASE}" "${CONFIG_FILE_CONTRIB}"
+
+for extension_srcfile in $(ls --color=never -1 "${1}"/*.hs | head -n -1 | sort -r) ; do
+ for tag in $TAG_CABALBUILDDEP \
+ $TAG_DEF \
+ $TAG_IMPORT \
+ $TAG_KEYBIND \
+ $TAG_KEYBINDLIST \
+ $TAG_LAYOUT \
+ $TAG_MOUSEBIND ; do
+
+ ifs="$IFS"
+ IFS=$'\n'
+ tags=( $(sed -n -r -e "s/^.*--\s*${tag}\s//p" "${extension_srcfile}") )
+ IFS="${ifs}"
+
+ case $tag in
+ $TAG_CABALBUILDDEP) ins_indent=$INS_INDENT_CABALBUILDDEP
+ ins_marker=$INS_MARKER_CABALBUILDDEP
+ ins_prefix=$INS_PREFIX_CABALBUILDDEP
+ ;;
+ $TAG_DEF) ins_indent=$INS_INDENT_DEF
+ ins_marker=$INS_MARKER_DEF
+ ins_prefix=$INS_PREFIX_DEF
+ ;;
+ $TAG_IMPORT) ins_indent=$INS_INDENT_IMPORT
+ ins_marker=$INS_MARKER_IMPORT
+ ins_prefix=$INS_PREFIX_IMPORT
+ ;;
+ $TAG_KEYBIND) ins_indent=$INS_INDENT_KEYBIND
+ ins_marker=$INS_MARKER_KEYBIND
+ ins_prefix=$INS_PREFIX_KEYBIND
+ ;;
+ $TAG_KEYBINDLIST) ins_indent=$INS_INDENT_KEYBINDLIST
+ ins_marker=$INS_MARKER_KEYBINDLIST
+ ins_prefix=$INS_PREFIX_KEYBINDLIST
+ ;;
+ $TAG_LAYOUT) ins_indent=$INS_INDENT_LAYOUT
+ ins_marker=$INS_MARKER_LAYOUT
+ ins_prefix=$INS_PREFIX_LAYOUT
+ ;;
+ $TAG_MOUSEBIND) ins_indent=$INS_INDENT_MOUSEBIND
+ ins_marker=$INS_MARKER_MOUSEBIND
+ ins_prefix=$INS_PREFIX_MOUSEBIND
+ ;;
+ esac
+
+ # Insert in reverse so values will ultimately appear in correct order.
+ for i in $( seq $(( ${#tags[*]} - 1 )) -1 0 ) ; do
+ [ -z "${tags[i]}" ] && continue
+ if [[ $tag == $TAG_CABALBUILDDEP ]] ; then
+ sed -i -r -e "s/${ins_marker}/\\0${ins_prefix}${tags[i]}/" "${CABAL_FILE_CONTRIB}"
+ else
+ sed -i -r -e "/${ins_marker}/{G;s/$/${ins_indent}${ins_prefix}${tags[i]}/;}" "${CONFIG_FILE_CONTRIB}"
+ fi
+ done
+
+ if [[ $tag != $TAG_CABALBUILDDEP && -n "${tags}" ]] ; then
+ ins_group_comment="${ins_indent}-- For extension $(basename $extension_srcfile .hs):"
+ sed -i -r -e "/${ins_marker}/{G;s/$/${ins_group_comment}/;}" "${CONFIG_FILE_CONTRIB}"
+ fi
+ done
+done
}
Context:
[CopyWindow: update usage info
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070820232834]
[add DragPane.
David Roundy <droundy(a)darcs.net>**20070813144007]
[fix bug in Combo where we ignored changes in super.
David Roundy <droundy(a)darcs.net>**20070813143500]
[remove redundant fromIntegral from Commands.
David Roundy <droundy(a)darcs.net>**20070820000925]
[Mosaic.hs (really) Fix incorrect usage example
Jason Creighton <jcreigh(a)gmail.com>**20070818215725
"tall" and "wide" are anachronisms as well. It makes me wonder how we can
and/or should give examples like this that don't bitrot and confuse newbies.
]
[Mosaic.hs: Fix incorrect usage example
Jason Creighton <jcreigh(a)gmail.com>**20070818212854]
[XPrompt: haddock tuning and more comments
Andrea Rossato <andrea.rossato(a)unibz.it>**20070818083423]
[SwitchTrans:: haddock tuning
Andrea Rossato <andrea.rossato(a)unibz.it>**20070818083401]
[RunInXTerm: haddock tuning
Andrea Rossato <andrea.rossato(a)unibz.it>**20070818083329]
[RotSlaves: haddock tuning
Andrea Rossato <andrea.rossato(a)unibz.it>**20070818083306]
[Roledex: haddock tuning
Andrea Rossato <andrea.rossato(a)unibz.it>**20070818083244]
[LayoutHelpers: haddock tuning
Andrea Rossato <andrea.rossato(a)unibz.it>**20070818083220]
[DirectoryPrompt: removed ShellPrompt usage info and added pointer to WorkspaceDir
Andrea Rossato <andrea.rossato(a)unibz.it>**20070818083105]
[DeManage: haddock fixes
Andrea Rossato <andrea.rossato(a)unibz.it>**20070818083036]
[MetaModule: removed BackCompat no longer in the repository
Andrea Rossato <andrea.rossato(a)unibz.it>**20070818071916]
[fix MagicFocus/floats interaction
Peter De Wachter <pdewacht(a)gmail.com>**20070816185217]
[fix Circle/floats interaction
Peter De Wachter <pdewacht(a)gmail.com>**20070816185144]
[XPrompt: documentation only
Andrea Rossato <andrea.rossato(a)unibz.it>**20070817162806]
[ShellPrompt: quickcheck related refactoring
Andrea Rossato <andrea.rossato(a)unibz.it>**20070817155725]
[added a tests directory with quickcheck tests for XPrompt and ShellPrompt
Andrea Rossato <andrea.rossato(a)unibz.it>**20070817155634]
[XPrompt: quickcheck related refactoring
Andrea Rossato <andrea.rossato(a)unibz.it>**20070817155454
With this patch XPrompt can be tested with quickcheck. As a result
getLastWord and skipLastWord has been refactored to avoid possible
exceptions.
]
[XPrompt: fixes a nasty bug in getLastWord
Andrea Rossato <andrea.rossato(a)unibz.it>**20070815163457
This patch fixes a nasty bug in getLastWord, a bug that causes XMonad
to crash as soon as the command line consists of only 2 empty spaces.
*PLEASE UPDATE* if you are running XPrompt.
]
[ghc thinks I don't need those fromIntegrals
l.mai(a)web.de**20070815231852]
[use XPrompt in WorkspaceDir.
David Roundy <droundy(a)darcs.net>**20070814191103]
[clean up DynamicWorkspaces to handle layouts properly.
David Roundy <droundy(a)darcs.net>**20070814183542]
[make DynamicWorkspace more thorough.
David Roundy <droundy(a)darcs.net>**20070814014548
Note: there's still a bug due to our failure to inform
the old layouts to clean up.
]
[new module DynamicWorkspaces to add and remove workspaces.
David Roundy <droundy(a)darcs.net>**20070814011501]
[fix Commands to work with new workspaces.
David Roundy <droundy(a)darcs.net>**20070814004146]
[Make FlexibleManipulate comply with new mouse dragging system
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070815032619]
[make FlexibleResize use new mouseDrag properly.
David Roundy <droundy(a)darcs.net>**20070807202016]
[fix Expand/Shrink for spiralWithDir
bobstopper(a)bobturf.org**20070808204752]
[Remove GreedyView: the functionality is now in StackSet
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070815022101]
[Use maskEvent rather than nextEvent. Fixes rare segfaults
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070814170416]
[Decoration: don't crash when given a non-existent font
Andrea Rossato <andrea.rossato(a)unibz.it>**20070810182433]
[actually use the selected font in XPrompt.
David Roundy <droundy(a)darcs.net>**20070810174543]
[increase default contrast in XPrompt.
David Roundy <droundy(a)darcs.net>**20070810174724]
[center prompt text in window.
David Roundy <droundy(a)darcs.net>**20070810173746]
[don't crash when given a non-existent font in XPrompt.
David Roundy <droundy(a)darcs.net>**20070810170445]
[Add ViewPrev to MetaModule
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070810211242]
[ViewPrev.hs
nelhage(a)mit.edu**20070810032653
Add a ViewPrev extension which gives a viewPrev command to view the
previously visible workspace.
]
[fix CopyWindow to not require Integral WorkspaceId.
David Roundy <droundy(a)darcs.net>**20070801144543]
[SshPrompt now uses RunInXTerm to launch the command
Andrea Rossato <andrea.rossato(a)unibz.it>**20070807101911]
[RunInXTerm: a simple module to run commands in an X terminal
Andrea Rossato <andrea.rossato(a)unibz.it>**20070807101603
This is just a wrapper around spawn to launch commands in an X
terminal: runInXTerm will check the for the XTERMCMD environmental
variable, and use it to run the command. If the variable is not set
the command will be executed with xterm.
]
[XPrompt: removed touchFile (which is not the equivalent of touch!)
Andrea Rossato <andrea.rossato(a)unibz.it>**20070805225906]
[LayoutScreen: haddock cleanup
Andrea Rossato <andrea.rossato(a)unibz.it>**20070805215800]
[XPrompt.hs: getCompletion should check for completions of the last word of the command line
Andrea Rossato <andrea.rossato(a)unibz.it>**20070805124130]
[work around Magnifier's problems with floating windows
Peter De Wachter <pdewacht(a)gmail.com>**20070805141051]
[Add Roledex to MetaModule
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070806151628]
[XPrompt.hs: read history lazily
Andrea Rossato <andrea.rossato(a)unibz.it>**20070804185914
Instead of forcing the reading of all the history file we read it lazily.
]
[XPrompt.hs: removed defaultPromptConfig. use defautlXPConfig instead
Andrea Rossato <andrea.rossato(a)unibz.it>**20070804183252]
[weird formatting fixed
Don Stewart <dons(a)cse.unsw.edu.au>**20070806032739]
[rolodex
tim.thelion(a)gmail.com**20070804235730
Cascading windows...
]
[XPrompt.hs: haddock corrections and some comments
Andrea Rossato <andrea.rossato(a)unibz.it>**20070804104622]
[XMonadPrompt.hs: minor haddock corrections
Andrea Rossato <andrea.rossato(a)unibz.it>**20070804104534]
[SwitchTrans.hs: minor haddock corrections
Andrea Rossato <andrea.rossato(a)unibz.it>**20070804104458]
[SshPrompt.hs: minor haddock corrections
Andrea Rossato <andrea.rossato(a)unibz.it>**20070804104441]
[ShellPrompt.hs: minor haddock corrections
Andrea Rossato <andrea.rossato(a)unibz.it>**20070804104408]
[FlexibleManipulate.hs: minor haddock corrections
Andrea Rossato <andrea.rossato(a)unibz.it>**20070804104330]
[MetaModule: added XPrompt and others
Andrea Rossato <andrea.rossato(a)unibz.it>**20070804093049
XPrompt, XMonadPrompt, SshPrompt.
ShellPrompt is commented out since it requires readline and the related
xmonad.cabal modifications.
]
[XPrompt: fixes a couple of bugs
Andrea Rossato <andrea.rossato(a)unibz.it>**20070804090817
- we run the action passed to mkXPrompt only if we have a command;
- updateWindows must call destroyComplWin if there are no completions;
- some comments (more to come)
- a shorthand in keyPressHandle
- removed all warnings
]
[RotSlaves rework
Karsten Schoelzel <kuser(a)gmx.de>**20070803185337
Rework the logic of RotSlaves and rename it RotSlavesDown, add RotSlavesUp. These rotate
the slaves in different directions.
Also changed the usage, eliminating the need for "windows" in the keybinding.
]
[XPrompt: code cleanup
Andrea Rossato <andrea.rossato(a)unibz.it>**20070803181905
The completion list is not cached anymore: this greatly simplify the code
making its runtime behaviour more predictable...;-) Suggested by Spencer.
]
[Make 'compList :: [String]', rather than Maybe. No completions is represented by []
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070803160424]
[Rename 'setCompletionList' to 'refreshCompletionList'
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070803155942]
[XPrompt: added comletion and history support
Andrea Rossato <andrea.rossato(a)unibz.it>**20070803154531
This is a long patch the brings us a real prompt, more or less: completions
now work. Added history support, with a configuration option: defaul history
size is 256.
defaultPromptConfig is now deprecated: please use defaultXPConfig instead
]
[Prompts: updated and corrected usage info
Andrea Rossato <andrea.rossato(a)unibz.it>**20070803130158]
[Make the XPrompt appear on the current screen
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070802184231]
[XPrompt: a module for easily writing graphical prompts
Andrea Rossato <andrea.rossato(a)unibz.it>**20070802171552]
[ XMonadPrompt: a graphical prompt for running XMonad internal commands
Andrea Rossato <andrea.rossato(a)unibz.it>**20070802165336]
[SshPrompt: a graphical prompt for ssh connection
Andrea Rossato <andrea.rossato(a)unibz.it>**20070802155943]
[ShellPrompt: a graphical shell prompt
Andrea Rossato <andrea.rossato(a)unibz.it>**20070802155845
This module requires readline and so a modification to xmonad.cabal. See
usage for instructions.
]
[FlexibleManipulate.hs: needs -fglasgow-exts to compile.
joachim.fasting(a)gmail.com**20070802144042]
[MetaModule.hs: add FocusNth.
joachim.fasting(a)gmail.com**20070802144023]
[Add ThreeColumns to MetaModule
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070802143356]
[Add RotSlaves to MetaModule
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070802143334]
[RotSlaves
Hans Philipp Annen <haphi(a)gmx.net>**20070802094408]
[DeManage.hs: haddock compatibility.
joachim.fasting(a)gmail.com**20070725100910]
[Fix warnings in FlexibleManipulate (Sorry!)
Michael G. Sloan <mgsloan(a)gmail.com>**20070729032407]
[Add FlexibleManipulate extension
Michael G. Sloan <mgsloan(a)gmail.com>**20070729031402]
[Commands: refactoring to include in MetaModule
Andrea Rossato <andrea.rossato(a)unibz.it>**20070728132029
Just a small refactooring (well, now runCommand requires a command list, and
I added runCommand's that will take a string to run it against the default
command list) to include this module in MetaModule so that we can track it
in case of API changes (this patch has been requested by Spencer).
]
[SwitchTrans.hs, initial version
l.mai(a)web.de**20070728153826]
[fix WorkspaceDir (which was broken) using LayoutHelpers.
David Roundy <droundy(a)darcs.net>**20070726133520]
[FocusNth initial import
Karsten Schoelzel <kuser(a)gmx.de>**20070725203305]
[use a little more contrast in default tabs.
David Roundy <droundy(a)darcs.net>**20070724143723]
[3col fix: do not switch to tall layout on resize/incmastern
Kai Grossjohann <kai(a)emptydomain.de>**20070723212754]
[3col rounding
Kai Grossjohann <kai(a)emptydomain.de>**20070721204026]
[fix 3col layout for nmaster + 1 windows
Kai Grossjohann <kai(a)emptydomain.de>**20070721150825
Do like two column layout if there are nmaster+1 windows (putting 1 window
in the right column).
]
[Three column layout
Kai Grossjohann <kai(a)emptydomain.de>**20070721144654
This layout is similar to tall, but has three columns. The first column
is the master column.
]
[Made the direction of spiral in Spiral.hs optionally configurable
bobstopper(a)bobturf.org**20070721002307]
[DeManage: take a Window as argument
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070718204410]
[Typo
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070718204041]
[Add XMonadContrib.DeManage: a module for unmanaging windows (like panels)
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070718203107]
[Tabbed.hs: corrected error in Usage reported by Xavier Maillard
Andrea Rossato <andrea.rossato(a)unibz.it>**20070717050034]
[fixes Commands.hs
Andrea Rossato <andrea.rossato(a)unibz.it>**20070716164017]
[MetaModule.hs: add missing modules.
joachim.fasting(a)gmail.com**20070715205857]
[Magnifier: unbreak: raise focus window
Peter De Wachter <pdewacht(a)gmail.com>**20070630072206]
[Spiral.hs: correct module header.
joachim.fasting(a)gmail.com**20070707212836]
[LayoutScreens.hs: correct module header.
joachim.fasting(a)gmail.com**20070701215712]
[add FlexibleResize to MetaModule
l.mai(a)web.de**20070708130229]
[link to xinerama-dmenu patch for dmenu 3.2
Jason Creighton <jcreigh(a)gmail.com>**20070708021413
Thanks to Dave Harrison for an updated version of the patch.
]
[Tabbed: updated usage information
Andrea Rossato <andrea.rossato(a)unibz.it>**20070707065123]
[Tabs should stay beneath any floating window
Andrea Rossato <andrea.rossato(a)unibz.it>**20070707064941
This ifxes the issue reported by Geoffrey Alan Washburn: " Sometimes the
tabs will be drawn on top of floating windows." Not anymore!
]
[Tabbed: added more configuration options
Andrea Rossato <andrea.rossato(a)unibz.it>**20070706130845
It is now possible to configure active and inactive border colors, and
active and inactive text colors (i.e. tabs are now very similar to Ion3
tabs: former Ion users may appreciate).
]
[NamedWindows: if fetchName returns Nothing sets the name to resName ClassHint
Andrea Rossato <andrea.rossato(a)unibz.it>**20070706130644
fetchName may return a Nothing if the window's name contains multi byte
characters. In such a case the resName string of the ClassHints of that
window will be used instead.
]
[the gaps list should be filled with the default value from Config.hs
Andrea Rossato <andrea.rossato(a)unibz.it>**20070704224110]
[SimpleStacking: -Wall police
Alec Berryman <alec(a)thened.net>**20070704201255]
[SimpleStacking: remove note about Xinerama incompatability, works fine now
Alec Berryman <alec(a)thened.net>**20070704200626]
[ScreenLayouts.hs: updates to the last API changes
Andrea Rossato <andrea.rossato(a)unibz.it>**20070703201145
A silent API change broke this nice piece of David's code: Spencer decided
to move screen details into StackSet, and there we went to manipulate them!
]
[More ScreenDetails fixes
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070630065916]
[Make GreedyView work with ScreenDetails
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070630065643]
[flexible resizing for floating windows
l.mai(a)web.de**20070629171038
The default resize handler for floating windows warps the mouse pointer to
the bottom right corner of the window (fixing the opposite, upper left,
corner). This extension lets you use any of the four window corners as
grabbing points, allowing more flexible resizing.
]
[resolve conflicts in Decoration and Tabbed.
David Roundy <droundy(a)darcs.net>**20070629204518
Note that you no longer need simpleStacking when using tabbed.
]
[resolve conflict in Square.
David Roundy <droundy(a)darcs.net>**20070629201636]
[clean up code in Combo.
David Roundy <droundy(a)darcs.net>**20070624171346
This adds some type safety, since the super-layout is now of a distinct
type from the sublayouts. This avoids the ugliness we had, of passing
"fake" windows to the super layout. Now we directly lay out the layouts.
]
[add CopyWindow module, to support sticky/tagged windows.
David Roundy <droundy(a)darcs.net>**20070624155648
This module allows dwm-style tagging (as I understand dwm). You can have a
given window visible in multiple workspaces. If it's visible in two
workspaces both of which are visible, a gap will show up in one of them
(which is something that needs fixing in xmonad core). Also defines a
kill1 which is like kill, but only removes from the current workspace a
window if it's in multiple workspaces.
]
[make everything work with new doLayout.
David Roundy <droundy(a)darcs.net>**20070623210952
This modifies all the contrib modules to work (so far as I know) with the
new contrib layout. The exception is the LayoutHooks module, which isn't
used. It exports an API that is inherently unsafe, so far as I can tell
(and always has been).
]
[move Accordian to use idModify.
David Roundy <droundy(a)darcs.net>**20070623143745]
[introduce idModify which is just "const (return Nothing)".
David Roundy <droundy(a)darcs.net>**20070623143542]
[move Spiral to LayoutHelpers.
David Roundy <droundy(a)darcs.net>**20070623143516]
[Note that SimpleStacking is incompatible with Xinerama
Jason Creighton <jcreigh(a)gmail.com>**20070627035426
It's unclear to me what SimpleStacking is supposed to accomplish, so I'm just
going to note that it doesn't work with Xinerama. (Due to assuming that the
current workspace is the one being laid out)
]
[Tabbed: Make use of the Stack to get focused window
Jason Creighton <jcreigh(a)gmail.com>**20070627033910]
[Accordion.hs: whitespace.
joachim.fasting(a)gmail.com**20070626071449
Makes Haddock not complain about not finding documentation for '$'.
]
[MetaModule.hs: add LayoutHelpers.
joachim.fasting(a)gmail.com**20070626065522
Also tweaks import ordering slightly.
]
[Tabbed.hs: updated usage information
Andrea Rossato <andrea.rossato(a)unibz.it>**20070625140735]
[added configration options and moved font stuff to Decorations.hs
Andrea Rossato <andrea.rossato(a)unibz.it>**20070625140112
Added a new data type to keep configuration options. tabbed now takes the shrinker and the configuration
type.
Fixed a bug related to vertical alignment of text.
]
[Decoration.hs: added automatic font managment
Andrea Rossato <andrea.rossato(a)unibz.it>**20070625135722
newDecoration now takes also a fontname to set fonts in decorations that use them.
If an empty string is send the the default Xorg fonts will be loaded.
]
[fix usage instructions on NoBorders.
David Roundy <droundy(a)darcs.net>**20070624141631]
[remove BackCompat.hs
daniel(a)wagner-home.com**20070624171740]
[Square.hs: put usage instructions after imports for Haddock compatibility.
joachim.fasting(a)gmail.com**20070623184938]
[Magnifier.hs: quote screenshot url for Haddock compatibility.
joachim.fasting(a)gmail.com**20070623223227]
[add new LayoutHelpers module.
David Roundy <droundy(a)darcs.net>**20070622142950]
[Add SinkAll module.
joachim.fasting(a)gmail.com**20070623050510
Provides a means of pushing all windows on the current workspace back into
tiling. Not all that useful, but might be preferable to restarting or manually
pushing windows.
]
[Magnifier.hs: needs -fglasgow-exts to compile.
joachim.fasting(a)gmail.com**20070622111442]
[fix usage info for LayoutScreens.
David Roundy <droundy(a)darcs.net>**20070622132618]
[add new LayoutScreens module.
David Roundy <droundy(a)darcs.net>**20070622131300]
[Magnifier: raise the focus window
Peter De Wachter <pdewacht(a)gmail.com>**20070621192541]
[Circle: raise the focus window
Peter De Wachter <pdewacht(a)gmail.com>**20070621191207]
[Circle cleanups
Peter De Wachter <pdewacht(a)gmail.com>**20070621191125]
[make Mosaic lay thigs out a bit better.
David Roundy <droundy(a)darcs.net>**20070621162632]
[add SimpleStacking module to make Combo and Tabbed work together.
David Roundy <droundy(a)darcs.net>**20070621151524
WARNING! This change will break existing Tabbed configurations. The
problem is that there is no way within a Layout's "doLayout" to safely
modify the layout itself. This makes LayoutHooks fragile, and more to the
point, makes SimpleStacking fragile, so we can't safely define a
tabbed' = simpleStacking . tabbed
A workaround would have been to duplicate the tabbed code, but I'd rather
leave the ugliness and get this fixed.
]
[Make Magnifier's master window behavior customizable
Peter De Wachter <pdewacht(a)gmail.com>**20070620170020
based on a suggestion by Tim Hobbs
]
[Whitespace.
joachim.fasting(a)gmail.com**20070620115852]
[Make Mosaic compile without warnings
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070620153111]
[make some layouts more general.
David Roundy <droundy(a)darcs.net>**20070620125420]
[Mosaic.hs: get rid off some of the warnings generated by -Wall.
joachim.fasting(a)gmail.com**20070620123449
Unused definitions and imports left in, as I assume they'll be used for
something later on.
]
[MetaModule.hs: add LayoutHooks.
joachim.fasting(a)gmail.com**20070620115457]
[Combo.hs: use case instead of non-standard pattern matching.
joachim.fasting(a)gmail.com**20070620112805
Also uses fmap/maybe instead of do/case, which makes the code look a little
cleaner (imo).
Please note that I've only been able to test this briefly, but it seems to be
working like it's supposed to.
]
[Combo.hs: tweak usage instructions.
joachim.fasting(a)gmail.com**20070620112555
tabbed needs an additional argument.
]
[README: change reference to 'examples/'.
joachim.fasting(a)gmail.com**20070620093753]
[Use Data.Ord.comparing in DynamicLog
Shachaf Ben-Kiki <shachaf(a)gmail.com>**20070620011016
This patch replaces (compare `on`) with Data.ord.comparing, so on doesn't have
to be defined.
]
[Fix type signatures.
joachim.fasting(a)gmail.com**20070619220323
Think this fixes the rest of the errors caused by the Layout change.
]
[MagicFocus.magicFocus: fix type signature.
joachim.fasting(a)gmail.com**20070619214839
Layout change caused because of missing type argument.
]
[LayoutHooks.hs: add module header.
joachim.fasting(a)gmail.com**20070619204504]
[Factor out pprWindowSet (and Xinerama version) from dynamicLog.
Shachaf Ben-Kiki <shachaf(a)gmail.com>**20070619183657
This patch lets you pretty-print a WindowSet to a string, rather than always
printing it out to stdout directly.
]
[clean up TwoPane to work on Stacks as it ought.
David Roundy <droundy(a)darcs.net>**20070619150928]
[run-xmonad.sh: don't hard-code path to mkfifo.
joachim.fasting(a)gmail.com**20070619124212
mkfifo isn't located in /sbin on all distributions (Gentoo puts it in /bin).
By temporarily appending /sbin to PATH both setups are supported.
'which' and friends are not viable options since /sbin usually isn't in
user's PATH by default.
]
[Anneal.hs: add module header.
joachim.fasting(a)gmail.com**20070619002849]
[run-xmonad.sh: use $HOME when setting PATH.
joachim.fasting(a)gmail.com**20070618234703]
[Circle.hs: only compute sqrt 2 once.
joachim.fasting(a)gmail.com**20070618232051]
[Magnifier.hs: add usage instructions.
joachim.fasting(a)gmail.com**20070618212215]
[MagicFocus.hs: add module header and usage instructions.
joachim.fasting(a)gmail.com**20070618205421]
[MagicFocus.magicFocus: add type signature.
joachim.fasting(a)gmail.com**20070618205222]
[Accordion.hs: add module header and usage instructions.
joachim.fasting(a)gmail.com**20070618193626]
[LayoutHints.hs: add usage thingie for Haddock.
joachim.fasting(a)gmail.com**20070618143234]
[LayoutHints.hs: add module header.
joachim.fasting(a)gmail.com**20070618143059]
[Dzen.hs: add module header.
joachim.fasting(a)gmail.com**20070618142915]
[MetaModule.hs: correct module header.
joachim.fasting(a)gmail.com**20070618191905]
[Remove all references to exec
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070618201652]
[Add Accordion to MetaModule
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070618190526]
[Add an "accordion" layout which puts non-focused windows in ribbons at the top and bottom of the screen.
glasser(a)mit.edu**20070618153943]
[RotView.rotView: use Data.Ord.comparing.
joachim.fasting(a)gmail.com**20070618144502
Looks a bit cleaner than '\x y -> compare (tag x) (tag y)'
]
[shrink window names to fit tabs.
David Roundy <droundy(a)darcs.net>**20070617152340]
[Tabbed.hs: fixed centerText issues and some binding shadowing warnings
Andrea Rossato <andrea.rossato(a)unibz.it>**20070617104219
This patch fixes the centerText issue due to the inappropriate use of
textExtends and textWidth. Those functions need a FontStruct id to
operate, and this cannot be retrieved with queryFont (see comments in
Graphics.X11.Xlib.Font).
So we now get the FontStruct with loadQueryFont, we set the default
Xorg fonts and we calculate things for (vertical and horizontal)
centering.
It also removes some binding shadows compiler warnings
]
[fix leak in Combo.
David Roundy <droundy(a)darcs.net>**20070616191052
We leaked decorations, since UnDoLayout wasn't passed to the actual layouts
that had decorations attached. :(
]
[Typo
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070617000924]
[Comment only
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070617000805]
[Import typo
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070614211337]
[Magnifier layout hack
Peter De Wachter <pdewacht(a)gmail.com>**20070614203219
This layout hack increases the size of the window that has focus (the master
window excepted). This causes it to overlap with nearby windows, so not for
tiling purists :)
Screenshot: http://caladan.rave.org/magnifier.png
]
[Use Haskell '98 data declaration rather than GADT-style
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070614205211]
[WorkspaceDir.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614144443]
[Warp.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614144426]
[TwoPane.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614144409]
[Submap.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614144348]
[Square.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614144317]
[Spiral.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614144300]
[SimpleDate.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614144241]
[RotView.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614144225]
[NoBorders.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614144200]
[NamedWindows.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614144135]
[Mosaic.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614144118]
[metaModule.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614144102]
[HintedTile.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614144019]
[GreedyView.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614143953]
[FindEmptyWorkspace.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614143909]
[DynamicLog.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614143839]
[DwmPromote.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614143813]
[Dmenu.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614143753]
[Decoration.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614143731]
[Combo.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614143700]
[Circle.hs: info and documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614143550]
[BackCompat.hs info e documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614064850]
[Tabbed.hs: Get correct color values instead of assuming a 24-bit display
Jason Creighton <jcreigh(a)gmail.com>**20070613235049
Using, eg, 0xBBBBBB directly makes assumptions about the server's colormap and
only works on 24-bit displays.
This patch fetches the colors on every doLayout call, which is ugly, but works.
It would be nice if we could do all the required initColors only once.
]
[added info to Commands.hs
Andrea Rossato <andrea.rossato(a)unibz.it>**20070613190908
Haddock stuff.
]
[add bsd-style license for xmonad contrib
Don Stewart <dons(a)cse.unsw.edu.au>**20070614025454]
[Update license information
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070613152829]
[template for module information e documentation
Andrea Rossato <andrea.rossato(a)unibz.it>**20070613131029]
[Remove some debugging statements I forgot about earlier
Stefan O'Rear <stefanor(a)cox.net>**20070613041112]
[Update MagicFocus to the new StackSet
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070613035323]
[Magic Focus
Peter De Wachter <pdewacht(a)gmail.com>**20070612175357
Automatically puts the focused window in the master position. It's magic.
I wrote this for the Circle layout, but it's actually usable with other
layouts as well.
]
[add -fglasgow-exts to some modules that use it.
David Roundy <droundy(a)darcs.net>**20070612170349]
[changes to work with Stacks that can't be empty.
David Roundy <droundy(a)darcs.net>**20070612151209]
[add Combo and Square to MetaModule.
David Roundy <droundy(a)darcs.net>**20070612133753]
[new module NoBorders to let a given layout have windows without borders.
David Roundy <droundy(a)darcs.net>**20070612133727
This is designed for layouts like full and tabbed, where the red square
around the screen actually conveys no information (except for weird windows
that use the shape extension or something, so that more than one window is
actually visible). Save some real estate at no cost.
]
[make combo sort of work with new doLayout.
David Roundy <droundy(a)darcs.net>**20070612133027
For some reason (not entirely clear to me) this doesn't work properly just
yet with the tabbed layout. :( But at least it'll compile. The trouble is
that we have no way of tracking which tab ought to be visible without
adding a *lot* of infrastructure. I'd rather have that infrastructure in
xmonad proper than reimplement all the focus-handling in combo, so for now
I'll just delay upgrading my xmonad at work...
]
[make square work with new doLayout.
David Roundy <droundy(a)darcs.net>**20070612133009]
[add "Square" layout.
David Roundy <droundy(a)darcs.net>**20070612021048
This is probably only ever useful in combination with Combo.
It sticks one window in a square region, and makes the rest
of the windows live with what's left (in a full-screen sense).
]
[add new combo layout combiner.
David Roundy <droundy(a)darcs.net>**20070611224922]
[In Decoration.hs, track rename of ModifyWindows
Stefan O'Rear <stefanor(a)cox.net>**20070612060713]
[Refactor Decoration into a general layout-level hooks interface, and a decoration support module on top of that
Stefan O'Rear <stefanor(a)cox.net>**20070612060210]
[the Stack can be Empty
Andrea Rossato <andrea.rossato(a)unibz.it>**20070612055144]
[Documentation fix
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070612035655]
[Comment only
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070612031305]
[Fix LayoutHints in the presence of nonzero border widths
Stefan O'Rear <stefanor(a)cox.net>**20070611005407]
[add keybinding to make aspect ratio flexible.
David Roundy <droundy(a)darcs.net>**20070611165915]
[Note the modules I maintain
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070611184830]
[Add MetaModule
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070611184601]
[Updates to work with recent API changes
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070611183439]
[Rename safeIO to catchIO
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070611162028]
[add WorkspaceDir, which sets the current directory in a workspace.
David Roundy <droundy(a)darcs.net>**20070611154041
Actually, it sets the current directory in a layout, since there's no way I
know of to attach a behavior to a workspace. This means that any terminals
(or other programs) pulled up in that workspace (with that layout) will
execute in that working directory. Sort of handy, I think.
]
[fmt
Don Stewart <dons(a)cse.unsw.edu.au>**20070611053450]
[added dynamicLogXinerama, a workspace logger that's nicer for Xinerama
Jason Creighton <jcreigh(a)gmail.com>**20070611051810]
[redraw decorations on PropertyNotify
Jason Creighton <jcreigh(a)gmail.com>**20070611021408
newDecoration now takes a Window parameter, which is the window the decoration
is "for". If there is a PropertyNotify for that window, the decoration is
redrawn.
]
[use safe peek instead of unsafe focus
Jason Creighton <jcreigh(a)gmail.com>**20070611015437
Fixes crashing bug with Xinerama where you have a tabbed layout on one screen
and attempt to switch to an empty workspace on the other.
]
[make Tabbed respect the y position of the layout rect (statusbar bugfix)
Jason Creighton <jcreigh(a)gmail.com>**20070610231510]
[tune layout of Tabbed just a bit.
David Roundy <droundy(a)darcs.net>**20070610203513]
[make Decoration set the input mask appropriately.
David Roundy <droundy(a)darcs.net>**20070610203451]
[Updates for Layout API change
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070610203840]
[color focussed tab differently.
David Roundy <droundy(a)darcs.net>**20070610195743]
[update Mosaic for latest changes.
David Roundy <droundy(a)darcs.net>**20070610145816]
[maximize rather than minimize the rating.
David Roundy <droundy(a)darcs.net>**20070601183240]
[fix error in select.
David Roundy <droundy(a)darcs.net>**20070601183147]
[improve changeMosaic.
David Roundy <droundy(a)darcs.net>**20070601175042]
[cut obsolete description of mosaic.
David Roundy <droundy(a)darcs.net>**20070609131456]
[start switching over to a Monte Carlo algorithm for Mosaic
David Roundy <droundy(a)darcs.net>**20070601170505]
[new layout algorithm for Mosaic.
David Roundy <droundy(a)darcs.net>**20070527191153]
[display names of windows on tabs.
David Roundy <droundy(a)darcs.net>**20070610163729]
[make Decoration draw the window initially.
David Roundy <droundy(a)darcs.net>**20070610163651
We still don't respond to expose events. :(
]
[Fix name of xmonad-clock in compilation instructions.
glasser(a)mit.edu**20070610155204]
[add Decoration module to be used to easily define decorations.
David Roundy <droundy(a)darcs.net>**20070610153939]
[add sketch of tabbed layout.
David Roundy <droundy(a)darcs.net>**20070610153926]
[make LayoutHints work with new modifyLayout (in X).
David Roundy <droundy(a)darcs.net>**20070610145740]
[tag visibles with <N>
Don Stewart <dons(a)cse.unsw.edu.au>**20070610111931]
[tweak pkill
Don Stewart <dons(a)cse.unsw.edu.au>**20070610093027]
[greedydoc
dave(a)nullcube.com**20070610091056
Add documentation on how to use GreedyView as your default workspace switcher.
]
[use all 3 load values
Don Stewart <dons(a)cse.unsw.edu.au>**20070610090959]
[Modified xmonad-clock.c to display battery information from ACPI (will work only on linux though). Also restored three load averages instead of only one.
buisse(a)cs.chalmers.se**20070610090228]
[example xinitrc
Don Stewart <dons(a)cse.unsw.edu.au>**20070610085715]
[update run-xmonad.sh
Don Stewart <dons(a)cse.unsw.edu.au>**20070610063915]
[no need for ./scripts/xmonad-status.c, update run-xmonad.sh
Don Stewart <dons(a)cse.unsw.edu.au>**20070610062806]
[add DynamicLog.hs
Don Stewart <dons(a)cse.unsw.edu.au>**20070610062757]
[make LayoutHints robust with regard to future addition of Layout fields.
David Roundy <droundy(a)darcs.net>**20070609173725]
[remove out of date ./scripts/xmonad-status.hs
Don Stewart <dons(a)cse.unsw.edu.au>**20070610005107]
[add new LayoutHints module that makes layouts respect size hints.
David Roundy <droundy(a)darcs.net>**20070604213716]
[improve xmonad-status.c
Don Stewart <dons(a)cse.unsw.edu.au>**20070609140258]
[Add C script for parsing new logging encoding, and displaying workspace info
Don Stewart <dons(a)cse.unsw.edu.au>**20070609131856]
[missing unsetenv
Don Stewart <dons(a)cse.unsw.edu.au>**20070609090127]
[add tiny clock program (C) i'm using in the status bar
Don Stewart <dons(a)cse.unsw.edu.au>**20070609080435]
[remove obsolete 'examples' dir
Don Stewart <dons(a)cse.unsw.edu.au>**20070609061450]
[latest version of xmonad-status.hs
Don Stewart <dons(a)cse.unsw.edu.au>**20070609060913]
[remove dead version
Don Stewart <dons(a)cse.unsw.edu.au>**20070609060857]
[Circle layout
Peter De Wachter <pdewacht(a)gmail.com>**20070606064153
Windows are arranged in a circle around the master window. Rather nice to use
with a mouse, if you got many windows open.
Screenshot: http://caladan.rave.org/circle.png
]
[Submap: For creating keyboard submappings
Jason Creighton <jcreigh(a)gmail.com>**20070606061941]
[nicer format for dynamic workspaces
Don Stewart <dons(a)cse.unsw.edu.au>**20070606045705]
[add script which only draws current workspace, and those with clients
Don Stewart <dons(a)cse.unsw.edu.au>**20070606044544]
[In docs, change name of program from mux to xmonad-status.
glasser(a)mit.edu**20070605140045]
[Add xmonad-status.hs
Don Stewart <dons(a)cse.unsw.edu.au>**20070605132108
An external status bar client for xmonad.
See screenshots:
http://www.cse.unsw.edu.au/~dons/tmp/dons-dzen-status.png
http://www.cse.unsw.edu.au/~dons/tmp/xmonad-dzen-tags.png
]
[gapless tiled layout obeying size hints
Peter De Wachter <pdewacht(a)gmail.com>**20070605071716]
[Contrib package for 6.4 users
daniel(a)wagner-home.com**20070604225534]
[XMonadContrib.ReadMap: a Read instance of Map for GHC 6.4 users
daniel(a)wagner-home.com**20070602064318]
[keybindings to warp pointer to window center
daniel(a)wagner-home.com**20070602062328]
[XMonadContrib.Commands: for workspace and screen commands, leave out W/S tag
glasser(a)mit.edu**20070601161351]
[New contrib module: run internal xmonad commands via dmenu
glasser(a)mit.edu**20070601043849]
[Note that my xinerama patch is now in dzen.
glasser(a)mit.edu**20070601041112]
[Rescreen is in main xmonad now
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070528050656]
[replace "name" in NamedWindow with a Show instance.
David Roundy <droundy(a)darcs.net>**20070526185114]
[[Spiral] blend in the scale factor so it doesn't have any effect on the smallest windows
joe.thornber(a)gmail.com**20070525032732]
[[Spiral] last rect takes all available space
joe.thornber(a)gmail.com**20070524120239]
[[Spiral] Introduce a simpler Rect data type to remove a lot of the fromIntegrals
joe.thornber(a)gmail.com**20070524100423]
[[Spiral] divideRects now takes a list of directions to split in
joe.thornber(a)gmail.com**20070524090211]
[[Spiral] misc tidying
joe.thornber(a)gmail.com**20070524085537]
[[Spiral] remove old spiral code
joe.thornber(a)gmail.com**20070524084805]
[[Spiral] add fibonacci spiral
joe.thornber(a)gmail.com**20070524084423]
[Allow clients of NamedWindows to get at the name.
glasser(a)mit.edu**20070523184251]
[dzen module (with xinerama support, which requires glasser's Xinerama patch to dzen)
glasser(a)mit.edu**20070523184315]
[Extract NamedWindow support from Mosaic into its own module
glasser(a)mit.edu**20070523155855]
[remove SwapFocus (which is no longer possible)
David Roundy <droundy(a)darcs.net>**20070523153841
This module depended on the focus stack.
]
[Fix Spiral's module name
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070522170909]
[[SPIRAL] add spiral tiling layout
joe.thornber(a)gmail.com**20070522062537]
[Make RotView compile.
Miikka Koskinen <arcatan(a)kapsi.fi>**20070522075338
As I'm not a Xinerama user, I'm not sure if rotView should consider only
hidden workspaces or also visible but not focused workspaces. I thought hidden
workspaces only would be more logical.
]
[bug fix in DwmPromote. whoops.
Miikka Koskinen <arcatan(a)kapsi.fi>**20070522062118]
[make FindEmptyWorkspace compile
Miikka Koskinen <arcatan(a)kapsi.fi>**20070521123239]
[make DwmPromote compile
Miikka Koskinen <arcatan(a)kapsi.fi>**20070521123140]
[updated Dmenu.hs to work with zipper StackSet
Jason Creighton <jcreigh(a)gmail.com>**20070521233947]
[Add GreedyView
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070521220048]
[Rescreen: collects new screen information
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070521164808]
[Fixes for windowset -> workspace rename
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070521042118]
[TwoPane: hide windows that aren't in view
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070518224240]
[make Mosaic even less picky by default.
David Roundy <droundy(a)darcs.net>**20070516175554]
[add clear window message in Mosaic.
David Roundy <droundy(a)darcs.net>**20070516175518]
[Comment only
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070517211003]
[Add instructions for TwoPane
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070517210206]
[Add TwoPane
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070517195618]
[throttle the exponential expense when many windows are present.
David Roundy <droundy(a)darcs.net>**20070516022123]
[make mosaic configure windows by name rather than by Window.
David Roundy <droundy(a)darcs.net>**20070512215644
Note that this is still pretty flawed. Often window names change, and the
layout then stagnates a bit. Gimp, for example, opens most its windows
with the same name before renaming them, so you have to hit mod-return or
something to force a doLayout. Also, gimp still overrides xmonad regarding
the size of its main window. :(
]
[XMonadContrib.FindEmptyWorkspace
Miikka Koskinen <arcatan(a)kapsi.fi>**20070513184338
With this module you can find empty workspaces, view them and tag windows to
them.
]
[make DwmPromote compile
Miikka Koskinen <arcatan(a)kapsi.fi>**20070513184254]
[make DwmPromote compile again
Miikka Koskinen <arcatan(a)kapsi.fi>**20070510154158]
[make DwmPromote compile
Miikka Koskinen <arcatan(a)kapsi.fi>**20070503105236]
[add SwapFocus.
David Roundy <droundy(a)darcs.net>**20070512191315]
[make rotView only consider non-visible workspaces (Xinerama)
Jason Creighton <jcreigh(a)gmail.com>**20070510012059]
[fix commend in RotView.
David Roundy <droundy(a)darcs.net>**20070505185654]
[switch to Message type for layout messages
Don Stewart <dons(a)cse.unsw.edu.au>**20070505014332]
[Fix instructions in Mosaic.
Chris Mears <chris(a)cmears.id.au>**20070503222345]
[add Mosaic layout.
David Roundy <droundy(a)darcs.net>**20070503151024]
[-Wall police
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070503211700]
[Make RotView build, and add a brief description.
Chris Mears <chris(a)cmears.id.au>**20070503104234]
[comment: Gave URL to xinerama-enabled dmenu patch
Jason Creighton <jcreigh(a)gmail.com>**20070503053133]
[Put dmenu in X too
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070503053727]
[Add dmenu (thanks jcreigh)
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070503052225]
[add RotView module.
David Roundy <droundy(a)darcs.net>**20070421233838]
[XMonadContrib.DwmPromote: dwm-like promote
Miikka Koskinen <arcatan(a)kapsi.fi>**20070501082031
I like the way dwm's equivalent to xmonad's promote works, so I
implemented dwmpromote.
]
[add simple date example
Don Stewart <dons(a)cse.unsw.edu.au>**20070429064013]
[more details
Don Stewart <dons(a)cse.unsw.edu.au>**20070429061426]
[add readme
Don Stewart <dons(a)cse.unsw.edu.au>**20070429061329]
[Initial import of xmonad contributions
Don Stewart <dons(a)cse.unsw.edu.au>**20070429061150]
Patch bundle hash:
372d9bfc1d0bfaa4d558249be761e22418d74cd6
New patches:
[Add insert markers to Config.hs for docstring parser
Alex Tarkovsky <alextarkovsky(a)gmail.com>**20070820211841] {
hunk ./Config.hs 32
+-- Extension-provided imports
+
hunk ./Config.hs 91
-defaultLayouts = [ tiled , mirror tiled , full ]
+defaultLayouts = [ tiled
+ , mirror tiled
+ , full
+
+ -- Extension-provided layouts
+ ]
hunk ./Config.hs 164
- ] ++
+ -- Extension-provided key bindings
+ ]
+ ++
hunk ./Config.hs 172
-
+ ++
hunk ./Config.hs 175
- ++
hunk ./Config.hs 178
+ -- Extension-provided key bindings lists
hunk ./Config.hs 187
- , ((modMask, button3), (\w -> focus w >> mouseResizeWindow w)) ]
+ , ((modMask, button3), (\w -> focus w >> mouseResizeWindow w))
+
+ -- Extension-provided mouse bindings
+ ]
+
+-- Extension-provided definitions
}
Context:
[don't refresh when setting focus to already focussed window.
David Roundy <droundy(a)darcs.net>**20070820150225]
[clear out motion events when processing one motion event.
David Roundy <droundy(a)darcs.net>**20070820002351
This is important if the hook is slow (e.g. try adding "float w"
to the window-dragging hook), as it allows xmonad to keep up with
the motion of the mouse.
]
[remove unneeded do.
David Roundy <droundy(a)darcs.net>**20070813143721]
[make splitHorizontallyBy accept any RealFrac.
David Roundy <droundy(a)darcs.net>**20070813143707]
[Fix new bug in screen switching
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070816215629]
[-Wall police
Don Stewart <dons(a)cse.unsw.edu.au>**20070816033132]
[Comment only
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070815224031]
[simplify code in StackSet.
David Roundy <droundy(a)darcs.net>**20070814010422]
[change workspaces to [WorkspaceId]
David Roundy <droundy(a)darcs.net>**20070814003722]
[Operations.windows: minor refactor
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070815031521]
[Cleanup
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070810213940]
[move event loop out of mouseDrag.
David Roundy <droundy(a)darcs.net>**20070807201616]
[only display any given window once.
David Roundy <droundy(a)darcs.net>**20070724141310
This change goes along with the sticky window work. It makes xmonad
display each window once and only once, with preference given to the
focussed screen. It has no effect when there are no duplicate windows,
except to make things less efficient. We could do better using Data.Set
(or Data.Map) to store the set of windows that are visible.
]
[Add greedyView, make it the default action for mod-wer
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070815025504]
[Remove 'Eq' constraint from StackSet.index
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070807144346]
[trailing whitespace only
Don Stewart <dons(a)cse.unsw.edu.au>**20070805072716]
[added workspaces to hs-boot (needed by XMonadContrib.Commands and possibly other modules)
Andrea Rossato <andrea.rossato(a)unibz.it>**20070728131756]
[QuickCheck filter preserves order
Karsten Schoelzel <kuser(a)gmx.de>**20070728184534]
[Bugfix: reordering when filtering out the last window on a workspace
Karsten Schoelzel <kuser(a)gmx.de>**20070728132507
Say you have three windows A B C* on a workspace with * marking the focus.
If you close C or move it to another workspace, the resulting order will be B* A,
thus reordering the other windows, defying the comment of filter.
]
[shift: use guards instead of if
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070724152340]
[Remove unnecessary Integral constraints
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070724152257]
[make delete work when window is in multiple workspaces.
David Roundy <droundy(a)darcs.net>**20070724142045]
[Remove redundant 'n >= 0' check from shift. (from David Roundy's 'simplify shift, removing unneeded check.' patch)
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070724145927]
[Cleanup of shift code
Michael G. Sloan <mgsloan(a)gmail.com>**20070722205337]
[use $HOME in examples
Don Stewart <dons(a)cse.unsw.edu.au>**20070719063348]
[Tweak dmenu binding
Peter De Wachter <pdewacht(a)gmail.com>**20070717190722
Add an "eval", so quotes and environment variables get evaluated
according to sh rules.
]
[restore focus to currently focused window after "float" (closes #32)
Jason Creighton <jcreigh(a)gmail.com>**20070710042631]
[Operations.screenWorkspace: return Nothing when the screen does not exist
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070707223842]
[Operations.rescreen: screen indexes start at zero
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070707223334]
[Note and workaround bugs in Operations.float
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070705195213]
[refresh after starting
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070630050346]
[UPGRADE X11-Extras! Manage iconified windows
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070630021026]
[Move screen details into StackSet
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070629213917]
[Change a window's workspace when dragging across screens (closes #30)
Jason Creighton <jcreigh(a)gmail.com>**20070628025023]
[support self-modifying layouts.
David Roundy <droundy(a)darcs.net>**20070623201447]
[comment for (dubious?) integrate'
Don Stewart <dons(a)cse.unsw.edu.au>**20070626052431]
[broadcast unidentified events.
David Roundy <droundy(a)darcs.net>**20070623214125
This change is independent of the doLayout change I just sent in, but fixes
the problem that change introduces in Decoration, by ensuring that all
Layouts get redraw events. I think this is the correct behavior.
]
[add 2 properties to state where focus goes on delete of focused window
Don Stewart <dons(a)cse.unsw.edu.au>**20070626040907]
[fix empty case in 'filter', and note differences in semantics wrt. focus to 'delete'
Don Stewart <dons(a)cse.unsw.edu.au>**20070626035741]
[clean up 'StackSet.filter' for style
Don Stewart <dons(a)cse.unsw.edu.au>**20070626033202]
[minor tweaks, ideas from joachim.fasting@
Don Stewart <dons(a)cse.unsw.edu.au>**20070621033613]
[only perform mouse events on managed windows. closes #28
Don Stewart <dons(a)cse.unsw.edu.au>**20070621011700]
[Update Layout documentation
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070620150858]
[-Wall police
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070620150823]
[Stack windows in the order they are returned by doLayout
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070620150419]
[remove out of date `(Included with GHC)' text in README
Don Stewart <dons(a)cse.unsw.edu.au>**20070620060430]
[make Layouts able to layout whatever they like.
David Roundy <droundy(a)darcs.net>**20070619150816]
[float fixed size windows
Peter De Wachter <pdewacht(a)gmail.com>**20070618214657]
[Remove all references to 'exec'
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070618201532]
[-Wall police, and turn on -fno-warn-orphans
Don Stewart <dons(a)cse.unsw.edu.au>**20070617052322]
[make workspace tag not need to be a Num.
David Roundy <droundy(a)darcs.net>**20070614140709
This change also removes the barely used 'size' field, and replaces
it with a tagMember predicate. The idea is to move towards the ability
to make the workspace tag be a String, which by default might be "1".."9",
but could also be customized to be something meaningful to the user.
]
[Fix float stacking
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070614213412]
[Remove 'temporary work around' in 'windows'
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070614211450]
[haddock tuning for StackSet.hs
Andrea Rossato <andrea.rossato(a)unibz.it>**20070614064511
with this patch the documentation of StackSet.hs will have a nice TOC
]
[move initColor to Operations and only store the Pixel value of colors
Jason Creighton <jcreigh(a)gmail.com>**20070613234501
Moving initColor to Operations allows it to be used by extensions.
The Pixel component of the color is the only thing we need, so it's simpler
just to deal with that.
]
[haddick fine tuning
Andrea Rossato <andrea.rossato(a)unibz.it>**20070613185902]
[Indentation
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070613043018]
[prevent keyboard focus from getting lost in some cases
Jason Creighton <jcreigh(a)gmail.com>**20070613025350]
[resolve conflict in Operations.
David Roundy <droundy(a)darcs.net>**20070612170625]
[add catchX to catch exceptions.
David Roundy <droundy(a)darcs.net>**20070612154253]
[make focus, up and down complete functions.
David Roundy <droundy(a)darcs.net>**20070612150555
This is a rerun of my change to make (Stack a) never be empty. Gives
us more type-safety.
]
[add differentiate function to StackSet to go [a] -> Stack a.
David Roundy <droundy(a)darcs.net>**20070612132853]
[Make 'view' a total function
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070612143248]
[fmt
Don Stewart <dons(a)cse.unsw.edu.au>**20070612134938]
[-Wall police
Stefan O'Rear <stefanor(a)cox.net>**20070612060546]
[Use a more descriptive name for the layout reversal message
Stefan O'Rear <stefanor(a)cox.net>**20070612055859]
[Use broadcastMessage in windows and switchLayout, should improve Xinerama for tabbed and make xmonad robust in the presence of state-altering unlayout hooks
Stefan O'Rear <stefanor(a)cox.net>**20070612055510]
[Add a broadcastMessage function, which sends to all visible workspaces without refreshing. (+6 loc)
Stefan O'Rear <stefanor(a)cox.net>**20070612055339]
[TODO for scan
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070611214217]
[Set withdrawn state after calling windows
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070611213327]
[Remove obsolete 'layout' function
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070611203622]
[-Wall police
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070611202007]
[Comment only
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070611195827]
[Hide windows that are not supposed to be visible
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070611191809]
[-Wall police
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070611185708]
[API CHANGE: Give doLayout a Stack rather than a flattened list
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070611182629]
[-Wall police
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070611180123]
[Add StackSet.filter
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070611165154]
[Use catchIO in 'restart'
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070611161152]
[Rename safeIO to catchIO
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070611160608]
[add safeIO which catches and logs exceptions.
David Roundy <droundy(a)darcs.net>**20070611153650]
[Ensure windows get at least 1 pixel for width/height
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070611061930]
[Restrict the master/slave ratio to [0, 1]
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070611053230]
[comment only
Jason Creighton <jcreigh(a)gmail.com>**20070611020249]
[a few modifications to event-sending to make Tabbed layout work.
David Roundy <droundy(a)darcs.net>**20070610153836]
[send message when "windows" is called.
David Roundy <droundy(a)darcs.net>**20070610013531]
[implement Spencer's decoration suggestion.
David Roundy <droundy(a)darcs.net>**20070610012237]
[haddock compatibility
Andrea Rossato <andrea.rossato(a)unibz.it>**20070610123746]
[Move state logging into Config.hs, via logHook :: X ()
Don Stewart <dons(a)cse.unsw.edu.au>**20070610061932]
[polish serialisation code (-7 lines)
Don Stewart <dons(a)cse.unsw.edu.au>**20070610045551]
[cut incorrect comment.
David Roundy <droundy(a)darcs.net>**20070609173447]
[doLayout cleanup and commented exception-handling.
David Roundy <droundy(a)darcs.net>**20070609145036]
[Give refresh sole responsibility for establishing window properties (-3 loc)
Stefan O'Rear <stefanor(a)cox.net>*-20070609185835]
[Give refresh sole responsibility for establishing window properties (-3 loc)
Stefan O'Rear <stefanor(a)cox.net>**20070609185835]
[HEADS UP: (logging format change). use a custom pretty printer, for an easier format to parse, than 'show' produces
Don Stewart <dons(a)cse.unsw.edu.au>**20070609131716]
[Add notes on using X11-extras from darcs
Don Stewart <dons(a)cse.unsw.edu.au>**20070609025045]
[Fix unmap handling
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070606214006
According to the ICCCM, clients should send a synthetic unmap event when they
initiate an unmap. The old code waited for these synthetic unmaps to unmanage
windows. However, certain 'obsolete' clients do not send synthetic unmaps
(notably xpdf's find dialog). These windows entered a zombified state: xmonad
does not manage them, yet they are still mapped and raised on screen.
The new algorithm (derived from wmii):
- track windows that are mapped on screen
- track the number of expected unmap events for each window, increment every
time 'hide' is called on a window that is not mapped.
- decrement the expected unmap counter on each unmap event
- treat an unmap event as genuine (ie. unmap the window) when:
- the event is synthetic (per ICCCM)
- OR there are no expected unmap events for this window
]
[dead import
Don Stewart <dons(a)cse.unsw.edu.au>**20070606025226]
[move extraModifiers/cleanMask to Operations.hs
Jason Creighton <jcreigh(a)gmail.com>**20070606005056
so XMonadContrib can use them
]
[temporary workaround for delete/focus issue in fullscreen mode
Don Stewart <dons(a)cse.unsw.edu.au>**20070606024938]
[whitespace
Don Stewart <dons(a)cse.unsw.edu.au>**20070606024857]
[simplify code
Don Stewart <dons(a)cse.unsw.edu.au>**20070606004603]
[mention why StackSet needs -fglasgow-exts (for deriving Typeable)
Don Stewart <dons(a)cse.unsw.edu.au>**20070605092659]
[comments only
Don Stewart <dons(a)cse.unsw.edu.au>**20070605091803]
[clean size hint code
Don Stewart <dons(a)cse.unsw.edu.au>**20070605091354]
[Enable logging of state changes to stdout
Don Stewart <dons(a)cse.unsw.edu.au>**20070605083735]
[remove accidental logging of events
Don Stewart <dons(a)cse.unsw.edu.au>**20070605081452]
[Fix lost eventNotifyMask bug
Don Stewart <dons(a)cse.unsw.edu.au>**20070605043040
When resuming, we were (implicitly) relying on 'scan' to find all
windows, and reset their event masks and WM_STATE. When we moved to
Iconfified hidden workspaces, 'scan' would only find and reset states on
the current workspace.
The result being that hidden workspace windows no longer received
enterNotify events.
Fix this by traversing the StackSet serialised during a restart, setting
the intial X states for each window, whether visible or hidden.
]
[whitespace only
Don Stewart <dons(a)cse.unsw.edu.au>**20070605000723]
[Comment only
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604211956]
[Wibble.
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604211816]
[-Wall police
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604211531]
[apply size hints to floating windows
Peter De Wachter <pdewacht(a)gmail.com>**20070604192943]
[size hints infrastructure
Peter De Wachter <pdewacht(a)gmail.com>**20070604192753]
[Delete stale comment
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604204617]
[Comment only
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604203659]
[Use 'windows' in 'focus'
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604201639]
[realign guard
l.mai(a)web.de**20070604182045]
[swapUp/Down are also mirrored
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604183535]
[Remove redundant cases in swapUp/Down
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604183344]
[focusUp/Down are the same, in reversed order
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604183143]
[Simplify focusUp/Down
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604182228]
[Integral implies Eq
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604180745]
[Comment typo.
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604180554]
[Dump state at launch (commented for now)
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604162450]
[Small clean up
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604064418]
[Merge windows and refresh
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604063657]
[Use the new integrate function
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604062653]
[Add integrate
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604062501]
[Delete stale comments
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604061719]
[Remove inaccurate warnings about 'hide'
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604060611]
[base >= 2.0 means we can use forM_
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070604050914]
[Remove no-longer-needed 'dimensions' state (-5 loc)
Stefan O'Rear <stefanor(a)cox.net>**20070604044715]
[Set WM_STATE, iconify invisible windows (+9 loc)
Stefan O'Rear <stefanor(a)cox.net>**20070604042343
Note that this breaks compatibility with certain programs described as
"obsolete" in the ICCCM (1994). See the command above the UnmapEvent handler
for details.
]
[clean up Main.hs slightly
Don Stewart <dons(a)cse.unsw.edu.au>**20070604035637]
[whitespace
Don Stewart <dons(a)cse.unsw.edu.au>**20070604015532]
[-Wall
Don Stewart <dons(a)cse.unsw.edu.au>**20070604014630]
[do not cache atom values within Xmonad, instead let Xlib worry about caching (a documented feature)
Stefan O'Rear <stefanor(a)cox.net>**20070604013938]
[Honor configure requests from unmanaged windows
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070603234730]
[-Wall police
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070603212055]
[Correctly handle resize requests (-12 +22)
Stefan O'Rear <stefanor(a)cox.net>**20070603203153
Xmonad now implements resize requests in a consistent manner.
* If the window is FLOATING, we implement the program's request, and
correctly update the StackSet; so it will keep the new size. This
should work correctly even for non-current windows.
* Otherwise, we ignore the request. As per ICCCM, we send a fake
ConfigureNotify containing the new (unchanged) geometry. This is
perfectly ICCCM compliant, and if it breaks your client, it's your
own fault.
This patch requires setConfigureEvent, which is added to X11-extras by
a patch approximately contemporaneous with this one.
]
[comments only
Don Stewart <dons(a)cse.unsw.edu.au>**20070603071556]
[Polish core layout code. Lifts limitation on nmaster > 1. it may be 0 now
Don Stewart <dons(a)cse.unsw.edu.au>**20070603064306]
[heads up: polish config.hs. moves tiling-local values into lexical scope. removes `wide' as an explicit mode (it's `mirror tall')
Don Stewart <dons(a)cse.unsw.edu.au>**20070603054740]
[set build-depends base>=2.0 so people can't miss the missing Read instance issue
Don Stewart <dons(a)cse.unsw.edu.au>**20070603032319]
[Fix out-of-date comment in Config.hs.
Chris Mears <chris(a)cmears.id.au>**20070602114312]
[only grab button{1,2,3} for click-to-focus (scrollwheel shouldn't focus)
Jason Creighton <jcreigh(a)gmail.com>**20070602052605]
[make mouse bindings configurable
Jason Creighton <jcreigh(a)gmail.com>**20070602040647]
[commented out implementation state logging. if someone has a client, we can enable this
Don Stewart <dons(a)cse.unsw.edu.au>**20070601085626]
[ignore numlock/capslock on mouse bindings
Jason Creighton <jcreigh(a)gmail.com>**20070601015137]
[now we handle transients properly, and restack windows, refresh from focus is ok
Don Stewart <dons(a)cse.unsw.edu.au>**20070601022329]
[Rename withWorkspace to withWindowSet.
glasser(a)mit.edu**20070601001325]
[Revert accidental change to border color
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070531145509]
[comments on why fullscreen tiling doesn't work with `implicit' floating
Don Stewart <dons(a)cse.unsw.edu.au>**20070531090537]
[clean up mouse code a bit
Don Stewart <dons(a)cse.unsw.edu.au>**20070531085308]
[first shot at a floating layer
Jason Creighton <jcreigh(a)gmail.com>**20070531044733
This is a first attempting at a floating layer:
mod-button1: move window
mod-button2: swapMaster
mod-button3: resize window
mod-t: make floating window tiled again
Moving or resizing a window automatically makes it floating.
Known issues:
Hard to manage stacking order. You can promote a window to move it to the top,
(which you can do with mod-button2) but it should be easier than that.
Moving a window by dragging it to a different Xinerama screen does not move it
to that workspace.
Code is ugly.
]
[remove LOC cap (but still print count after tests)
Jason Creighton <jcreigh(a)gmail.com>**20070531043417]
[TAG 0.2
Spencer Janssen <sjanssen(a)cse.unl.edu>**20070531010004]
Patch bundle hash:
3a663c57e185280952ef685a696cf16fd15f0bd3
2
1
Hi,
yesterday there has been a complain about the way unclutter (the small
utility to hide the pointer after some inactivity) interacts with
XMonad. If you run it without the -grab option and you happen to have
the pointer over the borders of the screen, it is not possible to
change the focus anymore. This is because XMonad uses the mouse to
focus windows.[1]
This is due to the unclutter default behavior, which uses fake X events
to interact with other X clients.
So I rewrote unclutter in Haskell. There's a small issue with threads
and the timer, but it is usable here.
You can grab it with other haskell utilities for xmonad here:
darcs get http://gorgias.mine.nu/repos/xmonad-utils/
or get it directly here:
http://gorgias.mine.nu/repos/xmonad-utils/src/Hhp.hs
together with this:
http://gorgias.mine.nu/repos/xmonad-utils/src/Utils.hs
This is a collection of utilities I've already written about. I'm
going to release them as soon as X11-extras-0.3 will be released.
Andrea
[1] btw there is another issue with that: open 4 windows and
float and resize the last one.
Focus the first or the second window and switch to the full layout.
Now Enter the floating window with the mouse. Did you notice something
on the background? You are on the 3rd window.
2
1
Hi,
attached you'll find a safer ghci prompt, that uses an external
program to evaluate haskell expression.
This is still work in progress, but you can have an idea of what I'd
like to do.
Feedback highly appreciated!
ciao
andrea
ps: to use:
1. save the attached file as GhcPrompt.hs and follow the install
instruction;
2. save and compile the uitlity you'll find at the end of the file.
3. enjoy.
1
3
So I was working on splitting out Andrea's hxsel into something useful for one's Config.hs, and I'm basically done, and it seems to work well.
However, while it works fine for your basic bread and butter ASCII characters, I noticed that it does terrible things to more exotic phrases involving Unicode, such as "Henri PoincarĂ©". I borrowed some code from utf-string, and that improved it a little bit - "Henri PoincarĂ©" now becomes "Henri PoincarĂ½" which is still better than "Henri Poincar\245" or whatever.
As far as I can tell, whenever a String involving UTF-8 stuff leaves the Haskell environment, it gets messed up. This is a little hard to test since things get messed up even when I test them in GHCi. :) But I'm sure it has to be something to do with Haskell, since I know I can copy and paste such strings with no problems using the mouse, and I know that my shell isn't the problem and nor are the Surfraw programs I use to pass them to Firefox (and Firefox obviously has no problems handling those characters).
utf-string does have a special IO module which can print out and receive UTF-8 strings, but it's limited to things like 'putStr' and 'getContents'. There doesn't seem to be anything that would be useful for fixing 'spawn', which seems to be the specific function that needs fixing, since it isn't using any of them and executeFile doesn't seem to use any of them either.
spawn x = io $ do
pid <- forkProcess $ do
forkProcess (createSession >> executeFile "/bin/sh" False ["-c", x] Nothing)
exitWith ExitSuccess
getProcessStatus True False pid
return ()
Any ideas on how to fix this?
-----------------------------------------------------------------------------
-- |
-- Module : XMonadContrib.XSelection
-- Copyright : (C) 2007 Andrea Rossato
-- License : BSD3
--
-- Maintainer : andrea.rossato(a)unibz.it
-- Stability : unstable
-- Portability : unportable
--
-- A module for accessing and manipulating the X Window mouse selection (used in copy and pasting).
--
-----------------------------------------------------------------------------
{- $usage
Add 'import XMonadContrib.XSelection' to the top of Config.hs
Then make use of getSelection or promptSelection as needed.
TODO:
* Fix Unicode handling. Currently it's still better than calling 'chr' to translate to ASCII, though.
As near as I can tell, the mangling happens when the String is outputted somewhere, such as via
promptSelection's passing through the shell, or GHCi printing to the terminal. utf-string has IO functions
which can fix this, though I do not know have to use them here.
* Add a 'putSelection' to allow modification of the selection.
* Possibly add some more elaborate functionality: Emacs' registers are nice.
-}
module XMonadContrib.XSelection (getSelection, promptSelection) where
-- getSelection's imports:
import Graphics.X11.Xlib (allocaXEvent, createSimpleWindow, defaultScreen, destroyWindow, internAtom, nextEvent, openDisplay, rootWindow, selectionNotify, sTRING)
import Graphics.X11.Xlib.Extras (currentTime, ev_event_type, getEvent, getWindowProperty8, xConvertSelection)
import Data.Maybe (fromMaybe)
import Data.Char (chr)
-- promptSelection's imports:
import XMonad (io, spawn, X ())
-- decode's imports
import Foreign -- (Word8(), (.&.), shiftL, (.|.))
-- | Returns a String corresponding to the current mouse selection in X; if there is none, an empty string is returned.. Note that this is
-- only reliable for ASCII text and currently mangles/escapes more complex UTF-8 characters.
getSelection :: IO String
getSelection = do
dpy <- openDisplay ""
let dflt = defaultScreen dpy
rootw <- rootWindow dpy dflt
win <- createSimpleWindow dpy rootw 0 0 200 100 0 0 0
p <- internAtom dpy "PRIMARY" True
clp <- internAtom dpy "BLITZ_SEL_STRING" False
xConvertSelection dpy p sTRING clp win currentTime
allocaXEvent $ \e -> do
nextEvent dpy e
ev <- getEvent e
if ev_event_type ev == selectionNotify
then do res <- getWindowProperty8 dpy clp win
return $ decode . fromMaybe [] $ res
else destroyWindow dpy win >> return ""
-- | A wrapper around getSelection. Makes it convenient to run a program with the current selection as an argument. This is convenient
-- for handling URLs, in particular. For example, in your Config.hs you could bind a key to 'promptSelection "firefox"'; this would allow you to
-- highlight a URL string and then immediately open it up in Firefox.
promptSelection :: String -> X ()
promptSelection app = spawn . ((app ++ " ") ++) =<< io getSelection
{- UTF-8 decoding for internal use in getSelection. This code is totally stolen from Eric Mertens's utf-string library
<http://code.haskell.org/utf8-string/> (version 0.1), which fortunately is BSD-3 licensed, so I can just copy it into this BSD-3 licensed module.
I guess it'd be better to just import Codec.Binary.UTF8.String (decode), but then users of this would need to install it, and Xmonad has enough
dependencies as it is. -}
decode :: [Word8] -> String
decode [ ] = ""
decode (c:cs)
| c < 0x80 = chr (fromEnum c) : decode cs
| c < 0xc0 = replacement_character : decode cs
| c < 0xe0 = multi_byte 1 0x1f 0x80
| c < 0xf0 = multi_byte 2 0xf 0x800
| c < 0xf8 = multi_byte 3 0x7 0x10000
| c < 0xfc = multi_byte 4 0x3 0x200000
| c < 0xfe = multi_byte 5 0x1 0x4000000
| otherwise = replacement_character : decode cs
where
replacement_character :: Char
replacement_character = '\xfffd'
multi_byte :: Int -> Word8 -> Int -> [Char]
multi_byte i mask overlong = aux i cs (fromEnum (c .&. mask))
where
aux 0 rs acc
| overlong <= acc && acc <= 0x10ffff &&
(acc < 0xd800 || 0xdfff < acc) &&
(acc < 0xfffe || 0xffff < acc) = chr acc : decode rs
| otherwise = replacement_character : decode rs
aux n (r:rs) acc
| r .&. 0xc0 == 0x80 = aux (n-1) rs
$ shiftL acc 6 .|. fromEnum (r .&. 0x3f)
aux _ rs _ = replacement_character : decode rs
--
gwern
DDR&E E911 BCCI State EO PRIME iButton WID OAU Flintlock
3
3

30 Aug '07
Hi,
I discovered this by evaluating [1..100] in the ghc prompt.
andrea
Thu Aug 30 16:15:24 CEST 2007 Andrea Rossato <andrea.rossato(a)unibz.it>
* XPrompt: a very long string in the completion list can lead to a division by zero
2
1
Hi,
this is a set of patches to XPrompt: there is David's fix. The rest is
just code formatting (new lines removal, vertical alignment), and
nothing more.
Andrea
Wed Aug 22 21:32:20 CEST 2007 Andrea Rossato <andrea.rossato(a)unibz.it>
* XPrompt: just code formatting
Mon Aug 27 20:58:58 CEST 2007 David Roundy <droundy(a)darcs.net>
* fix bug leading to early exit in XPrompt.
Mon Aug 27 21:18:30 CEST 2007 David Roundy <droundy(a)darcs.net>
* make code more compact in XPrompt.
Tue Aug 28 10:12:35 CEST 2007 Andrea Rossato <andrea.rossato(a)unibz.it>
* XPrompt.hs: remove debugging bits
2
1
Hi,
I wanted to write this prompt from the very beginning. A prompt to
evaluate Haskell expressions...
At first I couldn't get hs-plugins to compile. Then I could compile
hs-plugin but I thought it was quite a difficult requirement for such
a prompt. I knew about that mysterious ghc-api, something to come in
the future... NO! GHC-API is there since 6.5, and can be easily used.
So, here's the prompt. It's just the a proof of concept, right now. It
uses the completions window to display the result and the ghc-api is
linked from XMonad itself, which makes the xmonad binary a huge file.
A lot of memory consumption is the obvious consequence.
I have a small program that can evaluate expressions from outside of
xmonad, but I'm not able to run it interactively from xmonad:
http://www.haskell.org/pipermail/haskell-cafe/2007-August/031167.html
I know how to compile Haskell code at runtime but I don't know how to
run a process interactively...:(
If you can help....
Follow the instruction of the attached modules (to be saved in
XMonadContrib. BE CAREFUL and edit ghcPath to fit your system
environment otherwise the prompt and XMonad will crash!!!
(the is one of the many reasons I want an external application to run
the statements!)
Hope you'll enjoy.
Andrea
ps: no error reports for the time being. I repeat it: this is just a
proof of concept. We need the external evaluator to work interactively
with the prompt.
1
1
I use Gaim for instant messaging. I use guifications so that I am
notified when someone sends me a message. But this is not enough for
me.
I think what I want is this:
- All Gaim windows go to a specific workspace.
- Whenever someone talks to me via Gaim, then I get a notification
about this that is unobtrusive but not transient.
I am requesting the first one because sometimes I lose a chat window (in
the sense of forgetting where it is). That is, I go to the buddy list,
double click on a contact and nothing happens. That's because the chat
window for that contact is already open. But I don't know where the
chat window is. In one case, it was one of five windows in a "full"
layout workspace.
For the second one, I am not sure what to do. Perhaps the workspace
name in the workspace list should flash? Or I should get an indicator
in the status bar that a Gaim message is waiting for me?
Kai
5
6