:A hack to make the Gnome Menu popup just like the Gnome Run dialog pops up. This is a minimal addition to XMonad.Config.Gnome so that "dmenu" type programs are not _required_. This tries to solve [https://code.google.com/p/xmonad/issues/detail?id=451 Issue 451 in Xmonad].

+

+

; [[/Kapil's networkmanagerprompt.hs]] (0.10)

+

:Use XMonad.Prompt.Input to prompt the user to bring up and take down network connections using "nmcli". This xmonad.hs is a snippet that can be used to add this functionality to other configs. In principle, it should be possible to avoid "nmcli" altogether using the dbus interface to haskell.

This config uses [https://github.com/loki42/easyxmotion easyxmotion] to switch between any window in 2 keypresses. Inspired by the easy motion vim plugin. The [https://github.com/loki42/dotfiles/blob/master/_xmonad/xmonad.hs xmonad.hs] is very simple and also uses WindowGo and ewmh desktops. The letters appear when I click the menu key, next to right alt. Then type the letter to focus that window.

: Dual monitor setup with dzens on each screen. TopicSpace, fadeInactive, with some xmms2 bindings. I use CapsLock as mod, and the dvorak layout so the bindings will be weird unless you do the same.

−

[[Image:regalia-xmonad.png|center|400px]]

;[[/Robert Massaioli's xmonad.hs]]

;[[/Robert Massaioli's xmonad.hs]]

Line 412:

Line 423:

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 [http://www.haskell.org/pipermail/xmonad/2009-January/007106.html gwern] and modified by sereven) which uses [[Tagsoup]] to download the files into the current directory:

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 [http://www.haskell.org/pipermail/xmonad/2009-January/007106.html gwern] and modified by sereven) which uses [[Tagsoup]] to download the files into the current directory:

−

<!-- Note that the following is not the original source; I had to chuck in some nowikinowiki tags in order for the haskell tags to correctly display it. You probably want to copy-paste the displayed source, which should be correct. -->

+

<!-- can't use syntax highlighting because we're parsing for it in the script, which confuses MW -->

2 XMonad Configuration Examples

EwmhDesktops users upgrading to xmonad-0.9.*, please note layoutHook, handleEventHook, startupHook change. For more information about how to update your Ewmh configuration, and other changes that may require edits to

2.1 Template xmonad config files

The template xmonad.hs file shows all the default xmonad settings; it is merely a slightly modified reference copy of the XMonad source module which sets up the configuration. Note that while this file is usable, it contains lots of uneeded extra settings; normally you would only include and customize the parts you want to change. If you don't want to use the minimal style as shown in the following tutorial, you can copy-and-paste from the template instead.

Tons of cruft accumulated over many years of using xmonad; probably everyone can find something in here that interests them! Features annotations showing which contrib modules are being used where, to make it easier to figure out how to use a given contrib module, or how to pull out little pieces of functionality for use in your own config.

A somewhat screen-count-agnostic config, as I use this same file on :machines with several different physical setups. Auxiliary apps: :trayer, xmobar, dzen, yeganesh; layouts: fullscreen and Grid, with

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.

This is an attempt to provide an easy path into the world of tiling window managers for colleagues using recent Ubuntu and RedHat distributions. Emphasis is on visual integration with familar UI elements while conforming to widespread tiling WM idioms: (1) a single bar, (2) no window decoration, (3) current window's title display in the bar. Starting from a vanilla Ubuntu Gnome setup I eliminated the lower Gnome panel and its applets. On the remaining upper panel I included left to right: (1) a standard Gnome separator applet, (2) the Gnome Window Selector applet, (3) dzen2 built with Xft support displaying the current window's title, (4) the Gnome Workspace Switcher applet:

Mod-p preserves Xmonad's default dmenu binding. Keeping with the emphasis on font consistency I created a version of dmenu that supports Xft fonts and a bar height option (currently available as a patch against dmenu 4.0):

At present my xmonad.hs is utterly sparse, attempting only to simplify the process of accommodating additional themes.

This config uses keybindings optimized for the Colemak keyboard layout, alternate swapUp/Down methods which won't cycle windows if moving the last to first or vice-versa, a nice dzen2 status bar, and dwm-like tagging with CopyWindow. Workspaces which contain copies of windows are displayed with a different XPM in dzen (dwm-style). Xinerama keybindings are also removed, simply because I don't use them.

A hack to make the Gnome Menu popup just like the Gnome Run dialog pops up. This is a minimal addition to XMonad.Config.Gnome so that "dmenu" type programs are not _required_. This tries to solve Issue 451 in Xmonad.

Use XMonad.Prompt.Input to prompt the user to bring up and take down network connections using "nmcli". This xmonad.hs is a snippet that can be used to add this functionality to other configs. In principle, it should be possible to avoid "nmcli" altogether using the dbus interface to haskell.

This config uses easyxmotion to switch between any window in 2 keypresses. Inspired by the easy motion vim plugin. The xmonad.hs is very simple and also uses WindowGo and ewmh desktops. The letters appear when I click the menu key, next to right alt. Then type the letter to focus that window.

Reduced to minimum that sees daily use. Arrow + vi window navigation. Lots of left hand only keys, for full function with both hands on keyboard, or with one on mouse. While no longer use them old dzen grid icons are here. Latest xmonad.hs here.

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.

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.

3 Note on uploading

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

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

and save the page. Note that the configs are in alphabetical order and specify what xmonad version is required. (It's helpful to also include the version info somewhere in your comments.) This will create a new page under /you into which you
can paste your xmonad.hs text.

Wrap the haskell in <haskell> and </haskell> tags (the tags 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.

[[Image:you-config.png|center|200px]]

which will scale the image correctly for a thumbnail.

3.1 Modular configs

Now that xmonad supports importing local module definitions into xmonad.hs from ~/.xmonad/lib/Path/To/Foo.hs with

import Path.To.Foo

, the download script below limits the usability of your uploaded config. Till it's made smarter, if you want your modular config to be easily downloadable, convert it into a single chunk of valid haskell between the first pair of <haskell> and </haskell> tags (each tag on its own line) i.e. comment the "module Foo where"s and their imports, merging them into a single import list, (qualifying as necessary).

If this is too painful, please consider other solutions, such as including commented links to downloadable lib module files or a browseable vcs, or help revise the downloader script to be smart enough to deal with a sensible method of posting such configs here.

A converter script might be useful as well.

4 Downloading all configs

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 to download the files into the current directory:

Make sure you have the tagsoup package installed from hackage or your package manager, then paste the script into a file, e.g. get-xmconfigs.hs, then, to download the configs into the current directory:

% runhaskell get-xmconfigs

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 the string "xmonad.hs", it was uploaded to a subpage of this page, the <haskell> tags are on their own lines, and the first pair encloses the xmonad.hs. See gwern's
original email for more details.)

5 Module Import Popularity

Here is a script that summarizes the imports for given files saved in your filesystem (such as copied from this wiki page using the above script).