samhstn / my-config

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

My OSX Configuration

I like minimalist setup.

Cleaning your mac

It is good to factory reset your mac often to be aware of everything you have installed and to remove unwanted clutter.

The steps for cleaning your mac are as follows:

  • Back up what you need.
  • Boot your mac in recovery mode (Restart while holding Cmd + R).
  • In the Utility menu, select Disk Utility.
  • Click Erase on all Internal drives (where permitted).
  • Once this has completed, click Done, then close the window to get back to the original menu.
  • Click Reinstall macOS, then Continue.

Applications and programs to install

  • Brave - For a web browser with unmatched speed, security and privacy.

  • Karabiner-Elements - For powerful key remapping.

  • Rectangle - "Move and resize windows in macOS using keyboard shortcuts or snap areas".

  • Iterm2 - For a better terminal.

  • Qbserve - "Automatic Time Tracker for Mac".

  • Freedom - "Block distracting websites and apps".

  • Homebrew - "The Missing Package Manager for macOS".

  • Docker - "Securely build and share any application, anywhere".

  • Zsh - For a pleasant command line experience.

  • Vim - "The ubiquitous text editor".

  • Sketch - For prototyping and building components.

Misc

system_preferences

Remove all applications in the dock except Brave, Qbserve and Iterm2.

dock

In System preferences > Trackpad:

  • tick: Tap to click.

In System preferences > Keyboard:

  • Key Repeat: Fastest.
  • Delay Until Repeat: Shortest.

Hide the dock by right clicking it and selecting: Turn hiding on.

In Security & Privacy > FileVault:

  • Turn on FileVault and set a recovery key.

(I like to ignore the recovery key as I never store anything worth keeping on my machine).


brave

In browser settings (Cmd + ,):

  • tick: Use wide address bar.
  • set Search engine used in the address bar to: DuckDuckGo.

Add the Lastpass extension - For managing all your passwords.

lastpass_logo

This can be done in Manage extensions in the browser settings.


karabiner_elements

The only feature I use is remapping my Caps-Lock key to Esc when tapped and to Ctrl when held.

This can be set up by importing the Change caps_lock key modifier keys sample from pqrs

Then:

  • inside the Karabiner elements app, go to the Complex Modifications tab.

  • click add rule.

  • enable the Change caps_lock to control if pressed with other keys, to escape if pressed alone. rule.


rectangle

In Settings > Preferences tick:

  • Allow any keyboard shortcut.
  • Launch on login.

These are the commands I use:

  • Fullscreen: Cmd + alt + p.
  • Centre: Cmd + alt + m.
  • Left Half: Cmd + alt + h.
  • Right Half: Cmd + alt + l.
  • Top Half: Cmd + alt + k.
  • Bottom Half: Cmd + alt + j.
  • Next Display Cmd + alt + n.
  • Previous Display Cmd + alt + N.

iterm

In Preferences > General:

  • untick Confirm closing multiple sessions.
  • untick Confirm Quit iTerm2.

In Preferences > Profiles > General > Working directory:

  • tick: Reuse previous session's directory.

In Preferences > Profiles > Window > Settings For New windows:

  • set columns: 500, Rows: 500 - for a full screen terminal window each session.

In Preferences > Profiles > Terminal > Notifications:

  • tick Silence bell.

qbserve

Works so nicely out of the box, nothing to configure.








qbserve

I always operate in "Locked mode" with 13 hour, overlapping schedules.

For more info on getting set up, see: https://freedom.to/blog/freedom-101-faqs-answered/





Docker desktop can be downloaded from here: https://docs.docker.com/docker-for-mac/install/

You may have to log in to DockerHub to perform the download.





Follow instructions found here: https://brew.sh

This is what I ran:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

These are some of the packages I'll always add:

brew install git grip fd macvim node python

oh_my_zsh

The modern shell supported by an awesome community.

I installed it with:

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

I have a custom theme and plugin, install them with:

curl -SLs https://raw.githubusercontent.com/samhstn/my-config/master/sams-theme.zsh-theme \
  > ~/.oh-my-zsh/themes/sams-theme.zsh-theme

mkdir ~/.oh-my-zsh/plugins/sams-config
curl -SLs https://raw.githubusercontent.com/samhstn/my-config/master/sams-config.plugin.zsh \
  > ~/.oh-my-zsh/plugins/sams-config/sams-config.plugin.zsh

I have my zshrc edited like so:

ZSH_THEME="sams-theme"

...

plugins=(
  git
  sams-config
  vi-mode
)

vim

I use MacVim in the terminal, this can be installed with:

brew install macvim

Add my .vimrc with:

curl -SLs https://raw.githubusercontent.com/samhstn/my-config/master/.vimrc > ~/.vimrc

sketch

I don't really know what I'm doing in Sketch, but it's fun to play around with and build prototypes.







Final tweaks

There are couple of additional setup steps:

# Create the `proj` directory where I put all my coding projects.
md proj

# See this medium article for git ssh setup:
# https://medium.com/@fredrikanderzon/setting-up-ssh-keys-for-multiple-bitbucket-github-accounts-a5244c28c0ac

# some git setup.
git config --global user.name <yourname>
git config --global user.email <your@email.com>

# global gitignore of `.DS_Store`.
echo ".DS_Store" > ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global

# I always disable system pager for `git branch` command.
# for more info, see: https://stackoverflow.com/a/48370253
git config --global pager.branch false

# I use system pager if diff doesn't fit on terminal screen, otherwise output to stdout.
# for more info, see: https://stackoverflow.com/a/31399632/4699289
git config --global core.pager "less -FRSX"

# Install the `m` command line tool following instructions here:
# https://github.com/samhstn/m

# (optional) we may want to symlink the custom zsh theme and plugin when in development.
rm ~/.oh-my-zsh/plugins/sams-config/sams-config.plugin.zsh
rm ~/.oh-my-zsh/themes/sams-theme.zsh-theme
git clone git@github.com:samhstn/my-config.git
ln -s $PWD/my-config/sams-config.plugin.zsh $HOME/.oh-my-zsh/plugins/sams-config/sams-config.plugin.zsh
ln -s $PWD/my-config/sams-theme.zsh-theme $HOME/.oh-my-zsh/themes/sams-theme.zsh-theme

Now your set up with exactly my configuration!

If you think I have missed anything out, or should be doing something differently let me know in an issue

About


Languages

Language:Shell 61.1%Language:Vim Script 38.9%