Add xmonad configuration
parent
c29ce57628
commit
342caa641b
|
@ -0,0 +1,97 @@
|
||||||
|
Config {
|
||||||
|
-- appearance
|
||||||
|
font = "xft:Iosevka Term SS08:size=12:antialias=true"
|
||||||
|
, bgColor = "#111"
|
||||||
|
, fgColor = "#ccc"
|
||||||
|
, position = Top
|
||||||
|
, border = BottomB
|
||||||
|
, borderColor = "#333"
|
||||||
|
|
||||||
|
-- layout
|
||||||
|
, sepChar = "%" -- delineator between plugin names and straight text
|
||||||
|
, alignSep = "}{" -- separator between left-right alignment
|
||||||
|
, template = "%battery% | %multicpu% | %coretemp% | %memory% | %dynnetwork% }{ %RJTT% | %date%"
|
||||||
|
|
||||||
|
-- general behavior
|
||||||
|
, lowerOnStart = True -- send to bottom of window stack on start
|
||||||
|
, hideOnStart = False -- start with window unmapped (hidden)
|
||||||
|
, allDesktops = True -- show on all desktops
|
||||||
|
, overrideRedirect = True -- set the Override Redirect flag (Xlib)
|
||||||
|
, pickBroadest = False -- choose widest display (multi-monitor)
|
||||||
|
, persistent = True -- enable/disable hiding (True = disabled)
|
||||||
|
|
||||||
|
-- plugins
|
||||||
|
-- Numbers can be automatically colored according to their value. xmobar
|
||||||
|
-- decides color based on a three-tier/two-cutoff system, controlled by
|
||||||
|
-- command options:
|
||||||
|
-- --Low sets the low cutoff
|
||||||
|
-- --High sets the high cutoff
|
||||||
|
--
|
||||||
|
-- --low sets the color below --Low cutoff
|
||||||
|
-- --normal sets the color between --Low and --High cutoffs
|
||||||
|
-- --High sets the color above --High cutoff
|
||||||
|
--
|
||||||
|
-- The --template option controls how the plugin is displayed. Text
|
||||||
|
-- color can be set by enclosing in <fc></fc> tags. For more details
|
||||||
|
-- see http://projects.haskell.org/xmobar/#system-monitor-plugins.
|
||||||
|
, commands =
|
||||||
|
|
||||||
|
-- weather monitor
|
||||||
|
[ Run Weather "RJTT" [ "--template", "<skyCondition> | <fc=#4682B4><tempC></fc>°C | <fc=#4682B4><rh></fc>% | <fc=#4682B4><pressure></fc>hPa"
|
||||||
|
] 36000
|
||||||
|
|
||||||
|
-- network activity monitor (dynamic interface resolution)
|
||||||
|
, Run DynNetwork [ "--template" , "<dev>: <tx>kB/s|<rx>kB/s"
|
||||||
|
, "--Low" , "1000" -- units: B/s
|
||||||
|
, "--High" , "5000" -- units: B/s
|
||||||
|
, "--low" , "green"
|
||||||
|
, "--normal" , "orange"
|
||||||
|
, "--high" , "red"
|
||||||
|
] 10
|
||||||
|
|
||||||
|
-- cpu activity monitor
|
||||||
|
, Run MultiCpu [ "--template" , "Cpu: <total0>%|<total1>%"
|
||||||
|
, "--Low" , "50" -- units: %
|
||||||
|
, "--High" , "85" -- units: %
|
||||||
|
, "--low" , "green"
|
||||||
|
, "--normal" , "orange"
|
||||||
|
, "--high" , "red"
|
||||||
|
] 10
|
||||||
|
|
||||||
|
-- cpu core temperature monitor
|
||||||
|
, Run CoreTemp [ "--template" , "Temp: <core0>°C|<core1>°C"
|
||||||
|
, "--Low" , "70" -- units: °C
|
||||||
|
, "--High" , "80" -- units: °C
|
||||||
|
, "--low" , "green"
|
||||||
|
, "--normal" , "orange"
|
||||||
|
, "--high" , "red"
|
||||||
|
] 50
|
||||||
|
|
||||||
|
-- memory usage monitor
|
||||||
|
, Run Memory [ "--template" ,"Mem: <usedratio>%"
|
||||||
|
, "--Low" , "20" -- units: %
|
||||||
|
, "--High" , "90" -- units: %
|
||||||
|
, "--low" , "green"
|
||||||
|
, "--normal" , "orange"
|
||||||
|
, "--high" , "red"
|
||||||
|
] 10
|
||||||
|
|
||||||
|
-- battery monitor
|
||||||
|
, Run Battery [ "--template" , "Bat <acstatus>"
|
||||||
|
, "--Low" , "30" -- units: %
|
||||||
|
, "--High" , "80" -- units: %
|
||||||
|
, "--low" , "red"
|
||||||
|
, "--normal" , "orange"
|
||||||
|
, "--high" , "gray"
|
||||||
|
|
||||||
|
, "--" -- battery specific options
|
||||||
|
-- discharging status
|
||||||
|
, "-o" , "<left>% (<timeleft>)"
|
||||||
|
-- AC "on" status
|
||||||
|
, "-O" , "Charging"
|
||||||
|
-- charged status
|
||||||
|
, "-i" , "Charged"
|
||||||
|
] 50
|
||||||
|
, Run Date "%a %d/%m W%w %H:%M" "date" 10
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,85 @@
|
||||||
|
import System.IO
|
||||||
|
import XMonad
|
||||||
|
import XMonad.Config.Desktop
|
||||||
|
import XMonad.Hooks.DynamicLog
|
||||||
|
import XMonad.Hooks.ManageDocks
|
||||||
|
import XMonad.Layout.BorderResize
|
||||||
|
import XMonad.Layout.Fullscreen
|
||||||
|
import XMonad.Layout.Grid
|
||||||
|
import XMonad.Layout.NoBorders (noBorders, smartBorders)
|
||||||
|
import XMonad.Layout.ResizableTile (MirrorResize (..),
|
||||||
|
ResizableTall (..))
|
||||||
|
import XMonad.Layout.Spacing
|
||||||
|
import XMonad.Layout.Tabbed (Theme (..), shrinkText,
|
||||||
|
tabbedAlways)
|
||||||
|
import XMonad.Layout.ToggleLayouts (ToggleLayout (..), toggleLayouts)
|
||||||
|
import XMonad.Layout.WindowArranger
|
||||||
|
import XMonad.Util.EZConfig
|
||||||
|
import XMonad.Util.Paste
|
||||||
|
import XMonad.Util.Run (spawnPipe)
|
||||||
|
|
||||||
|
import XMonad.Actions.CycleWS
|
||||||
|
import XMonad.Actions.GridSelect
|
||||||
|
import XMonad.Actions.WindowGo
|
||||||
|
import XMonad.Hooks.EwmhDesktops
|
||||||
|
import XMonad.Hooks.ManageHelpers
|
||||||
|
import XMonad.Hooks.ScreenCorners
|
||||||
|
|
||||||
|
import qualified Data.Map.Strict as M
|
||||||
|
import qualified XMonad.StackSet as W
|
||||||
|
|
||||||
|
myStartupHook = do
|
||||||
|
addScreenCorners [ (SCLowerRight, nextWS)
|
||||||
|
, (SCLowerRight, prevWS)
|
||||||
|
]
|
||||||
|
|
||||||
|
main = do
|
||||||
|
xmproc <- spawnPipe "xmobar"
|
||||||
|
xmonad $ def {
|
||||||
|
terminal = "alacritty"
|
||||||
|
-- Use Win key instead of Alt
|
||||||
|
, modMask = mod4Mask
|
||||||
|
, workspaces = ["α", "β", "γ", "δ", "ε"]
|
||||||
|
-- Styling
|
||||||
|
, focusedBorderColor = "#000000"
|
||||||
|
, normalBorderColor = "#111111"
|
||||||
|
, borderWidth = 2
|
||||||
|
-- Hooks
|
||||||
|
, startupHook = myStartupHook
|
||||||
|
, layoutHook = screenCornerLayoutHook $ layoutHook def
|
||||||
|
, handleEventHook = handleEventHook def <+> screenCornerEventHook
|
||||||
|
, logHook = dynamicLogWithPP xmobarPP
|
||||||
|
{ ppOutput = hPutStrLn xmproc
|
||||||
|
, ppTitle = xmobarColor "green" "" . shorten 50
|
||||||
|
}
|
||||||
|
} `additionalKeysP`
|
||||||
|
-- Keybindings to be added
|
||||||
|
[ ("M-S-<Space>", withFocused $ windows . W.sink)
|
||||||
|
, ("M-p", spawn "rofi -show run")
|
||||||
|
-- Map insert key to paste from clipboard
|
||||||
|
, ("<Insert>", pasteSelection)
|
||||||
|
-- Map print screen to take a screenshot with flameshot
|
||||||
|
, ("<Print>", spawn "flameshot gui")
|
||||||
|
-- Map audio keys to control volume
|
||||||
|
, ("<XF86AudioRaiseVolume>", spawn "pactl set-sink-volume @DEFAULT_SINK@ +5%")
|
||||||
|
, ("<XF86AudioLowerVolume>", spawn "pactl set-sink-volume @DEFAULT_SINK@ -5%")
|
||||||
|
, ("<XF86AudioMute>", spawn "pactl set-sink-mute @DEFAULT_SINK@ toggle")
|
||||||
|
-- Map brightness keys to control brightness with brightnessctl
|
||||||
|
, ("<XF86MonBrightnessUp>", spawn "brightnessctl set 20+")
|
||||||
|
, ("<XF86MonBrightnessDown>", spawn "brightnessctl set 20-")
|
||||||
|
-- Map brightness keys + shift to adjust redshift temperature
|
||||||
|
, ("S-<XF86MonBrightnessUp>", spawn "echo $(($(cat /tmp/temperature) + 50)) > /tmp/temperature && redshift -O $(cat /tmp/temperature) -P && notify < /tmp/temperature -h string:x-canonical-private-synchronous:anything")
|
||||||
|
, ("S-<XF86MonBrightnessDown>", spawn "echo $(($(cat /tmp/temperature) - 50)) > /tmp/temperature && redshift -O $(cat /tmp/temperature) -P && notify < /tmp/temperature -h string:x-canonical-private-synchronous:anything")
|
||||||
|
-- Reset redshift temperature
|
||||||
|
, ("M-S-<XF86MonBrightnessUp>", spawn "echo 3000 > /tmp/temperature && redshift -x")
|
||||||
|
, ("M-S-<XF86MonBrightnessDown>", spawn "echo 3000 > /tmp/temperature && redshift -x")
|
||||||
|
-- Use power down key to suspend
|
||||||
|
, ("<XF86PowerOff>", spawn "systemctl suspend")
|
||||||
|
, ("M-q", spawn "xmonad --recompile; pkill xmobar; xmonad --restart")
|
||||||
|
]
|
||||||
|
`removeKeysP`
|
||||||
|
-- Keybindings to be removed
|
||||||
|
[ "M-t" ]
|
||||||
|
|
||||||
|
mainManageHook = composeAll
|
||||||
|
[ className =? "plank" --> doIgnore ]
|
Loading…
Reference in New Issue