5.11.14

XMonad in Fedora 20+

Thanks to geekosaur for helping me with this.

Setting up XMonad in Fedora will allow you to never use your mouse again, ever.

First, install the basics.
 yum install xmonad ghc-xmonad-contrib-devel xmonad-mate 
Now, reboot your box (yes you have to, for f21, at least).

When you log in , you will see an option to start up as xmonad-mate.  This will allow you to tile your windows.


You should now see a little "wheel" underneath your Gnome login.



Now, select xmonad-mate which will open up the Xmonad, rather than gnome 3 window manager.  It will look ugly at first : but just wait till you get to work !

alt + enter 

This opens a terminal up.  

alt + w / e/ r /

This switches active windows.  Typically between "w" and "e".    For example, "alt + w" will move me to my primary monitor, and "alt + e" moves to your secondary.

alt + j / k /


Now, within your monitors, there are "tiles" .   "alt + j"  moves your active tile to the left.  This guy moves your focus window.  You will see a red square pop up around your new active window. 

Many other XMonad customizations that you can use : see http://xmonad.org/manpage.html.

UPDATE : Extending for non greedy windows. 
There is only one thing I wanted to change, origionally, about xmonad: The fact that switching windows would allow me to mistakenly swap my existing already shown windows.   This kills your morale when you have a nice setup and only want to change one your windows... while for example keeping your web browser in place.

I got some help on #xmonad from Paul Berens on how to add non-greedy window managers to xmonad today.  Heres the trick.

  1 -- default desktop configuration for Fedora
  2
  3 import System.Posix.Env (getEnv)
  4 import Data.Maybe (maybe)
  5 import XMonad.Hooks.DynamicLog

  6 import XMonad
  7 import XMonad.Config.Desktop
  8 import XMonad.Config.Gnome
  9 import XMonad.Config.Kde
 10 import XMonad.Config.Xfce
 11 import qualified XMonad.StackSet as W
 12 import XMonad.Util.EZConfig
 13
 14 main = do
 15      session <- br="" getenv=""> 16      xmonad =<< dzen (myConfig session)
 17 -- dont forget the parens... 
 18 myConfig session = (maybe desktopConfig desktop session) {
 19         workspaces = myWorkspaces
 20         -- skipped
 21         } `additionalKeysP` myKeys
 22
 23
 24
 25 desktop "gnome" = gnomeConfig
 26 desktop "kde" = kde4Config
 27 desktop "xfce" = xfceConfig
 28 desktop "xmonad-mate" = gnomeConfig
 29 desktop _ = desktopConfig
 30
 
WARNING: Im still experimenting with the above configuration, but it apperers to prevent xmonad from  swapping my active windows .



2 comments: