Awesome vs. Xmonad

I've been thinking about trying a tiling window manager (I currently use Openbox) and am thinking especially about trying awesome and xmonad.
I mostly use 5 main apps (ranked in how much I use them, 1 being the most):
1. Urxvt
2. Firefox
3. Songbird
4. Pidgin
5. XChat
I'm looking for it to have a lot of configurability as far as hotkeys go, I want to try and use the mouse as little as possible.
Feel free to recommend any other WMs if you want.

I like xmonad alot personally. 
Sounds like you run some of the same stuff as me constantly, not that it matters.  I am sitting here with Firefox, three urxvtc terminals and thunderbird open, with pidgin and deluge sitting in my tray.
I really like in tiling window managers being able to have my browser in its nice little 65% pane, and my three 80 char wide terminal windows on the right-hand side of the screen showing as many lines as they can with no wasted space.  I have pidgin easily set to auto float above everything when I bring it up for something, and then put it away, and it doesn't change my nice stable layout of everything else.  I can hop to other workspaces to do other things and come back to my main WS with my nice happy setup.  I can even "swap screens" with what's on my television, open something, and then swap back. 
Plus Haskell is pretty fun to mess with really.  If you don't want to learn it, it is easy to base your config on others that are available (which is what I initially did), but I have been working through some Haskell tutorials just because it is a pretty neat language.
Awesome can act weird when you misconfigure its file though.  So can everything else, really...  But I found that Awesome handled typo's and problems less gracefully than xmonad most of the time.  Xmonad would just chugging with your old config if you typo'd in your new config, unless you messed something up fierce.  Sometimes Awesome would check my file and say it was fine, and then just blow up when I tried to load it.  I am sure that would go away if I learned the syntax better, but I preferred xmonad's more graceful way of dealing with most of my learning mistakes.
Awesome works though.  It's handy if you like clicking on your bar, and if you prefer configuring in lua (and fixing your config often on update, if you don't hold back the package).  It's notification daemon is a neat touch, and the customizable widgets are sort of fun to play with (after you choose which of the three libraries you want to use to manage updating them, and cross your fingers that it will still be there next release).  I didn't run it terribly long, since I missed xmonad when I tried it and decided to come back and stop trying lots of wm's.  Awesome has pretty sane defaults, I like that.  YMMV.

Similar Messages

  • Conky-cli - awesome-client = no go?

    So, I've recently switched to Awesome from Xmonad (yes, it's MUCH easier to configure, unless you know haskell of course). Everything has gone fairly well except that I can't get conky-cli to work with the awesome-client statusbar.  I'm running the patched version of conky and I've followed the tutorials on the awesome website, but for whatever reason all that appears in the statusbar are dashes used as placeholders for the textboxes. I've tried this using the non-patched conky-cli, also unsuccessfully.
    I'm running awesome-git, which appears to be v2.3.rc1.25.g96fe2ec (Productivity Breaker).  The following are my sample configs (I've disabled the other conky stats until I know this is working):
    [thayer@dublin:~] $ cat .conkyrc
    background no
    no_buffers yes
    out_to_console yes
    update_interval 1
    uppercase no
    use_spacer none
    total_run_times 0
    TEXT
    0 widget_tell clock ${time %a %b %d %I:%M%P}
    Relevant portion of .awesomerc:
    statusbar bottom
    position = bottom
    width = 0
    height = 0
    textbox clock { align = "right" text = "-" }
    If I run conky on its own, it spits out the expected text:
    [thayer@dublin:~] $ conky
    0 widget_tell clock Wed Apr 16 08:04pm
    And my .xinitrc file:
    conky | awesome-client &
    urxvt &
    exec awesome
    Last edited by thayer (2008-04-17 03:13:54)

    omega_0815 wrote:
    That should get conky to work, if it doesn't work try starting conky without piping to awesome-client in .xinitrc.
    I have conky running here with awesome-git for the same reasons you mentioned, but I will take a look at amazing this weekend.
    Hope that solves your issue.
    Thanks omega, I had actually tried that syntax before, but it didn't work for me.   BUT... since you mentioned that it DOES work for you, I decided to poke around a bit more and I figured out that if I add 'text' as well as the statusbar name it works fine:
    0 widget_tell bottom mpd text $mpd_smart
    0 widget_tell bottom spacer1 text ::
    0 widget_tell bottom cpuload text ${cpu cpu1}% / ${cpu cpu2}% ${loadavg 1} ${loadavg 2 3}
    0 widget_tell bottom spacer2 text ::
    0 widget_tell bottom cputemp text ${i8k_cpu_temp}c ${freq_g 1}/${freq_g 2}GHz
    0 widget_tell bottom spacer3 text ::
    0 widget_tell bottom memory text $memperc% ($mem)
    0 widget_tell bottom spacer4 text ::
    0 widget_tell bottom power text ${if_empty ${exec awk '{print $2}' /proc/acpi/ac_adapter/AC/state | grep 'on-line'}}${else}${endif}$battery $battery_time
    0 widget_tell bottom spacer5 text ::
    0 widget_tell bottom network text ${if_empty ${exec ifconfig wlan0 | grep 'inet addr:'}}${downspeed eth0}K/s ${upspeed eth0}K/s${else}${exec iwconfig wlan0 | grep 'Signal level' | cut -d= -f3 | awk '{print 100+$1 "%"}'} ${exec iwgetid | cut -d\" -f2 | awk '{print $1}'} ${downspeed wlan0}K/s ${upspeed wlan0}K/s${endif}
    0 widget_tell bottom spacer6 text ::
    0 widget_tell bottom clock text ${time %a %b %d %I:%M%P}

  • Xmonad Question on Floating Applications not always on top

    Hey,
    I'm switching from Awesome to Xmonad (or, trying to at least) since I'm growing tired of trying to keep up with syntax changes with awesome updates (but still waiting for the numlock on + no keybindings bug to be fixed, so I can't disable updates for it entirely).  Everything is going fairly well, and the only issue I think I need to ask about (the rest is documented well, or already answered), is the fact that Xmonad seems to automatically place any floating windows above others.  This is all fine if you move it to it's own screen, but I generally keep Skype open on the active window, and I want it to lose focus while I'm working on other things, without putting everything else into floating mode as well.  I was wondering if it's an issue with my template xmonad.hs (off the wiki page, if I remember correctly, or else from the Xmonad thread on these forums), or if it's a default that can be changed (or can't be changed, for that matter).  Does anyone have it working so that floating windows just float and can be hidding by tiled windows?
    This is the template xmonad.hs I'm using (and will be editing properly if I get this issue sorted out):
    -- Initially from not4aw3some at deviantart.com
    -- {{{ Imports
    -- stuff
    import XMonad
    import qualified XMonad.StackSet as W
    import qualified Data.Map as M
    import System.Exit
    import Graphics.X11.Xlib
    import IO (Handle, hPutStrLn)
    -- utils
    import XMonad.Util.Run (spawnPipe)
    import XMonad.Actions.NoBorders
    -- hooks
    import XMonad.Hooks.ManageDocks
    import XMonad.Hooks.DynamicLog
    import XMonad.Hooks.XPropManage
    -- Dialog and menu hooks
    import Graphics.X11.Xlib.Extras
    import Foreign.C.Types (CLong)
    -- layouts
    import XMonad.Layout.NoBorders
    import XMonad.Layout.ResizableTile
    import XMonad.Layout.Gaps
    import XMonad.Layout.Named
    import XMonad.Layout.PerWorkspace
    import XMonad.Layout.IM
    import XMonad.Layout.Grid
    import Data.Ratio((%))
    -- {{{ Main
    main = do
    h <- spawnPipe "xmobar ~/.xmobarrc"
    xmonad $ defaultConfig
    { workspaces = ["main", "www", "code", "im", "gfx", "vid", "doc", "misc"]
    , modMask = mod1Mask
    , borderWidth = 1
    , normalBorderColor = "#5a5a5a"
    , focusedBorderColor = "#daff30"
    , terminal = "urxvt -title urxvt"
    , keys = keys'
    , logHook = logHook' h
    , layoutHook = layoutHook'
    , manageHook = manageHook'
    -- {{{ Log Hooks
    logHook' :: Handle -> X ()
    logHook' h = dynamicLogWithPP $ customPP { ppOutput = hPutStrLn h }
    customPP :: PP
    customPP = defaultPP { ppCurrent = xmobarColor "#daff30" "#000000" . wrap "[" "]"
    , ppTitle = shorten 80
    , ppSep = "<fc=#daff30> | </fc>"
    , ppHiddenNoWindows = xmobarColor "#777777" ""
    , ppUrgent = xmobarColor "#AFAFAF" "#333333" . wrap "*" "*"
    -- {{{ Layout hooks
    layoutHook' = customLayout
    customLayout = avoidStruts $ onWorkspace "im" im $ smartBorders tiled ||| smartBorders (Mirror tiled) ||| im ||| noBorders Full
    -- [[old (made gap for bottom)
    -- customLayout = gaps [(D,16)] $ avoidStruts $ onWorkspace "im" im $ smartBorders tiled ||| smartBorders (Mirror tiled) ||| im ||| noBorders Full
    -- ]]end
    where
    tiled = named "[]=" $ ResizableTall 1 (2/100) (1/2) [] --"Tiled"
    im = named "InstantMessenger" $ withIM (12/50) (Role "buddy_list") Grid
    -- {{{ Dialog and menu hooks
    getProp :: Atom -> Window -> X (Maybe [CLong])
    getProp a w = withDisplay $ \dpy -> io $ getWindowProperty32 dpy a w
    checkAtom name value = ask >>= \w -> liftX $ do
    a <- getAtom name
    val <- getAtom value
    mbr <- getProp a w
    case mbr of
    Just [r] -> return $ elem (fromIntegral r) [val]
    _ -> return False
    checkDialog = checkAtom "_NET_WM_WINDOW_TYPE" "_NET_WM_WINDOW_TYPE_DIALOG"
    checkMenu = checkAtom "_NET_WM_WINDOW_TYPE" "_NET_WM_WINDOW_TYPE_MENU"
    manageMenus = checkMenu --> doFloat
    manageDialogs = checkDialog --> doFloat
    -- {{{ Manage Hooks
    myManageHook :: ManageHook
    myManageHook = composeAll . concat $
    [ [ className =? c --> doFloat | c <- myFloats ]
    , [ title =? t --> doFloat | t <- myOtherFloats ]
    , [ resource =? r --> doIgnore | r <- myIgnores ]
    -- , [ (className =? "URxvt" <&&> title =? "urxvt") --> doF (W.shift "1:main")]
    , [ className =? "Gran Paradiso" --> doF (W.shift "www") ]
    , [ className =? "Firefox" --> doF (W.shift "www") ]
    -- , [ className =? "Gimp" --> doF (W.shift "etc") ]
    -- , [ className =? "Gvim" --> doF (W.shift "code") ]
    , [ className =? "OpenOffice.org 3.0" --> doF (W.shift "doc") ]
    , [ className =? "Abiword" --> doF (W.shift "doc") ]
    , [ className =? "Pidgin" --> doF (W.shift "im") ]
    where
    myIgnores = ["stalonetray"]
    myFloats = []
    myOtherFloats = ["alsamixer", "Настройки Firefox", "Загрузки", "Дополнения", "Clear Private Data", "Download; Gran Paradiso", "urxvt-float"]
    manageHook' :: ManageHook
    manageHook' = manageHook defaultConfig <+> manageDocks <+> manageMenus <+> manageDialogs <+> myManageHook
    -- {{{ Keys/Button bindings
    keys' :: XConfig Layout -> M.Map (KeyMask, KeySym) (X ())
    keys' conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
    -- launching and killing programs
    [ ((modMask, xK_Return ), spawn $ XMonad.terminal conf)
    , ((modMask, xK_p ), spawn "dmenu_run -fn \"-*-terminus-medium-r-normal-*-12-*-*-*-*-*-*-*\" -nb \"#daff30\" -nf \"#888888\" -sb \"#2A2A2A\" -sf \"#daff30\"")
    , ((modMask .|. shiftMask, xK_f ), spawn "firefox")
    , ((modMask .|. shiftMask, xK_c ), kill)
    -- layouts
    , ((modMask, xK_space ), sendMessage NextLayout)
    , ((modMask .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
    , ((modMask, xK_b ), sendMessage ToggleStruts)
    -- floating layer stuff
    , ((modMask, xK_t ), withFocused $ windows . W.sink)
    -- refresh
    , ((modMask, xK_n ), refresh)
    , ((modMask .|. shiftMask, xK_w ), withFocused toggleBorder)
    -- focus
    , ((modMask, xK_Tab ), windows W.focusDown)
    , ((modMask, xK_j ), windows W.focusDown)
    , ((modMask, xK_k ), windows W.focusUp)
    , ((modMask, xK_m ), windows W.focusMaster)
    -- swapping
    , ((modMask .|. shiftMask, xK_Return), windows W.swapMaster)
    , ((modMask .|. shiftMask, xK_j ), windows W.swapDown )
    , ((modMask .|. shiftMask, xK_k ), windows W.swapUp )
    -- increase or decrease number of windows in the master area
    , ((modMask .|. controlMask, xK_h ), sendMessage (IncMasterN 1))
    , ((modMask .|. controlMask, xK_l ), sendMessage (IncMasterN (-1)))
    -- resizing
    , ((modMask, xK_h ), sendMessage Shrink)
    , ((modMask, xK_l ), sendMessage Expand)
    , ((modMask .|. shiftMask, xK_h ), sendMessage MirrorShrink)
    , ((modMask .|. shiftMask, xK_l ), sendMessage MirrorExpand)
    -- quit, or restart
    , ((modMask .|. shiftMask, xK_q ), io (exitWith ExitSuccess))
    , ((modMask , xK_q ), restart "xmonad" True)
    ++
    -- mod-[1..9] %! Switch to workspace N
    -- mod-shift-[1..9] %! Move client to workspace N
    [((m .|. modMask, k), windows $ f i)
    | (i, k) <- zip (XMonad.workspaces conf) [xK_F1 .. xK_F9]
    , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
    Thanks in advance,
    Lswest
    Last edited by lswest (2009-06-26 12:10:43)

    brenix wrote:I'm not sure if this is the same issue, but I have a problem where new windows appear behind/below the current window. I've found a solution on the xmonad documentation, but it doesnt seem to do anything...
    Well, I think it would be under the same behaviour, depending on the layout you're using when that happens.  If you're using IM, floating windows (I believe) appear below the others.  Besides that, it's probably not the same issue and you should start a new thread (using a descriptive title describing the issue) (to ensure that people who may have a solution will read the thread, chances are if the title makes someone seem like they can't answer it, they won't always read it), and/or search the forums for anything similar.
    Last edited by lswest (2009-07-08 16:22:33)

  • [SOLVED]Help reproduce xmonad desktop from screenshot

    Hi
    I am configuring my xmonad and I came across this link: http://www.haskell.org/wikiupload/6/63/And1_xmonad.png
    I can't figure out how they got the slanted background for the different components (cpu, date, time etc.)
    Can anyone tell me how I can do this?
    Last edited by lunamystry (2012-09-24 09:43:17)

    Prezioso wrote:post a pic
    May as well show of my favorite features. I copied most of these from the xmonad config archive.
    I want KDE with proper tiling, I heard Kwin is loosing its tiling capabilities but has gained scripting.
    That may mean it will have tiling soon but I think it will be a while till then so choose between
    Awesome and Xmonad. Last I tried, Awesome was easy out of the box but I couldn't get it to a point
    where I was happy with how it played with KDE and plasma. Xmonad's doIgnore worked well enough
    for me and I would like to learn some functional coding so Xmonad won. I use doFloat for "Plasma-desktop"
    now though and its a work in-progress.
    Prompt to allow me to quickly connect to the Internet. Got it from xmonad config archive.
    I like aimlessly browsing the menu when I am procrastinating. The bottom plasma panel
    is set to autohide.
    I have to use Netbeans for some Java work I do, which at this point is more of a debugger
    with vim replacing it. setWMName makes Netbeans and Matlab (and other Java app I
    assume) work.
    I am using one of the default KDE wallpapers with a binary clock. I will be putting my config files
    on github sometime this week. I still have a few things to sort out such as gtk looking ugly,
    kde dialogs not appearing, feedback when network is connected, showing network in top bar
    and a whole lot of other things.

  • Another DWM and Multiple Monitors Thread

    I'm still relatively new to tiling window managers and have been playing mostly with Awesome and Xmonad.  Recently, however, I decided to give DWM and try and am absolutely loving it!  But one of the things that I like about Awesome and Xmonad is how they support dual monitors--each monitor shares a set of 9 tags/workspaces which can be loaded on any monitor.  Is there a way to emulate this behavior in DWM?

    As in:
    Send focused window to next screen, if any.
    Please don't necrobump https://wiki.archlinux.org/index.php/Fo … Bumping.27
    Closing

  • Best tiling window manager for two monitors

    I am looking for a window manager, that will work thus, my main window on my main left monitor, and my stack (my unfocused windows) on my right monitor.  Is there a WM that can do this or anyone know one that comes close.
    Thanks

    skottish wrote:
    If it helps at all, this is a useful way to look at awesome vs. xmonad:
    awesome is pretty much a complete WM/DE (it's close to being a full DE) with a task bar, system tray, run dialog, something like nine preconfigured window management algorithms, right-click menus, etc. Through lua scripting it can be fully extended. There's a lot to awesome by default and more often than not users are going to start to tear it down because there's just so much of it.
    xmonad out of the box is about 5% WM and 95% toolkit to build your own. It has no DE features upon first start and few layouts. If your objective is to build up your WM and not to tear it down, this is a good place to start. The GHC dependency is irrelevant if this is your goal (assuming you can afford the hard drive space) in my opinion.
    One thing that's pretty cool about xmonad that a lot people may not realize is that some of it's developers are involved with Arch. Arch-haskell (the bazillion packages in AUR), Real World Haskell (the book), and GHC are all tied nicely together by some of these people.
    What is cool about XMonad too that you can integrate Gnome and KDE easily in XMonad and bluetile is really cool for starters

  • A tiling manager for Gnome

    I have been using Ubuntu for a long time. Now I have decided to switch to Archlinux. I am looking for a Gnome tiling manger. In ubuntu, I can use compiz and set the shortcuts for different window configurations. However, compiz is not available in Archlinux. Any recommendation for a simple and easy to use tiling manager for Gnome?
    I can install the shellshape extension, but it's ab it too simple.
    https://extensions.gnome.org/extension/294/shellshape/
    I cannot install the gtile or shelltile extensions, not sure why.
    https://extensions.gnome.org/extension/28/gtile/
    https://extensions.gnome.org/extension/657/shelltile/
    Last edited by xjianz (2014-01-31 04:38:05)

    ANOKNUSA wrote:
    xjianz wrote:However, compiz is not available in Archlinux.
    https://wiki.archlinux.org/index.php/Compiz
    EDIT: It is possible to run an actual tiling window manager within GNOME, such as Awesome or Xmonad.
    I have seen the wiki page for Compiz. According to the wiki, Compiz is not officially supported.
    I have seen people using Awesome or Xmonad. But, they are too complicated for me :-(

  • Tiling Window Managers; where to start?

    I'm looking for a wm for my laptop. It is relatively fast, 4gb of ram, dual core processor, etc. I don't like dealing with some of the bloat that is gnome/kde. On my desktop I've used openbox for quite some time, but what I really miss on my laptop is the expose function to quickly view all open windows, since a laptop monitor can get a bit cramped. I tried to work with skippy and the xautolock but it wasn't nearly the same. It seems like the only solutions are either going back to gnome/xfce + compiz, or compiz standalone (how is this?), or to try out a tiling window manager. What would you recommend? Where does one start? Will this solve my problem?

    When it comes to a wm, people can get rabid about them;  almost as bad as when it comes to distro of choice!
    Anyway, I have used a few tiling window managers myself, and liked every one that I have used, which includes awesome and xmonad.
    I'm not plugging any of them, just wanting to let you know that there is a wiki page comparing the different tiling window managers, that should give you a good start on which one(s) you want to try.
    https://wiki.archlinux.org/index.php/Co … w_Managers
    If there are certain things that you find useful in a window manager, the table can be helpful.
    HTH

  • Objective comparison of tiling WMs?

    Giving tiling WMs a second look... the ones I'm primarily concerned with are AwesomeWM, xmonad, and Stumpwm.
    I'd really appreciate an _objective_ comparison of features, hopefully with notes if a certain WM does not come with a certain feature, but can easily be added through a 3rd-party app.
    So far, the only real comparisons I've been able to find are the differences in configuration. Awesome uses LUA configs (in v3+), xmonad uses Haskell headers, and Stumpwm uses CLISP. I am willing to learn how to configure any of them - I just would like a rundown of features before I spend a lot of time tweaking one, only to find out it lacks critical feature A that window manager B has (BTW: Stumpwm waves the CLISP flag pretty enthusiastically... what are the benefits of this?)
    Speed should not matter - I have a fast PC, I just like minimalism, and am willing to try tiling.
    Last edited by Ranguvar (2008-10-23 23:06:24)

    Ranguvar wrote:...and Stumpwm uses CLISP. I am willing to learn how to configure any of them - I just would like a rundown of features before I spend a lot of time tweaking one, only to find out it lacks critical feature A that window manager B has (BTW: Stumpwm waves the CLISP flag pretty enthusiastically... what are the benefits of this?)
    StumpWM uses Common Lisp. CLISP is one Common Lisp implementation you could use. Common Lisp is abbreviated CL, and never CLISP, because that would be extremely confusing. StumpWM waves the CL flag because to a Lisper, it's a big draw. The benefit is that you can configure/modify StumpWM with CL, rather than some horrible config file format or some lame programming language. And you can do it while StumpWM is running. And if you run StumpWM in a multithreaded Lisp, such as SBCL (CLISP does not do multithreading), you can connect to your running StumpWM from Emacs to hack on it even more easily, or control it if you like.
    As for features, Awesome and Xmonad come from the dwm school of tiling: you've got one main window and a bunch of little windows off to the side, and you can "spin" through the ring. They both support floating mode for windows. Awesome does window tagging that allows you to group any arbitrary set of windows together for viewing, and Xmonad does a more traditional workspace arrangement.
    StumpWM (and Ratpoison)'s tiling style is to let you split any window horizontally or vertically to get a new window. I think most users either make up some window config that they like or else they run with one full-screen window 90% of the time. I do the latter, and set up my window switching to be easy and direct. It has window groups which are your basic virtual desktops, but I never use them since unused programs are "out of sight, out of mind" anyway.

  • Making things faster on old computer

    Hi,
    I got an old and a new computer, both with Arch on it. With the new computer, there are no problems, but with the old there are.
    Hardware:
    -Athlon XP 1700+
    -256 MB RAM (it used to have 512 MB, but half of it became corrupt)
    -NVidia GeForce 3 Ti500 card
    Software:
    -Archlinux
    -Last full system upgrade last week, and now I stop upgrading after I saw the message about Xorg not supporting nvidia-71xx drivers anymore
    -KDE 3.5 (kdemod3) as desktop
    The problem is, this computer is too slow to browse the internet. The following websites are sites that I use, but that are too slow on this computer, due to heavy usage of javascript or flash (the internet connection isn't the problem, simply the displaying of the sites):
    -gmail (unless I turn on basic html)
    -facebook
    -southparkstudios.com: it's hardly possible to watch a south park movie there, it always takes ages to load all the flash widgets one by one, and moving the mouse over the website while a movie plays can be fatal
    I mean, this computer can play Unreal 1 in Wine without problems, with all its complex 3D graphics, but viewing a 2D website is too slow!
    Do you have any tips for making displaying websites like the ones mentioned above, faster, with Archlinux?

    Ranguvar wrote:Pidgin > Carrier (aka Funpidgin, it includes features that Pidgin devs believe users are too stupid to manage correctly)
    Pidgin > centerim (Text-mode IM, takes a lot of getting used to but is very full-featured, supports a bazillion IM protocols)
    Pidgin > BitlBee ('Plugin' for all IRC clients to allow IM inside IRC, extremely handy)
    I strongly agree with the BitlBee recommendation. It let's you run a local IRC server that maps various IM protocols to a channel, allowing you to use the same program for IM and IRC. I use it in conjunction with irssi, a truly great command-line IRC client.
    Ranguvar wrote:Transmission > rtorrent (Text-mod, EXTREMELY light on resources, fast, takes a _lot_ of getting used to. Supports some features in only a few clients, such as file-monitoring, but lacks others - no editing of trackers in-client, for example)
    Even more lightweight than rtorrent is aria2, which is much easier to use because there's no ncurses interface to get used to. Just put `alias bt="aria2c --listen-port=49164 --bt-require-crypto=true -T"' in your shell's startup file, and you're all set to download torrents by running `bt FILE.torrent'.
    Ranguvar wrote:LXDE > Standalone WM (Openbox, Fluxbox, PekWM, JWM, Awesome, dwm, Stumpwm, ratpoison, Xmonad, etc. etc. etc.) (this won't be a huge difference)
    StumpWM and ratpoison are great. dwm, awesome, and Xmonad are supposed to be good, too.

  • Opinions about different WMs?

    Hi, Archers. I have been reading this forum for quite a long time and I am wondering as there are so many window managers, what are their pros and cons?
    I know that there are tiling WM, such as dwm, wmii, ratpoison, awesome, ion3 and xmonad. dwm seems like the fastest one but it needs re-compiling to change the configuration, while xmonad looks like the most 'modern' one and with the best extendability.
    As non-tiling WM, there are E17, Openbox, Fluxbox, IceWM, FVWM and many others I cannot remember, all of them claim themselves as 'lightning fast' WMs. So, would you mind sharing your idea on: Which one is faster? Which one has good balance between performance and appearance (or usability)? Which one has many good themes avaliable?
    Thanks ahead.

    hk2717 wrote:What I'm seeking is users that have extensive experience between different WMs and how they judge the characteristics of each WM and the differences between them.
    Well, in the end it's all about personal taste, so if you answer to that you are bound to make subjective statements. What buttons and dolby said is right, the best way to find 'your' wm is to try out different ones... sometimes you can't point out which features you like/dislike just from a description or a screenshot.
    buttons wrote:Pretty much everything else can easily make the claim "lightning fast."
    I agree. If you have an up to date pc, you don't notice major speed differences.
    I'll give you a few hints about the wm's that I used.
    Gnome(metacity)/KDE(kwin)
    They have the typical advantage of a desktop environment, they feel 'complete out of the box' because all apps are well integrated and functional. Probably the best choice for newcomers and work dedicated tasks (were you just want a functional system). The downside is that they're bloated which can be really irritating... they have apps for nearly everything to give you a 'complete' desktop but if you know what you want (-> experienced user) you'll want to kickout all the other stuff to organize the chaos. Sure, you can start modding around until you only have the parts you want but I see no reason to do that when there are other alternatives (see xfce).
    xfce(xfwm)
    It has the advantage of a desktop environment but it's pretty minimal compared to KDE/Gnome. If you already know what apps etc you want to use and like the 'standard' behavior and assembling of wm's that are common, xfce is a good wm to start building your customized system. The build in compositing manager is also pretty nice and resource friendly.
    subjective side note: overall my favourite wm
    e17/e16
    I have no up to date information on e17 because I haven't used it for a while. My last impression was that it is to buggy for everyday use.
    side note: e17 is hell for theme creators... I've never spend that much time on a single theme than for my e17 theme. xD
    I have no up to date infos for e16 either but it's a nice and simple wm (comparable to the *box wm's) which can be quite useful when you have the time to configure it properly... but it's probably outdated now.
    *box
    If you like it really simple but don't want a tiling wm, they're probably you're choice. They're not usable out of the box, so you need time to set them up properly (create menus, start scripts etc). I've used blackbox for a long time but it's pretty outdated. The last box wm I used was openbox and it's definitely recommendable.
    However, I would recommend it only to people who don't mind fiddling with configs.
    tiling wm's
    Pure minimalism... nothing for people who are afraid of the cli, hate editing config files and expect eye candy. I think that I can't say something objective about the major approach, the window-tiling, about these wm's. You like it or you hate it, it's probably that simple. However, if you're familiar with the key bindings, the usability and using-speed is really great!
    I've only used dwm and awesome up until now. Since awesome is a dwm clone, they're pretty comparable. The major difference is that awesome has a config file and when you edit it, all you have to do is to press a key combo to apply the changes. When you want to change the dwm config, you've to recompile it every time... that's why I would recommend awesome.
    Xmonad looks promising as well, but haskell looks weird! ^^
    Last edited by sen (2007-12-05 22:26:43)

  • Session Manager with i3/Awesome/Xmonad?

    Hello, First post here so let me know if I am doing anything wrong,
    I recently started using i3 and I could not recommend it more, I have given xmonad a shot and was a big fan and I know a lot of people seem to like Awesome, my only question is...
    Are there any session managers that would work for any of them?
    I love them but I spend a lot of time getting things just right so I have a nice flow at work (I loooooove i3 once I have everything where I want it). Before switching to xmonad from xfce4 I always had my work from office session, my work from home session, and one or two others. Anyone know of any way to save sessions in one of the mentioned window managers? Or are there any other window managers I should look into for this feature?
    Thanks!!

    I think this session thing is about stopping the applications in a way that you can start them again.
    1. Different users/computers - It's very static and doesn't really scale.
    2. Any X11 Session Manager - You have to log out of X11 and you can only have one session open.
    3. My super script - For sessions on a tag/workspace level. Sorry for the bad english and bash. I'm about to rewrite it, it will support i3 and openbox. But maybe I should wait for wayland.
    I have read that systemd article more than once, but I didn't understand if it's limited to 2 or not?

  • Awesome, xmonad, openbox questions

    Hey all,
    recently i was testing differnet WM, to use on my laptop.
    i like the way these tiling window manager work, so finally i want to decide between openbox(with pytyle), xmonad or awesome, and have some questions about them:
    1) First of all, i want to control them most of the time with they keyboard, and not the touchpad
    2)I've tested all of them with standard configuration, and only awesome was able to add more "columns" in the slave area (with mod+strg+h/l), is this possible with the others too?
    3) And what i missed on all of them, was to change the "height" of windows (example: if you got 3 windows in the slave frame, each got the same 33% of screen height).
    Only with awesome i could rearrange this, and only with the use of a mouse/touchpad. is this possible to handle by keyboard?
    i hope you get what i mean english is not my first language
    looking forward to hearing from your experiance

    1. xmonad and awesome use keyboard most of the time.
    2. from what I remember (I ditched xmonad for ratpoison a while ago), xmonad you'll probably need the column layout (contrib). Dishes may work, but you'd have to mirror it, I guess (not experienced with Haskell). From there, you can add whatever custom keybindings you need. Just take a look through the layouts section of the xmonad contrib documentation.
    3. I'm sure awesome allows you to specify certain keybindings for adjusting. In xmonad, only certain layouts allow you to resize panes. If you want the ability to resize certain frames/panes, you may want to look into manual tiling window managers instead of dynamic tiling window managers. The whole point of dynamic tiling window managers is to let the wm take care of managing the windows completely, so according to that paradigm, you should't have to resize windows. In either case, typically you'll have keybindings for resizing. In ratpoison, I have it set to Alt+r (h/j/k/l), in xmonad I had it set to Shift+Alt+{a,z,s,d) using the Mosaic layout. Mosaic layout also kept the window in tiling mode, whereas using the mouse would bring it into floating mode.

  • Question about xmonad package in the repos.

    When I
    sudo pacman -S xmonad
    it installs xmonad and ghc goodness. But one thing that has always bothered me is that I had to hunt down a default .xmonad/xmonad.hs config file for xmonad. Can anyone explain why the package doesn't come with a default configuration file?

    xmonad's "default config" is no config.  i believe the file you want is buried somewhere in /usr under a different name.  if you poke around xmonad.org you can find the path/name to that file but also a copy/pastable (albeit older) version of it.
    i think it's done this way b/c the tweaking method is different with xmonad.  it's not like editing /etc/xmonad.hs and putting it in ~, you actually /load/ the defaults into ~/.xmonad/xmonad.hs and then /override/ them with your changes.  this is done with a simple main function like this:
    main = do
    xmonad $ defaultConfig
    and whatever's between { } (explicit commands or calling of functions) is passed through the defaultConfig, picking up any settings not yet set, then fed to xmonad.
    so unlike other WMs where you copy a default config and edit it from there.  in xmonad, you load the default config into yours with $ defaultConfig and put your tweaks (and only your tweaks) in xmonad.hs.  bit of a change in thinking.
    /edit: yes Xyne, i second Ashren.  it's a wonderful WM and haskell's awesome.  my xmonad.hs is available in my sig if you want it, i'm fairly proud of it.
    Last edited by brisbin33 (2009-07-31 16:49:10)

  • [SOLVED] Xmonad updatepointer help

    hello Ive recently moved to arch and now xmonad. And I cannot believe i did not discover these beauties before!! (Previous distro was fedora)
    So little by little with google and examples of configs out there ive manage to customize a xmonad.hs file to how i work and would like to work.
    To a degree i can read my own hs file but some things idk what they do or how they work (like main).
    I would basically like to implement an update pointer action. I've seen the 3rd party extensions page for xmonad but i can seem to figure out how to implement it in my xmonad config file.
    I created a "myLogHook" variable (not sure if that's what haskell calls it) but dont know where to go from there. Here is my config:
    import System.IO
    import System.Exit
    import XMonad
    import XMonad.Hooks.DynamicLog
    import XMonad.Hooks.ManageDocks
    import XMonad.Hooks.ManageHelpers
    import XMonad.Hooks.SetWMName
    import XMonad.Layout.Fullscreen
    import XMonad.Layout.NoBorders
    import XMonad.Layout.Spiral
    import XMonad.Layout.Tabbed
    import XMonad.Layout.ThreeColumns
    import XMonad.Util.Run(spawnPipe)
    import XMonad.Util.EZConfig(additionalKeys)
    import qualified XMonad.StackSet as W
    import qualified Data.Map as M
    import XMonad.Actions.SpawnOn
    import XMonad.Actions.CycleWS
    import XMonad.Actions.PhysicalScreens
    import XMonad.Layout.Circle
    import XMonad.Actions.UpdatePointer
    -- FOR MULTIMEDIA KEYS RUN:
    -- "xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'"
    -- Then look in /usr/include/X11/XF86keysym.h and look for the name and code.
    -- Terminal
    -- The preferred terminal program, which is used in a binding below and by
    -- certain contrib modules.
    myTerminal = "terminator"
    myInternet = "google-chrome-stable"
    myIM = "pidgin"
    myCalc = "libreoffice --calc"
    myEditor = "gedit"
    myBackground = "feh --bg-scale '/home/dvm/Pictures/infinity___widescreen_pack_by_morague.jpg'"
    myScreenshot = "scrot /home/dvm/Pictures/screen_%Y-%m-%d-%H-%M-%S.png -d 1"
    myMouseshot = "sleep 0.2; scrot -s ~/Pictures/screen_%Y-%m-%d-%H-%M-%S.png -d 1"
    myVirtual = "virtualbox"
    myRdesktop = "/home/dvm/.xmonad/bin/usrds006"
    myWTL = "/home/dvm/.xmonad/bin/wtl.sh"
    -- Workspaces
    -- The default number of workspaces (virtual screens) and their names.
    myWorkspaces = ["1:main","2:www","3:office","4:rdp","5:editor","6:email","7:files","8:chat","9:WTL"]
    -- Window rules
    -- Execute arbitrary actions and WindowSet manipulations when managing
    -- a new window. You can use this to, for example, always float a
    -- particular program, or have a client always appear on a particular
    -- workspace.
    -- To find the property name associated with a program, use
    -- > xprop | grep WM_CLASS
    -- and click on the client you're interested in.
    -- To match on the WM_NAME, you can use 'title' in the same way that
    -- 'className' and 'resource' are used below.
    myManageHook = composeAll
    [ resource =? "desktop_window" --> doIgnore
    , className =? "Galculator" --> doFloat
    , className =? "Steam" --> doFloat
    , className =? "Gimp" --> doFloat
    , resource =? "gpicview" --> doFloat
    , className =? "MPlayer" --> doFloat
    , className =? "Google-chrome-stable" --> doShift "2:www"
    , className =? "libreoffice-calc" --> doShift "3:office"
    , className =? "VirtualBox" --> doShift "3:office"
    , className =? "rdesktop" --> doShift "4:rdp"
    , className =? "Gedit" --> doShift "5:editor"
    , className =? "Evolution" --> doShift "6:email"
    , className =? "Nautilus" --> doShift "7:files"
    , className =? "Pidgin" --> doShift "8:chat"
    , className =? "Wine" --> doShift "9:WTL"
    , className =? "stalonetray" --> doIgnore
    , isFullscreen --> (doF W.focusDown <+> doFullFloat)]
    -- Layouts
    -- You can specify and transform your layouts by modifying these values.
    -- If you change layout bindings be sure to use 'mod-shift-space' after
    -- restarting (with 'mod-q') to reset your layout state to the new
    -- defaults, as xmonad preserves your old layout settings by default.
    -- The available layouts. Note that each layout is separated by |||,
    -- which denotes layout choice.
    myLayout = avoidStruts (
    Tall 1 (3/100) (1/2) |||
    Mirror (Tall 1 (3/100) (1/2)) |||
    tabbed shrinkText tabConfig |||
    Full |||
    Circle |||
    spiral (6/7)) |||
    noBorders (fullscreenFull Full)
    -- Colors and borders
    -- Currently based on the ir_black theme.
    myNormalBorderColor = "#000000"
    myFocusedBorderColor = "#FF0000"
    -- Colors for text and backgrounds of each tab when in "Tabbed" layout.
    tabConfig = defaultTheme {
    activeBorderColor = "#FF0000",
    activeTextColor = "#CEFFAC",
    activeColor = "#000000",
    inactiveBorderColor = "#FF0000",
    inactiveTextColor = "#EEEEEE",
    inactiveColor = "#000000"
    -- Color of current window title in xmobar.
    xmobarTitleColor = "#00ff00"
    -- Color of current workspace in xmobar.
    xmobarCurrentWorkspaceColor = "#ee9a00"
    -- Width of the window border in pixels.
    myBorderWidth = 2
    -- Key bindings
    -- modMask lets you specify which modkey you want to use. The default
    -- is mod1Mask ("left alt"). You may also consider using mod3Mask
    -- ("right alt"), which does not conflict with emacs keybindings. The
    -- "windows key" is usually mod4Mask.
    myModMask = mod4Mask
    myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
    -- Custom key bindings
    -- Start a terminal. Terminal to start is specified by myTerminal variable.
    [ ((modMask .|. controlMask, xK_t), spawn $ XMonad.terminal conf)
    -- Lock the screen using xscreensaver.
    , ((0, 0x1008FF2F), spawn "xscreensaver-command -lock")
    -- Run dmenu
    , ((modMask, xK_p), spawn "dmenu_run")
    -- Launch remote desktop script
    , ((modMask .|. controlMask, xK_r), spawn myRdesktop)
    -- Launch Google Chrome
    , ((modMask .|. controlMask, xK_i), spawn myInternet)
    -- Launch Gedit
    , ((modMask .|. controlMask, xK_g), spawn myEditor)
    -- Launch Libreoffice Calc
    , ((modMask .|. controlMask, xK_c), spawn myCalc)
    -- Launch Virtualbox
    , ((modMask .|. controlMask, xK_v), spawn myVirtual)
    -- Launch Evolution Email Client
    , ((modMask .|. controlMask, xK_e), spawn "evolution")
    -- Launch WT Library
    , ((modMask .|. controlMask, xK_w), spawn myWTL)
    -- Launch nautilius File Manager
    , ((modMask .|. controlMask, xK_f), spawn "nautilus")
    -- Switch to next workspace
    , ((modMask, xK_Page_Up), nextWS)
    -- Switch to prev workspace
    , ((modMask, xK_Page_Down), prevWS)
    -- Take a screenshot in select mode.
    -- After pressing this key binding, click a window, or draw a rectangle with the mouse.
    , ((modMask, xK_Print), spawn myMouseshot)
    -- Take full screenshot in multi-head mode.
    -- That is, take a screenshot of everything you see.
    -- , ((modMask .|. controlMask .|. shiftMask, xK_p), spawn "screenshot")
    , ((0, xK_Print), spawn myScreenshot)
    -- Fetch a single use password.
    , ((modMask .|. shiftMask, xK_o), spawn "fetchotp -x")
    -- Mute volume.
    -- , ((0, xK_F9), spawn "amixer -q set Master toggle")
    , ((0, 0x1008FF12), spawn "amixer -q set Master toggle")
    -- Decrease volume.
    -- , ((0, xK_F10), spawn "amixer -q set Master 10%-")
    , ((0, 0x1008FF11), spawn "amixer -q set Master 10%-")
    -- Increase volume.
    -- , ((0, xK_F11), spawn "amixer -q set Master 10%+")
    , ((0, 0x1008FF13), spawn "amixer -q set Master 10%+")
    -- Audio previous.
    , ((0, 0x1008FF16), spawn "")
    -- Play/pause.
    , ((0, 0x1008FF14), spawn "")
    -- Audio next.
    , ((0, 0x1008FF17), spawn "")
    -- Audio stop.
    , ((0, 0x1008FF15), spawn "")
    -- Eject CD tray.
    -- , ((0, 0x1008FF2C), spawn "eject -T")
    -- Switch to Prev Xinerama
    , ((modMask, xK_Right), onPrevNeighbour W.view)
    -- Switch to Next Xinerama
    , ((modMask, xK_Left), onNextNeighbour W.view)
    -- Switch to Prev Workspace
    , ((modMask, xK_Down), prevWS)
    -- Switch to Next Workspace
    , ((modMask, xK_Up), nextWS)
    -- "Standard" xmonad key bindings
    -- Close focused window.
    , ((modMask .|. shiftMask, xK_c), kill)
    -- Cycle through the available layout algorithms.
    , ((modMask, xK_space), sendMessage NextLayout)
    -- Reset the layouts on the current workspace to default.
    , ((modMask .|. shiftMask, xK_space), setLayout $ XMonad.layoutHook conf)
    -- Resize viewed windows to the correct size.
    , ((modMask, xK_n), refresh)
    -- Move focus to the next window.
    , ((modMask, xK_Tab), windows W.focusDown)
    -- Move focus to the next window.
    , ((modMask, xK_j), windows W.focusDown)
    -- Move focus to the previous window.
    , ((modMask, xK_k), windows W.focusUp )
    -- Move focus to the master window.
    , ((modMask, xK_m), windows W.focusMaster )
    -- Swap the focused window and the master window.
    , ((modMask, xK_Return), windows W.swapMaster)
    -- Swap the focused window with the next window.
    , ((modMask .|. shiftMask, xK_j), windows W.swapDown )
    -- Swap the focused window with the previous window.
    , ((modMask .|. shiftMask, xK_k), windows W.swapUp )
    -- Shrink the master area.
    , ((modMask, xK_h), sendMessage Shrink)
    -- Expand the master area.
    , ((modMask, xK_l), sendMessage Expand)
    -- Push window back into tiling.
    , ((modMask, xK_t), withFocused $ windows . W.sink)
    -- Increment the number of windows in the master area.
    , ((modMask, xK_comma), sendMessage (IncMasterN 1))
    -- Decrement the number of windows in the master area.
    , ((modMask, xK_period), sendMessage (IncMasterN (-1)))
    -- Toggle the status bar gap.
    -- TODO: update this binding with avoidStruts, ((modMask, xK_b),
    -- Quit xmonad.
    , ((modMask .|. shiftMask, xK_q), io (exitWith ExitSuccess))
    -- Restart xmonad.
    , ((modMask, xK_q), restart "xmonad" True)
    ++
    -- mod-[1..9], Switch to workspace N
    -- mod-shift-[1..9], Move client to workspace N
    [((m .|. modMask, k), windows $ f i)
    | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
    , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
    ++
    -- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
    -- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
    [((m .|. modMask, key), screenWorkspace sc >>= flip whenJust (windows . f))
    | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
    , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
    -- Mouse bindings
    -- Focus rules
    -- True if your focus should follow your mouse cursor.
    myFocusFollowsMouse :: Bool
    myFocusFollowsMouse = True
    myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $
    -- mod-button1, Set the window to floating mode and move by dragging
    ((modMask, button1),
    (\w -> focus w >> mouseMoveWindow w))
    -- mod-button2, Raise the window to the top of the stack
    , ((modMask, button2),
    (\w -> focus w >> windows W.swapMaster))
    -- Closed focus window. Modmask + Ctrl + Middle mouse button.
    , ((modMask .|. controlMask, button2), (\w -> focus w >> kill))
    -- mod-button3, Set the window to floating mode and resize by dragging
    , ((modMask, button3),
    (\w -> focus w >> mouseResizeWindow w))
    -- you may also bind events to the mouse scroll wheel (button4 and button5)
    -- mod-button4, Switch to next workspace
    , ((modMask, button4),
    (\w -> focus w >> nextWS))
    -- mod-button5, Switch to previous workspace
    , ((modMask, button5),
    (\w -> focus w >> prevWS))
    -- Status bars and logging
    -- Perform an arbitrary action on each internal state change or X event.
    -- See the 'DynamicLog' extension for examples.
    -- To emulate dwm's status bar
    -- > logHook = dynamicLogDzen
    myLogHook = updatePointer (Relative 1 1)
    -- Startup hook
    -- Perform an arbitrary action each time xmonad starts or is restarted
    -- with mod-q. Used by, e.g., XMonad.Layout.PerWorkspace to initialize
    -- per-workspace layout choices.
    -- By default, do nothing.
    myStartupHook = return ()
    -- Run xmonad with all the defaults we set up.
    main = do
    xmproc <- spawnPipe "xmobar ~/.xmonad/xmobar.hs"
    xmonad $ defaults {
    logHook = dynamicLogWithPP $ xmobarPP {
    ppOutput = hPutStrLn xmproc
    , ppTitle = xmobarColor xmobarTitleColor "" . shorten 50
    , ppCurrent = xmobarColor xmobarCurrentWorkspaceColor ""
    , ppSep = " : "
    , ppLayout = xmobarColor "orange" ""
    -- , manageHook = manageDocks <+> myManageHook
    , manageHook = manageSpawn <+> manageDocks <+> myManageHook
    , startupHook = setWMName "LG3D"
    -- >> spawnHere "trayer --edge top --align left --SetDockType true --SetPartialStrut true --expand true --width 6 --transparent true --alpha 0 --tint 0x000000 --height 16"
    >> spawnHere "/usr/bin/xscreensaver -no-splash &"
    >> spawnHere "udiskie --tray &"
    >> spawnHere myBackground
    -- >> spawnHere "mpd"
    -- >> spawnOn "1:main" "/home/dvm/.xmonad/bin/nload.sh"
    -- >> spawnOn "1:main" "/home/dvm/.xmonad/bin/clock.sh"
    -- >> spawnOn "1:main" "/home/dvm/.xmonad/bin/visual.sh"
    -- >> spawnHere myTerminal
    -- >> spawnOn "2:www" myInternet
    -- >> spawnOn "3:office" myCalc
    -- >> spawnOn "4:rdp" "/home/dvm/.xmonad/bin/usrds006"
    -- >> spawnOn "5:editor" myEditor
    -- >> spawnOn "6:email" "evolution"
    -- >> spawnOn "7:files" "nautilus"
    -- >> spawnOn "9:WTL" myWTL
    -- Combine it all together
    -- A structure containing your configuration settings, overriding
    -- fields in the default config. Any you don't override, will
    -- use the defaults defined in xmonad/XMonad/Config.hs
    -- No need to modify this.
    defaults = defaultConfig {
    -- simple stuff
    terminal = myTerminal,
    focusFollowsMouse = myFocusFollowsMouse,
    borderWidth = myBorderWidth,
    modMask = myModMask,
    workspaces = myWorkspaces,
    normalBorderColor = myNormalBorderColor,
    focusedBorderColor = myFocusedBorderColor,
    -- key bindings
    keys = myKeys,
    mouseBindings = myMouseBindings,
    -- hooks, layouts
    layoutHook = smartBorders $ myLayout,
    manageHook = myManageHook,
    startupHook = myStartupHook
    Any input/insight would be greatly appreciated. Thank you for you time.
    Last edited by davama (2014-04-08 13:53:59)

    Awesome!!
    Skotish, thank you! I copied your code into my config and it worked like a charm. At first I thought they were identical so i  tried it with my code, since you mentioned watch for tabs and spaces. My block didn't work of course but I didn't understand why since "tabs and spaces" were identical. Until i put your block side by side with my block. Then i noticed the "$" was removed from:
    logHook = dynamicLogWithPP $ xmobarPP {
    I still dont understand Haskell much and what the "$" means but Im still learning.
    BTW my config has changed a bit so im going to post it (with pointer update included):
    import System.IO
    import System.Exit
    import XMonad
    import XMonad.Hooks.DynamicLog
    import XMonad.Hooks.ManageDocks
    import XMonad.Hooks.ManageHelpers
    import XMonad.Hooks.SetWMName
    import XMonad.Layout.Fullscreen
    import XMonad.Layout.NoBorders
    --import XMonad.Layout.Spiral
    import XMonad.Layout.Tabbed
    import XMonad.Layout.ThreeColumns
    import XMonad.Util.Run(spawnPipe)
    import XMonad.Util.EZConfig(additionalKeys)
    import qualified XMonad.StackSet as W
    import qualified Data.Map as M
    import XMonad.Actions.SpawnOn
    import XMonad.Actions.CycleWS
    import XMonad.Actions.PhysicalScreens
    import XMonad.Layout.Circle
    import XMonad.Actions.WindowBringer
    import XMonad.Layout.Cross
    import XMonad.Layout.Grid
    import XMonad.Layout.Minimize
    import XMonad.Layout.Maximize
    import XMonad.Actions.WindowMenu
    import XMonad.Actions.UpdatePointer
    -- FOR MULTIMEDIA KEYS RUN:
    -- xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'
    -- Then look in /usr/include/X11/XF86keysym.h and look for the name and code.
    -- Terminal
    -- The preferred terminal program, which is used in a binding below and by
    -- certain contrib modules.
    myTerminal = "terminator"
    myInternet = "google-chrome-stable"
    myIM = "pidgin"
    myCalc = "libreoffice --calc"
    myEditor = "gedit"
    myBackground = "feh --bg-scale '/home/dvm/Pictures/infinity___widescreen_pack_by_morague.jpg'"
    myScreenshot = "scrot /home/dvm/Pictures/screen_%Y-%m-%d-%H-%M-%S.png -d 1"
    myMouseshot = "sleep 0.2; scrot -s ~/Pictures/screen_%Y-%m-%d-%H-%M-%S.png -d 1"
    myVirtual = "virtualbox"
    myRdesktop = "/home/dvm/.xmonad/bin/usrds006"
    myWTL = "/home/dvm/.xmonad/bin/wtl.sh"
    -- Workspaces
    -- The default number of workspaces (virtual screens) and their names.
    myWorkspaces = ["1:main","2:www","3:office","4:rdp","5:editor","6:email","7:files","8:chat","9:WTL"]
    -- Window rules
    -- Execute arbitrary actions and WindowSet manipulations when managing
    -- a new window. You can use this to, for example, always float a
    -- particular program, or have a client always appear on a particular
    -- workspace.
    -- To find the property name associated with a program, use
    -- > xprop | grep WM_CLASS
    -- and click on the client you're interested in.
    -- To match on the WM_NAME, you can use 'title' in the same way that
    -- 'className' and 'resource' are used below.
    myManageHook = composeAll
    [ resource =? "desktop_window" --> doIgnore
    , className =? "Galculator" --> doFloat
    , className =? "Steam" --> doFloat
    , className =? "Gimp" --> doFloat
    , resource =? "gpicview" --> doFloat
    , className =? "MPlayer" --> doFloat
    , className =? "Google-chrome-stable" --> doShift "2:www"
    , className =? "libreoffice-calc" --> doShift "3:office"
    , className =? "VirtualBox" --> doShift "3:office"
    , className =? "rdesktop" --> doShift "4:rdp"
    , className =? "Gedit" --> doShift "5:editor"
    , className =? "Evolution" --> doShift "6:email"
    , className =? "Nautilus" --> doShift "7:files"
    , className =? "Pidgin" --> doShift "8:chat"
    , className =? "Wine" --> doShift "9:WTL"
    , className =? "stalonetray" --> doIgnore
    , isFullscreen --> (doF W.focusDown <+> doFullFloat)]
    -- Layouts
    -- You can specify and transform your layouts by modifying these values.
    -- If you change layout bindings be sure to use 'mod-shift-space' after
    -- restarting (with 'mod-q') to reset your layout state to the new
    -- defaults, as xmonad preserves your old layout settings by default.
    -- The available layouts. Note that each layout is separated by |||,
    -- which denotes layout choice.
    myLayout = avoidStruts (
    Tall 1 (3/100) (1/2) |||
    Mirror (Tall 1 (3/100) (1/2)) |||
    tabbed shrinkText tabConfig |||
    Full |||
    Grid ||| -- This one is nice
    Circle ||| -- This and cross are similar but
    simpleCross) ||| -- cross sends focus window to center.
    -- spiral (6/7)) |||
    noBorders (fullscreenFull Full)
    -- Colors and borders
    -- Currently based on the ir_black theme.
    myNormalBorderColor = "#000000"
    myFocusedBorderColor = "#FF0000"
    -- Colors for text and backgrounds of each tab when in "Tabbed" layout.
    tabConfig = defaultTheme {
    activeBorderColor = "#FF0000",
    activeTextColor = "#CEFFAC",
    activeColor = "#000000",
    inactiveBorderColor = "#FF0000",
    inactiveTextColor = "#EEEEEE",
    inactiveColor = "#000000"
    -- Color of current window title in xmobar.
    xmobarTitleColor = "#00ff00"
    -- Color of current workspace in xmobar.
    xmobarCurrentWorkspaceColor = "#ee9a00"
    -- Width of the window border in pixels.
    myBorderWidth = 2
    -- Key bindings
    -- modMask lets you specify which modkey you want to use. The default
    -- is mod1Mask ("left alt"). You may also consider using mod3Mask
    -- ("right alt"), which does not conflict with emacs keybindings. The
    -- "windows key" is usually mod4Mask.
    myModMask = mod4Mask
    myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
    -- Custom key bindings
    -- Start a terminal. Terminal to start is specified by myTerminal variable.
    [ ((modMask .|. controlMask, xK_t), spawn $ XMonad.terminal conf)
    -- Launch remote desktop script
    , ((modMask .|. controlMask, xK_r), spawn myRdesktop)
    -- Launch Google Chrome
    , ((modMask .|. controlMask, xK_i), spawn myInternet)
    -- Launch Gedit
    , ((modMask .|. controlMask, xK_g), spawn myEditor)
    -- Launch Libreoffice Calc
    , ((modMask .|. controlMask, xK_c), spawn myCalc)
    -- Launch Virtualbox
    , ((modMask .|. controlMask, xK_v), spawn myVirtual)
    -- Launch Evolution Email Client
    , ((modMask .|. controlMask, xK_e), spawn "evolution")
    -- Launch WT Library
    , ((modMask .|. controlMask, xK_w), spawn myWTL)
    -- Launch nautilius File Manager
    , ((modMask .|. controlMask, xK_f), spawn "nautilus")
    -- display a number of actions related to window management in the center of the focused window.
    -- Actions include: Closing, maximizing, minimizing and shifting the window to another workspace.
    , ((modMask .|. shiftMask, xK_s), windowMenu)
    -- Pops open a dmenu with window titles. Choose one,
    -- and you will be taken to the corresponding workspace.
    , ((modMask .|. shiftMask, xK_g), gotoMenu)
    -- Pops open an application with window titles given
    -- over stdin. Choose one, and it will be dragged, kicking
    -- and screaming, into your current workspace.
    , ((modMask .|. shiftMask, xK_b), bringMenu)
    -- Lock the screen using xscreensaver. Using sleep button
    , ((0, 0x1008FF2F), spawn "xscreensaver-command -lock")
    -- Mute volume.
    -- , ((0, xK_F9), spawn "amixer -q set Master toggle")
    , ((0, 0x1008FF12), spawn "amixer -q set Master toggle")
    -- Decrease volume.
    -- , ((0, xK_F10), spawn "amixer -q set Master 10%-")
    , ((0, 0x1008FF11), spawn "amixer -q set Master 10%-")
    -- Increase volume.
    -- , ((0, xK_F11), spawn "amixer -q set Master 10%+")
    , ((0, 0x1008FF13), spawn "amixer -q set Master 10%+")
    -- Audio previous.
    , ((0, 0x1008FF16), spawn "ncmpcpp prev")
    -- Play/pause.
    , ((0, 0x1008FF14), spawn "ncmpcpp toggle")
    -- , ((0, 0x1008FF14), spawn "ncmpcpp stop; ncmpcpp play")
    -- Audio next.
    , ((0, 0x1008FF17), spawn "ncmpcpp next")
    -- Audio stop.
    , ((0, 0x1008FF15), spawn "ncmpcpp stop")
    -- Take full screenshot in multi-head mode.
    -- That is, take a screenshot of everything you see.
    -- , ((modMask .|. controlMask .|. shiftMask, xK_p), spawn "screenshot")
    , ((0, xK_Print), spawn myScreenshot)
    -- Take a screenshot in select mode.
    -- After pressing this key binding, click a window, or draw a rectangle with the mouse.
    , ((modMask, xK_Print), spawn myMouseshot)
    -- Run dmenu
    , ((modMask, xK_p), spawn "dmenu_run")
    -- Eject CD tray.
    , ((modMask, xK_F12), spawn "eject -T")
    -- Switch to Prev Xinerama
    , ((modMask, xK_Right), onPrevNeighbour W.view)
    -- Switch to Next Xinerama
    , ((modMask, xK_Left), onNextNeighbour W.view)
    -- Switch to Prev Workspace
    , ((modMask, xK_Down), moveTo Prev HiddenNonEmptyWS)
    -- Switch to Next Workspace
    , ((modMask, xK_Up), moveTo Next HiddenNonEmptyWS)
    -- Switch to next workspace
    , ((modMask, xK_Page_Up), moveTo Next HiddenWS)
    -- Switch to prev workspace
    , ((modMask, xK_Page_Down), moveTo Prev HiddenWS)
    -- "Standard" xmonad key bindings
    -- Close focused window.
    , ((modMask .|. shiftMask, xK_c), kill)
    -- Cycle through the available layout algorithms.
    , ((modMask, xK_space), sendMessage NextLayout)
    -- Reset the layouts on the current workspace to default.
    , ((modMask .|. shiftMask, xK_space), setLayout $ XMonad.layoutHook conf)
    -- Resize viewed windows to the correct size.
    , ((modMask, xK_n), refresh)
    -- Move focus to the next window.
    , ((modMask, xK_Tab), windows W.focusDown)
    -- Move focus to the next window.
    , ((modMask, xK_j), windows W.focusDown)
    -- Move focus to the previous window.
    , ((modMask, xK_k), windows W.focusUp )
    -- Move focus to the master window.
    , ((modMask, xK_m), windows W.focusMaster )
    -- Swap the focused window and the master window.
    , ((modMask, xK_Return), windows W.swapMaster)
    -- Swap the focused window with the next window.
    , ((modMask .|. shiftMask, xK_j), windows W.swapDown )
    -- Swap the focused window with the previous window.
    , ((modMask .|. shiftMask, xK_k), windows W.swapUp )
    -- Shrink the master area.
    , ((modMask, xK_h), sendMessage Shrink)
    -- Expand the master area.
    , ((modMask, xK_l), sendMessage Expand)
    -- Push window back into tiling.
    , ((modMask, xK_t), withFocused $ windows . W.sink)
    -- Increment the number of windows in the master area.
    , ((modMask, xK_comma), sendMessage (IncMasterN 1))
    -- Decrement the number of windows in the master area.
    , ((modMask, xK_period), sendMessage (IncMasterN (-1)))
    -- Toggle the status bar gap.
    -- TODO: update this binding with avoidStruts, ((modMask, xK_b),
    -- Quit xmonad.
    , ((modMask .|. shiftMask, xK_q), io (exitWith ExitSuccess))
    -- Restart xmonad.
    , ((modMask, xK_q), restart "xmonad" True)
    ++
    -- mod-[1..9], Switch to workspace N
    -- mod-shift-[1..9], Move client to workspace N
    [((m .|. modMask, k), windows $ f i)
    | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
    , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
    ++
    -- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
    -- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
    [((m .|. modMask, key), screenWorkspace sc >>= flip whenJust (windows . f))
    | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
    , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
    -- Mouse bindings
    -- Focus rules
    -- True if your focus should follow your mouse cursor.
    myFocusFollowsMouse :: Bool
    myFocusFollowsMouse = True
    myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $
    -- mod-button1, Set the window to floating mode and move by dragging
    ((modMask, button1),
    (\w -> focus w >> mouseMoveWindow w))
    -- mod-button2, Raise the window to the top of the stack
    , ((modMask, button2),
    (\w -> focus w >> windows W.swapMaster))
    -- Closed focus window. Modmask + Ctrl + Middle mouse button.
    , ((modMask .|. controlMask, button2), (\w -> focus w >> kill))
    -- mod-button3, Set the window to floating mode and resize by dragging
    , ((modMask, button3),
    (\w -> focus w >> mouseResizeWindow w))
    -- you may also bind events to the mouse scroll wheel (button4 and button5)
    -- mod-button4, Switch to next workspace
    , ((modMask, button4),
    (\w -> focus w >> moveTo Next HiddenNonEmptyWS))
    -- mod-button5, Switch to previous workspace
    , ((modMask, button5),
    (\w -> focus w >> moveTo Prev HiddenNonEmptyWS))
    -- Status bars and logging
    -- Perform an arbitrary action on each internal state change or X event.
    -- See the 'DynamicLog' extension for examples.
    -- To emulate dwm's status bar
    -- > logHook = dynamicLogDzen
    -- Startup hook
    -- Perform an arbitrary action each time xmonad starts or is restarted
    -- with mod-q. Used by, e.g., XMonad.Layout.PerWorkspace to initialize
    -- per-workspace layout choices.
    -- By default, do nothing.
    myStartupHook = return ()
    -- Run xmonad with all the defaults we set up.
    main = do
    xmproc <- spawnPipe "xmobar ~/.xmonad/xmobar.hs"
    xmonad $ defaults {
    logHook = dynamicLogWithPP xmobarPP {
    ppOutput = hPutStrLn xmproc
    , ppTitle = xmobarColor xmobarTitleColor "" . shorten 50
    , ppCurrent = xmobarColor xmobarCurrentWorkspaceColor ""
    , ppSep = " : "
    , ppLayout = xmobarColor "orange" ""
    >> updatePointer (TowardsCentre 0.99 0.99) -- moves pointer to center of focused window
    -- >> updatePointer (Relative 0.99 0.99) -- moves pointer to lower right corner of focused window
    -- , manageHook = manageDocks <+> myManageHook
    , manageHook = manageSpawn <+> manageDocks <+> myManageHook
    , startupHook = setWMName "LG3D"
    -- >> spawnHere "trayer --edge top --align left --SetDockType true --SetPartialStrut true --expand true --width 6 --transparent true --alpha 0 --tint 0x000000 --height 16"
    >> spawnHere "/usr/bin/xscreensaver -no-splash &"
    >> spawnHere "udiskie --tray &"
    >> spawnHere myBackground
    -- >> spawnHere "mpd"
    -- >> spawnOn "1:main" "/home/dvm/.xmonad/bin/nload.sh"
    -- >> spawnOn "1:main" "/home/dvm/.xmonad/bin/clock.sh"
    -- >> spawnOn "1:main" "/home/dvm/.xmonad/bin/visual.sh"
    -- >> spawnHere myTerminal
    -- >> spawnOn "2:www" myInternet
    -- >> spawnOn "3:office" myCalc
    -- >> spawnOn "4:rdp" "/home/dvm/.xmonad/bin/usrds006"
    -- >> spawnOn "5:editor" myEditor
    -- >> spawnOn "6:email" "evolution"
    -- >> spawnOn "7:files" "nautilus"
    -- >> spawnOn "9:WTL" myWTL
    -- Combine it all together
    -- A structure containing your configuration settings, overriding
    -- fields in the default config. Any you don't override, will
    -- use the defaults defined in xmonad/XMonad/Config.hs
    -- No need to modify this.
    defaults = defaultConfig {
    -- simple stuff
    terminal = myTerminal,
    focusFollowsMouse = myFocusFollowsMouse,
    borderWidth = myBorderWidth,
    modMask = myModMask,
    workspaces = myWorkspaces,
    normalBorderColor = myNormalBorderColor,
    focusedBorderColor = myFocusedBorderColor,
    -- key bindings
    keys = myKeys,
    mouseBindings = myMouseBindings,
    -- hooks, layouts
    layoutHook = smartBorders $ myLayout,
    manageHook = myManageHook,
    startupHook = myStartupHook
    Actually decided to use "TowardsCentre" instead.
    For anyone else reading this, i'm currently using xmonad v0.11 and xmobar v0.20.1
    Woa! Rayman just saw you updated the post. Thanks for the explanation! Going to have to sit on that one to reread it cuz it just went over my head. Thanks for updating. I'll try your suggestion too, looks cleaner.
    Thank you all for your time.
    -Dave

Maybe you are looking for

  • Adding custom WIM files to a bootable thumb drive

    Hi, I have setup an WDS 2008 that works fine for deploying and capturing images over my network. I am trying to find a solution to create a bootable thumb, that would contain those custom images captured with WDS. So what I did until I got stuck:  Cr

  • $10 certificat​e for pre-orderi​ng

    Hi I pre-ordered Destiny: Limited Edition, and picked up the game on 9/9.  I was under the impression that this pre-order included a $10 reward certificate.  Was this on my receipt?  How do I get my reward?  I checked my best buy but don't see it on

  • How do I "unlock" a template without losing content?

    I want to make changes to a template that seems to be "locked." I did not create the template. When I deleted the green template coding for editable regions, it "unlocked" the template but it also made all of my content disappear. I'm looking for a w

  • My profile on old pc is corrupted. I can only log in locally with another login. I need to copy or back up my firefox bookmarks. how can I do this?

    I have a copy of my old profile on my old laptop but I can no longer log in as myself. I can only log into safe mode on my computer. I need to copy my bookmarks to my new laptop. I copied the profiles folder within the Mozilla folder in my local prof

  • CSS ftp script

    Hello, I use a CSS to load-balance ftp server. To validate the availability of my ftp servers, I would like to write a script that logs on each ftp server and then tries to get a copy of a small file on the server (the file are not stored locally on