SKHD provides global hotkeys for seamless application launching and window management integration with Yabai.
SKHD (Simple Hotkey Daemon) is a lightweight hotkey daemon for macOS that enables global keyboard shortcuts. It’s tightly integrated with Yabai for window management and provides quick access to frequently used applications.
Global Hotkeys : System-wide keyboard shortcuts
Application Launching : Quick access to development tools
Window Management : Integration with Yabai tiling
Modifier Keys : Uses meh (ctrl+alt+shift) and hyper (ctrl+alt+cmd+shift)
All application shortcuts use the meh key (ctrl+alt+shift) for consistency and to avoid conflicts.
Shortcut Application Description meh + aGhostty Primary terminal emulator meh + fKitty Secondary terminal emulator on display 2, space 15 meh + xChatGPT AI assistant on display 2, space 16 meh + vtldraw offline Whiteboard on display 2, space 17 meh + gCursor AI-powered code editor meh + yAlter Chat hub
Shortcut Application Description meh + sDia Primary web browser meh + eEgo Lightweight browser on space 1 with Ghostty meh + dArc Browser on space 13 meh + zZen Browser Alternative browser meh + kSlack Team communication meh + rTelegram Messaging app meh + uZalo Messaging app meh + tDiscord Community chat meh + hWhatsApp Messaging app on space 13 meh + jCliq Team communication on space 14
Shortcut Application Description meh + cClaude AI assistant on display 2, space 18 meh + lPerplexity AI search engine meh + iStructured Task and time management meh + wLibreOffice Office suite meh + pFoxit PDF Reader PDF reader meh + oPreview macOS preview app meh + msuperwhisper Voice input meh + bBorumi Productivity app
SKHD integrates with Yabai for powerful window management capabilities.
Shortcut Action Description ctrl + shift + hFocus West Move focus to left window ctrl + shift + jFocus South Move focus to bottom window ctrl + shift + kFocus North Move focus to top window ctrl + shift + lFocus East Move focus to right window ctrl + shift + tabFocus Stack Toggle the visible window in a stacked space
Shortcut Action Description cmd + shift + hWarp West Move window to the left cmd + shift + lWarp East Move window to the right
Shortcut Action Description hyper + leftResize Left Decrease width from left hyper + downResize Down Increase height downward hyper + upResize Up Decrease height upward hyper + rightResize Right Increase width to right
Shortcut Action Description hyper + 1-9Send to Space Move window to specific space hyper + tabSend to Recent Move window to recent space cmd + ctrl + 1-4Move & Follow Move window and follow to space cmd + ctrl + ←/→Move to Display Move window to previous/next display and follow
Shortcut Action Description hyper + eBalance Windows Equalize window sizes hyper + fToggle Fullscreen Zoom fullscreen shift + alt + fNative Fullscreen macOS native fullscreen shift + alt + spaceToggle Float Float/unfloat window alt + rRotate Clockwise Rotate layout 270° shift + alt + rRotate Counter Rotate layout 90°
Shortcut Action Description hyper + iToggle Gaps Enable/disable gaps and padding hyper + oToggle Padding Toggle padding only
Location : dotfiles/skhd/.config/skhd/skhdrc
Reload : skhd --restart-service
# Modifier key definitions
meh = ctrl + alt + shift # Primary modifier for apps
hyper = ctrl + alt + cmd + shift # Secondary modifier for window management
# Template for new application
meh - [key] : open "/Applications/AppName.app"
meh - q : open "/Applications/Notion.app"
# Template for window actions
[ modifier ] - [ key ] : yabai -m window -- [ action ] [ parameters ]
# Example: New resize shortcut
hyper - 0 : yabai -m space --balance
brew services restart skhd
brew services list | grep skhd
# Check if SKHD is running
# Check for configuration errors
# SKHD needs accessibility permissions
# Go to: System Preferences → Security & Privacy → Privacy → Accessibility
# Verify application path
ls "/Applications/AppName.app"
# Check if application exists
mdfind "kMDItemDisplayName == 'AppName'"
open "/Applications/AppName.app"
# Check for conflicting shortcuts
# Some apps may override global shortcuts
# Use different modifier combinations
# Consider using hyper instead of meh for some shortcuts
# Check configuration syntax
skhd --config-file ~/.config/skhd/skhdrc --verbose
# Find key codes for special keys
# Press the key you want to map
# Note the key code displayed
# Minimize delay in shortcuts
# Avoid complex shell commands in shortcuts
# Use direct application paths instead of scripts when possible
# Monitor SKHD memory usage
# SKHD should use minimal memory
# If high usage, check for configuration loops
# Different shortcuts based on active application
# Example: Different behavior in terminal vs browser
# Create different modes for different workflows
# Example: Development mode vs presentation mode
# Call custom scripts from shortcuts
meh - p : ~/.local/bin/project-setup.sh
# Pass parameters to scripts
meh - shift - p : ~/.local/bin/project-setup.sh --template react
# Open different apps based on context
# Example: Open appropriate terminal based on current project
Window management shortcuts directly control Yabai
Seamless tiling and space management
Consistent modifier keys across both tools
Application shortcuts work from within tmux sessions
Terminal applications respect tmux session context
Shortcuts work while Neovim is focused
No conflicts with Neovim’s key mappings