aboutsummaryrefslogtreecommitdiff
path: root/xmonad
diff options
context:
space:
mode:
Diffstat (limited to 'xmonad')
-rw-r--r--xmonad/xmobar.hs47
-rw-r--r--xmonad/xmonad.hs106
-rw-r--r--xmonad/xsession.sh1
3 files changed, 154 insertions, 0 deletions
diff --git a/xmonad/xmobar.hs b/xmonad/xmobar.hs
new file mode 100644
index 0000000..4bba66b
--- /dev/null
+++ b/xmonad/xmobar.hs
@@ -0,0 +1,47 @@
+Config { font = "-*-Fixed-Bold-R-Normal-*-13-*-*-*-*-*-*-*"
+ , bgColor = "black"
+ , fgColor = "grey"
+ , position = TopW L 90
+ , additionalFonts = []
+ , borderColor = "black"
+ , border = TopB
+ , alpha = 255
+ , textOffset = -1
+ , iconOffset = -1
+ , lowerOnStart = True
+ , pickBroadest = False
+ , persistent = False
+ , hideOnStart = False
+ , iconRoot = "."
+ , allDesktops = True
+ , overrideRedirect = True
+ , commands = [ Run Weather "EGPF" ["-t","<station>: <tempC>C",
+ "-L","18","-H","25",
+ "--normal","green",
+ "--high","red",
+ "--low","lightblue"] 36000
+ , Run Network "wlp2s0" ["-L","0","-H","32","--normal","green","--high","red"] 10
+
+ , Run Cpu ["-L","3","-H","50",
+ "--normal","green","--high","red"] 10
+ , Run Memory ["-t","Mem: <usedratio>%"] 10
+ , Run Swap [] 10
+ , Run Com "uname" ["-s","-r"] "" 36000
+ , Run Date "%a %b %_d %Y %H:%M:%S" "date" 10
+
+ , Run Battery [
+ "-t", "<acstatus>: <left>% - <timeleft>",
+ "--",
+ --"-c", "charge_full",
+ "-O", "AC",
+ "-o", "Bat",
+ "-h", "green",
+ "-l", "red"
+ ] 10
+ , Run StdinReader
+ , Run CommandReader "/usr/bin/ledmon" "LED"
+ ]
+ , sepChar = "%"
+ , alignSep = "}{"
+ , template = " <fc=#ee9a00>%date%</fc> | %battery% } { %memory% * %swap% | %cpu% | %wlp2s0% "
+ }
diff --git a/xmonad/xmonad.hs b/xmonad/xmonad.hs
new file mode 100644
index 0000000..299053f
--- /dev/null
+++ b/xmonad/xmonad.hs
@@ -0,0 +1,106 @@
+import XMonad
+import XMonad.Actions.SpawnOn
+import XMonad.Hooks.DynamicLog()
+import XMonad.Hooks.ManageDocks
+import XMonad.Util.EZConfig(additionalKeys)
+import System.IO()
+import XMonad.Layout.NoBorders
+import XMonad.Hooks.SetWMName
+import XMonad.Hooks.ManageHelpers
+import XMonad.Util.Scratchpad
+import qualified XMonad.StackSet as W
+
+main :: IO ()
+main =
+ xmonad $ def
+ -- Fullscreen handling:
+ -- https://stackoverflow.com/questions/20446348/xmonad-toggle-fullscreen-xmobar
+ { manageHook = manageDocks <+> (isFullscreen --> doFullFloat) <+> manageHook def <+> manageScratchPad
+ , handleEventHook = handleEventHook def <+> docksEventHook
+ , layoutHook = smartBorders $ lessBorders OnlyFloat $ avoidStruts $ layoutHook def
+ , modMask = mod4Mask -- User Super instead of Alt
+ , terminal = myTerminal
+ , startupHook = startup
+ } `additionalKeys` myKeyBindings
+
+myTerminal = "gnome-terminal"
+
+manageScratchPad :: ManageHook
+manageScratchPad = scratchpadManageHook (W.RationalRect l t w h)
+ where
+ h = 0.1 -- terminal height, 10%
+ w = 1 -- terminal width, 100%
+ t = 1 - h -- distance from top edge, 90%
+ l = 1 - w -- distance from left edge, 0%
+
+myKeyBindings :: [((ButtonMask, KeySym), X())]
+myKeyBindings =
+ [ -- XF86MonBrightnessUp
+ ((0, 0x1008ff02),
+ spawn "xbacklight +10")
+
+ -- XF86MonBrightnessDown
+ , ((0, 0x1008ff03),
+ spawn "xbacklight -10")
+
+ -- XF86AudioMute
+ , ((0, 0x1008ff12),
+ spawn "amixer -q sset Master toggle")
+
+ -- XF86AudioLowerVolume
+ , ((0, 0x1008ff11),
+ spawn "amixer -q sset Master 5%- unmute")
+
+ -- XF86AudioRaiseVolume
+ , ((0, 0x1008ff13),
+ spawn "amixer -q sset Master 5%+ unmute")
+
+ -- XF86AudioPrev
+ , ((0, 0x1008ff16),
+ spawn "playerctl previous")
+
+ -- XF86AudioPlay
+ , ((0, 0x1008ff14),
+ spawn "playerctl play-pause")
+
+ -- XF86AudioNext
+ , ((0, 0x1008ff17),
+ spawn "playerctl next")
+
+ -- yeganesh launcher
+ , ((mod4Mask, xK_p),
+ spawnHere "exe=$(~/.local/bin/yeganesh -x) && exec $exe")
+
+ -- Lock screen
+ , ((mod4Mask .|. controlMask, xK_l),
+ spawn "dm-tool lock & systemctl suspend")
+
+ -- print screen of clicked window
+ , ((mod4Mask .|. controlMask, xK_Print),
+ spawn "escrotum ~/Desktop/%Y-%m-%d-%T-screenshot.png -s")
+
+ -- print whole screen
+ , ((mod4Mask, xK_Print),
+ spawn "escrotum ~/Desktop/%Y-%m-%d-%T-screenshot.png")
+
+ -- xrandr single monitor setup
+ , ((mod4Mask .|. controlMask, xK_1),
+ spawn "~/annex/dev/code/dotfiles/scripts/single-monitor.sh")
+
+ -- xrandr three monitor setup
+ , ((mod4Mask .|. controlMask, xK_3),
+ spawn "~/annex/dev/code/dotfiles/scripts/three-monitors.sh")
+
+ -- restart network
+ , ((mod4Mask, xK_x),
+ spawn "gksudo -S systemctl restart network-manager")
+ ]
+
+startup :: X()
+startup = do
+ spawn "xbacklight =100"
+ spawn "xmobar ~/.xmobarrc"
+ spawn "killall trayer; trayer --edge top --align right --SetDockType true --SetPartialStrut true --expand true --width 10 --transparent true --tint 0x191970 --height 17 --monitor 1"
+ spawn "nm-applet"
+ spawn "~/annex/dev/code/dotfiles/scripts/once-only-nextcloud.sh"
+ setWMName "LG3D" -- https://stackoverflow.com/questions/30742662/java-swing-gui-not-displaying-in-xmonad
diff --git a/xmonad/xsession.sh b/xmonad/xsession.sh
new file mode 100644
index 0000000..b25a9a1
--- /dev/null
+++ b/xmonad/xsession.sh
@@ -0,0 +1 @@
+xmonad