cmc/dotfiles

Using GNU Stow to manage my dotfiles. config dotfiles macos stow

Commit 3bd858e379

3bd858e379e84f1655f57f88a1d9ee079d7e10b0

parent: 77cef250ca

Verified · cmc

cmc <hello@cleberg.net> · 2026-04-12 03:17 UTC

update skhd rules

Layout: unified · split

macos/skhd/.config/skhd/skhdrc +8 −142
@@ -1,148 +1,9 @@
1# ################################################################ #
2# THE FOLLOWING IS AN EXPLANATION OF THE GRAMMAR THAT SKHD PARSES. #
3# FOR SIMPLE EXAMPLE MAPPINGS LOOK FURTHER DOWN THIS FILE.. #
4# ################################################################ #
5
6# A list of all built-in modifier and literal keywords can
7# be found at https://github.com/koekeishiya/skhd/issues/1
8#
9# A hotkey is written according to the following rules:
10#
11# hotkey = <mode> '<' <action> | <action>
12#
13# mode = 'name of mode' | <mode> ',' <mode>
14#
15# action = <keysym> '[' <proc_map_lst> ']' | <keysym> '->' '[' <proc_map_lst> ']'
16# <keysym> ':' <command> | <keysym> '->' ':' <command>
17# <keysym> ';' <mode> | <keysym> '->' ';' <mode>
18#
19# keysym = <mod> '-' <key> | <key>
20#
21# mod = 'modifier keyword' | <mod> '+' <mod>
22#
23# key = <literal> | <keycode>
24#
25# literal = 'single letter or built-in keyword'
26#
27# keycode = 'apple keyboard kVK_<Key> values (0x3C)'
28#
29# proc_map_lst = * <proc_map>
30#
31# proc_map = <string> ':' <command> | <string> '~' |
32# '*' ':' <command> | '*' '~'
33#
34# string = '"' 'sequence of characters' '"'
35#
36# command = command is executed through '$SHELL -c' and
37# follows valid shell syntax. if the $SHELL environment
38# variable is not set, it will default to '/bin/bash'.
39# when bash is used, the ';' delimeter can be specified
40# to chain commands.
41#
42# to allow a command to extend into multiple lines,
43# prepend '\' at the end of the previous line.
44#
45# an EOL character signifies the end of the bind.
46#
47# -> = keypress is not consumed by skhd
48#
49# * = matches every application not specified in <proc_map_lst>
50#
51# ~ = application is unbound and keypress is forwarded per usual, when specified in a <proc_map>
52#
53# A mode is declared according to the following rules:
54#
55# mode_decl = '::' <name> '@' ':' <command> | '::' <name> ':' <command> |
56# '::' <name> '@' | '::' <name>
57#
58# name = desired name for this mode,
59#
60# @ = capture keypresses regardless of being bound to an action
61#
62# command = command is executed through '$SHELL -c' and
63# follows valid shell syntax. if the $SHELL environment
64# variable is not set, it will default to '/bin/bash'.
65# when bash is used, the ';' delimeter can be specified
66# to chain commands.
67#
68# to allow a command to extend into multiple lines,
69# prepend '\' at the end of the previous line.
70#
71# an EOL character signifies the end of the bind.
72
73# ############################################################### #
74# THE FOLLOWING SECTION CONTAIN SIMPLE MAPPINGS DEMONSTRATING HOW #
75# TO INTERACT WITH THE YABAI WM. THESE ARE SUPPOSED TO BE USED AS #
76# A REFERENCE ONLY, WHEN MAKING YOUR OWN CONFIGURATION.. #
77# ############################################################### #
78
79# focus window
80# alt - h : yabai -m window --focus west
81
82# swap managed window
83# shift + alt - h : yabai -m window --swap north
84
85# move managed window
86# shift + cmd - h : yabai -m window --warp east
87
88# balance size of windows
89# shift + alt - 0 : yabai -m space --balance
90
91# make floating window fill screen
92# shift + alt - up : yabai -m window --grid 1:1:0:0:1:1
93
94# make floating window fill left-half of screen
95# shift + alt - left : yabai -m window --grid 1:2:0:0:1:1
96
97# create desktop, move window and follow focus - uses jq for parsing json (brew install jq)
98# shift + cmd - n : yabai -m space --create && \
99# index="$(yabai -m query --spaces --display | jq 'map(select(."is-native-fullscreen" == false))[-1].index')" && \
100# yabai -m window --space "${index}" && \
101# yabai -m space --focus "${index}"
102
103# fast focus desktop
104# cmd + alt - x : yabai -m space --focus recent
105# cmd + alt - 1 : yabai -m space --focus 1
106
107# send window to desktop and follow focus
108# shift + cmd - z : yabai -m window --space next; yabai -m space --focus next
109# shift + cmd - 2 : yabai -m window --space 2; yabai -m space --focus 2
110
111# focus monitor
112# ctrl + alt - z : yabai -m display --focus prev
113# ctrl + alt - 3 : yabai -m display --focus 3
114
115# send window to monitor and follow focus
116# ctrl + cmd - c : yabai -m window --display next; yabai -m display --focus next
117# ctrl + cmd - 1 : yabai -m window --display 1; yabai -m display --focus 1
118
119# move floating window
120# shift + ctrl - a : yabai -m window --move rel:-20:0
121# shift + ctrl - s : yabai -m window --move rel:0:20
122
123# increase window size
124# shift + alt - a : yabai -m window --resize left:-20:0
125# shift + alt - w : yabai -m window --resize top:0:-20
126
127# decrease window size
128# shift + cmd - s : yabai -m window --resize bottom:0:-20
129# shift + cmd - w : yabai -m window --resize top:0:20
130
131# set insertion point in focused container
132# ctrl + alt - h : yabai -m window --insert west
133
134# toggle window zoom 1# toggle window zoom
135# alt - d : yabai -m window --toggle zoom-parent 2alt - d : yabai -m window --toggle zoom-parent
136# alt - f : yabai -m window --toggle zoom-fullscreen 3alt - f : yabai -m window --toggle zoom-fullscreen
137
138# toggle window split type
139# alt - e : yabai -m window --toggle split
140 4
141# float / unfloat window and center on screen 5# float / unfloat window and center on screen
142# alt - t : yabai -m window --toggle float --grid 4:4:1:1:2:2 6alt - t : yabai -m window --toggle float --grid 4:4:1:1:2:2
143
144# toggle sticky(+float), picture-in-picture
145# alt - p : yabai -m window --toggle sticky --toggle pip
146 7
147# open terminal, blazingly fast compared to iTerm/Hyper 8# open terminal, blazingly fast compared to iTerm/Hyper
148cmd - return : /Applications/iTerm.app/Contents/MacOS/iTerm2 9cmd - return : /Applications/iTerm.app/Contents/MacOS/iTerm2
@@ -152,3 +13,8 @@ cmd + shift - return : /Applications/Firefox.app/Contents/MacOS/firefox
152 13
153# toggle dark mode 14# toggle dark mode
154cmd + shift - d : osascript -e 'tell application "System Events" to tell appearance preferences to set dark mode to not dark mode' 15cmd + shift - d : osascript -e 'tell application "System Events" to tell appearance preferences to set dark mode to not dark mode'
16
17# ai
18cmd + alt + g : /Applications/ChatGPT.app/Contents/MacOS/ChatGPT
19cmd + alt + x : /Applications/Codex.app/Contents/MacOS/Codex
20cmd + alt + c : /Applications/Claude.app/Contents/MacOS/Claude