Update keybindings
							parent
							
								
									bac32dfe10
								
							
						
					
					
						commit
						b60c8514b7
					
				| 
						 | 
				
			
			@ -158,65 +158,106 @@ myConfig =
 | 
			
		|||
      layoutHook = avoidStruts myLayoutHook,
 | 
			
		||||
      handleEventHook = dynamicPropertyChange "WM_NAME" myDynamicManageHook <> handleEventHook def <> Hacks.windowedFullscreenFixEventHook
 | 
			
		||||
    }
 | 
			
		||||
    `removeKeysP` myRemoveKeysP
 | 
			
		||||
    `additionalKeysP` myKeysP
 | 
			
		||||
    `removeKeysP` myRemoveKeys
 | 
			
		||||
    `additionalKeysP` myKeys
 | 
			
		||||
    `additionalMouseBindings` myMouseBindings
 | 
			
		||||
 | 
			
		||||
-- }}}
 | 
			
		||||
 | 
			
		||||
-- Keybindings {{{
 | 
			
		||||
 | 
			
		||||
-- Keybindings to be added/overridden
 | 
			
		||||
myKeysP =
 | 
			
		||||
  [ -- Fit floating windows back to layout
 | 
			
		||||
    ("M-S-<Space>", withFocused $ windows . W.sink),
 | 
			
		||||
    -- Launchers
 | 
			
		||||
    ("M-S-p", spawn "alacritty --class Launcher,Launcher"),
 | 
			
		||||
    ("<F8>", spawn "keepassxc"),
 | 
			
		||||
    ("M-p", spawn "albert toggle"),
 | 
			
		||||
    -- Map insert key to paste from clipboard
 | 
			
		||||
myKeys :: [(String, X ())]
 | 
			
		||||
myKeys =
 | 
			
		||||
  [ ("M-<Space> s", unfloatFocusedW),
 | 
			
		||||
    ("M-<Space> <Space>", nextLayout),          -- Cycle through layouts
 | 
			
		||||
    ("M-<Space> S-<Space>", defaultLayout),     --
 | 
			
		||||
    ("M-<Space> M-<Space>", nextLayout),        -- ..fat finger
 | 
			
		||||
    ("M-<Space> M-S-<Space>", defaultLayout),   --
 | 
			
		||||
    ("M-S-p", spawnTermLauncher),
 | 
			
		||||
    ("<F8>",  spawnKeepassXC),
 | 
			
		||||
    ("M-z",   spawnZettelkasten),
 | 
			
		||||
    ("M-p",   spawnLauncher),
 | 
			
		||||
    ("<Insert>", pasteSelection),
 | 
			
		||||
    -- Map print screen to take a screenshot with flameshot
 | 
			
		||||
    ("<Print>", spawn "flameshot gui"),
 | 
			
		||||
    -- Map audio keys to control volume
 | 
			
		||||
    ("<XF86AudioRaiseVolume>", spawn "pactl set-sink-volume @DEFAULT_SINK@ +5%"),
 | 
			
		||||
    ("<XF86AudioLowerVolume>", spawn "pactl set-sink-volume @DEFAULT_SINK@ -5%"),
 | 
			
		||||
    ("<XF86AudioMute>", spawn "pactl set-sink-mute @DEFAULT_SINK@ toggle"),
 | 
			
		||||
    -- Map brightness keys to control brightness with brightnessctl
 | 
			
		||||
    ("<XF86MonBrightnessUp>", spawn "brightnessctl set 20+"),
 | 
			
		||||
    ("<XF86MonBrightnessDown>", spawn "brightnessctl set 20-"),
 | 
			
		||||
    -- Map brightness keys + shift to adjust redshift temperature
 | 
			
		||||
    ("S-<XF86MonBrightnessUp>", spawn "echo $(($(cat /tmp/temperature) + 50)) > /tmp/temperature && redshift -O $(cat /tmp/temperature) -P && notify < /tmp/temperature -h string:x-canonical-private-synchronous:anything"),
 | 
			
		||||
    ("S-<XF86MonBrightnessDown>", spawn "echo $(($(cat /tmp/temperature) - 50)) > /tmp/temperature && redshift -O $(cat /tmp/temperature) -P && notify < /tmp/temperature -h string:x-canonical-private-synchronous:anything"),
 | 
			
		||||
    -- Reset redshift temperature
 | 
			
		||||
    ("M-S-<XF86MonBrightnessUp>", spawn "echo 3000 > /tmp/temperature && redshift -x"),
 | 
			
		||||
    ("M-S-<XF86MonBrightnessDown>", spawn "echo 3000 > /tmp/temperature && redshift -x"),
 | 
			
		||||
    -- Use power down key to suspend
 | 
			
		||||
    ("<XF86PowerOff>", spawn "systemctl suspend"),
 | 
			
		||||
    -- FIXME: Spawn firefox in fullscreen, but not in kiosk mode
 | 
			
		||||
    ("M-S-b", spawn "firefox --fullscreen"),
 | 
			
		||||
    -- Magnify window using arrow keys
 | 
			
		||||
    ("M-=", sendMessage MagnifyMore >> sendMessage Mag.ToggleOn),
 | 
			
		||||
    ("M--", sendMessage MagnifyLess >> sendMessage Mag.ToggleOn),
 | 
			
		||||
    -- Reset magnification
 | 
			
		||||
    ("M-S-=", sendMessage Mag.ToggleOff),
 | 
			
		||||
    ("<XF86Calculator>", spawn "alacritty --class 'Calculator' -e ipython -i /home/h/.bin/calc.py"),
 | 
			
		||||
    -- playerctl ncspot using arrow keys
 | 
			
		||||
    ("M-<Right>", spawn "playerctl next"),
 | 
			
		||||
    ("M-<Left>", spawn "playerctl previous"),
 | 
			
		||||
    ("M-<Up>", spawn "playerctl play"),
 | 
			
		||||
    ("M-<Down>", spawn "playerctl pause")
 | 
			
		||||
  ] ++ [
 | 
			
		||||
    (m ++ k, windows $ f w) |
 | 
			
		||||
      (m, f) <- zip ["M-", "M-S-"]
 | 
			
		||||
                    [W.greedyView, W.shift],
 | 
			
		||||
                    (k, w) <- zip myWorkspaceKeys (withScreen 0 myWorkspaces) ++ zip mySharedWorkspaceKeys (withScreen 1 mySharedWorkspaces)
 | 
			
		||||
    ("<Print>", printScreen),
 | 
			
		||||
    ("<XF86AudioRaiseVolume>", raiseVol),       -- Audio volume & playback
 | 
			
		||||
    ("<XF86AudioLowerVolume>", lowerVol),       --
 | 
			
		||||
    ("<XF86AudioMute>", mute),                  --
 | 
			
		||||
    ("M-<Right>", nextTrack),                   --
 | 
			
		||||
    ("M-<Left>", prevTrack),                    --
 | 
			
		||||
    ("M-<Up>", play),                           --
 | 
			
		||||
    ("M-<Down>", pause),                        --
 | 
			
		||||
    ("<XF86MonBrightnessUp>", brighten),        -- Brightness & hue controls
 | 
			
		||||
    ("<XF86MonBrightnessDown>", dim),           --
 | 
			
		||||
    ("S-<XF86MonBrightnessUp>", warm),          --
 | 
			
		||||
    ("S-<XF86MonBrightnessDown>", cool),        --
 | 
			
		||||
    ("M-S-<XF86MonBrightnessUp>", resetTemp),   --
 | 
			
		||||
    ("M-S-<XF86MonBrightnessDown>", resetTemp), --
 | 
			
		||||
    ("M-S-b", fullscreenBrowser),
 | 
			
		||||
    ("<XF86Calculator>", spawnCalculator),
 | 
			
		||||
    ("<XF86PowerOff>", spawn "systemctl suspend") --TODO: Only enable this on laptop
 | 
			
		||||
  ] ++
 | 
			
		||||
  [ (m ++ k, windows $ f w) |
 | 
			
		||||
    (m, f) <- zip ["M-", "M-S-"]
 | 
			
		||||
                  [W.greedyView, W.shift],
 | 
			
		||||
                  (k, w) <- zip myWorkspaceKeys
 | 
			
		||||
                                (withScreen 0 myWorkspaces)
 | 
			
		||||
                         ++ zip mySharedWorkspaceKeys
 | 
			
		||||
                                (withScreen 1 mySharedWorkspaces)
 | 
			
		||||
  ]
 | 
			
		||||
 | 
			
		||||
zipKeyPrefixes :: [String] -> [String] -> [String]
 | 
			
		||||
zipKeyPrefixes prefixes keys = [prefix ++ key | prefix <- prefixes, key <- keys]
 | 
			
		||||
 | 
			
		||||
-- Keybindings to be removed
 | 
			
		||||
myRemoveKeysP = "M-S-q" : zipKeyPrefixes ["M-", "M-S-"] (map show [ 1..5 ])
 | 
			
		||||
myRemoveKeys :: [String]
 | 
			
		||||
myRemoveKeys = "M-S-q" : zipKeyPrefixes ["M-", "M-S-"] (map show [ 1..5 ])
 | 
			
		||||
 | 
			
		||||
myMouseBindings = []
 | 
			
		||||
 | 
			
		||||
unfloatFocusedW :: X ()
 | 
			
		||||
unfloatFocusedW = withFocused $ windows . W.sink
 | 
			
		||||
 | 
			
		||||
myStartupHook :: X ()
 | 
			
		||||
nextLayout = sendMessage NextLayout
 | 
			
		||||
 | 
			
		||||
defaultLayout :: X ()
 | 
			
		||||
defaultLayout = setLayout $ Layout myLayoutHook
 | 
			
		||||
 | 
			
		||||
spawnZettelkasten :: X ()
 | 
			
		||||
spawnZettelkasten = spawn "alacritty --class Zettelkasten,Zettelkasten -e nvim $(cat ~/.zk/current-zettel.txt)"
 | 
			
		||||
 | 
			
		||||
spawnKeepassXC :: X ()
 | 
			
		||||
spawnKeepassXC = spawn "keepassxc"
 | 
			
		||||
 | 
			
		||||
fullscreenBrowser :: X ()
 | 
			
		||||
fullscreenBrowser = spawn "firefox --fullscreen"
 | 
			
		||||
 | 
			
		||||
spawnLauncher, spawnTermLauncher :: X ()
 | 
			
		||||
spawnLauncher = spawn "albert toggle"
 | 
			
		||||
spawnTermLauncher = spawn "alacritty --class Launcher,Launcher"
 | 
			
		||||
spawnCalculator = spawn "alacritty --class 'Calculator' -e ipython -i /home/h/.bin/calc.py"
 | 
			
		||||
 | 
			
		||||
printScreen :: X ()
 | 
			
		||||
printScreen = spawn "flameshot gui"
 | 
			
		||||
 | 
			
		||||
raiseVol, lowerVol, mute :: X ()
 | 
			
		||||
raiseVol = spawn "pactl set-sink-volume @DEFAULT_SINK@ +5%"
 | 
			
		||||
lowerVol = spawn "pactl set-sink-volume @DEFAULT_SINK@ -5%"
 | 
			
		||||
mute = spawn "pactl set-sink-mute @DEFAULT_SINK@ toggle"
 | 
			
		||||
 | 
			
		||||
nextTrack, prevTrack, play, pause :: X ()
 | 
			
		||||
nextTrack = spawn "playerctl next"
 | 
			
		||||
prevTrack = spawn "playerctl previous"
 | 
			
		||||
play = spawn "playerctl play"
 | 
			
		||||
pause = spawn "playerctl pause"
 | 
			
		||||
 | 
			
		||||
brighten, dim, warm, cool, resetTemp :: X ()
 | 
			
		||||
brighten = spawn "brightnessctl set 20+"
 | 
			
		||||
dim = spawn "brightnessctl set 20-"
 | 
			
		||||
warm = spawn "echo $(($(cat /tmp/temperature) + 50)) > /tmp/temperature && redshift -O $(cat /tmp/temperature) -P && notify < /tmp/temperature -h string:x-canonical-private-synchronous:anything"
 | 
			
		||||
cool = spawn "echo $(($(cat /tmp/temperature) - 50)) > /tmp/temperature && redshift -O $(cat /tmp/temperature) -P && notify < /tmp/temperature -h string:x-canonical-private-synchronous:anything"
 | 
			
		||||
resetTemp = spawn "echo 3000 > /tmp/temperature && redshift -x"
 | 
			
		||||
 | 
			
		||||
-- }}}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue