mirror of
				https://github.com/ItsDrike/dotfiles.git
				synced 2025-11-04 09:16:36 +00:00 
			
		
		
		
	Merge branch 'arch' into gentoo
This commit is contained in:
		
						commit
						e9009a0859
					
				
					 8 changed files with 546 additions and 0 deletions
				
			
		
							
								
								
									
										25
									
								
								home/.config/xmobar/haskell_20.xpm
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								home/.config/xmobar/haskell_20.xpm
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
/* XPM */
 | 
			
		||||
static char * haskell_20_xpm[] = {
 | 
			
		||||
"20 20 2 1",
 | 
			
		||||
" 	c None",
 | 
			
		||||
".	c #FFFFFF",
 | 
			
		||||
"                    ",
 | 
			
		||||
"                    ",
 | 
			
		||||
"                    ",
 | 
			
		||||
".... ....           ",
 | 
			
		||||
" .... ...           ",
 | 
			
		||||
"  ... ....          ",
 | 
			
		||||
"  .... ....         ",
 | 
			
		||||
"   .... ... ........",
 | 
			
		||||
"    ... .... .......",
 | 
			
		||||
"    .... ....       ",
 | 
			
		||||
"    .... ....       ",
 | 
			
		||||
"    ... ...... .....",
 | 
			
		||||
"   .... ....... ....",
 | 
			
		||||
"  .... .... ...     ",
 | 
			
		||||
"  ... ....  ....    ",
 | 
			
		||||
" .... ...    ....   ",
 | 
			
		||||
".... ....     ...   ",
 | 
			
		||||
"                    ",
 | 
			
		||||
"                    ",
 | 
			
		||||
"                    "};
 | 
			
		||||
							
								
								
									
										27
									
								
								home/.config/xmobar/multi_mon.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										27
									
								
								home/.config/xmobar/multi_mon.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
if [ $# -lt 1 ]; then
 | 
			
		||||
    echo "Invalid amount of arguments passed!"
 | 
			
		||||
    echo "Required parameter: amount of monitors"
 | 
			
		||||
    exit
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
MONITOR_AMOUT="$1"
 | 
			
		||||
WIDTH=1920
 | 
			
		||||
WORK_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/xmobar"
 | 
			
		||||
 | 
			
		||||
make_line(){
 | 
			
		||||
    xpos=$(($1 * $WIDTH))
 | 
			
		||||
    line=", position = Static { xpos = $xpos, ypos = 0, width = $WIDTH, height = 24 }"
 | 
			
		||||
    echo "$line"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Remove all already existing specific xmobar configurations
 | 
			
		||||
find $WORK_DIR -regex '\./xmobarrc[0-9]+' -exec rm {} +
 | 
			
		||||
 | 
			
		||||
for ((n=0;n<MONITOR_AMOUT;n++)); do
 | 
			
		||||
    cur_file="$WORK_DIR/xmobarrc$n"
 | 
			
		||||
    sed "s/$(make_line 0)/$(make_line $n)/g" "$WORK_DIR/xmobarrc.hs" > "$cur_file"
 | 
			
		||||
    echo "$cur_file created."
 | 
			
		||||
done
 | 
			
		||||
							
								
								
									
										44
									
								
								home/.config/xmobar/xmobarrc.hs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								home/.config/xmobar/xmobarrc.hs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,44 @@
 | 
			
		|||
-- http://projects.haskell.org/xmobar/
 | 
			
		||||
 | 
			
		||||
Config { font    = "xft:Ubuntu:weight=bold:pixelsize=11:antialias=true:hinting=true"
 | 
			
		||||
       , additionalFonts = [ "xft:Mononoki Nerd Font:pixelsize=11:antialias=true:hinting=true"
 | 
			
		||||
                           , "xft:Font Awesome 5 Free Solid:pixelsize=12"
 | 
			
		||||
                           , "xft:Font Awesome 5 Brands:pixelsize=12"
 | 
			
		||||
                           ]
 | 
			
		||||
       , bgColor = "#282c34"
 | 
			
		||||
       , fgColor = "#ff6c6b"
 | 
			
		||||
       , position = Static { xpos = 0, ypos = 0, width = 1920, height = 24 }
 | 
			
		||||
       , lowerOnStart = True
 | 
			
		||||
       , hideOnStart = False
 | 
			
		||||
       , allDesktops = True
 | 
			
		||||
       , persistent = True
 | 
			
		||||
       --, iconRoot = "."  -- default: "."
 | 
			
		||||
       , commands = [
 | 
			
		||||
                    -- Time and date
 | 
			
		||||
                      Run Date "<fn=2>\xf017</fn>  %b %d %Y - (%H:%M) " "date" 50
 | 
			
		||||
                    -- Network up and down
 | 
			
		||||
                    , Run Network "wlp2s0" ["-t", "<fn=2>\xf0ab</fn>  <rx>kb  <fn=2>\xf0aa</fn>  <tx>kb"] 20
 | 
			
		||||
                    -- Cpu usage in percent
 | 
			
		||||
                    , Run Cpu ["-t", "<fn=2>\xf108</fn>  cpu: (<total>%)","-H","50","--high","red"] 20
 | 
			
		||||
                    -- Ram used number and percent
 | 
			
		||||
                    , Run Memory ["-t", "<fn=2>\xf233</fn>  mem: <used>M (<usedratio>%)"] 20
 | 
			
		||||
                    -- Disk space free
 | 
			
		||||
                    , Run DiskU [("/", "<fn=2>\xf0c7</fn>  hdd: <free> free")] [] 60
 | 
			
		||||
                    -- Runs a standard shell command 'uname -r' to get kernel version
 | 
			
		||||
                    , Run Com "uname" ["-r"] "" 3600
 | 
			
		||||
                    -- Allow mouse clicking by using unsafe stdin reader
 | 
			
		||||
                    , Run UnsafeStdinReader
 | 
			
		||||
                    ]
 | 
			
		||||
       , sepChar = "%"
 | 
			
		||||
       , alignSep = "}{"
 | 
			
		||||
       , template = " <icon=haskell_20.xpm/>   <fc=#666666>|</fc> %UnsafeStdinReader% }{ \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#b3afc2><fn=3></fn>  <action=`alacritty -e htop`>%uname%</action> </fc> \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#ecbe7b> <action=`alacritty -e htop`>%cpu%</action> </fc> \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#ff6c6b> <action=`alacritty -e htop`>%memory%</action> </fc> \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#51afef> <action=`alacritty -e htop`>%disku%</action> </fc> \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#98be65> <action=`alacritty -e sudo iftop`>%wlp2s0%</action> </fc> \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#c678dd><fn=2></fn>  <action=`alacritty -e sudo emerge -uD @world`>%portageupdate%</action> </fc> \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#46d9ff> %date% </fc>"
 | 
			
		||||
       }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										44
									
								
								home/.config/xmobar/xmobarrc0
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								home/.config/xmobar/xmobarrc0
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,44 @@
 | 
			
		|||
-- http://projects.haskell.org/xmobar/
 | 
			
		||||
 | 
			
		||||
Config { font    = "xft:Ubuntu:weight=bold:pixelsize=11:antialias=true:hinting=true"
 | 
			
		||||
       , additionalFonts = [ "xft:Mononoki Nerd Font:pixelsize=11:antialias=true:hinting=true"
 | 
			
		||||
                           , "xft:Font Awesome 5 Free Solid:pixelsize=12"
 | 
			
		||||
                           , "xft:Font Awesome 5 Brands:pixelsize=12"
 | 
			
		||||
                           ]
 | 
			
		||||
       , bgColor = "#282c34"
 | 
			
		||||
       , fgColor = "#ff6c6b"
 | 
			
		||||
       , position = Static { xpos = 0, ypos = 0, width = 1920, height = 24 }
 | 
			
		||||
       , lowerOnStart = True
 | 
			
		||||
       , hideOnStart = False
 | 
			
		||||
       , allDesktops = True
 | 
			
		||||
       , persistent = True
 | 
			
		||||
       --, iconRoot = "."  -- default: "."
 | 
			
		||||
       , commands = [
 | 
			
		||||
                    -- Time and date
 | 
			
		||||
                      Run Date "<fn=2>\xf017</fn>  %b %d %Y - (%H:%M) " "date" 50
 | 
			
		||||
                    -- Network up and down
 | 
			
		||||
                    , Run Network "wlp2s0" ["-t", "<fn=2>\xf0ab</fn>  <rx>kb  <fn=2>\xf0aa</fn>  <tx>kb"] 20
 | 
			
		||||
                    -- Cpu usage in percent
 | 
			
		||||
                    , Run Cpu ["-t", "<fn=2>\xf108</fn>  cpu: (<total>%)","-H","50","--high","red"] 20
 | 
			
		||||
                    -- Ram used number and percent
 | 
			
		||||
                    , Run Memory ["-t", "<fn=2>\xf233</fn>  mem: <used>M (<usedratio>%)"] 20
 | 
			
		||||
                    -- Disk space free
 | 
			
		||||
                    , Run DiskU [("/", "<fn=2>\xf0c7</fn>  hdd: <free> free")] [] 60
 | 
			
		||||
                    -- Runs a standard shell command 'uname -r' to get kernel version
 | 
			
		||||
                    , Run Com "uname" ["-r"] "" 3600
 | 
			
		||||
                    -- Allow mouse clicking by using unsafe stdin reader
 | 
			
		||||
                    , Run UnsafeStdinReader
 | 
			
		||||
                    ]
 | 
			
		||||
       , sepChar = "%"
 | 
			
		||||
       , alignSep = "}{"
 | 
			
		||||
       , template = " <icon=haskell_20.xpm/>   <fc=#666666>|</fc> %UnsafeStdinReader% }{ \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#b3afc2><fn=3></fn>  <action=`alacritty -e htop`>%uname%</action> </fc> \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#ecbe7b> <action=`alacritty -e htop`>%cpu%</action> </fc> \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#ff6c6b> <action=`alacritty -e htop`>%memory%</action> </fc> \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#51afef> <action=`alacritty -e htop`>%disku%</action> </fc> \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#98be65> <action=`alacritty -e sudo iftop`>%wlp2s0%</action> </fc> \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#c678dd><fn=2></fn>  <action=`alacritty -e sudo emerge -uD @world`>%portageupdate%</action> </fc> \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#46d9ff> %date% </fc>"
 | 
			
		||||
       }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										44
									
								
								home/.config/xmobar/xmobarrc1
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								home/.config/xmobar/xmobarrc1
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,44 @@
 | 
			
		|||
-- http://projects.haskell.org/xmobar/
 | 
			
		||||
 | 
			
		||||
Config { font    = "xft:Ubuntu:weight=bold:pixelsize=11:antialias=true:hinting=true"
 | 
			
		||||
       , additionalFonts = [ "xft:Mononoki Nerd Font:pixelsize=11:antialias=true:hinting=true"
 | 
			
		||||
                           , "xft:Font Awesome 5 Free Solid:pixelsize=12"
 | 
			
		||||
                           , "xft:Font Awesome 5 Brands:pixelsize=12"
 | 
			
		||||
                           ]
 | 
			
		||||
       , bgColor = "#282c34"
 | 
			
		||||
       , fgColor = "#ff6c6b"
 | 
			
		||||
       , position = Static { xpos = 1920, ypos = 0, width = 1920, height = 24 }
 | 
			
		||||
       , lowerOnStart = True
 | 
			
		||||
       , hideOnStart = False
 | 
			
		||||
       , allDesktops = True
 | 
			
		||||
       , persistent = True
 | 
			
		||||
       --, iconRoot = "."  -- default: "."
 | 
			
		||||
       , commands = [
 | 
			
		||||
                    -- Time and date
 | 
			
		||||
                      Run Date "<fn=2>\xf017</fn>  %b %d %Y - (%H:%M) " "date" 50
 | 
			
		||||
                    -- Network up and down
 | 
			
		||||
                    , Run Network "wlp2s0" ["-t", "<fn=2>\xf0ab</fn>  <rx>kb  <fn=2>\xf0aa</fn>  <tx>kb"] 20
 | 
			
		||||
                    -- Cpu usage in percent
 | 
			
		||||
                    , Run Cpu ["-t", "<fn=2>\xf108</fn>  cpu: (<total>%)","-H","50","--high","red"] 20
 | 
			
		||||
                    -- Ram used number and percent
 | 
			
		||||
                    , Run Memory ["-t", "<fn=2>\xf233</fn>  mem: <used>M (<usedratio>%)"] 20
 | 
			
		||||
                    -- Disk space free
 | 
			
		||||
                    , Run DiskU [("/", "<fn=2>\xf0c7</fn>  hdd: <free> free")] [] 60
 | 
			
		||||
                    -- Runs a standard shell command 'uname -r' to get kernel version
 | 
			
		||||
                    , Run Com "uname" ["-r"] "" 3600
 | 
			
		||||
                    -- Allow mouse clicking by using unsafe stdin reader
 | 
			
		||||
                    , Run UnsafeStdinReader
 | 
			
		||||
                    ]
 | 
			
		||||
       , sepChar = "%"
 | 
			
		||||
       , alignSep = "}{"
 | 
			
		||||
       , template = " <icon=haskell_20.xpm/>   <fc=#666666>|</fc> %UnsafeStdinReader% }{ \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#b3afc2><fn=3></fn>  <action=`alacritty -e htop`>%uname%</action> </fc> \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#ecbe7b> <action=`alacritty -e htop`>%cpu%</action> </fc> \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#ff6c6b> <action=`alacritty -e htop`>%memory%</action> </fc> \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#51afef> <action=`alacritty -e htop`>%disku%</action> </fc> \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#98be65> <action=`alacritty -e sudo iftop`>%wlp2s0%</action> </fc> \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#c678dd><fn=2></fn>  <action=`alacritty -e sudo emerge -uD @world`>%portageupdate%</action> </fc> \
 | 
			
		||||
       \<fc=#666666>|</fc>   <fc=#46d9ff> %date% </fc>"
 | 
			
		||||
       }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								home/.config/xmonad/xmonad.hi
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								home/.config/xmonad/xmonad.hi
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										362
									
								
								home/.config/xmonad/xmonad.hs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										362
									
								
								home/.config/xmonad/xmonad.hs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,362 @@
 | 
			
		|||
-- Base
 | 
			
		||||
import XMonad
 | 
			
		||||
import System.Exit (exitSuccess)
 | 
			
		||||
import System.IO (hPutStrLn, Handle)
 | 
			
		||||
import qualified XMonad.StackSet as W
 | 
			
		||||
 | 
			
		||||
-- Actions
 | 
			
		||||
import XMonad.Actions.CopyWindow (kill1)
 | 
			
		||||
import XMonad.Actions.CycleWS (Direction1D(..), moveTo, shiftTo, WSType(..), nextScreen, prevScreen)
 | 
			
		||||
import XMonad.Actions.MouseResize
 | 
			
		||||
import XMonad.Actions.Promote
 | 
			
		||||
import XMonad.Actions.RotSlaves (rotSlavesDown, rotAllDown)
 | 
			
		||||
import XMonad.Actions.WithAll (sinkAll, killAll)
 | 
			
		||||
 | 
			
		||||
-- Data
 | 
			
		||||
import Data.Maybe (isJust, fromJust)
 | 
			
		||||
import Data.Monoid
 | 
			
		||||
import qualified Data.Map as M
 | 
			
		||||
 | 
			
		||||
-- Hooks
 | 
			
		||||
import XMonad.Hooks.DynamicLog (dynamicLogWithPP, wrap, xmobarPP, xmobarColor, shorten, PP(..))
 | 
			
		||||
import XMonad.Hooks.ManageDocks (avoidStruts, docksEventHook, manageDocks, ToggleStruts(..))
 | 
			
		||||
import XMonad.Hooks.EwmhDesktops
 | 
			
		||||
import XMonad.Hooks.ManageHelpers (isFullscreen, doFullFloat)
 | 
			
		||||
 | 
			
		||||
-- Layouts
 | 
			
		||||
import XMonad.Layout.GridVariants (Grid(Grid))
 | 
			
		||||
import XMonad.Layout.SimplestFloat
 | 
			
		||||
import XMonad.Layout.Spiral
 | 
			
		||||
import XMonad.Layout.Tabbed
 | 
			
		||||
import XMonad.Layout.ResizableTile
 | 
			
		||||
 | 
			
		||||
-- Layouts modifiers
 | 
			
		||||
import XMonad.Layout.LayoutModifier
 | 
			
		||||
import XMonad.Layout.LimitWindows (limitWindows, increaseLimit, decreaseLimit)
 | 
			
		||||
import XMonad.Layout.Magnifier
 | 
			
		||||
import XMonad.Layout.MultiToggle (mkToggle, single, EOT(EOT), (??))
 | 
			
		||||
import XMonad.Layout.MultiToggle.Instances (StdTransformers(NBFULL, MIRROR, NOBORDERS))
 | 
			
		||||
import XMonad.Layout.NoBorders
 | 
			
		||||
import XMonad.Layout.Renamed
 | 
			
		||||
import XMonad.Layout.ShowWName
 | 
			
		||||
import XMonad.Layout.Simplest
 | 
			
		||||
import XMonad.Layout.Spacing
 | 
			
		||||
import XMonad.Layout.SubLayouts
 | 
			
		||||
import XMonad.Layout.WindowArranger (windowArrange)
 | 
			
		||||
import XMonad.Layout.WindowNavigation
 | 
			
		||||
import qualified XMonad.Layout.ToggleLayouts as T (toggleLayouts, ToggleLayout(Toggle))
 | 
			
		||||
import qualified XMonad.Layout.MultiToggle as MT (Toggle(..))
 | 
			
		||||
 | 
			
		||||
-- Utilities
 | 
			
		||||
import XMonad.Util.Dmenu
 | 
			
		||||
import XMonad.Util.EZConfig (additionalKeysP)
 | 
			
		||||
import XMonad.Util.Run (spawnPipe)
 | 
			
		||||
import XMonad.Util.SpawnOnce
 | 
			
		||||
 | 
			
		||||
-----------------------------------------------------------------------------
 | 
			
		||||
-- Basic settings:
 | 
			
		||||
 | 
			
		||||
-- Set the modkey
 | 
			
		||||
-- mod1Mask: left alt, mod4Mask: super key.
 | 
			
		||||
myModMask :: KeyMask
 | 
			
		||||
myModMask = mod4Mask
 | 
			
		||||
 | 
			
		||||
-- Preferred programs
 | 
			
		||||
myTerminal = "alacritty"
 | 
			
		||||
myBrowser = "firefox"
 | 
			
		||||
 | 
			
		||||
-- Preferred font
 | 
			
		||||
myFont :: String
 | 
			
		||||
myFont = "xft:SauceCodePro Nerd Font Mono:regular:size=9:antialias=true:hinting=true"
 | 
			
		||||
 | 
			
		||||
-- Width of the window border in pixels
 | 
			
		||||
myBorderWidth :: Dimension
 | 
			
		||||
myBorderWidth = 2
 | 
			
		||||
 | 
			
		||||
-- Border color of normal windows
 | 
			
		||||
myNormalBorderColor :: String
 | 
			
		||||
myNormalBorderColor = "#3b4252"
 | 
			
		||||
 | 
			
		||||
-- Border color of focused windows
 | 
			
		||||
myFocusedBorderColor :: String
 | 
			
		||||
myFocusedBorderColor = "#bc96da"
 | 
			
		||||
 | 
			
		||||
-- Default workspaces. Number of workspaces is determined by the list length.
 | 
			
		||||
myWorkspaces = ["dev", "www", "sys", "doc", "vbox", "chat", "mus", "vid", "etc"]
 | 
			
		||||
myWorkspaceIndices = M.fromList $ zipWith (,) myWorkspaces [1..] -- (,) == \x y -> (x,y)
 | 
			
		||||
 | 
			
		||||
-- Make the workspaces clickable
 | 
			
		||||
clickable ws = "<action=xdotool key super+"++show i++">"++ws++"</action>"
 | 
			
		||||
    where i = fromJust $ M.lookup ws myWorkspaceIndices
 | 
			
		||||
 | 
			
		||||
-- Keep track of the number of windows in current workspace
 | 
			
		||||
windowCount :: X (Maybe String)
 | 
			
		||||
windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-------------------------------------------------------------------------------
 | 
			
		||||
-- Key bindings with EZConfig:
 | 
			
		||||
-- C: Ctrl, S: Shift, M: Mod, M1: Alt
 | 
			
		||||
 | 
			
		||||
myKeys :: [(String, X ())]
 | 
			
		||||
myKeys =
 | 
			
		||||
    -- XMonad
 | 
			
		||||
    [ ("M-S-r", spawn "xmonad --recompile; xmonad --restart")   -- Recompiles xmonad
 | 
			
		||||
    , ("M-S-q", io exitSuccess)                                 -- Quits xmonad
 | 
			
		||||
 | 
			
		||||
    -- Programs
 | 
			
		||||
    , ("M-b",           spawn (myBrowser))
 | 
			
		||||
    , ("M-<Return>",    spawn (myTerminal))
 | 
			
		||||
    , ("M-M1-h",        spawn (myTerminal ++ " -e htop"))
 | 
			
		||||
    , ("M-M1-b",        spawn (myTerminal ++ " -e bpytop"))
 | 
			
		||||
    , ("M-M1-p",        spawn (myTerminal ++ " -e ipython"))
 | 
			
		||||
 | 
			
		||||
    -- Dmenu
 | 
			
		||||
    , ("M-S-<Return>", spawn "dmenu_run -i -p \"Run: \"")
 | 
			
		||||
 | 
			
		||||
    -- Screenshots
 | 
			
		||||
    , ("<Print>",       spawn "screenshot --xmonad")        -- Full screenshot, file
 | 
			
		||||
    , ("M-<Print>",     spawn "screenshot --xmonad -c")     -- Full screenshot, clipboard
 | 
			
		||||
    , ("S-<Print>",     spawn "screenshot --xmonad -s")     -- Selection screenshot, file
 | 
			
		||||
    , ("M-S-<Print>",   spawn "screenshot --xmonad -s -c")  -- Selection screenshot, clipboard
 | 
			
		||||
 | 
			
		||||
    -- Script shortcuts
 | 
			
		||||
    , ("M-S-p",         spawn "setbg ~/Pictures/Wallpapers/Active")  -- Set random background
 | 
			
		||||
 | 
			
		||||
    -- Kill windows
 | 
			
		||||
    , ("M-w", kill1)        -- Kill the currently focused client
 | 
			
		||||
    , ("M-S-w", killAll)    -- Kill all windows on current workspace
 | 
			
		||||
 | 
			
		||||
    -- Workspaces
 | 
			
		||||
    , ("M-.", nextScreen)   -- Switch focus to next monitor
 | 
			
		||||
    , ("M-,", prevScreen)   -- Switch focus to prev monitor
 | 
			
		||||
    , ("M-S-<KP_Add>", shiftTo Next nonNSP >> moveTo Next nonNSP)       -- Shifts focused window to next ws
 | 
			
		||||
    , ("M-S-<KP-Subtract>", shiftTo Prev nonNSP >> moveTo Prev nonNSP)  -- Shifts focused window to prev ws
 | 
			
		||||
 | 
			
		||||
    -- Floating windows
 | 
			
		||||
    , ("M-f",   sendMessage (T.Toggle "floats"))    -- Toggles 'floats' layout
 | 
			
		||||
    , ("M-t",   withFocused $ windows . W.sink)     -- Push floating window back to tile
 | 
			
		||||
    , ("M-S-t", sinkAll)                            -- Push all floating windows to tile
 | 
			
		||||
 | 
			
		||||
    -- Increase/decrease spacing (gaps)
 | 
			
		||||
    , ("C-M1-j", decWindowSpacing 4)    -- Decrease window spacing
 | 
			
		||||
    , ("C-M1-k", incWindowSpacing 4)    -- Increase window spacing
 | 
			
		||||
    , ("C-M1-h", decScreenSpacing 4)    -- Decrease screen spacing
 | 
			
		||||
    , ("C-M1-l", incScreenSpacing 4)    -- Increase screen spacing
 | 
			
		||||
 | 
			
		||||
    -- Windows navigation
 | 
			
		||||
    , ("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 focused window with next window
 | 
			
		||||
    , ("M-S-k",     windows W.swapUp)       -- Swap focused window with prev window
 | 
			
		||||
    , ("M-S-<Tab>", rotSlavesDown)          -- Rotate all windows except master and keep focus in place
 | 
			
		||||
    , ("M-C-<Tab>", rotAllDown)             -- Rotate all windows in the current stack
 | 
			
		||||
    , ("M-<Backspace>", promote)            -- Moves focused window to master, others maintain order
 | 
			
		||||
 | 
			
		||||
    -- Layouts
 | 
			
		||||
    , ("M-<Tab>",   sendMessage NextLayout)   -- Switch to next layout
 | 
			
		||||
    , ("M-<Space>", sendMessage (MT.Toggle NBFULL) >> sendMessage ToggleStruts) -- Toggles noborder/full
 | 
			
		||||
 | 
			
		||||
    -- Increase/decrease windows in the master pane or the stack
 | 
			
		||||
    , ("M-S-<Up>",      sendMessage (IncMasterN 1))     -- Increase # of clients master pane
 | 
			
		||||
    , ("M-S-<Down>",    sendMessage (IncMasterN (-1)))  -- Decrease # of clients master pane
 | 
			
		||||
    , ("M-C-<Up>",      increaseLimit)                  -- Increase # of windows
 | 
			
		||||
    , ("M-C-<Down>",    decreaseLimit)                  -- Decrease # of windows
 | 
			
		||||
 | 
			
		||||
    -- Window resizing
 | 
			
		||||
    , ("M-h",       sendMessage Shrink)         -- Shrink horiz window width
 | 
			
		||||
    , ("M-l",       sendMessage Expand)         -- Expand horiz window width
 | 
			
		||||
    , ("M-M1-j",    sendMessage MirrorShrink)   -- Shrink vert window width
 | 
			
		||||
    , ("M-M1-k",    sendMessage MirrorExpand)   -- Expand vert window width
 | 
			
		||||
 | 
			
		||||
    -- Multimedia keys
 | 
			
		||||
    , ("<XF86AudioLowerVolume>",    spawn "amixer set Master 5%- unmute")
 | 
			
		||||
    , ("<XF86AudioRaiseVolume>",    spawn "amixer set Master 5%+ unmute")
 | 
			
		||||
    , ("<XF86AudioMute>",           spawn "amixer set Master toggle")
 | 
			
		||||
    , ("<XF86MonBrightnessUp>",     spawn "brightness + 10 %")
 | 
			
		||||
    , ("M-S-n",     spawn "brightness + 10 %")
 | 
			
		||||
    , ("<XF86MonBrightnessDown>",   spawn "brightness - 10 %")
 | 
			
		||||
    ]
 | 
			
		||||
        where nonNSP            = WSIs (return (\ws -> W.tag ws /= "NSP"))
 | 
			
		||||
              nonEmptyNonNSP    = WSIs (return (\ws -> isJust (W.stack ws) && W.tag ws /= "NSP"))
 | 
			
		||||
 | 
			
		||||
-------------------------------------------------------------------------------
 | 
			
		||||
-- Layout vars:
 | 
			
		||||
 | 
			
		||||
--Makes setting the spacingRaw simpler to write.
 | 
			
		||||
--The spacingRaw module adds a configurable amount of space around windows.
 | 
			
		||||
mySpacing :: Integer -> l a -> XMonad.Layout.LayoutModifier.ModifiedLayout Spacing l a
 | 
			
		||||
mySpacing i = spacingRaw False (Border i i i i) True (Border i i i i) True
 | 
			
		||||
 | 
			
		||||
-- Below is a variation of the above except no borders are applied
 | 
			
		||||
-- if fewer than two windows. So a single window has no gaps.
 | 
			
		||||
mySpacing' :: Integer -> l a -> XMonad.Layout.LayoutModifier.ModifiedLayout Spacing l a
 | 
			
		||||
mySpacing' i = spacingRaw True (Border i i i i) True (Border i i i i) True
 | 
			
		||||
 | 
			
		||||
-- Colors for tabs layout and tabs sublayout.
 | 
			
		||||
myTabTheme = def { fontName            = myFont
 | 
			
		||||
                 , activeColor         = "#46d9ff"
 | 
			
		||||
                 , inactiveColor       = "#313846"
 | 
			
		||||
                 , activeBorderColor   = "#46d9ff"
 | 
			
		||||
                 , inactiveBorderColor = "#282c34"
 | 
			
		||||
                 , activeTextColor     = "#282c34"
 | 
			
		||||
                 , inactiveTextColor   = "#d0d0d0"
 | 
			
		||||
                 }
 | 
			
		||||
 | 
			
		||||
-- Theme for showWName which prints current workspace when you change workspaces.
 | 
			
		||||
myShowWNameTheme :: SWNConfig
 | 
			
		||||
myShowWNameTheme = def
 | 
			
		||||
    { swn_font              = "xft:Ubuntu:bold:size=60"
 | 
			
		||||
    , swn_fade              = 1.0
 | 
			
		||||
    , swn_bgcolor           = "#1c1f24"
 | 
			
		||||
    , swn_color             = "#ffffff"
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
-------------------------------------------------------------------------------
 | 
			
		||||
-- Layouts:
 | 
			
		||||
-- All of these layouts have to be defined in myLayoutHook, otherwise
 | 
			
		||||
-- type errors will occur
 | 
			
		||||
 | 
			
		||||
tall     = renamed [Replace "tall"]
 | 
			
		||||
           $ smartBorders
 | 
			
		||||
           $ windowNavigation
 | 
			
		||||
           $ addTabs shrinkText myTabTheme
 | 
			
		||||
           $ subLayout [] (smartBorders Simplest)
 | 
			
		||||
           $ limitWindows 12
 | 
			
		||||
           $ mySpacing 8
 | 
			
		||||
           $ ResizableTall 1 (3/100) (1/2) []
 | 
			
		||||
magnify  = renamed [Replace "magnify"]
 | 
			
		||||
           $ smartBorders
 | 
			
		||||
           $ windowNavigation
 | 
			
		||||
           $ addTabs shrinkText myTabTheme
 | 
			
		||||
           $ subLayout [] (smartBorders Simplest)
 | 
			
		||||
           $ magnifier
 | 
			
		||||
           $ limitWindows 12
 | 
			
		||||
           $ mySpacing 8
 | 
			
		||||
           $ ResizableTall 1 (3/100) (1/2) []
 | 
			
		||||
floats   = renamed [Replace "floats"]
 | 
			
		||||
           $ smartBorders
 | 
			
		||||
           $ limitWindows 20 simplestFloat
 | 
			
		||||
grid     = renamed [Replace "grid"]
 | 
			
		||||
           $ smartBorders
 | 
			
		||||
           $ windowNavigation
 | 
			
		||||
           $ addTabs shrinkText myTabTheme
 | 
			
		||||
           $ subLayout [] (smartBorders Simplest)
 | 
			
		||||
           $ limitWindows 12
 | 
			
		||||
           $ mySpacing 8
 | 
			
		||||
           $ mkToggle (single MIRROR)
 | 
			
		||||
           $ Grid (16/10)
 | 
			
		||||
spirals  = renamed [Replace "spirals"]
 | 
			
		||||
           $ smartBorders
 | 
			
		||||
           $ windowNavigation
 | 
			
		||||
           $ addTabs shrinkText myTabTheme
 | 
			
		||||
           $ subLayout [] (smartBorders Simplest)
 | 
			
		||||
           $ mySpacing' 8
 | 
			
		||||
           $ spiral (6/7)
 | 
			
		||||
tabs     = renamed [Replace "tabs"]
 | 
			
		||||
           -- I cannot add spacing to this layout because it will
 | 
			
		||||
           -- add spacing between window and tabs which looks bad.
 | 
			
		||||
           $ tabbed shrinkText myTabTheme
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
myLayoutHook = avoidStruts $ mouseResize $ windowArrange $ T.toggleLayouts floats
 | 
			
		||||
               $ mkToggle (NBFULL ?? NOBORDERS ?? EOT) myDefaultLayout
 | 
			
		||||
             where
 | 
			
		||||
               myDefaultLayout =     withBorder myBorderWidth tall
 | 
			
		||||
                                 ||| magnify
 | 
			
		||||
                                 ||| floats
 | 
			
		||||
                                 ||| grid
 | 
			
		||||
                                 ||| spirals
 | 
			
		||||
                                 ||| tabs
 | 
			
		||||
 | 
			
		||||
-------------------------------------------------------------------------------
 | 
			
		||||
-- 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.
 | 
			
		||||
--
 | 
			
		||||
-- `doFloat` forces a window to float, useful for dialog boxes and such.
 | 
			
		||||
-- `doShift (myWorkspaces !! 7)` sends program to workspace 8
 | 
			
		||||
 | 
			
		||||
myManageHook :: XMonad.Query (Data.Monoid.Endo WindowSet)
 | 
			
		||||
myManageHook = composeAll
 | 
			
		||||
    [ className =? "notification"       --> doFloat
 | 
			
		||||
    , className =? "confirm"            --> doFloat
 | 
			
		||||
    , className =? "dialog"             --> doFloat
 | 
			
		||||
    , className =? "error"              --> doFloat
 | 
			
		||||
    , className =? "download"           --> doFloat
 | 
			
		||||
    , className =? "file_progress"      --> doFloat
 | 
			
		||||
    , className =? "Qalculate-gtk"      --> doFloat
 | 
			
		||||
    , className =? "mpv"                --> doShift ( myWorkspaces !! 7 )
 | 
			
		||||
    , title     =? "Mozilla Firefox"    --> doShift ( myWorkspaces !! 1 )
 | 
			
		||||
    , isFullscreen                      --> doFullFloat
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
------------------------------------------------------------------------
 | 
			
		||||
-- 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.
 | 
			
		||||
 | 
			
		||||
myStartupHook :: X ()
 | 
			
		||||
myStartupHook = do
 | 
			
		||||
    spawnOnce "setbg &"
 | 
			
		||||
    --spawnOnce "nm-applet &"
 | 
			
		||||
    --spawnOnce "volumeicon &"
 | 
			
		||||
    --spawnOnce "trayer --edge top --align right &"
 | 
			
		||||
    --spawnOnce "emacs --daemon &"
 | 
			
		||||
    --spawnOnce "urxvtd -q -o -f &"
 | 
			
		||||
 | 
			
		||||
-------------------------------------------------------------------------------
 | 
			
		||||
-- Log hook: this sends info to xmobar process(es)
 | 
			
		||||
 | 
			
		||||
myLogHook :: Handle -> Handle -> X ()
 | 
			
		||||
myLogHook xmproc0 xmproc1 = dynamicLogWithPP $ xmobarPP
 | 
			
		||||
    { ppOutput = \x -> hPutStrLn xmproc0 x      -- xmobar on monitor 1
 | 
			
		||||
                    >> hPutStrLn xmproc1 x      -- xmobar on monitor 2
 | 
			
		||||
    , ppCurrent = xmobarColor "#98be65" "" . wrap " [" "] "               -- Current workspace
 | 
			
		||||
    , ppVisible = xmobarColor "#98be65" "" . wrap " " " " . clickable     -- Visible but not current workspace
 | 
			
		||||
    , ppHidden  = xmobarColor "#82AAFF" "" . wrap " *" " " . clickable    -- Hidden workspaces
 | 
			
		||||
    , ppHiddenNoWindows = xmobarColor "#c792ea" "" . wrap " " " " . clickable -- Hidden workspaces (no windows)
 | 
			
		||||
    , ppTitle  = xmobarColor "#b3afc2" "" . shorten 60                    -- Title of active window
 | 
			
		||||
    , ppSep    = "<fc=#666666> | </fc>"                                   -- Separator character
 | 
			
		||||
    , ppUrgent = xmobarColor "#C45500" "" . wrap " !" "! "                -- Urgent workspace
 | 
			
		||||
    , ppExtras = [windowCount]                                            -- # of windows current workspace
 | 
			
		||||
    , ppOrder  = \(ws:l:t:ex) -> [ws,l]++ex++[t]                          -- order of things in xmobar
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-------------------------------------------------------------------------------
 | 
			
		||||
-- Run xmonad with all the defaults we set up.
 | 
			
		||||
main :: IO ()
 | 
			
		||||
main = do
 | 
			
		||||
    -- Launching 2 instances of xmobar on their respective monitors.
 | 
			
		||||
    xmproc0 <- spawnPipe "xmobar -x 0 $HOME/.config/xmobar/xmobarrc0"
 | 
			
		||||
    xmproc1 <- spawnPipe "xmobar -x 1 $HOME/.config/xmobar/xmobarrc1"
 | 
			
		||||
    -- Xmonad config definitions
 | 
			
		||||
    xmonad $ ewmh def
 | 
			
		||||
        { modMask               = myModMask
 | 
			
		||||
        , terminal              = myTerminal
 | 
			
		||||
        , workspaces            = myWorkspaces
 | 
			
		||||
        , startupHook           = myStartupHook
 | 
			
		||||
        , manageHook            = myManageHook <+> manageDocks
 | 
			
		||||
        , handleEventHook       = docksEventHook
 | 
			
		||||
        , layoutHook            = showWName' myShowWNameTheme $ myLayoutHook
 | 
			
		||||
        , borderWidth           = myBorderWidth
 | 
			
		||||
        , normalBorderColor     = myNormalBorderColor
 | 
			
		||||
        , focusedBorderColor    = myFocusedBorderColor
 | 
			
		||||
        , logHook               = myLogHook xmproc0 xmproc1
 | 
			
		||||
        } `additionalKeysP` myKeys
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								home/.config/xmonad/xmonad.o
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								home/.config/xmonad/xmonad.o
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue