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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
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) <+> (className =? "trayer" --> doIgnore) <+> manageHook def
, handleEventHook = handleEventHook def <+> docksEventHook
-- , layoutHook = smartBorders $ lessBorders OnlyFloat $ avoidStruts $ layoutHook def
, layoutHook = smartBorders $ avoidStruts $ layoutHook def
, modMask = mod4Mask -- User Super instead of Alt
, terminal = myTerminal
, startupHook = startup
} `additionalKeys` myKeyBindings
myTerminal = "gnome-terminal"
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=$(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 "~/dev/libre/dotfiles/scripts/single-monitor.sh")
-- xrandr three monitor setup
, ((mod4Mask .|. controlMask, xK_3),
spawn "~/dev/libre/dotfiles/scripts/three-monitors.sh")
-- restart network
, ((mod4Mask, xK_x),
spawn "gksudo -S systemctl restart network-manager")
-- toggle appearence of xmobar
-- https://stackoverflow.com/a/27646652
, ((mod4Mask .|. shiftMask, xK_f), sendMessage ToggleStruts)
]
startup :: X()
startup = do
spawn "xbacklight =100"
spawn "xmobar ~/.xmobarrc"
spawn "killall trayer; trayer --edge top --align right --SetDockType false --SetPartialStrut false --expand false --width 10 --transparent true --tint 0x191970 --height 17 --monitor 1"
spawn "nm-applet"
spawn "~/dev/libre/dotfiles/scripts/once-only-owncloud.sh"
setWMName "LG3D" -- https://stackoverflow.com/questions/30742662/java-swing-gui-not-displaying-in-xmonad
|