aboutsummaryrefslogtreecommitdiffstats
path: root/macos
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2020-04-06 20:43:17 +0100
committerYann Herklotz <git@yannherklotz.com>2020-04-06 20:43:17 +0100
commit0ef187b518617ffd862043a318cd3178f64fe473 (patch)
treec588fdced017d10623d941c1a6e3d7378ba34c2e /macos
parentd20b40b7ff71bba80265e35fa647c09a2e1755d5 (diff)
downloaddotfiles-0ef187b518617ffd862043a318cd3178f64fe473.tar.gz
dotfiles-0ef187b518617ffd862043a318cd3178f64fe473.zip
Add MacOS configuration for yabai and skhd
Diffstat (limited to 'macos')
-rw-r--r--macos/skhd/skhdrc189
-rwxr-xr-xmacos/yabai/yabairc17
2 files changed, 206 insertions, 0 deletions
diff --git a/macos/skhd/skhdrc b/macos/skhd/skhdrc
new file mode 100644
index 0000000..a634da0
--- /dev/null
+++ b/macos/skhd/skhdrc
@@ -0,0 +1,189 @@
+# ################################################################ #
+# THE FOLLOWING IS AN EXPLANATION OF THE GRAMMAR THAT SKHD PARSES. #
+# FOR SIMPLE EXAMPLE MAPPINGS LOOK FURTHER DOWN THIS FILE.. #
+# ################################################################ #
+
+# A list of all built-in modifier and literal keywords can
+# be found at https://github.com/koekeishiya/skhd/issues/1
+#
+# A hotkey is written according to the following rules:
+#
+# hotkey = <mode> '<' <action> | <action>
+#
+# mode = 'name of mode' | <mode> ',' <mode>
+#
+# action = <keysym> '[' <proc_map_lst> ']' | <keysym> '->' '[' <proc_map_lst> ']'
+# <keysym> ':' <command> | <keysym> '->' ':' <command>
+# <keysym> ';' <mode> | <keysym> '->' ';' <mode>
+#
+# keysym = <mod> '-' <key> | <key>
+#
+# mod = 'modifier keyword' | <mod> '+' <mod>
+#
+# key = <literal> | <keycode>
+#
+# literal = 'single letter or built-in keyword'
+#
+# keycode = 'apple keyboard kVK_<Key> values (0x3C)'
+#
+# proc_map_lst = * <proc_map>
+#
+# proc_map = <string> ':' <command> | <string> '~' |
+# '*' ':' <command> | '*' '~'
+#
+# string = '"' 'sequence of characters' '"'
+#
+# command = command is executed through '$SHELL -c' and
+# follows valid shell syntax. if the $SHELL environment
+# variable is not set, it will default to '/bin/bash'.
+# when bash is used, the ';' delimeter can be specified
+# to chain commands.
+#
+# to allow a command to extend into multiple lines,
+# prepend '\' at the end of the previous line.
+#
+# an EOL character signifies the end of the bind.
+#
+# -> = keypress is not consumed by skhd
+#
+# * = matches every application not specified in <proc_map_lst>
+#
+# ~ = application is unbound and keypress is forwarded per usual, when specified in a <proc_map>
+#
+# A mode is declared according to the following rules:
+#
+# mode_decl = '::' <name> '@' ':' <command> | '::' <name> ':' <command> |
+# '::' <name> '@' | '::' <name>
+#
+# name = desired name for this mode,
+#
+# @ = capture keypresses regardless of being bound to an action
+#
+# command = command is executed through '$SHELL -c' and
+# follows valid shell syntax. if the $SHELL environment
+# variable is not set, it will default to '/bin/bash'.
+# when bash is used, the ';' delimeter can be specified
+# to chain commands.
+#
+# to allow a command to extend into multiple lines,
+# prepend '\' at the end of the previous line.
+#
+# an EOL character signifies the end of the bind.
+
+# Open a new terminal
+cmd - return : open /System/Applications/Utilities/Terminal.app
+
+# focus window
+alt - u : yabai -m window --focus north
+alt - e : yabai -m window --focus south
+alt - n : yabai -m window --focus west
+alt - i : yabai -m window --focus east
+
+# swap managed window
+shift + alt - u : yabai -m window --swap north
+shift + alt - e : yabai -m window --swap south
+shift + alt - n : yabai -m window --swap west
+shift + alt - i : yabai -m window --swap east
+
+# move managed window
+shift + cmd - u : yabai -m window --warp north
+shift + cmd - e : yabai -m window --warp south
+shift + cmd - n : yabai -m window --warp west
+shift + cmd - h : yabai -m window --warp east
+
+# balance size of windows
+shift + alt - 0 : yabai -m space --balance
+
+# make floating window fill screen
+shift + alt - up : yabai -m window --grid 1:1:0:0:1:1
+
+# make floating window fill left-half of screen
+shift + alt - left : yabai -m window --grid 1:2:0:0:1:1
+
+# create desktop, move window and follow focus - uses jq for parsing json (brew install jq)
+shift + cmd - n : yabai -m space --create && \
+ index="$(yabai -m query --spaces --display | jq 'map(select(."native-fullscreen" == 0))[-1].index')" && \
+ yabai -m window --space "${index}" && \
+ yabai -m space --focus "${index}"
+
+# fast focus desktop
+alt - c : yabai -m space --focus recent
+alt - x : yabai -m space --focus next
+alt - z : yabai -m space --focus prev
+alt - 1 : yabai -m space --focus 1
+alt - 2 : yabai -m space --focus 2
+alt - 3 : yabai -m space --focus 3
+alt - 4 : yabai -m space --focus 4
+alt - 5 : yabai -m space --focus 5
+alt - 6 : yabai -m space --focus 6
+alt - 7 : yabai -m space --focus 7
+alt - 8 : yabai -m space --focus 8
+alt - 9 : yabai -m space --focus 9
+
+# send window to desktop and follow focus
+shift + alt - x : yabai -m window --space next; yabai -m space --focus next
+shift + alt - z : yabai -m window --space prev; yabai -m space --focus prev
+shift + alt - 1 : yabai -m window --space 1; yabai -m space --focus 1
+shift + alt - 2 : yabai -m window --space 2; yabai -m space --focus 2
+shift + alt - 3 : yabai -m window --space 3; yabai -m space --focus 3
+shift + alt - 4 : yabai -m window --space 4; yabai -m space --focus 4
+shift + alt - 5 : yabai -m window --space 5; yabai -m space --focus 5
+shift + alt - 6 : yabai -m window --space 6; yabai -m space --focus 6
+shift + alt - 7 : yabai -m window --space 7; yabai -m space --focus 7
+shift + alt - 8 : yabai -m window --space 8; yabai -m space --focus 8
+shift + alt - 9 : yabai -m window --space 9; yabai -m space --focus 9
+
+# focus monitor
+ctrl + alt - x : yabai -m display --focus prev
+ctrl + alt - z : yabai -m display --focus next
+ctrl + alt - 1 : yabai -m display --focus 1
+ctrl + alt - 2 : yabai -m display --focus 2
+ctrl + alt - 3 : yabai -m display --focus 3
+
+# send window to monitor and follow focus
+shift + ctrl - z : yabai -m window --display prev; yabai -m display --focus prev
+shift + ctrl - x : yabai -m window --display next; yabai -m display --focus next
+shift + ctrl - 1 : yabai -m window --display 1; yabai -m display --focus 1
+shift + ctrl - 2 : yabai -m window --display 2; yabai -m display --focus 2
+shift + ctrl - 3 : yabai -m window --display 3; yabai -m display --focus 3
+
+# move floating window
+shift + ctrl - a : yabai -m window --move rel:-20:0
+shift + ctrl - r : yabai -m window --move rel:0:20
+shift + ctrl - w : yabai -m window --move rel:0:-20
+shift + ctrl - s : yabai -m window --move rel:20:0
+
+# increase window size
+shift + alt - a : yabai -m window --resize left:-20:0
+shift + alt - w : yabai -m window --resize top:0:-20
+shift + alt - r : yabai -m window --resize bottom:0:20
+shift + alt - s : yabai -m window --resize right:20:0
+
+# decrease window size
+shift + cmd - r : yabai -m window --resize bottom:0:-20
+shift + cmd - w : yabai -m window --resize top:0:20
+shift + cmd - a : yabai -m window --resize left:20:0
+shift + cmd - s : yabai -m window --resize right:-20:0
+
+# set insertion point in focused container
+ctrl + alt - n : yabai -m window --insert west
+ctrl + alt - u : yabai -m window --insert north
+ctrl + alt - i : yabai -m window --insert east
+ctrl + alt - e : yabai -m window --insert south
+
+# toggle window zoom
+alt - d : yabai -m window --toggle zoom-parent
+alt - f : yabai -m window --toggle zoom-fullscreen
+
+# toggle window split type
+alt - m : yabai -m window --toggle split
+
+# float / unfloat window and center on screen
+alt - t : yabai -m window --toggle float;\
+ yabai -m window --grid 4:4:1:1:2:2
+
+# toggle sticky(+float), topmost, border and picture-in-picture
+alt - p : yabai -m window --toggle sticky;\
+ yabai -m window --toggle topmost;\
+ yabai -m window --toggle border;\
+ yabai -m window --toggle pip
diff --git a/macos/yabai/yabairc b/macos/yabai/yabairc
new file mode 100755
index 0000000..a509658
--- /dev/null
+++ b/macos/yabai/yabairc
@@ -0,0 +1,17 @@
+#!/bin/zsh
+
+yabai -m config mouse_follows_focus off
+yabai -m config focus_follows_mouse off
+
+yabai -m config window_shadow float
+yabai -m config window_topmost on
+
+yabai -m config layout bsp
+yabai -m config top_padding 5
+yabai -m config bottom_padding 5
+yabai -m config left_padding 5
+yabai -m config right_padding 5
+yabai -m config window_gap 5
+
+yabai -m rule --add app=Emacs manage=on
+yabai -m rule --add app="System Preferences" manage=off