summaryrefslogtreecommitdiff
path: root/xmonad
diff options
context:
space:
mode:
Diffstat (limited to 'xmonad')
-rw-r--r--xmonad/xmonad.hs190
1 files changed, 23 insertions, 167 deletions
diff --git a/xmonad/xmonad.hs b/xmonad/xmonad.hs
index eaa0f47..863707e 100644
--- a/xmonad/xmonad.hs
+++ b/xmonad/xmonad.hs
@@ -1,12 +1,3 @@
---
--- xmonad example config file.
---
--- A template showing all available configuration hooks,
--- and how to override the defaults in your own xmonad.hs conf file.
---
--- Normally, you'd only override those defaults you care about.
---
-
import XMonad
import Data.Monoid
import System.Exit
@@ -32,136 +23,74 @@ import XMonad.Layout.NoBorders (noBorders, smartBorders)
import XMonad.Layout.Minimize (minimize)
import qualified XMonad.Layout.BoringWindows as BW
-
--- The preferred terminal program, which is used in a binding below and by
--- certain contrib modules.
---
myTerminal = "urxvt"
+myBrowser = "glide"
+myLauncher = "dmenu_run"
+myBrightnessDown = "brightnessdown"
+myBrightnessUp = "brightnessup"
+myVolumeDown = "pactl set-sink-volume @DEFAULT_SINK@ -5%"
+myVolumeUp = "pactl set-sink-volume @DEFAULT_SINK@ +5%"
+myVolumeMute = "pactl set-sink-mute @DEFAULT_SINK@ toggle"
--- Whether focus follows the mouse pointer.
myFocusFollowsMouse :: Bool
myFocusFollowsMouse = False
-
--- Whether clicking on a window to focus also passes the click to the window
myClickJustFocuses :: Bool
myClickJustFocuses = False
-
--- Width of the window border in pixels.
---
myBorderWidth = 1
+myNormalBorderColor = "#bbbbbb"
+myFocusedBorderColor = "#6904f7"
--- 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
--- The default number of workspaces (virtual screens) and their names.
--- By default we use numeric strings, but any string may be used as a
--- workspace name. The number of workspaces is determined by the length
--- of this list.
---
--- A tagging example:
---
--- > workspaces = ["web", "irc", "code" ] ++ map show [4..9]
---
myWorkspaces = ["1","2","3","4","5","6","7","8","9"]
--- Border colors for unfocused and focused windows, respectively.
---
-myNormalBorderColor = "#bbbbbb"
-myFocusedBorderColor = "#6904f7"
-
------------------------------------------------------------------------
--- Key bindings. Add, modify or remove key bindings here.
---
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
-
- -- launch a terminal
[ ((modm .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)
-
- -- launch dmenu
- , ((modm, xK_d ), spawn "dmenu_run")
-
- -- browser
- , ((modm, xK_e ), spawn "glide")
-
- -- goto
+ , ((modm, xK_d ), spawn myBrowser)
+ , ((modm, xK_e ), spawn myLauncher)
+ , ((noModMask , xF86XK_AudioMute), spawn myVolumeMute)
+ , ((noModMask , xF86XK_AudioLowerVolume), spawn myVolumeDown)
+ , ((noModMask , xF86XK_AudioRaiseVolume), spawn myVolumeUp)
+ , ((noModMask , xF86XK_MonBrightnessDown), spawn myBrightnessDown)
+ , ((noModMask , xF86XK_MonBrightnessUp), spawn myBrightnessUp)
+
, ((modm .|. shiftMask, xK_g ), gotoMenu)
, ((modm .|. shiftMask, xK_b ), bringMenu)
- -- close focused window
, ((modm .|. shiftMask, xK_c ), kill)
- -- Rotate through the available layout algorithms
, ((modm, xK_space ), sendMessage NextLayout)
-
- -- Reset the layouts on the current workspace to default
, ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
- -- Resize viewed windows to the correct size
, ((modm, xK_n ), refresh)
-
- -- Move focus to the next window
+
, ((modm, xK_Tab ), windows W.focusDown)
-
- -- Move focus to the next window
, ((modm, xK_j ), windows W.focusDown)
-
- -- Move focus to the previous window
- , ((modm, xK_k ), windows W.focusUp )
-
- -- Move focus to the master window
- , ((modm, xK_m ), windows W.focusMaster )
-
- -- Swap the focused window and the master window
+ , ((modm, xK_k ), windows W.focusUp)
+ , ((modm, xK_m ), windows W.focusMaster)
, ((modm, xK_Return), windows W.swapMaster)
- -- Swap the focused window with the next window
, ((modm .|. shiftMask, xK_j ), windows W.swapDown )
-
- -- Swap the focused window with the previous window
, ((modm .|. shiftMask, xK_k ), windows W.swapUp )
- -- Shrink the master area
, ((modm, xK_h ), sendMessage Shrink)
-
- -- Expand the master area
, ((modm, xK_l ), sendMessage Expand)
- -- Push window back into tiling
+ -- floating -> tiling
, ((modm, xK_t ), withFocused $ windows . W.sink)
-- push and pop from the hidden window stack
, ((modm, xK_backslash), withFocused minimizeWindow)
, ((modm .|. shiftMask, xK_backslash), withLastMinimized maximizeWindowAndFocus)
- -- Increment the number of windows in the master area
, ((modm , xK_comma ), sendMessage (IncMasterN 1))
-
- -- Deincrement the number of windows in the master area
, ((modm , xK_period), sendMessage (IncMasterN (-1)))
- -- Toggle the status bar gap
- -- Use this binding with avoidStruts from Hooks.ManageDocks.
- -- See also the statusBar function from Hooks.DynamicLog.
- --
, ((modm , xK_b ), sendMessage ToggleStruts)
-
- , ((noModMask , xF86XK_AudioMute), spawn "pactl set-sink-mute @DEFAULT_SINK@ toggle")
- , ((noModMask , xF86XK_AudioLowerVolume), spawn "pactl set-sink-volume @DEFAULT_SINK@ -5%")
- , ((noModMask , xF86XK_AudioRaiseVolume), spawn "pactl set-sink-volume @DEFAULT_SINK@ +5%")
- , ((noModMask , xF86XK_MonBrightnessDown), spawn "brightnessdown")
- , ((noModMask , xF86XK_MonBrightnessUp), spawn "brightnessup")
- -- Quit xmonad
+
, ((modm .|. shiftMask, xK_q ), io exitSuccess)
-
- -- Restart xmonad
, ((modm , xK_q ), spawn "xmonad --recompile; xmonad --restart")
-
- -- Run xmessage with a summary of the default keybindings (useful for beginners)
- , ((modm .|. shiftMask, xK_slash ), xmessage help)
]
++
@@ -184,8 +113,6 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
------------------------------------------------------------------------
--- Mouse bindings: default actions bound to mouse events
---
myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList
-- mod-button1, Set the window to floating mode and move by dragging
@@ -204,27 +131,11 @@ myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList
------------------------------------------------------------------------
-- 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 = smartBorders tiled ||| noBorders Full
where
- -- default tiling algorithm partitions the screen into two panes
tiled = Tall nmaster delta ratio
-
- -- The default number of windows in the master pane
nmaster = 1
-
- -- Default proportion of screen occupied by master pane
ratio = 3/5
-
- -- Percent of screen to increment by when resizing panes
delta = 2/100
------------------------------------------------------------------------
@@ -258,7 +169,7 @@ myManageHook = composeAll
-- return (All True) if the default handler is to be run afterwards. To
-- combine event hooks use mappend or mconcat from Data.Monoid.
--
-myEventHook = handleEventHook def
+myEventHook = ewmhDesktopsEventHook -- handleEventHook def
------------------------------------------------------------------------
-- Status bars and logging
@@ -296,7 +207,6 @@ main = xmonad $ withEasySB mySB defToggleStrutsKey defaults
-- No need to modify this.
--
defaults = ewmhFullscreen . ewmh $ def {
- -- simple stuff
terminal = myTerminal,
focusFollowsMouse = myFocusFollowsMouse,
clickJustFocuses = myClickJustFocuses,
@@ -306,66 +216,12 @@ defaults = ewmhFullscreen . ewmh $ def {
normalBorderColor = myNormalBorderColor,
focusedBorderColor = myFocusedBorderColor,
- -- key bindings
keys = myKeys,
mouseBindings = myMouseBindings,
- -- hooks, layouts
layoutHook = minimize . BW.boringWindows $ myLayout,
manageHook = myManageHook,
handleEventHook = myEventHook,
logHook = myLogHook,
startupHook = myStartupHook
}
-
--- | Finally, a copy of the default bindings in simple textual tabular format.
-help :: String
-help = unlines ["The default modifier key is 'alt'. Default keybindings:",
- "",
- "-- launching and killing programs",
- "mod-Shift-Enter Launch xterminal",
- "mod-p Launch dmenu",
- "mod-Shift-p Launch gmrun",
- "mod-Shift-c Close/kill the focused window",
- "mod-Space Rotate through the available layout algorithms",
- "mod-Shift-Space Reset the layouts on the current workSpace to default",
- "mod-n Resize/refresh viewed windows to the correct size",
- "mod-Shift-/ Show this help message with the default keybindings",
- "",
- "-- move focus up or down the window stack",
- "mod-Tab Move focus to the next window",
- "mod-Shift-Tab Move focus to the previous window",
- "mod-j Move focus to the next window",
- "mod-k Move focus to the previous window",
- "mod-m Move focus to the master window",
- "",
- "-- modifying the window order",
- "mod-Return Swap the focused window and the master window",
- "mod-Shift-j Swap the focused window with the next window",
- "mod-Shift-k Swap the focused window with the previous window",
- "",
- "-- resizing the master/slave ratio",
- "mod-h Shrink the master area",
- "mod-l Expand the master area",
- "",
- "-- floating layer support",
- "mod-t Push window back into tiling; unfloat and re-tile it",
- "",
- "-- increase or decrease number of windows in the master area",
- "mod-comma (mod-,) Increment the number of windows in the master area",
- "mod-period (mod-.) Deincrement the number of windows in the master area",
- "",
- "-- quit, or restart",
- "mod-Shift-q Quit xmonad",
- "mod-q Restart xmonad",
- "mod-[1..9] Switch to workSpace N",
- "",
- "-- Workspaces & screens",
- "mod-Shift-[1..9] Move client to workspace N",
- "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",
- "",
- "-- Mouse bindings: default actions bound to mouse events",
- "mod-button1 Set the window to floating mode and move by dragging",
- "mod-button2 Raise the window to the top of the stack",
- "mod-button3 Set the window to floating mode and resize by dragging"]