lina/xmonad/xmonad.hs
Light3039 aa657d0ae6
Initial Commit
Add install.sh

Add .zshrc

add: nvim configs

add: toggleterm, alpha

update

update

Create README.md

major changes

major changes

add picom

updated dot files

update

shit
2025-04-25 10:37:55 +03:30

101 lines
4 KiB
Haskell

import XMonad
import XMonad.Actions.SpawnOn
import XMonad.Actions.CycleWS
import XMonad.Actions.WorkspaceNames
import XMonad.Hooks.WorkspaceHistory
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.StatusBar
import XMonad.Hooks.StatusBar.PP
import XMonad.Layout.ThreeColumns
import XMonad.Layout.Gaps
import XMonad.Layout.Spacing
import XMonad.Util.NamedWindows (getName)
import XMonad.Util.SpawnOnce
import XMonad.Util.EZConfig
import qualified XMonad.StackSet as W
import Control.Monad (forM_, join)
import Data.List (sortBy)
import Data.Function (on)
my_startup_hook :: X()
my_startup_hook = do
spawnOnce "source /home/light/.config/xmonad/envs.sh"
spawnOnce "xrdb -merge /home/light/.config/xmonad/.Xresources"
spawnOnce "feh --bg-fill --randomize ~/wallpapers/"
spawnOnce "sudo wpa_supplicant -B -i wlp0s20f3 -c /home/light/.config/wpa_configs/home_wifi"
spawnOnce "/home/light/.config/xmonad/toggle_picom.sh"
spawnOnce "/home/light/.config/xmonad/toggle_polybar.sh"
spawnOnce "setxkbmap -model pc104 -layout us,ir -variant , -option grp:rctrl_rshift_toggle"
spawnOnce "mpv --no-video --no-terminal ~/.config/xmonad/welcome.wav"
main :: IO ()
main = xmonad $ ewmh $ xmobarProp $ my_conf
my_conf
= def
{
layoutHook = spacingWithEdge 16 $ my_layout
, startupHook = my_startup_hook
, manageHook = manageDocks <+> manageSpawn <+> manageHook def
, logHook = workspaceHistoryHook <+> polybar_hook
, focusedBorderColor = "#fe8019"
, normalBorderColor = "#928374"
, workspaces = ["1\59285", "2\62057", "3\57879", "4\61441", "5\59285", "6\59138"]
}
`additionalKeysP`
[ ("M-<Tab>", toggleWS)
, ("M-k", spawn "kitty")
, ("M-`", spawn "rofi -show run -m 2")
, ("M-c", spawn "rofi -show calc -modi calc -no-show-match -no-sort")
, ("M-s", spawn "flameshot gui")
, ("M-w", spawn "feh --bg-fill --randomize ~/pictures/wallpapers/")
, ("M-p", spawn "~/.config/xmonad/toggle_picom.sh &> /dev/null &")
, ("M-d", spawn "~/.config/xmonad/toggle_polybar.sh &> /dev/null &")
, ("M-\\", spawn "rofi -show Search -modes 'Search:/home/light/.config/xmonad/duck_search.sh'")
, ("M-|", spawn "killall matching_engine -9 ; killall risk_engine_cpp -9")
, ("<XF86AudioMute>", spawn "amixer -q -D pulse sset Master toggle")
, ("<XF86AudioLowerVolume>", spawn "amixer -q -D pulse sset Master on ; amixer -q -D pulse sset Master 2%-")
, ("<XF86AudioRaiseVolume>", spawn "amixer -q -D pulse sset Master on ; amixer -q -D pulse sset Master 2%+")
, ("<XF86AudioNext>", spawn "echo 'playlist-next weak' | socat - '/tmp/mpvsocket'")
, ("<XF86AudioPrev>", spawn "echo 'playlist-prev weak' | socat - '/tmp/mpvsocket'")
, ("<XF86AudioPlay>", spawn "echo 'cycle pause' | socat - '/tmp/mpvsocket'")
, ("<XF86MonBrightnessUp>", spawn "lux -a 10%")
, ("<XF86MonBrightnessDown>", spawn "lux -s 10%")]
my_layout = tiled ||| Mirror tiled ||| Full ||| threeCol
where
threeCol = ThreeColMid nmaster delta ratio
tiled = Tall nmaster delta ratio
nmaster = 1 -- Default number of windows in the master pane
ratio = 1/2 -- Default propoetion of screen occupied by master pane
delta = 3/100 -- Percent of screen to increment when resizing panes
polybar_hook = do
winset <- gets windowset
title <- maybe (return "") (fmap show . getName) . W.peek $ winset
let currWs = W.currentTag winset
let wss = map W.tag $ W.workspaces winset
io $ appendFile "/tmp/.xmonad-title-log" (title ++ "\n")
io $ appendFile "/tmp/.xmonad-workspace-log" ( wsStr currWs wss)
where
fmt currWs ws
| currWs == ws = "%{F#CC241D}" ++ drop 1 ws ++ "\n"
| otherwise = "%{F#FBF1C7}" ++ drop 1 ws ++ "\n"
wsStr currWs wss = join $ map (fmt currWs) $ sortBy (compare `on` (!! 0)) wss