Skip to content

Instantly share code, notes, and snippets.

@kogakure
Created November 10, 2014 09:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kogakure/63f2b29c3f8e873c431c to your computer and use it in GitHub Desktop.
Save kogakure/63f2b29c3f8e873c431c to your computer and use it in GitHub Desktop.
Slate configuration
# =============================================================================
# Configuration
# =============================================================================
config defaultToCurrentScreen true
config nudgePercentOf screenSize
config resizePercentOf screenSize
config secondsBetweenRepeat 0.1
config checkDefaultsOnLoad true
config focusCheckWidthMax 3000
config windowHintsShowIcons true
config windowHintsBackgroundColor "0;0;0;0"
config windowHintsFontColor "0;0;0;1.0"
config windowHintsFontName Futura
config windowHintsFontSize 70
config windowHintsIgnoreHiddenWindows false
config windowHintsSpread true
config windowHintsSpreadPadding 40
config windowHintsSpreadSearchWidth 80
config windowHintsSpreadSearchHeight 80
config switchIconPadding 2
config switchBackgroundColor 50;53;58;0.3
config switchSelectedPadding 4
config switchIconSize 96
config switchShowTitles true
config switchFontSize 11
config switchRoundedCornerSize 4
config undoOps move,resize
# =============================================================================
# Aliases
# =============================================================================
# Hyper key
alias hyper ctrl;alt;cmd
# Software
alias chrome 'Google Chrome'
alias safari 'Safari'
alias firefox 'Firefox'
alias editor 'iTerm'
alias chat 'Nachrichten'
alias calender 'Kalender'
alias mail 'Mail'
alias todo 'Things'
alias music-stream 'Spotify'
alias music-home 'Sonos'
alias evernote 'Evernote'
alias diary 'Day One'
# Monitors (0: Main Monitor, 1: Secondary Monitor)
alias monitor-main 1
alias monitor-secondary 0
# Basic Aliases
alias sox screenOriginX
alias soy screenOriginY
alias ssx screenSizeX
alias ssy screenSizeY
# Positions
alias centered ${sox}+${ssx}/8;${soy}+${ssy}/8 ${ssx}/8*6;${ssy}/8*6
alias fullscreen ${sox};${soy} ${ssx};${ssy}
alias leftHalf ${sox};${soy} ${ssx}/2;${ssy}
alias bottomHalf ${sox};${soy}+${ssy}/2 ${ssx};${ssy}/2
alias topHalf ${sox};${soy} ${ssx};${ssy}/2
alias rightHalf ${sox}+${ssx}/2;${soy} ${ssx}/2;${ssy}
alias topLeftQuarter ${sox};${soy} ${ssx}/2;${ssy}/2
alias topRightQuarter ${sox}+${ssx}/2;${soy} ${ssx}/2;${ssy}/2
alias bottomLeftQuarter ${sox};${soy}+${ssy}/2 ${ssx}/2;${ssy}/2
alias bottomRightQuarter ${sox}+${ssx}/2;${soy}+${ssy}/2 ${ssx}/2;${ssy}/2
alias leftMost ${sox};${soy} ${ssx}*0.6;${ssy} # Links (2/3)
alias leftLess ${sox};${soy} ${ssx}*0.4;${ssy} # Links (1/3)
alias rightLess ${sox}+${ssx}*0.6;${soy} ${ssx}*0.4;${ssy} # Rechts (1/3)
alias rightMost ${sox}+${ssx}*0.4;${soy} ${ssx}*0.6;${ssy} # Rechts (2/3)
# Absolute Positions
alias window-wide (${sox}+${ssx}-1500)/2;(${soy}+${ssy}-825)/2 1500;825 ${monitor-main}
alias window-medium (${sox}+${ssx}-1250)/2;(${soy}+${ssy}-825)/2 1250;825 ${monitor-main}
alias window-narrow (${sox}+${ssx}-1000)/2;(${soy}+${ssy}-825)/2 1000;825 ${monitor-main}
alias chatContacts ${sox}+${ssx}/2;${soy} ${ssx}/10;${ssy}
# =============================================================================
# Layouts
# =============================================================================
# Layout for Screencasting
layout screencast 'Google Chrome' move (${sox}+${ssx}-1295)/2;(${soy}+${ssy}-792)/2 1295;792 1
# Layout Home [h]
layout 1monitorHome ${calender} move ${leftMost}
layout 1monitorHome ${mail} move ${leftMost}
layout 1monitorHome ${todo} move ${rightLess}
layout 1monitorHome ${diary} move ${leftMost}
layout 1monitorHome ${music-stream} move ${leftHalf}
layout 1monitorHome ${music-home} move ${rightHalf}
layout 1monitorHome ${evernote} move ${fullscreen}
layout 1monitorHome ${editor} move ${fullscreen}
layout 1monitorHome ${chat}:IGNORE_FAIL,TITLE_ORDER=Freunde move ${chatContacts} ${monitor-secondary} | move ${leftHalf} ${monitor-secondary}
# Layout Work (2 Monitors) [j]
layout 2monitorWork ${todo} move ${rightHalf} ${monitor-secondary}
layout 2monitorWork ${diary} move ${leftHalf} ${monitor-secondary}
layout 2monitorWork ${evernote} move ${fullscreen} ${monitor-main}
layout 2monitorWork ${chrome} move ${fullscreen} ${monitor-secondary}
layout 2monitorWork ${safari} move ${fullscreen} ${monitor-main}
layout 2monitorWork ${firefox} move ${fullscreen} ${monitor-secondary}
layout 2monitorWork ${mail} move ${fullscreen} ${monitor-secondary}
layout 2monitorWork ${calender} move ${fullscreen} ${monitor-secondary}
layout 2monitorWork ${music-stream} move ${fullscreen} ${monitor-main}
layout 2monitorWork ${editor} move ${fullscreen} ${monitor-main}
layout 2monitorWork ${chat}:IGNORE_FAIL,TITLE_ORDER=Freunde move ${chatContacts} ${monitor-secondary} | move ${leftHalf} ${monitor-secondary}
# Layout Work (1 Monitor) [f]
layout 1monitorWork ${editor} move ${fullscreen} ${monitor-main}
layout 1monitorWork ${evernote} move ${fullscreen} ${monitor-main}
layout 1monitorWork ${chrome} move ${fullscreen} ${monitor-main}
layout 1monitorWork ${firefox} move ${fullscreen} ${monitor-main}
layout 1monitorWork ${mail} move ${fullscreen} ${monitor-main}
layout 1monitorWork ${calender} move ${fullscreen} ${monitor-main}
layout 1monitorWork ${music-stream} move ${fullscreen} ${monitor-main}
layout 1monitorWork ${todo} move ${leftHalf} ${monitor-main}
layout 1monitorWork ${chat}:IGNORE_FAIL,TITLE_ORDER=Freunde move ${chatContacts} ${monitor-secondary} | move ${leftHalf} ${monitor-secondary}
# Standard Layouts
default 2monitorWork count:2 # trigger when 2 Monitore
# default myLayout2 resolutions:1440x900;1024x768;1680x1050 # trigger when 3 monitors with exactly these resolutions
# =============================================================================
# Key Bindings
# =============================================================================
# Window Manager
bind space:${hyper} hint ASDFGHJKLQWERTYUIOPCVBN
# Grid
bind g:${hyper} grid padding:5 0:10,8 1:10,8
# Half Screens
bind left:${hyper} move ${leftHalf}
bind right:${hyper} move ${rightHalf}
bind up:${hyper} push top bar-resize:${ssy}/2
bind down:${hyper} push bottom bar-resize:${ssy}/2
# Quarter Screens
bind q:${hyper} move ${topLeftQuarter}
bind w:${hyper} move ${topRightQuarter}
bind a:${hyper} move ${bottomLeftQuarter}
bind s:${hyper} move ${bottomRightQuarter}
# Fullscreen
bind 0:${hyper} move ${fullscreen}
# Left/Right (⅓, ⅔)
bind 4:${hyper} move ${leftMost}
bind 5:${hyper} move ${leftLess}
bind 6:${hyper} move ${rightMost}
bind 7:${hyper} move ${rightLess}
# Special Browsersizes (centered)
bind 1:${hyper} move ${window-narrow}
bind 2:${hyper} move ${window-medium}
bind 3:${hyper} move ${window-wide}
bind c:${hyper} move ${centered}
# Layouts
bind 9:${hyper} layout screencast
bind h:${hyper} layout 1monitorHome
bind j:${hyper} layout 2monitorWork
bind f:${hyper} layout 1monitorWork
# Throw Bindings (CTRL + ALT)
bind 1:ctrl;alt throw ${monitor-secondary} resize
bind 2:ctrl;alt throw ${monitor-main} resize
bind right:ctrl;alt throw right resize
bind l:ctrl;alt throw right resize
bind left:ctrl;alt throw left resize
bind h:ctrl;alt throw left resize
# Focus Bindings (CTRL + CMD)
bind right:ctrl;cmd focus right
bind l:ctrl;cmd focus right
bind left:ctrl;cmd focus left
bind h:ctrl;cmd focus left
bind up:ctrl;cmd focus up
bind k:ctrl;cmd focus up
bind down:ctrl;cmd focus behind
bind j:ctrl;cmd focus behind
# Hide all windows
bind x:${hyper} hide all
# Undo last action
bind u:${hyper} undo
# Restart Slate
bind delete:${hyper} relaunch
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment