pub-solar-os/profiles/graphical/xmonad/_xmonad.nix
2020-06-09 10:36:38 -06:00

107 lines
3.5 KiB
Nix

{ autostart, screenshots, touchtoggle, dzvol, stoggle }: ''
-- Function for fullscreen toggle
fullToggle :: X ()
fullToggle = do
spawn "${stoggle}"
sendMessage $ Toggle NBFULL
sendMessage $ SetStruts [] [minBound .. maxBound]
-- function to call dzen2 and show volume in the middle of the screen
dzcall :: String
dzcall = "${dzvol}/bin/dzvol -fn 'DejaVu Sans Mono for Powerline-16:normal'"
myAutostart :: X ()
myAutostart = do
spawn "${autostart}"
setWMName "LG3D"
sendMessage $ SetStruts [] [minBound .. maxBound]
setDefaultCursor xC_left_ptr
-- Set custom keybinds below following the structure:
-- ( ( ModifierKey, KeyPress ), Action )
myKeys :: [ ( ( KeyMask, KeySym ), X () ) ]
myKeys =
-- toggle fullscreen, along with power state
[ ( ( myModKey , xK_f )
, fullToggle
)
-- resize windows in master pane
, ( ( myModKey , xK_Left )
, sendMessage MirrorExpand
)
, ( ( myModKey , xK_Right )
, sendMessage MirrorShrink
)
, ( ( myModKey , xK_Up )
, sendMessage MirrorExpand
)
, ( ( myModKey , xK_Down )
, sendMessage MirrorShrink
)
-- toggle systray
, ( ( myModKey .|. shiftMask , xK_f )
, sendMessage ToggleStruts
)
-- lower volume
, ( ( 0 , xF86XK_AudioLowerVolume )
, spawn dzcall
)
-- raise volume
, ( ( 0 , xF86XK_AudioRaiseVolume )
, spawn dzcall
)
-- mute volume
, ( ( 0 , xF86XK_AudioMute )
, spawn dzcall
)
-- start qutebrowser
, ( ( myModKey , xK_b )
, spawn "qute"
)
-- screen lock
, ( ( myModKey .|. shiftMask , xK_l )
, spawn "loginctl lock-session"
)
-- screenshot
, ( ( myModKey , xK_Print )
, spawn "maim -u \
\ | png2ff | xz -9 - \
\ > ~/${screenshots}/$(date +%m.%d.%y_%I.%M.%S_%p).ff.xz"
)
-- screenshot focused window
, ( ( myModKey .|. shiftMask , xK_Print )
, spawn "maim -u -i$(xdotool getactivewindow) \
\ | png2ff \
\ | xz -9 - \
\ > ~/${screenshots}/$(date +%m.%d.%y_%I.%M.%S_%p).ff.xz"
)
-- screenshot selection to clipboard
, ( ( myModKey .|. controlMask , xK_Print )
, spawn "maim -s -u \
\ | xclip -selection clipboard -t image/png"
)
-- screenshot selection file
, ( ( myModKey .|. controlMask .|. shiftMask, xK_Print )
, spawn "maim -s -u \
\ | png2ff \
\ | xz -9 - \
\ > ~/${screenshots}/$(date +%m.%d.%y_%I.%M.%S_%p).ff.xz"
)
-- screenshot selection to imgur and paste url in clipboard
, ( ( myModKey .|. shiftMask , xK_i )
, spawn "maim -s -u /tmp/img.png; \
\ imgurbash2 /tmp/img.png; \
\ rm /tmp/img.png"
)
-- dmenu frontend for network manager
, ( ( myModKey , xK_n )
, spawn "networkmanager_dmenu -fn 'DejaVu Sans Mono for Powerline-16:normal'"
)
]
''