Setup
Beware: This is not fully reproducible (intentionally), use only for inspiration.
Preparation
Continue with setting up apps, one by one
General utilities
โน๏ธ Electron-based terminal, easy configuration in one file, plugins in JavaScript.
๐พ Installation: Installed via Homebrew
```bash
cask "hyper"
```
โ๏ธ Preferences: ~/.hyper.js
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
rm -f "$HOME/.zshrc" && ln -s "$HOME/Projects/setup/home/.zshrc" $HOME && source $HOME/.zshrc
Utilities
๐พ Installation: Installed via Homebrew
```bash
cask "dropbox"
```
โ๏ธ Preferences: manual
- Do not link work account
- Disable Screenshots
- Disable Photos
๐พ Installation: Installed via Homebrew
```bash
cask "keyboard-maestro"
```
โ๏ธ Preferences: `~/Dropbox/Sync/apps/Keyboard Maestro Macros.kmsync`
- Enable Launch at login
- Enable "Include Conflict Palette in Touch Bar"
TODO: Share some generally useful macros
๐พ Installation: Installed via Homebrew
```bash
cask "docker"
```
๐พ Installation: Installed via Homebrew
```bash
cask "ngrok"
```
๐พ Installation: Installed via Homebrew
```bash
cask "keybase"
```
โ๏ธ Preferences: Manual
- Enable Keybase in Finder
๐พ Installation: Installed via Homebrew
```bash
cask "1password"
```
โ๏ธ Preferences
- Security: Disable all auto-locking {>> I believe in OS security :) <<}
- Security: Enable automatic unlock
- Browsers: Install Browsers Extensions (Safari, Chrome, Firefox)
- Logins: Disable automatically submitting after filling
- Set keyboard shortcut for Showing 1Password mini
- Set keyboard shortcut for Filling login
๐พ Installation: Installed via Homebrew
```bash
cask "karabiner-elements"
```
โ๏ธ Preferences: manual
- CapsLock -> f19
- Quit application by pressing command-q twice
๐พ Installation: Installed via Homebrew
```bash
mas "NordVPN", id: 1116599239
```
๐พ Installation: Installed via Homebrew
```bash
cask "forticlient"
```
๐พ Installation: Installed via Homebrew (โ requires manual post-install)
```bash
cask "hyperswitch"
```
โ๏ธ Preferences
- Run HyperSwitch in the background
- Use Include windows from other spaces
- Use Include windows from other screens
- Use shift to cycle backwards
๐พ Installation
```bash
cask "alfred"
```
โ๏ธ Preferences
- Set preferences syncing to `~/Dropbox/Sync/apps/Alfred`
- Set main keyboard shortcut to F19 (not synced)
- Set Clipboard history persistence (not synced)
Workflows
- Airport Search, repo
- Alfred Maestro, repo โ Run Keyboard Maestro macros
- Audio Switch, repo โ Switch between audio inputs & outputs
- Bit.ly Link - Generate Bit.ly shortlinks, auth supported
- Call or SMS contact, repo
- Colors, repo โ Color tools
- Datetime Format Converter
- Encode / Decode
- Faker
- Flush DNS
- GitHub, repo
- GitLab, repo
- Homebrew & Cask for Alfred, repo
- HTTP Status Code, repo
- Install apps
- Kill Process, repo
- Look up Lyrics of Current Song on Rap Genius
- Lorem Ipsum
- newdoc
- NewFile
- NightShift
- Open in Chrome
- Package Managers
- Packal Updater
- Pocket for Alfred
- portkiller
- Recent Items
- RecentDownloads
- Relative Dates
- Resize Image
- Restore Moom snapshot
- Things
- Toggle Wifi
- ToggleRetinaResolution
- Urban Dictionary
- What's My IP
Workflows wanted
Script to get workflows
```bash
for f in ~/Dropbox/Sync/apps/Alfred/Alfred.alfredpreferences/workflows/**/info.plist
do
ff=${f%.*}
name=$(defaults read "$ff" name)
link="https://www.google.cz/search?q=site%3Apackal.org+${name// /+}"
echo "โ [$name]($link)"
done
```
Snippets
https://gist.github.com/Strajk/f4cb72e318c531a3ee247ccc10681f8f
๐พ Installation: Installed via Homebrew
```bash
cask "appcleaner"
```
โ๏ธ Preferences
- Enable SmartDelete
Do not install from cask, cannot transfer license
๐พ Installation: Installed via Homebrew
```bash
mas "Moom", id: 419330170
```
โ๏ธ Preferences
```bash
ln -s ~/Dropbox/Sync/apps/moom/com.manytricks.Moom.plist ~/Library/Preferences/com.manytricks.Moom.plist
```
๐พ Installation: Installed via Homebrew
```bash
mas "PopClip", id: 445189367
```
โ๏ธ Preferences
- Enable Start at Login
- Disable Cut & Copy & Paste Extensions
Extensions
curl -O "http://pilotmoon.com/popclip/extensions/ext/{Reminders,GoogleTranslate,Alfred}.popclipextz"
TODO: Fix! Open & Install extensions after downloading
๐พ Installation: Installed via Homebrew
```bash
mas "Monosnap", id: 540348655
```
โ๏ธ Preferences
- Enable `General: Launch at login`
- Enable `Advanced: Autosave to "Pictures" folder`
- Enable `Advanced: Shrink Retina snaps`
- Disable `Interface: Capture area: Add shadow to window`
- Sey `Hotkeys: Capture area` to `control + m`
- Sey `Hotkeys: Record video` to `control + alt + m`
- Sey `Hotkeys: Capture previous area` to `control + shift + m`
- Login to Monosnap account
cask dash
โ๏ธ Preferences
```bash
General: Launch Dash at login
General: Global search shortcut
General: Disable show dock icon
Integration: Alfred, PopClip, TextMate
Cheat: Axios
Cheat: Chrome Developer Tools
Cheat: Docker
Cheat: Dockerfile
Cheat: Git
Cheat: You Might Not Need jQuery
GitHub: cypress-io/cypress
StackOverflow: JavaScript
StackOverflow: TypeScript
User: date-fns
Docset: Bash
Docset: Bootstrap 4
Docset: Bootstrap 5
Docset: CSS
Docset: Chai
Docset: Express
Docset: Font Awesome
Docset: HTML
Docset: JavaScript
Docset: Less
Docset: Lo-Dash
Docset: Markdown
Docset: Mocha
Docset: MomentJS
Docset: MongoDB
Docset: NodeJS
Docset: Sinon
Docset: Stylus
Docset: TypeScript
Docset: UnderscoreJS
Docset: VueJS
Docset: jQuery
```
๐พ Installation: Installed via Homebrew
```bash
cask "Marked"
```
๐พ Installation: Installed via Homebrew
```bash
mas "Apple Configurator 2", id: 1037126344
```
๐พ Installation: Installed via Homebrew
```bash
mas "Amphetamine", id: 937984704
```
โ๏ธ Preferences
- Menu Bar Image Click: Primary: Start/end session | Secondary: Show menu
- Launch Amphetamine at login: yes
- Appearance: Menu Bar image: Coffee Carafe
- Appearance: Lower icon opacity when there is no active session
๐พ Installation: Installed via Homebrew
```bash
cask "bartender"
```
โ๏ธ Preferences
- Launch at login
- Menu bar item spacing: small
- Always show menu bar:
- Trailer
- Itsycal
- Batter
- Intentionally not showing in menu bar:
- Amphetamine โ triggered by Alfred
- Wi-Fi - it usually just work, no need to see it all the time
- Volume โ controlled by keyboard
- Trip Mode โ used occasionally
- Hotkey to Quick search
๐พ Installation: Installed via Homebrew
```bash
cask "transmission"
```
โ๏ธ Preferences
```bash
# Use `~/Downloads/_INCOMPLETE` to store incomplete downloads
defaults write org.m0k.transmission UseIncompleteDownloadFolder -bool true
defaults write org.m0k.transmission IncompleteDownloadFolder -string "${HOME}/Downloads/_INCOMPLETE"
# Use `~/Downloads` to autoimport .torrent files
defaults write org.m0k.transmission AutoImport -bool true
defaults write org.m0k.transmission AutoImportDirectory -string "${HOME}/Downloads"
# Donโt prompt for confirmation before downloading
defaults write org.m0k.transmission DownloadAsk -bool false
defaults write org.m0k.transmission MagnetOpenAsk -bool false
# Trash original torrent files
defaults write org.m0k.transmission DeleteOriginalTorrent -bool true
# Hide the donate message
defaults write org.m0k.transmission WarningDonate -bool false
# Hide the legal disclaimer
defaults write org.m0k.transmission WarningLegal -bool false
# IP block list.
# Source: https://giuliomac.wordpress.com/2014/02/19/best-blocklist-for-transmission/
defaults write org.m0k.transmission BlocklistNew -bool true
defaults write org.m0k.transmission BlocklistURL -string "http://john.bitsurge.net/public/biglist.p2p.gz"
defaults write org.m0k.transmission BlocklistAutoUpdate -bool true
```
๐พ Installation: Installed via Homebrew
```bash
cask "imageoptim"
```
Open source video transcoder
๐พ Installation: Installed via Homebrew
```bash
brew "handbrake"
```
๐พ Installation: Installed via Homebrew
```bash
cask "postman"
```
๐พ Installation: Installed via Homebrew
```bash
cask "aerial"
```
๐พ Installation: Installed via Homebrew
```bash
cask "google-backup-and-sync"
```
๐พ Installation: Installed via Homebrew
```bash
cask "keycastr"
```
๐พ Installation: Installed via Homebrew
```bash
cask "mousepose"
```
๐พ Installation: Installed via Homebrew
```bash
cask "shortcutdetective"
```
๐พ Installation: Installed via Homebrew
```bash
cask "screenflow"
```
๐พ Installation: Installed via Homebrew
```bash
cask "gifox"
```
Other
brew install heroku && heroku login
Communication
๐พ Installation: Installed via Homebrew
```bash
cask "slack"
```
Elegant Facebook Messenger desktop app
๐พ Installation: Installed via Homebrew
```bash
cask "caprine"
```
Browsers
๐พ Installation: Installed via Homebrew
```bash
cask "google-chrome"
```
Extensions
Script to get extensions
```bash
# run at chrome://extensions
output = []
document.querySelectorAll(".extension-details").forEach(el => {
var title = el.querySelector(".extension-title").textContent.trim()
var id = el.querySelector(".extension-id").textContent.trim()
var link = `https://chrome.google.com/webstore/detail/${id}`
output.push(`* [${title}](${link})`)
})
copy(output.join("\n"))
```
๐พ Installation: Installed via Homebrew
```bash
cask "caskroom/versions/google-chrome-canary"
```
Enable Developer Tools experiments:
* Open DevTools, go to General tab and check Enable source maps
* Open DevTools, go to Experiments tab and check Support for Sass
๐พ Installation: Installed via Homebrew
```bash
cask "firefox"
```
๐พ Installation: Installed via Homebrew
```bash
cask "opera"
```
๐พ Installation: Installed via Homebrew
```bash
cask "brave-browser"
```
๐พ Installation: Installed via Homebrew
```bash
cask "tor-browser"
```
Productivity
Primary notes app
๐พ Installation
```bash
cask "notion"
```
๐พ Installation: Installed via Homebrew
```bash
cask "foldingtext"
```
๐พ Installation: Installed via Homebrew
```bash
cask "skype"
```
โ๏ธ Preferences
- Disable show in menu bar
๐พ Installation: Installed via Homebrew
```bash
mas "Table Tool", id: 1122008420
```
๐พ Installation: Installed via Homebrew
```bash
mas "Keynote", id: 409183694
```
Installation: Manual
โ๏ธ Preferences
- Enable `General: Enable Things URLs`
- Enable `Things Cloud`
- Set shortcut for Quick Entry to `ctrl + n`
- Enable Calendar Events
Create
Versatile design app
Plugins
~/Library/Application Support/com.bohemiancoding.sketch3/Plugins
github.com/sketchplugins/plugin-directory
๐พ Installation: Installed via Homebrew
```bash
cask "sketch"
```
๐พ Installation: Installed via Homebrew
```bash
cask "sourcetree"
```
๐พ Installation: Installed via Homebrew
```bash
cask "gitup"
```
๐พ Installation: Installed via Homebrew
```bash
# cask "jetbrains-toolbox" # nope nope nope, lost patience with this piece of crap
cask "webstorm"
cask "pycharm"
cask "datagrip"
```
โ๏ธ Preferences
All preferences sync with Settings Repository to [private GitLab repo](https://gitlab.com/straaajk/intellij-settings-repository).
Some of the main options:
- Appearance
- Theme: Darcula
- Custom font: San Francisco `.SF NS Text`
- Window Options: Allow merging buttons on dialogs: Disable
- Editor
- Font: Hack
Plugins
- AceJump
- Codota โ โ ๏ธ not working well yet, but like the idea
- Database Navigator
- GitToolBox
- Key Promoter X
- Paste Images into Markdown
- Presentation Assistant
- String Manipulation
- Wallaby
- (plugins installed by default)
๐พ Installation: Installed via Homebrew
```bash
cask "visual-studio-code"
```
Extensions
TODO Export from Notion
Sync via Gist
ln -s ~/Projects/setup/apps/VSCode/settings.json "$HOME/Library/Application Support/Code/User/"
๐พ Installation: Installed via Homebrew
```bash
mas "iMovie", id: 408981434
```
๐พ Installation: Manually
TODO
๐พ Installation: Manual
TODO
๐พ Installation: Installed via Homebrew
```bash
mas "Xcode", id: 497799835
```
Installation: Installed via Homebrew
```bash
cask "virtualBox"
```
Accept terms, check issue
VBoxManage extpack install /Users/strajk/.ievms/Oracle_VM_VirtualBox_Extension_Pack-5.1.22.vbox-extpack
ievms
curl -s https://raw.githubusercontent.com/xdissent/ievms/master/ievms.sh | env IEVMS_VERSIONS="10 11 EDGE" bash
๐พ Installation: Installed via Homebrew
```bash
cask "charles"
```
Media
๐พ Installation: Installed via Homebrew
```bash
mas "Movist", id: 461788075
```
Horrible UI, but haven't found better free video player.
๐พ Installation: Installed via Homebrew
```bash
cask "vlc"
```
๐พ Installation: Installed via Homebrew
```bash
cask "caption"
```
Fun
Boxer
๐พ Installation: Installed via Homebrew
```bash
cask "boxer"
```
Other preferences
Default apps
# https://superuser.com/a/1092184
duti -s $(osascript -e 'id of app "The Unarchiver"') .rar all
duti -s $(osascript -e 'id of app "The Unarchiver"') .zip all
duti -s $(osascript -e 'id of app "Preview"') .pdf all
duti -s $(osascript -e 'id of app "Movist"') .mp3 all
duti -s $(osascript -e 'id of app "Movist"') .m4b all
duti -s $(osascript -e 'id of app "Movist"') .flac all
duti -s $(osascript -e 'id of app "Movist"') .mp4 all
duti -s $(osascript -e 'id of app "Movist"') .mkv all
duti -s $(osascript -e 'id of app "Movist"') .avi all
duti -s $(osascript -e 'id of app "FoldingText"') .md all
duti -s $(osascript -e 'id of app "Visual Studio Code"') .json all
duti -s $(osascript -e 'id of app "Visual Studio Code"') .nfo all
duti -s $(osascript -e 'id of app "Visual Studio Code"') .txt all
duti -s $(osascript -e 'id of app "Visual Studio Code"') .srt all
duti -s $(osascript -e 'id of app "Table Tool"') .csv all
Customize Dock
defaults write com.apple.dock persistent-apps -array
for app in \
"/System/Library/CoreServices/Finder.app" \
"/Applications/Calendar.app" \
"spacer" \
"/Applications/Google Chrome.app" \
"/Applications/Safari.app" \
"spacer" \
"/Applications/Things3.app" \
"/Applications/Reminders.app" \
"spacer" \
"/Applications/iTunes.app" \
"spacer" \
"/Applications/Slack.app" \
"/Applications/Caprine.app" \
"spacer" \
"/Applications/Sketch.app" \
"spacer" \
"/Applications/WebStorm.app" \
"/Applications/PyCharm.app" \
"/Applications/SourceTree.app" \
"/Applications/Hyper.app" \
"spacer" \
"/Applications/App Store.app" \
"/Applications/System Preferences.app" \
"spacer" \
; do
if [ "$app" "==" "spacer" ]; then
defaults write com.apple.dock persistent-apps -array-add '{tile-data={}; tile-type="small-spacer-tile";}'
else
defaults write com.apple.dock persistent-apps -array-add "<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>$app</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>"
fi
done
killall Dock
MacOS Preferences
Manual
- System Preferences โ Keyboard โ Shortcuts
- Display: Disable both
Decrease & Increase display brightness
- Mission control: Disable
Show Desktop
- Screenshots: Disable everything (as I use Monosnap)
- Services: Disable
Open man Page in Terminal
& Search man Page Index in Terminal
- Spotlight:
- Remap
Show Spotlight search
-> โโฅโSpace
- Disable
Show Finder search window
- Accessibility: Disable everything
Programmatic
# Close any open System Preferences panes, to prevent them from overriding settings weโre about to change
osascript -e 'tell application "System Preferences" to quit'
# Use scroll gesture with the Ctrl (^) modifier key to zoom
defaults write com.apple.universalaccess closeViewScrollWheelToggle -bool true
defaults write com.apple.universalaccess HIDScrollZoomModifierMask -int 262144
# Follow the keyboard focus while zoomed in
defaults write com.apple.universalaccess closeViewZoomFollowsFocus -bool true
# Disable the โAre you sure you want to open this application?โ dialog
defaults write com.apple.LaunchServices LSQuarantine -bool false
# Menu bar: disable transparency
defaults write NSGlobalDomain AppleEnableMenuBarTransparency -bool false
# Expand save panel by default
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode2 -bool true
# Expand print panel by default
defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true
defaults write NSGlobalDomain PMPrintingExpandedStateForPrint2 -bool true
# Save to disk (not to iCloud) by default
defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false
# Disable Resume system-wide
defaults write NSGlobalDomain NSQuitAlwaysKeepsWindows -bool false
# Disable auto-correct
defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false
# Enable full keyboard access for all controls
defaults write NSGlobalDomain AppleKeyboardUIMode -int 3
# Save screenshots to the desktop
defaults write com.apple.screencapture location -string "$HOME/Desktop"
# Disable shadow in screenshots
defaults write com.apple.screencapture disable-shadow -bool true
# Speedup animations
# More: https://www.defaults-write.com/increase-the-speed-of-os-x-dialogs-boxes/
defaults write NSGlobalDomain NSWindowResizeTime .1
defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool false
# Finder
# ---
# Default folder to $HOME
# TODO: strajk -> dynamic
defaults write com.apple.finder NewWindowTarget -string "PfHm"
defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}"
# Use column view in all Finder windows by default
defaults write com.apple.Finder FXPreferredViewStyle -string "clmv"
# Show the ~/Library folder.
chflags nohidden ~/Library
# Allow quitting Finder via โ + Q; doing so will also hide desktop icons
defaults write com.apple.finder QuitMenuItem -bool true
# Show status bar in Finder
defaults write com.apple.finder ShowStatusBar -bool true
# Show hidden files by default
defaults write com.apple.Finder AppleShowAllFiles -bool true
# Show all filename extensions
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
# Disable the warning when changing a file extension
defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false
# Allow text selection in Quick Look
defaults write com.apple.finder QLEnableTextSelection -bool true
# When performing a search, search the current folder by default
defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"
# Avoid creating .DS_Store files on network & USB volumes
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true
defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true
# Disable disk image verification
defaults write com.apple.frameworks.diskimages skip-verify -bool true
defaults write com.apple.frameworks.diskimages skip-verify-locked -bool true
defaults write com.apple.frameworks.diskimages skip-verify-remote -bool true
# Disable the warning before emptying the Trash
defaults write com.apple.finder WarnOnEmptyTrash -bool false
# Expand the following File Info panes:
# โGeneralโ, โOpen withโ, and โSharing & Permissionsโ
defaults write com.apple.finder FXInfoPanesExpanded -dict \
General -bool true \
OpenWith -bool true \
Privileges -bool true
# Other
# ---
# Set the icon size of Dock items to 36 pixels
defaults write com.apple.dock tilesize -int 36
# Trackpad: enable tap to click for this user and for the login screen
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true
defaults -currentHost write NSGlobalDomain com.apple.mouse.tapBehavior -int 1
defaults write NSGlobalDomain com.apple.mouse.tapBehavior -int 1
# Disable dashboard
defaults write com.apple.dashboard mcx-disabled -boolean true
# Disable the crash reporter
defaults write com.apple.CrashReporter DialogType -string "none"
TODO:
- Dock: Lock Dock Content
- Dock: Lock icon size
- Disable CapsLock
- Tap to click
Auto-launched items
# launchctl list | egrep -v "com\.apple\."
- 1Password
- Alfred
- Amphetamine
- AppCleaner-SmartDelete
- Docker
- Dropbox
- FortiClient VPN
- Gifox
- Google Drive
- HyperSwitch
- Karabiner
- Keybase
- KeyboardMaestro
- Monosnap
- Moom
- PopClip
- RescueTime
- Things
- WebAlert
Inbox
ln -s $HOME/Projects/setup/snippets "$HOME/Library/Application Support/Code/User/"
TODO
# Vill Q
# TeamViewer
# Paparazzi!
# zoom.us
# Marked 2
# Insomnia
Run regularly
brewup
nvm install node --reinstall-packages-from=node
Clone all my repos
curl -u strajk -s https://api.github.com/users/strajk/repos?per_page=200 | ruby -rubygems -e 'require "json"; JSON.load(STDIN.read).each { |repo| %x[git clone #{repo["ssh_url"]} ]}'
Fonts
Sans-serif
Monospace
๐พ Installation
```bash
cask "caskroom/fonts/font-open-sans"
cask "caskroom/fonts/font-roboto"
cask "caskroom/fonts/font-hack"
cask "caskroom/fonts/font-roboto-mono"
cask "caskroom/fonts/font-source-code-pro"
```