1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
import XMonad
import XMonad.Actions.SpawnOn(spawnHere)
import XMonad.Hooks.ManageDocks
import XMonad.Util.EZConfig(additionalKeysP)
import XMonad.Layout.NoBorders
import XMonad.Hooks.SetWMName
import XMonad.Hooks.ManageHelpers
import XMonad.Util.Run(spawnPipe)
import XMonad.Layout.ResizableTile
import XMonad.Layout.ResizableTile(MirrorResize(MirrorShrink, MirrorExpand))
import XMonad.StackSet
main :: IO ()
main = do
xmproc <- spawnPipe "xmobar"
xmproc <- spawnPipe "xss-lock i3lock"
xmonad $ docks $ def
-- Fullscreen handling:
-- https://stackoverflow.com/questions/20446348/xmonad-toggle-fullscreen-xmobar
{ manageHook = manageDocks <+> (isFullscreen --> doFullFloat) <+> (className =? "trayer" --> doIgnore) <+> manageHook def
-- , handleEventHook = handleEventHook def <+> docksEventHook
, layoutHook = myLayoutHook
, modMask = mod4Mask -- User Super instead of Alt
, terminal = "st"
, startupHook = myStartup
} `additionalKeysP` myKeyPBindings
myKeyPBindings :: [(String, X ())]
myKeyPBindings =
[
("<F1>", spawn "volume toggle")
, ("<F2>", spawn "volume down")
, ("<F3>", spawn "volume up")
, ("M-S-s", spawn "volume rotate")
, ("<F4>", spawn "player backward")
, ("S-<F4>", spawn "player previous")
, ("<F5>", spawn "player play-pause")
, ("S-<F5>", spawn "player rotate")
, ("<F6>", spawn "player forward")
, ("S-<F6>", spawn "player next")
, ("<F7>", spawn "brightnessctl -- set -10%")
, ("<F8>", spawn "brightnessctl -- set +10%")
, ("M-c", spawn "mate-calc")
, ("M-u", spawn "wms uuid")
, ("M-t", spawn "wms date")
, ("M-m", spawn "wms clear-notification")
, ("M-p", spawn "menu bin")
, ("M-o", spawn "menu emoji")
, ("M-v", spawn "menu clipboard")
, ("M-i", spawn "menu password")
, ("C-M-i", spawn "menu username")
, ("C-M-S-i", spawn "menu yubikey")
, ("<Print>", spawn "shot")
, ("M-<Print>", spawn "shot -m")
-- Stop floating
, ("M-S-<Space>", withFocused $ windows . XMonad.StackSet.sink)
-- Lock screen
, ("C-M-l", spawn "loginctl lock-session")
-- Toggle appearence of xmobar
-- https://stackoverflow.com/a/27646652
, ("M-f", sendMessage ToggleStruts)
, ("M-ç", spawn "xmessage 'xmonad EuAndreh debug'")
-- Vertically resize, taken from:
-- https://stackoverflow.com/questions/25857674/xmonad-vertical-resize-tile-window
, ("M-a", sendMessage MirrorExpand)
, ("M-z", sendMessage MirrorShrink)
]
myLayoutHook =
smartBorders $ avoidStruts $ (tiled ||| Mirror tiled ||| Full)
where
tiled = ResizableTall nmaster delta ratio []
nmaster = 1
delta = 3/100
ratio = 1/2
myStartup :: X ()
myStartup = do
-- Taken from:
-- https://stackoverflow.com/questions/30742662/java-swing-gui-not-displaying-in-xmonad
setWMName "LG3D"
|