2019-03-09 18:52:05 -05:00
|
|
|
-- The xmonad configuration of Derek Taylor (DistroTube)
|
|
|
|
-- http://www.youtube.com/c/DistroTube
|
|
|
|
-- http://www.gitlab.com/dwt1/
|
2019-02-25 21:18:34 -05:00
|
|
|
|
2019-02-13 10:40:35 -05:00
|
|
|
------------------------------------------------------------------------
|
2019-01-15 16:27:01 -05:00
|
|
|
---IMPORTS
|
2019-02-13 10:40:35 -05:00
|
|
|
------------------------------------------------------------------------
|
2019-01-15 16:27:01 -05:00
|
|
|
-- Base
|
|
|
|
import XMonad
|
|
|
|
import XMonad.Config.Desktop
|
2019-03-09 18:52:05 -05:00
|
|
|
import Data.Monoid
|
2019-01-15 16:27:01 -05:00
|
|
|
import Data.Maybe (isJust)
|
|
|
|
import System.IO (hPutStrLn)
|
|
|
|
import System.Exit (exitSuccess)
|
|
|
|
import qualified XMonad.StackSet as W
|
|
|
|
|
|
|
|
-- Utilities
|
|
|
|
import XMonad.Util.Loggers
|
2019-03-31 23:21:28 -04:00
|
|
|
import XMonad.Util.EZConfig (additionalKeysP, additionalMouseBindings)
|
2019-02-25 23:08:15 -05:00
|
|
|
import XMonad.Util.NamedScratchpad
|
2019-01-15 16:27:01 -05:00
|
|
|
import XMonad.Util.Run (safeSpawn, unsafeSpawn, runInTerm, spawnPipe)
|
|
|
|
import XMonad.Util.SpawnOnce
|
|
|
|
|
|
|
|
-- Hooks
|
|
|
|
import XMonad.Hooks.DynamicLog (dynamicLogWithPP, defaultPP, wrap, pad, xmobarPP, xmobarColor, shorten, PP(..))
|
|
|
|
import XMonad.Hooks.ManageDocks (avoidStruts, docksStartupHook, manageDocks, ToggleStruts(..))
|
|
|
|
import XMonad.Hooks.ManageHelpers (isFullscreen, isDialog, doFullFloat, doCenterFloat)
|
|
|
|
import XMonad.Hooks.Place (placeHook, withGaps, smart)
|
|
|
|
import XMonad.Hooks.SetWMName
|
|
|
|
import XMonad.Hooks.EwmhDesktops -- required for xcomposite in obs to work
|
|
|
|
|
|
|
|
-- Actions
|
|
|
|
import XMonad.Actions.Minimize (minimizeWindow)
|
|
|
|
import XMonad.Actions.Promote
|
|
|
|
import XMonad.Actions.RotSlaves (rotSlavesDown, rotAllDown)
|
|
|
|
import XMonad.Actions.CopyWindow (kill1, copyToAll, killAllOtherCopies, runOrCopy)
|
|
|
|
import XMonad.Actions.WindowGo (runOrRaise, raiseMaybe)
|
|
|
|
import XMonad.Actions.WithAll (sinkAll, killAll)
|
|
|
|
import XMonad.Actions.CycleWS (moveTo, shiftTo, WSType(..), shiftNextScreen, shiftPrevScreen)
|
2019-10-12 18:37:26 -04:00
|
|
|
import XMonad.Actions.GridSelect
|
2019-01-15 16:27:01 -05:00
|
|
|
import XMonad.Actions.DynamicWorkspaces (addWorkspacePrompt, removeEmptyWorkspace)
|
|
|
|
import XMonad.Actions.MouseResize
|
|
|
|
import qualified XMonad.Actions.ConstrainedResize as Sqr
|
|
|
|
|
|
|
|
-- Layouts modifiers
|
|
|
|
import XMonad.Layout.PerWorkspace (onWorkspace)
|
|
|
|
import XMonad.Layout.Renamed (renamed, Rename(CutWordsLeft, Replace))
|
2019-02-25 00:28:46 -05:00
|
|
|
import XMonad.Layout.WorkspaceDir
|
2019-01-15 16:27:01 -05:00
|
|
|
import XMonad.Layout.Spacing (spacing)
|
|
|
|
import XMonad.Layout.NoBorders
|
|
|
|
import XMonad.Layout.LimitWindows (limitWindows, increaseLimit, decreaseLimit)
|
|
|
|
import XMonad.Layout.WindowArranger (windowArrange, WindowArrangerMsg(..))
|
|
|
|
import XMonad.Layout.Reflect (reflectVert, reflectHoriz, REFLECTX(..), REFLECTY(..))
|
|
|
|
import XMonad.Layout.MultiToggle (mkToggle, single, EOT(EOT), Toggle(..), (??))
|
|
|
|
import XMonad.Layout.MultiToggle.Instances (StdTransformers(NBFULL, MIRROR, NOBORDERS))
|
|
|
|
import qualified XMonad.Layout.ToggleLayouts as T (toggleLayouts, ToggleLayout(Toggle))
|
|
|
|
|
|
|
|
-- Layouts
|
|
|
|
import XMonad.Layout.GridVariants (Grid(Grid))
|
|
|
|
import XMonad.Layout.SimplestFloat
|
|
|
|
import XMonad.Layout.OneBig
|
|
|
|
import XMonad.Layout.ThreeColumns
|
|
|
|
import XMonad.Layout.ResizableTile
|
|
|
|
import XMonad.Layout.ZoomRow (zoomRow, zoomIn, zoomOut, zoomReset, ZoomMessage(ZoomFullToggle))
|
|
|
|
import XMonad.Layout.IM (withIM, Property(Role))
|
|
|
|
|
|
|
|
-- Prompts
|
|
|
|
import XMonad.Prompt (defaultXPConfig, XPConfig(..), XPPosition(Top), Direction1D(..))
|
|
|
|
|
2019-02-13 10:40:35 -05:00
|
|
|
------------------------------------------------------------------------
|
2019-01-15 16:27:01 -05:00
|
|
|
---CONFIG
|
2019-02-13 10:40:35 -05:00
|
|
|
------------------------------------------------------------------------
|
2019-10-12 18:37:26 -04:00
|
|
|
myFont = "xft:Mononoki Nerd Font:regular:pixelsize=12"
|
2019-01-15 16:27:01 -05:00
|
|
|
myModMask = mod4Mask -- Sets modkey to super/windows key
|
2019-02-25 00:28:46 -05:00
|
|
|
myTerminal = "st" -- Sets default terminal
|
2019-02-25 21:18:34 -05:00
|
|
|
myTextEditor = "vim" -- Sets default text editor
|
2019-02-25 00:28:46 -05:00
|
|
|
myBorderWidth = 2 -- Sets border width for windows
|
|
|
|
windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset
|
2019-01-15 16:27:01 -05:00
|
|
|
|
|
|
|
main = do
|
2019-09-26 20:40:22 -04:00
|
|
|
-- Launching three instances of xmobar on their monitors.
|
2019-10-06 22:36:09 -04:00
|
|
|
xmproc0 <- spawnPipe "xmobar -x 0 /home/dt/.config/xmobar/xmobarrc0"
|
|
|
|
xmproc1 <- spawnPipe "xmobar -x 1 /home/dt/.config/xmobar/xmobarrc2"
|
|
|
|
xmproc2 <- spawnPipe "xmobar -x 2 /home/dt/.config/xmobar/xmobarrc1"
|
2019-09-26 20:40:22 -04:00
|
|
|
-- the xmonad, ya know...what the WM is named after!
|
2019-03-09 18:52:05 -05:00
|
|
|
xmonad $ ewmh desktopConfig
|
|
|
|
{ manageHook = ( isFullscreen --> doFullFloat ) <+> myManageHook <+> manageHook desktopConfig <+> manageDocks
|
2019-01-15 16:27:01 -05:00
|
|
|
, logHook = dynamicLogWithPP xmobarPP
|
|
|
|
{ ppOutput = \x -> hPutStrLn xmproc0 x >> hPutStrLn xmproc1 x >> hPutStrLn xmproc2 x
|
2019-02-13 10:40:35 -05:00
|
|
|
, ppCurrent = xmobarColor "#c3e88d" "" . wrap "[" "]" -- Current workspace in xmobar
|
2019-02-25 00:28:46 -05:00
|
|
|
, ppVisible = xmobarColor "#c3e88d" "" -- Visible but not current workspace
|
2019-02-13 10:40:35 -05:00
|
|
|
, ppHidden = xmobarColor "#82AAFF" "" . wrap "*" "" -- Hidden workspaces in xmobar
|
|
|
|
, ppHiddenNoWindows = xmobarColor "#F07178" "" -- Hidden workspaces (no windows)
|
|
|
|
, ppTitle = xmobarColor "#d0d0d0" "" . shorten 80 -- Title of active window in xmobar
|
|
|
|
, ppSep = "<fc=#9AEDFE> : </fc>" -- Separators in xmobar
|
|
|
|
, ppUrgent = xmobarColor "#C45500" "" . wrap "!" "!" -- Urgent workspace
|
2019-02-25 00:28:46 -05:00
|
|
|
, ppExtras = [windowCount] -- # of windows current workspace
|
2019-02-17 09:43:44 -05:00
|
|
|
, ppOrder = \(ws:l:t:ex) -> [ws,l]++ex++[t]
|
2019-01-15 16:27:01 -05:00
|
|
|
}
|
|
|
|
, modMask = myModMask
|
|
|
|
, terminal = myTerminal
|
|
|
|
, startupHook = myStartupHook
|
|
|
|
, layoutHook = myLayoutHook
|
|
|
|
, workspaces = myWorkspaces
|
2019-02-25 00:28:46 -05:00
|
|
|
, borderWidth = myBorderWidth
|
2019-02-12 18:56:31 -05:00
|
|
|
, normalBorderColor = "#292d3e"
|
|
|
|
, focusedBorderColor = "#bbc5ff"
|
2019-01-15 16:27:01 -05:00
|
|
|
} `additionalKeysP` myKeys
|
|
|
|
|
2019-02-13 10:40:35 -05:00
|
|
|
------------------------------------------------------------------------
|
2019-01-15 16:27:01 -05:00
|
|
|
---AUTOSTART
|
2019-02-13 10:40:35 -05:00
|
|
|
------------------------------------------------------------------------
|
2019-01-15 16:27:01 -05:00
|
|
|
myStartupHook = do
|
|
|
|
spawnOnce "urxvtd &"
|
|
|
|
spawnOnce "nitrogen --restore &"
|
|
|
|
spawnOnce "compton --config /home/dt/.config/compton/compton.conf &"
|
|
|
|
setWMName "LG3D"
|
2019-03-16 13:25:29 -04:00
|
|
|
--spawnOnce "exec /usr/bin/trayer --edge top --align right --SetDockType true --SetPartialStrut true --expand true --width 15 --transparent true --alpha 0 --tint 0x292d3e --height 19 &"
|
2019-02-13 10:40:35 -05:00
|
|
|
--spawnOnce "/home/dt/.xmonad/xmonad.start" -- Sets our wallpaper
|
2019-10-12 18:37:26 -04:00
|
|
|
|
|
|
|
------------------------------------------------------------------------
|
|
|
|
---GRID SELECT
|
|
|
|
------------------------------------------------------------------------
|
2019-01-15 16:27:01 -05:00
|
|
|
|
2019-10-12 18:37:26 -04:00
|
|
|
myColorizer :: Window -> Bool -> X (String, String)
|
|
|
|
myColorizer = colorRangeFromClassName
|
|
|
|
(0x31,0x2e,0x39) -- lowest inactive bg
|
|
|
|
(0x31,0x2e,0x39) -- highest inactive bg
|
|
|
|
(0x61,0x57,0x72) -- active bg
|
|
|
|
(0xc0,0xa7,0x9a) -- inactive fg
|
|
|
|
(0xff,0xff,0xff) -- active fg
|
|
|
|
|
|
|
|
-- gridSelect menu layout
|
|
|
|
mygridConfig colorizer = (buildDefaultGSConfig myColorizer)
|
|
|
|
{ gs_cellheight = 30
|
|
|
|
, gs_cellwidth = 200
|
|
|
|
, gs_cellpadding = 8
|
|
|
|
, gs_originFractX = 0.5
|
|
|
|
, gs_originFractY = 0.5
|
|
|
|
, gs_font = myFont
|
|
|
|
}
|
|
|
|
|
|
|
|
spawnSelected' :: [(String, String)] -> X ()
|
|
|
|
spawnSelected' lst = gridselect conf lst >>= flip whenJust spawn
|
|
|
|
where conf = defaultGSConfig
|
|
|
|
|
2019-02-13 10:40:35 -05:00
|
|
|
------------------------------------------------------------------------
|
2019-01-15 16:27:01 -05:00
|
|
|
---KEYBINDINGS
|
2019-02-13 10:40:35 -05:00
|
|
|
------------------------------------------------------------------------
|
2019-01-15 16:27:01 -05:00
|
|
|
myKeys =
|
|
|
|
-- Xmonad
|
2019-02-25 21:18:34 -05:00
|
|
|
[ ("M-C-r", spawn "xmonad --recompile") -- Recompiles xmonad
|
|
|
|
, ("M-S-r", spawn "xmonad --restart") -- Restarts xmonad
|
|
|
|
, ("M-S-q", io exitSuccess) -- Quits xmonad
|
2019-01-15 16:27:01 -05:00
|
|
|
|
|
|
|
-- Windows
|
2019-02-25 21:18:34 -05:00
|
|
|
, ("M-S-c", kill1) -- Kill the currently focused client
|
2019-03-09 18:52:05 -05:00
|
|
|
, ("M-S-a", killAll) -- Kill all the windows on current workspace
|
|
|
|
|
|
|
|
-- Floating windows
|
2019-02-25 23:08:15 -05:00
|
|
|
, ("M-<Delete>", withFocused $ windows . W.sink) -- Push floating window back to tile.
|
|
|
|
, ("M-S-<Delete>", sinkAll) -- Push ALL floating windows back to tile.
|
2019-03-09 18:52:05 -05:00
|
|
|
|
2019-10-12 18:37:26 -04:00
|
|
|
|
|
|
|
-- Grid Select
|
|
|
|
, (("M-S-t"), spawnSelected'
|
|
|
|
[ ("Audacity", "audacity")
|
|
|
|
, ("Deadbeef", "deadbeef")
|
|
|
|
, ("Emacs", "emacs")
|
|
|
|
, ("Firefox", "firefox")
|
|
|
|
, ("Geany", "geany")
|
|
|
|
, ("Geary", "geary")
|
|
|
|
, ("Gimp", "gimp")
|
|
|
|
, ("Kdenlive", "kdenlive")
|
|
|
|
, ("LibreOffice Impress", "loimpress")
|
|
|
|
, ("LibreOffice Writer", "lowriter")
|
|
|
|
, ("OBS", "obs")
|
|
|
|
, ("PCManFM", "pcmanfm")
|
|
|
|
, ("Simple Terminal", "st")
|
|
|
|
, ("Steam", "steam")
|
|
|
|
, ("Surf Browser", "surf suckless.org")
|
|
|
|
, ("Xonotic", "xonotic-glx")
|
|
|
|
])
|
|
|
|
|
|
|
|
, ("M-S-g", goToSelected $ mygridConfig myColorizer)
|
|
|
|
, ("M-S-b", bringSelected $ mygridConfig myColorizer)
|
|
|
|
|
2019-03-09 18:52:05 -05:00
|
|
|
-- Windows navigation
|
2019-02-25 21:18:34 -05:00
|
|
|
, ("M-m", windows W.focusMaster) -- Move focus to the master window
|
|
|
|
, ("M-j", windows W.focusDown) -- Move focus to the next window
|
|
|
|
, ("M-k", windows W.focusUp) -- Move focus to the prev window
|
|
|
|
, ("M-S-m", windows W.swapMaster) -- Swap the focused window and the master window
|
|
|
|
, ("M-S-j", windows W.swapDown) -- Swap the focused window with the next window
|
|
|
|
, ("M-S-k", windows W.swapUp) -- Swap the focused window with the prev window
|
|
|
|
, ("M-<Backspace>", promote) -- Moves focused window to master, all others maintain order
|
|
|
|
, ("M1-S-<Tab>", rotSlavesDown) -- Rotate all windows except master and keep focus in place
|
|
|
|
, ("M1-C-<Tab>", rotAllDown) -- Rotate all the windows in the current stack
|
|
|
|
, ("M-S-s", windows copyToAll)
|
|
|
|
, ("M-C-s", killAllOtherCopies)
|
2019-01-15 16:27:01 -05:00
|
|
|
|
2019-02-25 21:18:34 -05:00
|
|
|
, ("M-C-M1-<Up>", sendMessage Arrange)
|
|
|
|
, ("M-C-M1-<Down>", sendMessage DeArrange)
|
|
|
|
, ("M-<Up>", sendMessage (MoveUp 10)) -- Move focused window to up
|
|
|
|
, ("M-<Down>", sendMessage (MoveDown 10)) -- Move focused window to down
|
|
|
|
, ("M-<Right>", sendMessage (MoveRight 10)) -- Move focused window to right
|
|
|
|
, ("M-<Left>", sendMessage (MoveLeft 10)) -- Move focused window to left
|
|
|
|
, ("M-S-<Up>", sendMessage (IncreaseUp 10)) -- Increase size of focused window up
|
|
|
|
, ("M-S-<Down>", sendMessage (IncreaseDown 10)) -- Increase size of focused window down
|
|
|
|
, ("M-S-<Right>", sendMessage (IncreaseRight 10)) -- Increase size of focused window right
|
|
|
|
, ("M-S-<Left>", sendMessage (IncreaseLeft 10)) -- Increase size of focused window left
|
|
|
|
, ("M-C-<Up>", sendMessage (DecreaseUp 10)) -- Decrease size of focused window up
|
|
|
|
, ("M-C-<Down>", sendMessage (DecreaseDown 10)) -- Decrease size of focused window down
|
|
|
|
, ("M-C-<Right>", sendMessage (DecreaseRight 10)) -- Decrease size of focused window right
|
|
|
|
, ("M-C-<Left>", sendMessage (DecreaseLeft 10)) -- Decrease size of focused window left
|
2019-01-15 16:27:01 -05:00
|
|
|
|
|
|
|
-- Layouts
|
2019-02-25 21:18:34 -05:00
|
|
|
, ("M-<Space>", sendMessage NextLayout) -- Switch to next layout
|
|
|
|
, ("M-S-<Space>", sendMessage ToggleStruts) -- Toggles struts
|
2019-10-12 18:37:26 -04:00
|
|
|
, ("M-S-n", sendMessage $ Toggle NOBORDERS) -- Toggles noborder
|
2019-02-25 21:18:34 -05:00
|
|
|
, ("M-S-=", sendMessage (Toggle NBFULL) >> sendMessage ToggleStruts) -- Toggles noborder/full
|
|
|
|
, ("M-S-f", sendMessage (T.Toggle "float"))
|
|
|
|
, ("M-S-x", sendMessage $ Toggle REFLECTX)
|
|
|
|
, ("M-S-y", sendMessage $ Toggle REFLECTY)
|
|
|
|
, ("M-S-m", sendMessage $ Toggle MIRROR)
|
|
|
|
, ("M-<KP_Multiply>", sendMessage (IncMasterN 1)) -- Increase number of clients in the master pane
|
|
|
|
, ("M-<KP_Divide>", sendMessage (IncMasterN (-1))) -- Decrease number of clients in the master pane
|
|
|
|
, ("M-S-<KP_Multiply>", increaseLimit) -- Increase number of windows that can be shown
|
|
|
|
, ("M-S-<KP_Divide>", decreaseLimit) -- Decrease number of windows that can be shown
|
2019-01-15 16:27:01 -05:00
|
|
|
|
2019-03-09 18:52:05 -05:00
|
|
|
, ("M-C-h", sendMessage Shrink)
|
|
|
|
, ("M-C-l", sendMessage Expand)
|
|
|
|
, ("M-C-j", sendMessage MirrorShrink)
|
|
|
|
, ("M-C-k", sendMessage MirrorExpand)
|
2019-02-25 21:18:34 -05:00
|
|
|
, ("M-S-;", sendMessage zoomReset)
|
|
|
|
, ("M-;", sendMessage ZoomFullToggle)
|
2019-01-15 16:27:01 -05:00
|
|
|
|
|
|
|
-- Workspaces
|
2019-02-25 21:18:34 -05:00
|
|
|
, ("M-<KP_Add>", moveTo Next nonNSP) -- Go to next workspace
|
|
|
|
, ("M-<KP_Subtract>", moveTo Prev nonNSP) -- Go to previous workspace
|
|
|
|
, ("M-S-<KP_Add>", shiftTo Next nonNSP >> moveTo Next nonNSP) -- Shifts focused window to next workspace
|
2019-01-15 16:27:01 -05:00
|
|
|
, ("M-S-<KP_Subtract>", shiftTo Prev nonNSP >> moveTo Prev nonNSP) -- Shifts focused window to previous workspace
|
|
|
|
|
2019-02-25 23:08:15 -05:00
|
|
|
-- Scratchpads
|
2019-03-01 21:13:10 -05:00
|
|
|
, ("M-C-<Return>", namedScratchpadAction myScratchPads "terminal")
|
|
|
|
, ("M-C-c", namedScratchpadAction myScratchPads "cmus")
|
2019-02-25 23:08:15 -05:00
|
|
|
|
2019-09-03 18:34:32 -04:00
|
|
|
-- Open Terminal
|
2019-02-25 21:18:34 -05:00
|
|
|
, ("M-<Return>", spawn myTerminal)
|
2019-09-03 18:34:32 -04:00
|
|
|
|
|
|
|
-- Dmenu Scripts (Alt+Ctr+Key)
|
|
|
|
, ("M1-C-<Return>", spawn "dmenu_run -fn 'UbuntuMono Nerd Font:size=10' -nb '#292d3e' -nf '#bbc5ff' -sb '#82AAFF' -sf '#292d3e' -p 'dmenu:'")
|
|
|
|
, ("M1-C-e", spawn "./.dmenu/dmenu-edit-configs.sh")
|
|
|
|
, ("M1-C-m", spawn "./.dmenu/dmenu-sysmon.sh")
|
|
|
|
, ("M1-C-p", spawn "passmenu")
|
|
|
|
, ("M1-C-s", spawn "./.dmenu/dmenu-surfraw.sh")
|
|
|
|
|
|
|
|
-- My Applications (Super+Alt+Key)
|
|
|
|
, ("M-M1-a", spawn (myTerminal ++ " -e ncpamixer"))
|
|
|
|
, ("M-M1-b", spawn ("surf www.youtube.com/c/DistroTube/"))
|
|
|
|
, ("M-M1-c", spawn (myTerminal ++ " -e cmus"))
|
|
|
|
, ("M-M1-e", spawn (myTerminal ++ " -e neomutt"))
|
|
|
|
, ("M-M1-f", spawn (myTerminal ++ " -e sh ./.config/vifm/scripts/vifmrun"))
|
|
|
|
, ("M-M1-i", spawn (myTerminal ++ " -e irssi"))
|
|
|
|
, ("M-M1-j", spawn (myTerminal ++ " -e joplin"))
|
|
|
|
, ("M-M1-l", spawn (myTerminal ++ " -e lynx -cfg=~/.lynx/lynx.cfg -lss=~/.lynx/lynx.lss gopher://distro.tube"))
|
|
|
|
, ("M-M1-m", spawn (myTerminal ++ " -e toot curses"))
|
|
|
|
, ("M-M1-n", spawn (myTerminal ++ " -e newsboat"))
|
|
|
|
, ("M-M1-p", spawn (myTerminal ++ " -e pianobar"))
|
|
|
|
, ("M-M1-r", spawn (myTerminal ++ " -e rtv"))
|
|
|
|
, ("M-M1-w", spawn (myTerminal ++ " -e wopr report.xml"))
|
|
|
|
, ("M-M1-y", spawn (myTerminal ++ " -e youtube-viewer"))
|
2019-01-15 16:27:01 -05:00
|
|
|
|
|
|
|
-- Multimedia Keys
|
2019-02-25 21:18:34 -05:00
|
|
|
, ("<XF86AudioPlay>", spawn "cmus toggle")
|
|
|
|
, ("<XF86AudioPrev>", spawn "cmus prev")
|
|
|
|
, ("<XF86AudioNext>", spawn "cmus next")
|
2019-01-15 16:27:01 -05:00
|
|
|
-- , ("<XF86AudioMute>", spawn "amixer set Master toggle") -- Bug prevents it from toggling correctly in 12.04.
|
|
|
|
, ("<XF86AudioLowerVolume>", spawn "amixer set Master 5%- unmute")
|
|
|
|
, ("<XF86AudioRaiseVolume>", spawn "amixer set Master 5%+ unmute")
|
2019-02-25 21:18:34 -05:00
|
|
|
, ("<XF86HomePage>", spawn "firefox")
|
|
|
|
, ("<XF86Search>", safeSpawn "firefox" ["https://www.google.com/"])
|
2019-02-28 22:56:59 -05:00
|
|
|
, ("<XF86Mail>", runOrRaise "geary" (resource =? "thunderbird"))
|
2019-02-25 21:18:34 -05:00
|
|
|
, ("<XF86Calculator>", runOrRaise "gcalctool" (resource =? "gcalctool"))
|
|
|
|
, ("<XF86Eject>", spawn "toggleeject")
|
|
|
|
, ("<Print>", spawn "scrotd 0")
|
2019-02-28 22:56:59 -05:00
|
|
|
] where nonNSP = WSIs (return (\ws -> W.tag ws /= "nsp"))
|
|
|
|
nonEmptyNonNSP = WSIs (return (\ws -> isJust (W.stack ws) && W.tag ws /= "nsp"))
|
2019-01-15 16:27:01 -05:00
|
|
|
|
2019-02-13 10:40:35 -05:00
|
|
|
------------------------------------------------------------------------
|
2019-01-15 16:27:01 -05:00
|
|
|
---WORKSPACES
|
2019-02-13 10:40:35 -05:00
|
|
|
------------------------------------------------------------------------
|
2019-01-15 16:27:01 -05:00
|
|
|
|
|
|
|
xmobarEscape = concatMap doubleLts
|
|
|
|
where
|
|
|
|
doubleLts '<' = "<<"
|
|
|
|
doubleLts x = [x]
|
|
|
|
|
|
|
|
myWorkspaces :: [String]
|
|
|
|
myWorkspaces = clickable . (map xmobarEscape)
|
2019-10-12 18:37:26 -04:00
|
|
|
$ ["dev", "www", "sys", "doc", "vbox", "chat", "mus", "vid", "gfx"]
|
2019-01-15 16:27:01 -05:00
|
|
|
where
|
|
|
|
clickable l = [ "<action=xdotool key super+" ++ show (n) ++ ">" ++ ws ++ "</action>" |
|
2019-10-12 18:37:26 -04:00
|
|
|
(i,ws) <- zip [1..9] l,
|
2019-01-15 16:27:01 -05:00
|
|
|
let n = i ]
|
2019-03-09 18:52:05 -05:00
|
|
|
myManageHook :: Query (Data.Monoid.Endo WindowSet)
|
2019-02-25 00:28:46 -05:00
|
|
|
myManageHook = composeAll
|
|
|
|
[
|
2019-03-09 18:52:05 -05:00
|
|
|
className =? "Firefox" --> doShift "<action=xdotool key super+2>www</action>"
|
|
|
|
, title =? "Vivaldi" --> doShift "<action=xdotool key super+2>www</action>"
|
|
|
|
, title =? "irssi" --> doShift "<action=xdotool key super+6>chat</action>"
|
|
|
|
, className =? "cmus" --> doShift "<action=xdotool key super+7>media</action>"
|
|
|
|
, className =? "vlc" --> doShift "<action=xdotool key super+7>media</action>"
|
|
|
|
, className =? "Virtualbox" --> doFloat
|
|
|
|
, className =? "Gimp" --> doFloat
|
|
|
|
, className =? "Gimp" --> doShift "<action=xdotool key super+8>gfx</action>"
|
2019-02-25 00:28:46 -05:00
|
|
|
, (className =? "Firefox" <&&> resource =? "Dialog") --> doFloat -- Float Firefox Dialog
|
2019-02-25 23:08:15 -05:00
|
|
|
] <+> namedScratchpadManageHook myScratchPads
|
2019-01-15 16:27:01 -05:00
|
|
|
|
2019-02-13 10:40:35 -05:00
|
|
|
------------------------------------------------------------------------
|
2019-01-15 16:27:01 -05:00
|
|
|
---LAYOUTS
|
2019-02-13 10:40:35 -05:00
|
|
|
------------------------------------------------------------------------
|
2019-02-25 23:08:15 -05:00
|
|
|
|
2019-02-12 13:05:25 -05:00
|
|
|
myLayoutHook = avoidStruts $ mouseResize $ windowArrange $ T.toggleLayouts floats $
|
2019-02-25 00:28:46 -05:00
|
|
|
mkToggle (NBFULL ?? NOBORDERS ?? EOT) $ myDefaultLayout
|
2019-03-01 21:13:10 -05:00
|
|
|
where
|
2019-03-09 18:52:05 -05:00
|
|
|
myDefaultLayout = tall ||| grid ||| threeCol ||| threeRow ||| oneBig ||| noBorders monocle ||| space ||| floats
|
|
|
|
|
2019-03-01 21:13:10 -05:00
|
|
|
|
2019-03-09 18:52:05 -05:00
|
|
|
tall = renamed [Replace "tall"] $ limitWindows 12 $ spacing 6 $ ResizableTall 1 (3/100) (1/2) []
|
|
|
|
grid = renamed [Replace "grid"] $ limitWindows 12 $ spacing 6 $ mkToggle (single MIRROR) $ Grid (16/10)
|
2019-02-25 21:18:34 -05:00
|
|
|
threeCol = renamed [Replace "threeCol"] $ limitWindows 3 $ ThreeCol 1 (3/100) (1/2)
|
|
|
|
threeRow = renamed [Replace "threeRow"] $ limitWindows 3 $ Mirror $ mkToggle (single MIRROR) zoomRow
|
|
|
|
oneBig = renamed [Replace "oneBig"] $ limitWindows 6 $ Mirror $ mkToggle (single MIRROR) $ mkToggle (single REFLECTX) $ mkToggle (single REFLECTY) $ OneBig (5/9) (8/12)
|
|
|
|
monocle = renamed [Replace "monocle"] $ limitWindows 20 $ Full
|
|
|
|
space = renamed [Replace "space"] $ limitWindows 4 $ spacing 12 $ Mirror $ mkToggle (single MIRROR) $ mkToggle (single REFLECTX) $ mkToggle (single REFLECTY) $ OneBig (2/3) (2/3)
|
|
|
|
floats = renamed [Replace "floats"] $ limitWindows 20 $ simplestFloat
|
2019-01-15 16:27:01 -05:00
|
|
|
|
2019-02-25 23:08:15 -05:00
|
|
|
------------------------------------------------------------------------
|
|
|
|
---SCRATCHPADS
|
|
|
|
------------------------------------------------------------------------
|
|
|
|
|
2019-03-01 21:13:10 -05:00
|
|
|
myScratchPads = [ NS "terminal" spawnTerm findTerm manageTerm
|
|
|
|
, NS "cmus" spawnCmus findCmus manageCmus
|
|
|
|
]
|
2019-02-12 13:05:25 -05:00
|
|
|
|
2019-03-01 21:13:10 -05:00
|
|
|
where
|
|
|
|
spawnTerm = myTerminal ++ " -n scratchpad"
|
|
|
|
findTerm = resource =? "scratchpad"
|
|
|
|
manageTerm = customFloating $ W.RationalRect l t w h
|
|
|
|
where
|
|
|
|
h = 0.9
|
|
|
|
w = 0.9
|
|
|
|
t = 0.95 -h
|
|
|
|
l = 0.95 -w
|
|
|
|
spawnCmus = myTerminal ++ " -n cmus 'cmus'"
|
|
|
|
findCmus = resource =? "cmus"
|
|
|
|
manageCmus = customFloating $ W.RationalRect l t w h
|
|
|
|
where
|
|
|
|
h = 0.9
|
|
|
|
w = 0.9
|
|
|
|
t = 0.95 -h
|
|
|
|
l = 0.95 -w
|