Xmonad/Config archive

From HaskellWiki
< Xmonad
Revision as of 20:34, 30 January 2009 by Sereven (talk | contribs)
Jump to navigation Jump to search


xmonad configuration examples

For more screenshots see the Xmonad/Screenshots archive.

/Template xmonad.hs (0.8) (also, /Template xmonad.hs (darcs))
The default xmonad settings; if you don't want to use the override style, you can just copy-and-paste portions into your xmonad.hs. Note that this file is not a usable xmonad.hs without further edits; it is merely a reference copy of the XMonad source module which sets up the configuration.
/31d1's xmonad.hs (darcs/gnome)
/Andrea Rossato's xmonad.hs (0.8)
Tabbed, Xmobar with DynamicLog, (Shell|Ssh|Man)Prompt.
/Andrea Spada xmonad.hs (0.8)
Tall, Resizable Mosaic and Combo, EvmhDesktops, additional keybindings - Work In Progress...
/andrewsw's xmonad.hs (0.8)
/andrewsw's .Xdefault
These screenshots show some compositing and nice transparent urxvt's with a circle layout and a magnified grid layout.
/And1's xmonad.hs (0.8)
mirrored layout, manageHook, dynamicLog with dzen, conky piped into dzen,
urgency hints, utf-8 support, perWorkspace layouts, PP for dzen and xmobar,
custom keys with application shortcuts and mpd controls;
new screenshots: screenshot_1, screenshot_2, screenshot_3, screenshot_4
And1 xmonad.png
/brad's xmonad.hs (0.8)
very basic, just some cosmetic and key-shortcut changes
/Brent Yorgey's darcs xmonad.hs (darcs)
modMask = mod4Mask; DynamicLog, RotView, ViewPrev, WindowNavigation, ToggleLayouts (toggle full screen mode), UrgencyHook + dzen, FlexibleManipulate, a bunch of Prompts, Submap, Search, and a few others, with keybindings for all! (Warning: lots of non-standard keybindings. =)
/David Roundy's xmonad.hs (0.8)
Combo config for small screen + xclock. This config also keeps mod=mod1, and therefore moves a number of key bindings to non-standard locations (my laptop has no spare modifier keys).
/Don's xmonad.hs (0.8)
colours, use custom terminal, dynamicLogDzen
/enko's xmonad.hs (0.8)
I'm using xmobar and mostly tall layout (but in really it is just fullscreenlayout since there aren't any other windows). The config is accumulated stuff and could be cleaned of cruft, but since I don't know ATM what is cruft and what not, it is not an option, but it works for me™. I'm using urxvt as a terminal and the mailer you can see there is wanderlust for emacs. You can also see my screen setup at the bottom.
2008-10-20-205748 1680x1050 scrot.png
/Gwern's xmonad.hs (darcs)
Ratpoison-y keybindings; example usage of XSelection.
/John Goerzen's Configuration and Tutorial (0.8)
A step-by-step guide to customizing Xmonad, starting from where the tutorial leaves off, getting to a configuration with xmobar and simple but intentionally minimal customizations in xmonad.hs
/lithis's xmonad.hs (darcs)
/lithis's xmobarrc (darcs)
The screenshot shows xmobar, two screens, a spiral layout, a tabbed layout, XFT fonts, and ShellPrompt with tab completion. The config also has pointer follows focus.
/Marcot's xmonad.hs (darcs)
With Gnome support and Multimedia Keyboard configuration
/nattfodd's xmonad.hs (0.8/darcs)
DynamicLog, smartBorders, French keyboard, defaultGap, urgencyHook in workspace toolbar and some prompts.
/Octoploid's xmonad.hs (0.8)
Xmobar with customized DynamicLog, CycleWS with custom keys, colors, terminal, golden ratio
Octoploid conf.png
/oxymor00n's xmonad.hs (darcs)
/oxymor00n's xmobarrc
Tabbed layout, Floating Layout, xmobar, EZConfig for Emacs-like keybinding-definition, added some bindings for the mouse wheel (cycle focus and cycle workspaces), cycleWS-stuff that might be interesting for Xinerama-users,...
/Robert Manea's xmonad.hs (0.8)
Customized DynamicLog and ShellPrompt, ManageDock, some efforts to make the colors of all components go together well

0.5 screenshot:

