Advertisement
elhackerlibre

xmonad.hs

Apr 23rd, 2017
725
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #! /usr/bin/env runhugs +l
  2. --
  3. -- xmonad.hs
  4. -- Copyright (C) 2017 Felix Molero <fmolero69@gmail.com>
  5. --
  6. -- Distributed under terms of the GPLv3+ license.
  7. --
  8.  
  9. -- Módulos importados:
  10. import XMonad
  11. import XMonad.Hooks.DynamicLog
  12. import XMonad.Hooks.ManageDocks
  13. import XMonad.Hooks.EwmhDesktops
  14. import XMonad.Util.Run(spawnPipe)
  15. import XMonad.Util.EZConfig(additionalKeys)
  16. import Data.Monoid
  17. import System.Exit
  18. import System.IO
  19. import Control.Monad (liftM2)
  20. import qualified XMonad.StackSet as W
  21. import qualified Data.Map        as M
  22.  
  23. -- Funciones base
  24. myModMask               = mod4Mask
  25. myTerminal              = "termite"
  26. myWorkspaces            = ["1","2","3","4","5","6","7","8","9"]
  27. myBorderWidth           = 2
  28. myNormalBorderColor     = "#323232"
  29. myFocusedBorderColor    = "#707070"
  30. myFocusFollowsMouse     :: Bool
  31. myFocusFollowsMouse     =  True
  32.  
  33. -- Función * main *
  34. --
  35. main = do
  36.     xmproc <- spawnPipe "xmobar ~/.xmobarrc"
  37.    -- Startup:
  38.     spawn "mpd"
  39.     spawn "numlock on"
  40.     spawn "compton -cCGb"
  41.     spawn "thunar --daemon"
  42.     spawn "feh --bg-scale ~/.background/xmonad2.png"
  43.     spawn "conky -d; sleep 1 && transset-df .5 -n Conky"
  44.     xmonad $ defaultConfig
  45.         { manageHook = manageDocks <+> manageHook defaultConfig
  46.         , layoutHook = avoidStruts  $  layoutHook defaultConfig
  47.         , handleEventHook = docksEventHook <+> handleEventHook
  48.                              defaultConfig <+> fullscreenEventHook
  49.         , logHook    = dynamicLogWithPP xmobarPP  
  50.                             { ppOutput  = hPutStrLn xmproc
  51.                             , ppTitle   = xmobarColor "#EE9A00" "" . shorten 50
  52.                             , ppCurrent = xmobarColor "#EE9A00" ""
  53.                             , ppVisible = xmobarColor "#404040" ""
  54.                             , ppUrgent  = xmobarColor "#900000" "" . wrap "[" "]"
  55.                             }
  56.  
  57.         -- Simple stuff
  58.        -- , keys                  = myKeys
  59.           , modMask               = myModMask
  60.           , terminal              = myTerminal
  61.           , workspaces            = myWorkspaces
  62.           , borderWidth           = myBorderWidth
  63.           , mouseBindings         = myMouseBindings
  64.           , focusFollowsMouse     = myFocusFollowsMouse
  65.           , normalBorderColor     = myNormalBorderColor
  66.           , focusedBorderColor    = myFocusedBorderColor
  67.         }  `additionalKeys`
  68.  
  69. -- myKeys conf@(XConfig {XMonad.modMask = mod4Mask}) = M.fromList $
  70. -------------------------------------------------------------------------------
  71. ----------------------------  Atajos de teclado: ------------------------------
  72. -------------------------------------------------------------------------------
  73. --
  74. --------------------------- Lanzador de útilidades ----------------------------
  75.         [ (( mod4Mask,               xK_d       ), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"")
  76.         , (( mod4Mask,               xK_g       ), spawn "gmrun"   )
  77.         , (( mod4Mask,               xK_Return  ), spawn "termite" )
  78.  
  79. --------------------------- Lanzador de aplicaciones --------------------------
  80.         , (( mod4Mask,               xK_F1      ), spawn "firefox" )
  81.         , (( mod4Mask,               xK_F2      ), spawn "thunar"  )
  82.         , (( mod4Mask,               xK_F3      ), spawn "mousepad")
  83.         , (( mod4Mask .|. shiftMask, xK_F1      ), spawn "palemoon")
  84.         , (( mod4Mask .|. shiftMask, xK_F2      ), spawn "gimp"    )
  85.         , (( mod4Mask .|. shiftMask, xK_F3      ), spawn "inkscape")
  86.  
  87. -------------------------- Control de música [MPC] ----------------------------
  88.         , (( mod4Mask,               xK_p       ), spawn "mpc toggle") -- Play | Pausa
  89.         , (( mod4Mask,               xK_s       ), spawn "mpc stop"  ) -- Stop
  90.         , (( mod4Mask,               xK_b       ), spawn "mpc prev"  ) -- Back
  91.         , (( mod4Mask,               xK_n       ), spawn "mpc next"  ) -- Next
  92.         , (( mod4Mask,               xK_plus    ), spawn "mpc volume +2 ") --Sube el volumen
  93.         , (( mod4Mask,               xK_minus   ), spawn "mpc volume -3 ") --Baja el volumen
  94.  
  95. --------------------------- Control de volumen --------------------------------
  96.         , (( mod4Mask .|. shiftMask, xK_plus    ), spawn "amixer set Master 5%+ unmute")
  97.         , (( mod4Mask .|. shiftMask, xK_minus   ), spawn "amixer set Master 5%- unmute")
  98.         , (( mod4Mask .|. shiftMask, xK_m       ), spawn "amixer set Master toggle")
  99.  
  100. ------------------------- Funcionalidad de las Ventanas -----------------------
  101.         , (( mod4Mask,                xK_r      ), spawn "xmonad --recompile; xmonad --restart") -- reiniciar Xmonad
  102.         , (( mod4Mask,                xK_e      ), io (exitWith ExitSuccess)) -- Salir de Xmonad
  103.         , (( mod4Mask .|. shiftMask,  xK_q      ), kill                     ) -- Cerrar ventana
  104.         , (( mod4Mask .|. shiftMask,  xK_r      ), refresh                  ) -- Reajustar ventana
  105.         , (( mod4Mask,                xK_Tab    ), windows W.focusDown      ) -- Mover focus de ventana abajo
  106.         , (( mod4Mask,                xK_j      ), windows W.focusDown      ) -- Mover focus de ventana abajo
  107.         , (( mod4Mask,                xK_k      ), windows W.focusUp        ) -- Mover focus de ventana arriba
  108.         , (( mod4Mask,                xK_m      ), windows W.focusMaster    ) -- Mover focus de ventana principal
  109.         , (( mod4Mask .|. shiftMask,  xK_Return ), windows W.swapMaster     ) -- Cambiar enfoque de la ventana principal
  110.         , (( mod4Mask .|. shiftMask,  xK_j      ), windows W.swapDown       ) -- Cambiar enfoque de la ventana abajo
  111.         , (( mod4Mask .|. shiftMask,  xK_k      ), windows W.swapUp         ) -- Cambiar enfoque de la ventana arriba
  112.         , (( mod4Mask,                xK_h      ), sendMessage Shrink       ) -- Reduce el area de la ventana principal
  113.         , (( mod4Mask,                xK_l      ), sendMessage Expand       ) -- Expandir el area de la ventana principal
  114.         , (( mod4Mask,                    xK_t      ), withFocused $ windows . W.sink) -- Empujar la ventana a la cuadricula
  115.         , (( mod4Mask,                xK_comma  ), sendMessage (IncMasterN 1)) -- Incrementar la ventana en el area.
  116.         , (( mod4Mask,                xK_period ), sendMessage (IncMasterN (-1))) -- Incrementar la ventana en el area.
  117.         , (( mod4Mask,                xK_space  ), sendMessage NextLayout    ) -- Rotar las ventanas.
  118.      --   , (( mod4Mask .|. shiftMask,  xK_space ), setLayout $ XMonad.layoutHook conf)
  119.  
  120.         ]
  121. -------------------------------------------------------------------------------
  122. -- Mouse bindings: default actions bound to mouse events
  123. --
  124. myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList $
  125.  
  126.     -- mod-button1, Set the window to floating mode and move by dragging
  127.     [ ((modm, button1), (\w -> focus w >> mouseMoveWindow w
  128.                                        >> windows W.shiftMaster))
  129.  
  130.     -- mod-button2, Raise the window to the top of the stack
  131.     , ((modm, button2), (\w -> focus w >> windows W.shiftMaster))
  132.  
  133.     -- mod-button3, Set the window to floating mode and resize by dragging
  134.     , ((modm, button3), (\w -> focus w >> mouseResizeWindow w
  135.                                        >> windows W.shiftMaster))
  136.  
  137.     -- you may also bind events to the mouse scroll wheel (button4 and button5)
  138.     ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement