I will update your MacOS machine with Betterā¢ system defaults, preferences, software configuration and even auto-install some handy development tools and apps that my developer friends find helpful.
You don't need to install or configure anything upfront! This works with a brand-new machine from the factory as well as an existing machine that you've been working with for years.
- \[._.]/ - Hi, I'm the MacOS bot
- Forget About Manual Configuration
- Installation
- Restoring Dotfiles
- Additional
- Settings
- Prompt Driven Configuration
- Security
- General UI/UX
- Trackpad, mouse, keyboard, Bluetooth accessories, and input
- Energy saving
- Screen
- Finder
- Dock & Dashboard
- Hot corners
- Spotlight
- Time Machine
- Address Book, Dashboard, iCal, TextEdit, and Disk Utility
- Activity Monitor
- Mac App Store
- Messages
- Photos
- Safari & WebKit
- Google Chrome & Google Chrome Canary
- Tweetbot
- VLC
- Xcode
- Visual Studio Code
- Transmission
- Spotify
- Terminal
- iTerm2
- Software Installation
- Credits
- License
- Contributions
- Loathing, Mehs and Praise
- ĀÆ\(ć)/ĀÆ Warning / Liability
Don't you hate getting a new laptop or joining a new team and then spending a whole day setting up your system preferences and tools? Me too. That's why we automate; we did it once and we don't want to do have to do it again.
\[^_^]/ - This started as Adam Eivy's MacOS shell configuration dotfiles but has grown to a multi-developer platform for machine configuration.
When I finish with your machine, you will be able to look at your command-line in full-screen mode like this (running iTerm):
Check out how your shell prompt includes the full path, node.js version & the working git branch along with a lot of other info!
We use powerlevel10k for command prompt, so customization of what you want is easily changable in <DOTFILES_DIR>/system/.prompt
.
The top terminal is using vim as a full replacement IDE.
The bottom left is git terminal.
The bottom right is running vtop
.
To launch fullscreen, hit Command + Enter
in iTerm, then use Command + d
and Command + D
to create split panes.
\[._.]/ - I'm so excited I just binaried in my pants!
Note: I recommend forking this repo in case you don't like anything I do and want to set your own preferences (and pull request them!)
REVIEW WHAT THIS SCRIPT DOES PRIOR TO RUNNING: dotfiles
It's always a good idea to review arbitrary code from the internet before running it on your machine with sudo power! You are responsible for everything this script does to your machine (see LICENSE)
- Remote Mode: Run this script in Terminal
bash -c "$(curl -fsSL https://raw.githubusercontent.com/STiXzoOR/dotfiles/blob/main/remote-install.sh)"
- Manual Mode
$ git clone --recurse-submodules https://github.com/STiXzoOR/dotfiles ~/.dotfiles
$ cd ~/.dotfiles;
# run this using terminal (not iTerm, last iTerm settings get discarded on exit)
$ ./bin/dotfiles install
Note: running "dotfiles install" will install everything(zsh, apps, settings). If you want to do it manually, run "dotfiles install help" to list all the available commands.
If you have existing dotfiles for configuring git, zsh, vim, etc, these will be backed-up into ~/.dotfiles_backup/$(date +"%Y.%m.%d.%H.%M.%S")
and replaced with the files from this project. You can restore your original dotfiles by using <DOTFILES_DIR>/system/bin/dotfiles restore $RESTOREDATE
where $RESTOREDATE
is the date folder name you want to restore.
The restore script does not currently restore system settings--only your original dotfiles. To restore system settings, you'll need to manually undo what you don't like (so don't forget to fork, review, tweak)
I am using vim
as my terminal IDE. I use Vundle to manage vim plugins (instead of pathogen). Vundle is better in many ways and is compatible with pathogen plugins. Additionally, vundle will manage and install its own plugins so we don't have to use git submodules for all of them.
This project changes a number of settings and configures software on MacOS. Here is the current list:
The following will only happen if you agree on the prompt
- make sudo command passwordless
- overwrite your /etc/hosts file with a copy from someonewhocares.org
- install prezto zsh framework
- link dotfiles
- install vim plugins/themes
- install fonts
- install brew, cask, code, mas, npm packages
- change system configuration
- Enable install from Anywhere
- Disable remote apple events
- Disable remote login
- Disable wake-on modem
- Disable wake-on LAN
- Disable guest account login
- Set computer name (as done via System Preferences ā Sharing)
- Disable the sound effects on boot
- Set highlight color to steel blue
- Set sidebar icon size to medium
- Always show scrollbars
- Disable the over-the-top focus ring animation
- Adjust toolbar title rollover delay
- Increase window resize speed for Cocoa applications
- Expand save panel by default
- Expand print panel by default
- Save to disk (not to iCloud) by default
- Automatically quit printer app once the print jobs complete
- Disable the āAre you sure you want to open this application?ā dialog
- Remove duplicates in the āOpen Withā menu (also see 'lscleanup' alias)
- Display ASCII control characters using caret notation in standard text views
- Disable Resume system-wide
- Disable automatic termination of inactive apps
- Set Help Viewer windows to non-floating mode
- Reveal IP, hostname, OS, etc. when clicking clock in login window
- Disable automatic capitalization as itās annoying when typing code
- Disable smart dashes as theyāre annoying when typing code
- Disable automatic period substitution as itās annoying when typing code
- Disable smart quotes as theyāre annoying when typing code
- Disable auto-correct
- Increase sound quality for Bluetooth headphones/headsets
- Enable full keyboard access for all controls (e.g. enable Tab in modal dialogs)
- Use scroll gesture with the Ctrl (^) modifier key to zoom
- Follow the keyboard focus while zoomed in
- Disable press-and-hold for keys in favor of key repeat
- Set a blazingly fast keyboard repeat rate
- Set language and text formats (english/GR)
- Show language menu in the top right corner of the boot screen
- Set timezone to Europe/Athens;
- Disable lid wakeup
- Disable auto power off
- Disable auto restart on power loss
- Disable machine sleep
- Sleep the display after 60 minutes
- Disable standby mode
- Set standby delay to 24 hours (default is 1 hour)
- Disable wake from iPhone/Watch (eg. When iPhone or Apple Watch come near)
- Disable periodically wake of machine for network and updates
- Restart automatically if the computer freezes
- Disable hibernation (speeds up entering sleep mode)
- Remove the sleep image file to save disk space
- Create a zero-byte file insteadā¦
- ā¦and make sure it canāt be rewritten
- Require password immediately after sleep or screen saver begins
- Save screenshots to the desktop
- Save screenshots in PNG format (other options: BMP, GIF, JPG, PDF, TIFF)
- Disable shadow in screenshots
- Enable subpixel font rendering on non-Apple LCDs
- Enable HiDPI display modes (requires restart)
- Allow quitting via ā + Q; doing so will also hide desktop icons
- Disable window animations and Get Info animations
- Set Desktop as the default location for new Finder windows
- Show icons for hard drives, servers, and removable media on the desktop
- Show hidden files by default
- Show all filename extensions
- Show status bar
- Show path bar
- Keep folders on top when sorting by name
- When performing a search, search the current folder by default
- Disable the warning when changing a file extension
- Enable spring loading for directories
- Remove the spring loading delay for directories
- Avoid creating .DS_Store files on network or USB volumes
- Disable disk image verification
- Automatically open a new Finder window when a volume is mounted
- Show item info near icons on the desktop and in other icon views
- Show item info to the right of the icons on the desktop
- Enable snap-to-grid for icons on the desktop and in other icon views
- Increase grid spacing for icons on the desktop and in other icon views
- Increase the size of icons on the desktop and in other icon views
- Use column list view in all Finder windows by default
- Use sort by Application in all Finder windows by default
- Disable the warning before emptying the Trash
- Empty Trash securely by default
- Show the ~/Library folder
- Show the /Volumes folder
- Expand the following File Info panes: āGeneralā, āOpen withā, and āSharing & Permissionsā
- Set the icon size of Dock items to 36 pixels
- Change minimize/maximize window effect to scale
- Enable magnification
- Minimize windows into their applicationās icon
- Enable spring loading for all Dock items
- Show indicator lights for open applications in the Dock
- Speed up Mission Control animations
- Remove the auto-hiding Dock delay
- Make Dock icons of hidden applications translucent
- Reset Launchpad, but keep the desktop wallpaper intact
- Add iOS & Watch Simulator to Launchpad
- Top left screen corner ā Mission Control
- Top right screen corner ā Desktop
- Bottom left screen corner ā Start screen saver
- Change indexing order and disable some file types from being indexed
- Load new settings before rebuilding the index
- Make sure indexing is enabled for the main volume
- Rebuild the index from scratch
- Prevent Time Machine from prompting to use new hard drives as backup volume
- Disable local Time Machine backups
- Enable the debug menu in Address Book
- Enable Dashboard dev mode (allows keeping widgets on the desktop)
- Use plain text mode for new TextEdit documents
- Open and save files as UTF-8 in TextEdit
- Use Meslo LGS Nerd Font in TextEdit
- Enable the debug menu in Disk Utility
- Auto-play videos when opened with QuickTime Player
- Show the main window when launching Activity Monitor
- Visualize CPU usage in the Activity Monitor Dock icon
- Show all processes in Activity Monitor
- Sort Activity Monitor results by CPU usage
- Set columns for each tab
- Sort columns in each tab
- Update refresh frequency (in seconds)
- Show Data in the Disk graph (instead of IO)
- Show Data in the Network graph (instead of packets)
- Change Dock Icon
- Enable the WebKit Developer Tools in the Mac App Store
- Enable Debug Menu in the Mac App Store
- Enable the automatic update check
- Check for software updates daily, not just once per week
- Automatically download apps purchased on other Macs
- Turn on app auto-update
- Disable send and reply animations in Mail.app
- Copy email addresses as 'foo@example.com' instead of 'Foo Bar foo@example.com' in Mail.app
- Add the keyboard shortcut ā + Enter to send an email in Mail.app
- Display emails in threaded mode, sorted by date (oldest at the top)
- Disable inline attachments (just show the icons)
- Disable automatic spell checking
- Disable automatic emoji substitution (i.e. use plain text smileys)
- Disable smart quotes as itās annoying for messages that contain code
- Disable continuous spell checking
- Prevent Photos from opening automatically when devices are plugged in
- Donāt send search queries to Apple
- Press Tab to highlight each item on a web page
- Show the full URL in the address bar (note: this still hides the scheme)
- Set Safariās home page to āabout:blankā for faster loading
- Prevent Safari from opening āsafeā files automatically after downloading
- Allow hitting the Backspace key to go to the previous page in history
- Hide Safariās bookmarks bar by default
- Hide Safariās sidebar in Top Sites
- Disable Safariās thumbnail cache for History and Top Sites
- Enable Safariās debug menu
- Make Safariās search banners default to Contains instead of Starts With
- Remove useless icons from Safariās bookmarks bar
- Enable the Develop menu and the Web Inspector in Safari
- Add a context menu item for showing the Web Inspector in web views
- Enable continuous spellchecking
- Disable auto-correct
- Disable AutoFill
- Warn about fraudulent websites
- Disable plug-ins
- Disable Java
- Block pop-up windows
- Enable Do Not Track
- Update extensions automatically
- Disable the all too sensitive backswipe on trackpads
- Disable the all too sensitive backswipe on Magic Mouse
- Use the system-native print preview dialog
- Expand the print dialog by default
- Disable smart quotes as itās annoying for code tweets
- Show the app window when clicking the menu bar icon
- Enable the hidden āDevelopā menu
- Open links in the background
- Allow closing the ānew tweetā window by pressing $(Esc)
- Show full names rather than Twitter handles
- Hide the app in the background if itās not the front-most window
- Bypass the annoyingly slow t.co URL shortener
- Install settings
- Create xcode custom theme folder
- Install nord theme
- Change theme to nord
- Trim trailing whitespace
- Trim whitespace only lines
- Show line numbers
- Reduce the number of compile tasks and stop indexing
- Show all devices and their information you have plugged in before
- Show ruler at 80 chars
- Map āāL to show last change for the current line
- Show build time
- Improve performance
- Improve performance by leveraging multi-core CPU
- Delete these settings
- Install settings
- Use ~/Documents/Torrents to store incomplete downloads
- Use ~/Downloads to store completed downloads
- Donāt prompt for confirmation before downloading
- Donāt prompt for confirmation before removing non-downloading active transfers
- Trash original torrent files
- Enabling queue
- Setting queue maximum downloads
- Hide the donate message
- Hide the legal disclaimer
- Setting IP block list
- Randomize port on launch
- Change theme to nord
- Only use UTF-8 in Terminal.app
- Install nord theme in Terminal.app
- Use nord theme by default in Terminal.app
- Enable āfocus follows mouseā for Terminal.app and all X11 apps
- Tell iTerm2 to use the custom preferences in the directory
- Specify the preferences directory
- Install nord theme for iTerm (opening file)
homebrew, fontconfig, git, ruby (latest), nvm (node + npm), and zsh (latest) are all installed as foundational software for running this project.
Additional software is configured in install
folder and can be customized in your own fork/branch (you can change everything in your own fork/brance).
The following is the software that I have set as default:
- Homebrew/Bundle
- Homebrew/Cask
- Homebrew/Cask Drivers
- Homebrew/Cask Versions
- Homebrew/Cask Fonts
- Homebrew/Core
- Homebrew/Dupes
- Homebrew/Services
- Khanhas/Tap
- Mongodb/Brew
- Ack
- Bash
- Bat
- Coreutils
- Delta
- Dockutil
- Dpkg
- Exa
- Fasd
- Ffmpeg
- Findutils
- Fselect
- Fzf
- Gawk
- Gnu Sed
- Gnupg
- Grep
- Grep
- Grip
- Httpie
- Jq
- Spicetify Cli
- Mackup
- Mas
- Mongodb Community
- Moreutils
- Mysql
- Neofetch
- Nghttp2
- Nmap
- Psgrep
- Python
- Python Tk
- Reattach To User Namespace
- Ruby
- Shfmt
- Spotify Tui
- Spotifyd
- Ssh Copy Id
- Thefuck
- Tldr
- Tree
- Watch
- Wget
- Youtube Dl
- Adobe Creative Cloud
- Aerial
- Altserver
- Android File Transfer
- Android Platform Tools
- Arduino
- Autodesk Fusion 360
- Balenaetcher
- Blackhole
- Blobsaver
- Brave Browser
- Checkra1n
- Darwin Dumper
- Discord
- Figma
- Firefox
- Flux
- Font Awesome Terminal Fonts
- Font Fira Code
- Font Fira Mono
- Font Fira Mono For Powerline
- Font Firacode Nerd Font
- Font Firacode Nerd Font Mono
- Font Fontawesome
- Font Hack
- Font Hack Nerd Font
- Font Menlo For Powerline
- Font Meslo For Powerline
- Font Meslo Lg
- Font Meslo Lg Nerd Font
- Font Roboto
- Font Roboto Mono
- Font Roboto Mono Nerd Font
- Font Roboto Mono For Powerline
- Font Source Code Pro
- Font Source Code Pro For Powerline
- Fritzing
- Github
- Google Backup And Sync
- Google Chrome
- Hackintool
- Iina
- Iterm 2
- Java
- Kaleidoscope
- Karabiner Elements
- Keka
- Lulu
- Macupdater
- Mamp
- Mongodb Compass
- Monitor Control
- Mos
- Mysql Workbench
- Open In Code
- Postman
- Sketchup
- Sourcetree
- Spotify
- Surfshark
- Teamviewer
- Telegram
- Transmission
- Tunnelblick
- Ukelele
- Ultimaker Cura
- Virtualbox
- Virtualbox Extension Pack
- Visual Studio Code
- Vlc
- Qlcolorcode
- Qlstephen
- Qlmarkdown
- Quicklook Json
- Qlimagesize
- Suspicious Package
- Quicklookase
- Qlvideo
- Emby
- LastPass
- Magnet
- Messenger
- Microsoft Remote Desktop
- Paste
- Spark
- Trello
- Rainbow Brackets
- Better Comments
- Nord Visual Studio Code
- Github Markdown Preview
- Markdown Checkbox
- Markdown Emoji
- Markdown Preview Github Styles
- Markdown Yaml Preamble
- Multi Line Tricks
- StandardJS
- Npm Intellisense
- Bracket Pair Colorizer 2
- Markdown Lint
- Eslint
- Githistory
- Python Extension Pack
- Gitlens
- Editorconfig
- Prettier
- Shell Format
- Styled Components
- Duplicate Selection
- Magic Python
- Auto Build
- Dotenv
- Python
- Pylance
- Jupyter
- Cpp Tools
- Typescript Tslint
- Color Highlight
- Printcode
- Prettier Standard
- Indent Rainbow
- Nested Comments
- PlatformIO IDE
- Polacode
- Savebackup
- Quicktype
- Sort Json
- Code Settings Sync
- Brewfile
- Autoimport
- Open In Browser
- Sort Lines
- Highlight Matching Tag
- Intellicode
- Icons
- Import Cost
- Change Case
- Markdown All In One
- Doctoc
- Eslint
- Fkill Cli
- Get Port Cli
- Grunt Cli
- Gulp Cli
- Instant Markdown D
- Nodemon
- Npm
- Npm Check
- Npm Check Updates
- Prettier
- Release It
- Spot
- StandardJS
- Superstatic
- Svgo
- Tldr
- Underscore Cli
- Vtop
- Webtorrent Cli
- Yarn
- Adam Eivy for the actual dotfiles
- Lars Kappert for some of the scripts and tools used in his dotfiles
This project is licensed under ISC. Please fork, contribute and share.
Contributions are always welcome in the form of pull requests with explanatory comments.
Please refer to the Contributor Covenant
- Loathing should be directed into pull requests that make it better. woot.
- Bugs with the setup should be put as GitHub issues.
- Mehs should be > /dev/null
Warning: The creator of this repo is not responsible if your machine ends up in a state you are not happy with. If you are concerned, look at the code to review everything this will do to your machine :)