Xmonad shellprompt newconf.png
/sereven's xmonad.hs (0.8) cross-host
/sereven's xmonad.hs one-host (0.8)
Colors, homedir, mod key modified per host, dzen scaled to different screen sizes, so can use one xmonad.hs. 'h,j,k,l' directional navigation with resizableTall and toggle noBorders Full for borderless xinerama screen, perWorkspace IM layout for tiled gimp, corrected dzen format stripper for independent ppUrgent and ppHidden formatting. File:--Xmonad16.xpm-- icon from dzen config.
Im gimp.jpg
/skorpan's xmonad.hs (0.8)
/skorpan's xmobarrc (0.9)
Red/gray borders + NoBorders, EZConfig, xmobar 0.9 with workspaces, layout, title, battery, CPU usage, memory usage, date and time.
2009-01-25-183906 1280x800 scrot.png
/sykopomp's xmonad.hs (darcs)
/sykopomp's xmonad.dv-vi.hs
This screenshot shows xfce-panel with pager + xmonad in a ResizableTall layout. Also using compositing and transparent urxvt's (thanks andrewsw) with bindings for changing transparency on focused window. Keybindings have been completely redone to be more similar to emacs-bindings (M-p and M-n for previous and next windows). The other config is an older config that uses the standard vi-like bindings, but translated by location to a dvorak layout.
/TeXitoi's xmonad.hs (0.7 and 0.8)
French keyboard, ManageDock, EwmhDesktops. Minimal configuration file with Defaults not overwritten. Mist GTK theme is used.
/Thomas ten Cate's xmonad.hs (0.8)
Designed for Ubuntu (Gnome), the Windows key, and a dvorak keyboard. Workspaces accessible through Alt+F1..F10 so they don't interfere with Alt+1..9 used by irssi/Firefox/etc.
Instant messaging (Skype and Pidgin) buddy lists are automatically placed on the side of the IM workspace, with chat windows being placed in the rest of this area. This uses some code modified from XMonad.Layout.IM.
Extensive comments at the top of the file explain the keybindings and usage.
/thoughtpolice's xmonad.hs (darcs)
/thoughtpolice's xmobarrc (0.9)
Emacs-esque keyboard bindings via EZConfig, dynamicLog with dzen, Submap google/hoogle/amazon/imdb/youtube/wikipedia searching, Shell & Ssh modules, slightly custom XPConfig and avoidStruts (ManageDocks.)
/twifkak's xmonad.hs (0.8)
modMask = mod4Mask; noBorders tabbed layout; keybindings for dzen, rotview, swapworkspaces, windowbringer, and windownavigation; urgencyhook.
/void's xmonad.hs (0.8)
dzen2 DynamicLog (in robert's style) and UrgencyHook, LayoutCombinators, IM workspace for Pidgin (on the right) with 2 layouts a dwmStyle decorated ResizableTall and a tabbed one, use of PerWorkspace and Named layouts, Scratchpad, custom theme, EZConfig for keybindings, NoBorders (and smarts too)
/vvv's xmonad.hs (0.8)
EZConfig, CycleWS, {Man,Shell,Ssh}Prompt, Submap, DynamicWorkspaces, NoBorders, and ion-like status bar (written in nonkosher Perl).
/webframp's xmonad.hs (darcs)
Basic Mirror tiled and ResizableTall layout, EZConfig keybindings,
dynamicLogWithPP + dzen, CycleWS, Prompt, promptSearch, Scratchpad, updatePointer

Old configurations

This section is for configurations which do not work with the development XMonad and XMonadContrib, or at least the latest release.

Note that the configuration file is 'Config.hs' for xmonad < 0.5, but 'xmonad.hs' for xmonad >= 0.5.

Many config files marked as 0.5 probably work in 0.6 as well; give it a try and ask on the #xmonad IRC channel on freenode.org if you have problems.

/Template xmonad.hs (0.7)
/Template xmonad.hs (0.6)
The older versions of the default configuration.
/andrewsw's xmonad.hs (0.6)
/arossato's Config.hs (0.4)
/Brent Yorgey's xmonad.hs (0.6)
/cce xmonad.hs (0.5)
alt+enter full screen, alt+hjkl to navigate, many remapped keys
/deifl's xmonad.hs (0.5)
DynamicLog, WindowBringer, CopyWindow, ResizableTile, Tabbed layout. not default terminal, changed colors and some instances of dzen.
/Don's Config.hs (0.4)
/entropies xmonad.hs (0.5)
windows as meta key, fullscreen & noborders on keypress for client. custom keybindings. magnifier.
/Eric Mertens' xmonad.hs (0.5)
/Eric Mertens's Config.hs (0.4)
Customized DynamicLog, ShellPrompt, TilePrime, Dual-head and an effort to make the statusbar similar to DWM.
/Erthad's xmonad.hs (darcs 25 Aug 2008/0.7)
mixed hotkeys config (standard+EZConfig), wmii-like keyboard behavior,
EWMH desktops, dzen integration (dzen configs see at http://fly.osdn.org.ua/~erthad/)
/Gwern's Config.hs (0.4) (old)
/Lee Aylward's xmonad.hs (0.5)
Resizable Tall, NoBorders, dzen DynamicLog, rhythmbox control shortcuts, windows key
/loupgaroublonds xmonad.hs (darcs)
a somewhat modified config but with support for gnome and my cat
/Mr.Elendig's xmonad.hs (0.7)
Somewhat simple, but verbose config, with ResizableTall, xmobar and mpd controlls.
/nomeatas Config.hs (0.4)
modMaks = mod4Mask; gnome-stuff
/nomeata’s xmonad.hs (xmonad 0.7)
CycleWS to avoid changing visible workspaces on other screens, EWMH, UpdatePointer, avoidStruts, IM for piding (on the right side), fullscreen via toggleLayouts, no boarders,
/OldSchoolWSNav xmonad.hs (0.8)
FWIW example config to experiment with gnome-like workspace navigation, where all physical screens shift at once and use one workspace. Beware: uses two modules without maintainers, LayoutScreens and LayoutCombinators. LayoutCombinators puts windows into combined layouts one after the other, so with one layout tabbed, the other will always be full. Using Grid or other layouts might be better than using LayoutCombinators. Uses dzen2 to display workspaces and layout names.
/Ray's xmonad.hs (0.5)
DynamicLog, custom manageHook, changed from default terminal, border colors, prompts, and layouts. Pseudo-Haskell dzen statusbar with Greek letters for workspace names.
/Remi's xmonad.hs (0.7)
/Remi's .xmobarrc (0.8)
/Remi's .xinitrc
Lots of key bindings for destkop-navigation/moving, xmonad.hs-editing, music, next-N-windows-float-hack. xmobar integration and PerWorkspace Layouts. And a yet-to-be-published libmpd xmobar plugin.
/Robert Manea's Config.hs and support scripts (0.4)

0.4 screenshot:

/sphynx's xmonad.hs (0.7)
Emacs-style keybindings, xmobar integration, XFT-fonts, ManageDocks, Tabbed layout, IM layout for Pidgin and Skype configured through PerWorkspace, Search extension for Wikipedia, translation and Google, usage of CopyWindow to 'make window always visible', Urgency hook, PerWorkspace usage, Scratchpad terminal, custom styles for prompt and borders.
/twifkak's Config.hs (0.4)
/Wfarr's xmonad.hs (0.6)
ResizableTall Layout using EZConfig, cycleWS, CopyWindows, and DZen to get some cool stuff happening.
/Xilon's xmonad.hs (0.5)
Simple and clean setup with dzen and a tray. Dzen with workspaces uses UrgencyHook for Urgent windows.

/iderrick xmonad.hs (darcs)

Maximize, Dynamiclog with xmobar, Custom layout (with Combo) for latex writing (xpdf + editor + little terminal), French keyboard, Windows key for shortcuts

Note on uploading

To upload your config file, create some text on this page of the form:

; [[/you xmonad.hs]]
: description of your setup

and save the page. This will create a new page under /you into which you can paste your xmonad.hs text. Wrap them in <haskell> and </haskell> tags (they should go on their own lines), to enable nice markup; add a nice category like [[Category:XMonad configuration]], and upload.

Images can be uploaded by clicking on the 'Upload file' link, and then referring to the uploaded image as, e.g.


which will scale the image correctly for a thumbnail.


Sometimes one wants to download all the xmonad.hs files linked from this page. Perhaps one simply wants to look at many versions, or perhaps one is interested in commonalities. Regardless, here's a small script (written by gwern and modified by sereven) which uses Tagsoup[1] to download the files into the current directory:

import Text.HTML.Download (openURL)
import Text.HTML.TagSoup (parseTags, Tag(TagOpen))
import Data.List (isInfixOf, isPrefixOf)
import Control.Monad (liftM,liftM2, zipWithM_)

main :: IO ()
main = do urls <- liftM extractURLs $ openURL "http://haskell.org/haskellwiki/Xmonad/Config_archive"
          -- urls are prefixed "/haskellwiki/", so in raws, drop 13:
          let raws = map (\x -> "http://haskell.org/haskellwiki/?title=" ++ drop 13 x ++ "&action=raw") $ filter (isInfixOf "xmonad.hs") urls
          let hs = map (liftM2 fmap filterHaskell openURL) raws
          zipWithM_ (\x y -> writeFile x =<< y) (map ((++ ".hs") . show) [(1::Int)..]) hs

filterHaskell :: String -> String -> String
filterHaskell url = addLink . unlines . takeWhile (not . isPrefixOf "<nowiki>
</nowiki>") . drop 1 . dropWhile (not . isPrefixOf "<haskell>") . lines
   where addLink = (("-- " ++ (reverse . drop 11 . reverse) url ++ "\n") ++) -- add commented url less "&action=raw"

extractURLs :: String -> [String] extractURLs arg = [x | TagOpen "a" atts <- (parseTags arg), (_,x) <- atts, "/haskellwiki/Xmonad/Config_archive/" `isPrefixOf` x]


Note that this script will only work on those configs which strictly followed the above uploading guidelines, since the script makes a number of simplifying assumptions. (Specifically: title includes 'xmonad.hs', it was uploaded to a subpage of this page, and the <haskell> tags are on their own lines and the first pair encloses the xmonad.hs. See the linked email for more.)