Created
January 9, 2023 15:09
-
-
Save Pacane/84785ecf23b73424dc4e74a6e334a010 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import XMonad | |
import XMonad.Hooks.DynamicLog -- Needed for polybar | |
import XMonad.Hooks.ManageDocks -- Needed for xmobar | |
import XMonad.Layout.NoBorders -- No borders fullscreen | |
import XMonad.Hooks.ManageHelpers -- Needed for fullscreen | |
import XMonad.Util.Run(spawnPipe) | |
import XMonad.Util.EZConfig -- Adding own keybinds | |
import System.IO -- Needed for Polybar | |
import XMonad.Hooks.SetWMName -- Bug with Java/Swing apps | |
import XMonad.Actions.SpawnOn -- Assign apps to workspaces | |
import XMonad.Util.SpawnOnce -- Startup programs | |
import XMonad.Actions.Navigation2D -- Screen swap | |
import XMonad.Hooks.EwmhDesktops -- EWMH | |
import Text.Printf -- String interpolation | |
import XMonad.Layout.MouseResizableTile -- Mouse resize | |
import XMonad.Layout.ResizableTile -- Mouse resize | |
import XMonad.Layout.Tabbed | |
import XMonad.Layout.Fullscreen | |
import XMonad.Layout.Grid | |
import XMonad.Layout.SimpleFloat | |
import XMonad.Layout.SimplestFloat | |
import XMonad.Layout.WindowArranger | |
import XMonad.Layout.DragPane | |
import XMonad.Layout.ZoomRow | |
import XMonad.Layout.Simplest | |
import XMonad.Layout.StackTile | |
import XMonad.Layout.ResizableTile | |
import XMonad.Layout.BinarySpacePartition | |
import XMonad.Layout.OneBig | |
import XMonad.Actions.UpdatePointer | |
import XMonad.Actions.CycleWindows | |
import XMonad.Prompt -- Exit prompt | |
import XMonad.Prompt.ConfirmPrompt -- Exit prompt | |
import System.Exit -- Exit Prompt | |
import qualified XMonad.StackSet as W -- Swap windows | |
main = do | |
xmonad $ docks $ ewmhFullscreen $ ewmh def | |
{ terminal = myTerminal | |
, layoutHook = myLayoutHook | |
, manageHook = myManageHook <+> manageHook def | |
, modMask = myModMask | |
, borderWidth = myBorderWidth | |
, workspaces = myWorkspaces | |
, startupHook = myStartupHook | |
, logHook = dynamicLog | |
>> updatePointer (0.5, 0.5) (0, 0) | |
} | |
`additionalKeysP` myKeybinds | |
myResizableTall = mouseResizableTile{draggerType = BordersDragger} | |
myLayoutHook = tiled ||| avoidStruts (smartBorders Full) | |
where | |
tiled = avoidStruts $ smartBorders myResizableTall | |
myKeybinds = [ | |
("M-S-<Left>", windows W.swapUp) | |
, ("M-S-<Right>", windows W.swapDown) | |
, ("M-S-<Down>", windows W.swapDown) | |
, ("M-S-<Up>", windows W.swapUp) | |
, ("C-M-<Left>", screenSwap L True) | |
, ("C-M-h", screenSwap L True) | |
, ("C-M-<Right>", screenSwap R True) | |
, ("C-M-l", screenSwap R True) | |
, ("M-comma", sendMessage (IncMasterN 1)) | |
, ("M-period", sendMessage (IncMasterN (-1))) | |
, ("M-#", windows W.swapMaster) | |
, ("M-S-j", rotFocusedDown) | |
, ("M-S-k", rotFocusedUp) | |
, ("M-S-q", confirmPrompt hotPromptTheme "Quit XMonad" $ io (exitWith ExitSuccess)) | |
] | |
myStartupHook = do | |
setWMName "LG3D" | |
spawn "~/apps/polybar_launcher.sh" | |
spawn "~/apps/keybinds.sh" | |
spawnOnce "xsetroot -cursor_name left_ptr" | |
spawnOnce "redshift-gtk" | |
spawnOnce "slack" | |
spawnOnce "google-chrome-stable" | |
spawnOnce "dunst" | |
spawnOnce "nm-applet" | |
spawnOnce "xfce4-terminal -e \"$HOME/apps/transmission/torrent.sh\"" | |
spawnOnce "nitrogen --restore" | |
spawnOnce "mpd" | |
spawnOnce "mpdscribble" | |
--spawnOnce "xrandr --output DP-2 --mode 1920x1080 --rate 144 --primary --left-of DP-1" | |
spawnOnce "xrandr --output DisplayPort-1 --mode 1920x1080 --rate 144 --primary --left-of DisplayPort-0" | |
spawn "setxkbmap ca && xmodmap ~/.Xmodmap" | |
spawnOnce "~/apps/audio.sh" | |
myTerminal = "xfce4-terminal" | |
myModMask = mod4Mask -- Win key or Super_L | |
myBorderWidth = 1 | |
-----------------------------------------------------------------------------}}} | |
-- WORKSPACES {{{ | |
-------------------------------------------------------------------------------- | |
wsCODE = "\xf120" | |
wsWEB = "\xf268" | |
wsMUSIC = "\xf001" | |
wsCHAT = "\xf198" | |
wsCALLS = "\xf095" | |
wsGAMES = "\xf11b" | |
wsTWITCH = "\xf1e8" | |
wsSTREAM = "\xf03d" | |
wsSOUND = "\xf028" | |
wsJUNK = "\xf1f8" | |
myWorkspaces :: [String] | |
myWorkspaces = [wsCODE, wsWEB, wsMUSIC, wsCHAT, wsGAMES, wsTWITCH, wsCALLS, wsSTREAM, wsSOUND, wsJUNK] | |
-------------- | |
-- WINDOW RULES | |
-- --------- | |
myManageHook = composeAll | |
[ className =? "Gimp" --> doFloat | |
, className =? "awakened-poe-trade" --> doFloat | |
, className =? "chaos-recipe" --> doFloat | |
, className =? "Chaos-recipe" --> doFloat | |
, className =? "App" --> doFloat | |
, className =? "app" --> doFloat | |
, title =? "Archetype Cory Wong (GUI)" --> doFloat | |
, className =? "jetbrains-idea" --> doShift (wsCODE) | |
, className =? "Opera" --> doShift (wsWEB) | |
, className =? "Firefox" --> doShift (wsWEB) | |
, className =? "Chromium" --> doShift (wsWEB) | |
, className =? "Chrome" --> doShift (wsWEB) | |
, className =? "google-chrome" --> doShift (wsWEB) | |
, className =? "Google-chrome" --> doShift (wsWEB) | |
, className =? "Slack" --> doShift (wsCHAT) | |
, className =? "Mumble" --> doShift (wsCHAT) | |
, title =? "irc / weechat" --> doShift (wsCHAT) | |
, title =? "TeamSpeak 3" --> doShift (wsCHAT) | |
, className =? "obs" --> doShift (wsSTREAM) | |
, className =? "Patchage" --> doShift (wsSOUND) | |
, className =? "qjackctl" --> doShift (wsSOUND) | |
, className =? "Qjackctl" --> doShift (wsSOUND) | |
, title =? "Messages / Status" --> doShift (wsSOUND) | |
, title =? "JACK Audio Connection Kit [(default)] Active." --> doShift (wsSOUND) | |
, className =? "calfjackhost" --> doShift (wsSOUND) | |
, className =? "Patchage" --> doShift (wsSOUND) | |
, className =? "zoom" --> doShift (wsCALLS) | |
, title =? "meet.google.com is sharing your screen." --> doShift (wsJUNK) | |
, className =? "Rofi" --> doFloat | |
, isFullscreen --> doFullFloat | |
] | |
base03 = "#002b36" | |
base3 = "#fdf6e3" | |
red = "#dc322f" | |
blue = "#268bd2" | |
active = blue | |
hotPromptTheme = def | |
{ bgColor = red | |
, fgColor = base3 | |
, position = Top | |
, fgHLight = base03 | |
, bgHLight = active | |
, borderColor = base03 | |
, promptBorderWidth = 0 | |
, height = 20 | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment