pub-solar-os/profiles/graphical/xmonad/_xmonad.nix
Timothy DeHerrera 77a635348f
graphical: set volume settings via window manager
sound.mediaKeys doesn't work with pulseaudio enabled, but some programs
e.g. Firefox require it.
2020-06-25 21:54:34 -06:00

111 lines
3.7 KiB
Nix

{ autostart, screenshots, touchtoggle, pkgs, stoggle, volnoti }:
let inherit (pkgs) alsaUtils;
in ''
-- Function for fullscreen toggle
fullToggle :: X ()
fullToggle = do
spawn "${stoggle}"
sendMessage $ Toggle NBFULL
sendMessage $ SetStruts [] [minBound .. maxBound]
setVolume :: String -> X ()
setVolume options = do
spawn ("${alsaUtils}/bin/amixer -q set Master " ++ options)
spawn "${volnoti}"
myAutostart :: X ()
myAutostart = do
spawn "${autostart}"
spawn "feh --bg-fill --no-fehbg ${pkgs.adapta-backgrounds}/share/backgrounds/adapta/tri-fadeno.jpg"
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 )
, setVolume "2%- unmute"
)
-- raise volume
, ( ( 0 , xF86XK_AudioRaiseVolume )
, setVolume "2%+ unmute"
)
-- mute volume
, ( ( 0 , xF86XK_AudioMute )
, setVolume "toggle"
)
-- 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 'monospace'"
)
]
''