This repo contains my setup files for Mac (local) and Linux (remote).
Run the command below in a terminal to set up a new macOS computer:
MacOS is UNIX-based, unlike Windows, though Windows Subsystem for Linux (WSL) is a really big step forward.
The Command key is used for MacOS keyboard shortcuts, limiting conflicts with Unix shortcuts that use Alt/Option or Control.
The best option would be to install Linux on a Mac and configure the modifier keys (Cmd/Alt/Ctrl) to work like in MacOS, but who has time for that?
For tons of MacOS setup examples, click the link below
1: MacOS terminal and defaults
Open MacOS terminal using Spotlight search (Cmd Space)
Curl the macos.terminal
file
curl https://raw.githubusercontent.com/maptv/setup/main/macos.terminal -o ~/macos.terminal
Run the defaults commands below to setup MacOS
Ask for the administrator password upfront
sudo -v
Keep-alive: update existing sudo
time stamp until setup.sh
has finished
while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null &
Not all software is available on ARM processor Macs
echo A | softwareupdate --install-rosetta
In System Preferences > Keyboard > Keyboard:
defaults write -g KeyRepeat -int 1
Delay Until Repeat: Short
defaults write -g InitialKeyRepeat -int 20
Repeatedly engage a key when held (no need to press multiple times)
defaults write -g ApplePressAndHoldEnabled -bool false
defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false # For VS Code
defaults write com.microsoft.VSCodeInsiders ApplePressAndHoldEnabled -bool false # For VS Code Insider
defaults write com.visualstudio.code.oss ApplePressAndHoldEnabled -bool false # For VS Codium
Disable automatic capitalization as it’s annoying when typing code
defaults write NSGlobalDomain NSAutomaticCapitalizationEnabled -bool false
Disable smart dashes as they’re annoying when typing code
defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false
Disable automatic period substitution as it’s annoying when typing code
defaults write NSGlobalDomain NSAutomaticPeriodSubstitutionEnabled -bool false
Disable smart quotes as they’re annoying when typing code
defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false
defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false
Enable full keyboard access for all controls
(e.g. enable Tab in modal dialogs)
defaults write NSGlobalDomain AppleKeyboardUIMode -int 3
In System Preferences > Trackpad > Point & Click, set tracking speed to max:
defaults write NSGlobalDomain com.apple.trackpad.scaling -float 3
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
Show notifications for only one second
defaults write com.apple.notificationcenterui bannerTime 1
Remove most icons from Dock
defaults write com.apple.dock persistent-apps -array
defaults write com.apple.dock static-only -bool true
2-finger click on Dock and Turn Dock Hiding On
Automatically hide and show the Dock
defaults write com.apple.dock autohide -bool true
defaults write com.apple.Dock autohide-delay -float 0
defaults write com.apple.dock autohide-time-modifier -float 0
defaults write com.apple.dock enable-spring-load-actions-on-all-items -bool true
Disable the auto-hiding Dock delay
defaults write com.apple.dock autohide-delay -float 0
Disable the animation when hiding/showing the Dock
defaults write com.apple.dock autohide-time-modifier -float 0
Don’t animate opening applications from the Dock
defaults write com.apple.dock launchanim -bool false
Make Dock icons of hidden applications translucent
defaults write com.apple.dock showhidden -bool true
Don’t show recent applications in Dock
defaults write com.apple.dock show-recents -bool false
Minimize windows into their application’s icon
defaults write com.apple.dock minimize-to-application -bool true
Enable spring loading for all Dock items
defaults write com.apple.dock enable-spring-load-actions-on-all-items -bool true
Show indicator lights for open applications in the Dock
defaults write com.apple.dock show-process-indicators -bool true
Disable the sound effects on boot
sudo nvram SystemAudioVolume=" "
Disable user interface sound effects
defaults write "Apple Global Domain" com.apple.sound.uiaudio.enabled -int 0
Disable user interface sound effects
defaults write com.apple.systemsound com.apple.sound.uiaudio.enabled -bool false
Disable feedback when volume is changed
defaults write NSGlobalDomain com.apple.sound.beep.feedback -bool false
Disable flashing the screen when an alert sound occurs (accessibility)
defaults write NSGlobalDomain com.apple.sound.beep.flash -bool false
Under Sound > Sound Effects "Show Sound in menu bar" (doesn't work?)
defaults write com.apple.systemuiserver menuExtras -array
"/System/Library/CoreServices/Menu Extras/AirPort.menu"
"/System/Library/CoreServices/Menu Extras/Bluetooth.menu"
"/System/Library/CoreServices/Menu Extras/Displays.menu"
"/System/Library/CoreServices/Menu Extras/Volume.menu"
defaults write com.apple.finder ShowStatusBar -bool true
defaults write com.apple.finder ShowPathbar -bool true
Keep folders on top when sorting by name
defaults write com.apple.finder _FXSortFoldersFirst -bool true
When performing a search, search the current folder by default
defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"
Enable spring loading for directories
defaults write NSGlobalDomain com.apple.springing.enabled -bool true
Remove the spring loading delay for directories
defaults write NSGlobalDomain com.apple.springing.delay -float 0
Use list view in all Finder windows by default
Four-letter codes for the other view modes: icnv
, clmv
, glyv
defaults write com.apple.finder FXPreferredViewStyle -string "Nlsv"
Disable the warning before emptying the Trash
defaults write com.apple.finder WarnOnEmptyTrash -bool false
Finder: show all filename extensions
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
Display full POSIX path as Finder window title
defaults write com.apple.finder _FXShowPosixPathInTitle -bool true
defaults write NSGlobalDomain NSTableViewDefaultSizeMode -int 3
Finder: allow quitting via ⌘ + Q; doing so will also hide desktop icons
defaults write com.apple.finder QuitMenuItem -bool true
defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false
defaults write NSGlobalDomain AppleKeyboardUIMode -int 3
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 press-and-hold for keys in favor of key repeat
defaults write NSGlobalDomain ApplePressAndHoldEnabled -bool false
Set a blazingly fast keyboard repeat rate
defaults write NSGlobalDomain KeyRepeat -int 1
defaults write NSGlobalDomain InitialKeyRepeat -int 20
Disable automatic capitalization as it’s annoying when typing code
defaults write NSGlobalDomain NSAutomaticCapitalizationEnabled -bool false
Disable smart dashes as they’re annoying when typing code
defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false
Disable automatic period substitution as it’s annoying when typing code
defaults write NSGlobalDomain NSAutomaticPeriodSubstitutionEnabled -bool false
Disable smart quotes as they’re annoying when typing code
defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false
defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false
Menu bar
Under General > Appearance select 'Automatically hide and show the menu bar'
defaults write NSGlobalDomain _HIHideMenuBar -bool true
Save to disk (not to iCloud) by default
defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false
defaults write NSGlobalDomain AppleMetricUnits -bool true
Show language menu in the top right corner of the boot screen
sudo defaults write /Library/Preferences/com.apple.loginwindow showInputMenu -bool true
Disable shadow in screenshots
defaults write com.apple.screencapture disable-shadow -bool true
Speed up Mission Control animations
defaults write com.apple.dock expose-animation-duration -float 0.1
Set sidebar icon size to medium
defaults write NSGlobalDomain NSTableViewDefaultSizeMode -int 2
Disable the “Are you sure you want to open this application?” dialog
defaults write com.apple.LaunchServices LSQuarantine -bool false
Display ASCII control characters using caret notation in standard text views
Try e.g. cd /tmp; unidecode "\x{0000}" > cc.txt; open -e cc.txt
defaults write NSGlobalDomain NSTextShowsControlCharacters -bool true
Disable Resume system-wide
defaults write com.apple.systempreferences NSQuitAlwaysKeepsWindows -bool false
Disable Notification Center and remove the menu bar icon
launchctl unload -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist 2> /dev/null
Reset Finder and Dock to see results of defaults
commands
killall Finder
killall Dock
2: Default MacOS keybindings and keyboard layout
The default macOS keyboard has so-called "dead keys". Some of these "dead keys"
interfere with GNU emacs/readline shortcuts that should be available by default
everywhere. To deal with this problem, I created a keyboard layout called
undead. I also created a DefaultKeyBinding.dict
that provides many GNU
emacs/readline shortcuts.
Download keyboard layout and icon files undead.keylayout
and undead.icns
to /Library/Keyboard Layouts/
This messes up ctrl u and k in alacritty and kitty
sudo curl https://raw.githubusercontent.com/maptv/setup/main/undead.icns -o /Library/Keyboard\ Layouts/undead.icns
sudo curl https://raw.githubusercontent.com/maptv/setup/main/undead.keylayout -o /Library/Keyboard\ Layouts/undead.layout
Download Default MacOS keybinding dictionary file DefaultKeyBinding.dict
to /Library/Keybindings/
curl https://raw.githubusercontent.com/maptv/setup/main/DefaultKeyBinding.dict -o ~/Library/KeyBindings/DefaultKeyBinding.dict --create-dirs
For additional keyboard setup, we need Karabiner, but to install Karabiner, let's use Homebrew.
3: Brew - commandline package manager
Install Homebrew (this also installs xcode tools needed for git)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh )"
(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
git config --global user.email [email protected]
curl https://raw.githubusercontent.com/maptv/setup/main/Brewfile -o ~/.Brewfile
brew bundle install --file ~/.Brewfile
4: Generate SSH keys for GitHub, GitLab, and Bitbucket
model=$(sysctl hw.model | cut -d\ -f2)
yes y | ssh-keygen -t ed25519 -f ~/.ssh/$(whoami)$model -C $(whoami) $model -N ''
ssh-add ~/.ssh/$(whoami)_$model
cat ~/.ssh/$(whoami)_$model.pub | pbcopy
echo "Host *\n\tIdentityFile ~/.ssh/$(whoami)_$model" >> ~/.ssh/config
git clone --depth 1 https://github.com/maptv/ewka ~/maptv/ewka
cp ~/maptv/ewka/nerd/* ~/Library/Fonts
Set VimR to be the default txt file editor
duti -s com.qvacua.VimR txt all
duti -s org.jupyter.jupyterlab-desktop ipynb all
curl https://raw.githubusercontent.com/maptv/setup/main/init.lua -o ~/.hammerspoon/init.lua --create-dirs
miro window manager spoon
use Alt Shift
as the modifier à la Amethyst
curl https://raw.githubusercontent.com/miromannino/miro-windows-manager/master/MiroWindowsManager.spoon.zip | tar -xf - -C ~/.hammerspoon/Spoons
curl https://raw.githubusercontent.com/maptv/setup/main/MiroWindowsManager.lua -o ~/.hammerspoon/Spoons/MiroWindowsManager.spoon/init.lua --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/alacritty.yml -o ~/.config/alacritty/alacritty.yml --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/kitty.conf -o ~/.config/kitty/kitty.conf --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/.hyper.js -o ~/.hyper.js --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/config.yaml -o ~/Library/Application\ Support/tabby/config.yaml --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/com.googlecode.iterm2.plist -o ~/Library/Preferences/com.googlecode.iterm2.plist
curl https://raw.githubusercontent.com/maptv/setup/main/karabiner.json -o ~/.config/karabiner/karabiner.json --create-dirs
Set up fzf (fuzzy finder)
Set up bat and exa (for fzf file preview)
Set up fasd and fd (to provide inputs for fzf)
Set up xpdf (e.g. pdftotext - for fzf PDF file preview)
Create locations for undo files (just in case they are not created automatically)
mkdir -p ~/.vim/undodir
mkdir -p ~/.local/share/nvim/undo
Install fzf key bindings and fuzzy completion using the install script which runs the commented out code below
source /opt/homebrew/opt/fzf/shell/key-bindings.zsh
source /opt/homebrew/opt/fzf/shell/key-bindings.bash
source /opt/homebrew/opt/fzf/shell/completion.zsh
source /opt/homebrew/opt/fzf/shell/completion.bash
/opt/homebrew/opt/fzf/install --completion --key-bindings --no-fish --no-update-rc
curl https://raw.githubusercontent.com/maptv/setup/main/.bash_profile -o ~/.bash_profile
curl https://raw.githubusercontent.com/maptv/setup/main/.inputrc -o ~/.inputrc
curl https://raw.githubusercontent.com/maptv/setup/main/.zshrc -o ~/.zshrc
curl https://raw.githubusercontent.com/maptv/setup/main/.p10k.zsh -o ~/.p10k.zsh
curl https://raw.githubusercontent.com/maptv/setup/main/.gitconfig -o ~/.gitconfig
Regular expressions for diffs
curl https://gist.githubusercontent.com/tekin/12500956bd56784728e490d8cef9cb81/raw/e474af61231687b0e1a4ec59d4becd97537ef6c0/.gitattributes -o ~/.gitattributes
automatically ignored files
git config, ignore, and attributes
curl https://raw.githubusercontent.com/maptv/setup/main/.gitignore -o ~/.gitignore
curl https://raw.githubusercontent.com/maptv/setup/main/.vimrc -o ~/.vimrc
curl https://raw.githubusercontent.com/maptv/setup/main/all.snippets -o ~/.config/coc/ultisnips/all.snippets --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/init.vim -o ~/.config/nvim/init.vim --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/init.vim -o ~/.config/page/init.vim --create-dirs
echo 'let g:better_whitespace_enabled=0' >> ~/.config/page/init.vim
curl https://raw.githubusercontent.com/maptv/setup/main/ginit.vim -o ~/.config/nvim/ginit.vim --create-dirs
COC (Conqueror Of Completion)
curl https://raw.githubusercontent.com/maptv/setup/main/coc-settings.json -o ~/.config/nvim/coc-settings.json --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/coc-settings.json -o ~/.vim/coc-settings.json --create-dirs
git clone --depth 1 https://github.com/SpaceVim/SpaceVim.git ~/.SpaceVim
curl https://raw.githubusercontent.com/maptv/setup/main/spacevim/init.toml -o ~/.SpaceVim.d/init.toml --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/spacevim/myspacevim.vim -o ~/.SpaceVim.d/autoload/myspacevim.vim --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/zed.json -o ~/.config/zed/settings.json --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/.ideavimrc -o ~/.ideavimrc
curl https://raw.githubusercontent.com/gpakosz/.tmux/master/.tmux.conf -o ~/.tmux.conf
curl https://raw.githubusercontent.com/maptv/setup/main/.tmux.conf.local -o ~/.tmux.conf.local
git clone --depth 1 https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
curl https://raw.githubusercontent.com/maptv/setup/main/ipython_config.py -o ~/.ipython/profile_default/ipython_config.py --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/keybindings.py -o ~/.ipython/profile_default/startup/keybindings.py --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/config.py -o ~/Library/Application\ Support/ptpython/config.py --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/.radian_profile -o ~/.radian_profile
ln -sf .radian_profile radian_profile.R
curl https://raw.githubusercontent.com/maptv/setup/main/bottom.toml -o ~/.config/bottom/bottom.toml --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/tabnine_config.json -o ~/.config/TabNine/tabnine_config.json --create-dirs
6: Conda environments (base, Python and R)
Install cookiecutter (for i alias) and neovim (for vim plugins)
/opt/homebrew/Caskroom/miniforge/base/bin/mamba install -yc conda-forge python neovim
/opt/homebrew/Caskroom/miniforge/base/bin/mamba create -yc conda-forge -n py python neovim jupyterlab jupyterlab_vim jupyter-cache joblib seaborn numpy pandas scikit-learn scipy
/opt/homebrew/Caskroom/miniforge/base/envs/py/bin/python -m pip install jupyterlab-quarto radian
curl https://raw.githubusercontent.com/maptv/setup/main/shortcuts.jupyterlab-settings -o ~/.jupyter/lab/user-settings/@jupyterlab/shortcuts-extension/shortcuts.jupyterlab-settings --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/vimrc.jupyterlab-settings -o ~/.jupyter/lab/user-settings/jupyterlab-vimrc/vimrc.jupyterlab-settings --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/settings.zip -o ~/settings.zip
brew install --cask rstudio
works (rstudio is included in Brewfile
)
As of 2023-06-23, RStudio only works with the graphical R installer (not brew or conda)
curl https://raw.githubusercontent.com/maptv/setup/main/rstudio-prefs.json -o ~/.config/rstudio/rstudio-prefs.json --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/editor_bindings.json -o ~/.config/rstudio/keybindings/editor_bindings.json --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/rstudio_bindings.json -o ~/.config/rstudio/keybindings/rstudio_bindings.json --create-dirs
Initialize conda for z shell
/opt/homebrew/bin/mamba init zsh
Set up vscode, vscodium, and positron
curl https://raw.githubusercontent.com/maptv/setup/main/settings.json -o ~/Library/Application\ Support/Code/User/settings.json --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/settings.json -o ~/Library/Application\ Support/VSCodium/User/settings.json --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/settings.json -o ~/Library/Application\ Support/Positron/User/settings.json --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/keybindings.json -o ~/Library/Application\ Support/Code/User/keybindings.json --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/keybindings.json -o ~/Library/Application\ Support/VSCodium/User/keybindings.json --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/keybindings.json -o ~/Library/Application\ Support/Positron/User/keybindings.json --create-dirs
yes n | bash <(curl -s https://raw.githubusercontent.com/lunarvim/lunarvim/master/utils/installer/install.sh )
curl https://raw.githubusercontent.com/maptv/setup/main/config.lua -o ~/.config/lvim/config.lua --create-dirs
Install fasd via git and make (brew install fasd is not working)
git clone --depth 1 https://github.com/whjvenyl/fasd.git whjvenyl/fasd && cd whjvenyl/fasd && sudo make install && cd
coc expects me to have a bibliography.bib file in the home directory
touch ~/bibliography.bib
rm -rf ~/.emacs.d
git clone --depth 1 https://github.com/syl20bnr/spacemacs ~/.emacs.d
curl https://raw.githubusercontent.com/maptv/setup/main/.spacemacs -o ~/.spacemacs
Launch spacemacs as daemon to finish setup
/opt/homebrew/bin/emacs --no-window-system --daemon --no-init-file --load ~/.emacs.d/init.el
export DOOMDIR=$HOME/.config/doom
git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.config/emacs/
curl https://raw.githubusercontent.com/maptv/setup/main/config.el -o ~/.config/doom/config.el --create-dirs
curl https://raw.githubusercontent.com/maptv/setup/main/packages.el -o ~/.config/doom/packages.el
yes y | ~/.config/emacs/bin/doom install
The line below has to be at the bottom, because it ends setup.sh (I don't know why)
~/.config/emacs/bin/doom sync
Accessibility > Menu bar size: large
Accessibility > Reduce transparency
Accessibility > Reduce motion
Accessibility > Pointer size: as large as possible
Accessibility > Text size: 15 pt
Desktop & Dock > Enable Displays have separate Spaces
Desktop & Dock > Enable "When switching to an application, switch to a Space with open windows for the application"
Date & Time > Enable 24-hour time
Control Center > Automatically hide and show the menu bar On Desktop Only
Control Center > Don't show anything in menu bar, show everything in Control Center
Trackpad > Point & Click > Tracking Speed: As Fast as possible
Trackpad > More Gestures > Swipe between pages: Off
Trackpad > More Gestures > App Expose: Swipe Down with Three Fingers
Menu bar should only have Spaceman, AWAKE/DECAF (Hammerspoon), Control Center, and Date and Time
There does not appear to be:
- a way to prevent the menubar from dimming when another screen is focused
- have the menubar only be displayed on screens with a notch
- set my Wallpaper to complete black, so the notch is no longer visible
- hide the menu bar on the Desktop only, because I want
- Spaceman to show which Space is focused in the menu bar if I unintentionally enter fullscreen mode
- make apps fullscreen on the Desktop with:
- Hammerspoon (ctrl space) or
instead of fullscreen mode, which moves windows to a new space,
when I press ctrl cmd f (or cmd shift f for some apps)
Activate py environment and run the command below
Give Hammerspoon Accessibility permissions and enable Launch Hammerspoon at login
Download and move homerow.app to Applications
keep default bindings for now
Add ssh key to GitHub by running gh auth login (alias: hai) and selecting SSH as my preferred protocol for Git operations
Restart computer to enable macOS settings set via defaults
Load in the profile saved in the macos.terminal
file
Give karabiner_grabber and karabiner_observer Input Monitoring permission
Under Complex modifications > Rules you should see
Change caps_lock to control if pressed with other keys, to escape if pressed alone. (from Change caps_lock key (rev 4))
Change return to control if pressed with other keys, to return if pressed alone (from Change return to control)
Bash style Emacs key bindings (rev 2) (from Emacs key bindings (rev 12))
Emacs key bindings [option+keys] (rev 5) (from Emacs key bindings (rev 12))
/opt/homebrew/bin/nvim -c PlugInstall -c CocInstall -c wqa
/opt/homebrew/bin/vim -u ~/.SpaceVim/vimrc -c SPUpdate -c wqa
/opt/homebrew/bin/nvim -u ~/.SpaceVim/vimrc -c SPUpdate -c wqa
~/.local/bin/lvim -c LvimSyncCorePlugins -c wqa
/opt/homebrew/bin/vim -c PlugInstall -c CocInstall -c wqa
CopyQ stopped working for the latest macOS
Load copyq.ini (commands) and copyq.cpq (configuration)
Ctrl Alt C
summons the CopyQ window
Ctrl Alt D
pastes the today's ISO date
Ctrl Alt J
pastes and copies next
Ctrl Alt K
pastes and copies previous
Ctrl Alt S
shows the CopyQ tray (mnemonic: show tray)
Ctrl Alt V
edits the clipboard (mnemonic: vim)
Ctrl Alt X
pastes as plain text (mnemonic: remove (x) formatting)
In terminal, under Profiles > Text: Select Ewka Nerd Font size 18
In terminal, under Profiles > Advanced: Deselect audible bell
Set builtin "Move focus" macOS Keyboard shortcuts in System Preferences > Keyboard > Shortcuts > Keyboard
Move focus to menu bar: Alt Cmd A
(A is for Apple)
Move focus to Dock: Alt Cmd Z
(Z is below A and S on the keyboard)
Move focus to active or next window: Cmd '
(' looks similar to `)
Which automatically enables, move focus to previous window: Cmd Shift ;
that I decided it was worth overwriting the Emacs hippie completion binding
Toggle all of the focus shortcuts except "Move focus to status menus": Alt O
Move focus to window toolbar: Alt Cmd T
(mnemonic: toolbaR, works a bit like Alt R in Emacs in that it jumps back and forth)
Move focus to floating window: Alt Cmd W
Move focus to status menus: Alt Cmd S
Change the way Tab moves focus: Alt Cmd Tab
Turn keyboard access on or off: Alt Cmd K
Mac Control Center settings
Set the following keyboard shortcuts:
Mission Control: Ctrl Alt Shift Cmd Up
Application windows: Ctrl Alt Shift Cmd Up
Move left a space: Ctrl Alt Shift Cmd Left
Switch to Desktop 1: Ctrl Alt Shift Cmd 1
Switch to Desktop 2: Ctrl Alt Shift Cmd 2
Switch to Desktop 3: Ctrl Alt Shift Cmd 3
Switch to Desktop 4: Ctrl Alt Shift Cmd 4
Switch to Desktop 5: Ctrl Alt Shift Cmd 5
Disable Play sound on startup
Add all Google profiles in Chrome
Each profile automatically should have
Add all Internet Accounts in System Preferences
Grant Accessibility permissions to CopyQ, altTab, Homerow, Hammerspoon, VimR and Alfred
Enable launch on login for CopyQ, altTab, Homerow, Hammerspoon, VimR and Alfred
Select ABC under Auto-switch Input Source
Click Disable search & show all labels
The resolution of display link dual monitors should be 3840x1080
Set resolution of the main monitor to 2650x1440 and the MacBook monitor to 1280x800, so the width of the two add up to 3840
Set resolution of the leftmost monitor to 1440x2650 and and rightmost monitor to 1080x1920, so the height of each is close 2520 (1080+1440) and 1880 (800+1080), respectively
Click "Arrange..." and Arrange the monitors so that the main monitor and the MacBook monitor line up with the dual link dual monitors
Move the white band from the top of MacBook monitor to the main monitor, the monitor order should now be:
4: dual link dual monitors
Install PyCharm via Jetbrains Toolbox
Or load settings from settings.zip
Or manually configure PyCharm by following the steps below
Under File > Settings Repository..., select Overwrite Local
Select MacOS X 10.5+ Keymap and make the following changes:
- Editor Actions > Backspace : Ctrl h
- Editor Actions > Cut Line Backward : Ctrl u
- Editor Actions > Kill to Word End : Alt d
- Editor Actions > Cut up to Line End : Ctrl k
- Editor Actions > Decrease Font Size : Cmd -
- Editor Actions > Focus Editor : Shift Escape
- Editor Actions > Increase Font Size : Cmd =
- Editor Actions > Kill to Word Start : Ctrl w
- Editor Actions > Move Caret to Next Word : Alt f
- Editor Actions > Move Caret to Previous Word : Alt b
- Editor Actions > Reset Font Size : Cmd 0
- Editor Actions > Split Line :
- Main Menu > View > Quick Documentation: Ctrl q
- Main Menu > Edit > Delete : Ctrl d
- Main Menu > Edit > Paste : Ctrl y
- Main Menu > Edit > Redo : Ctrl =
- Main Menu > Edit > Undo : Ctrl -
- Main Menu > File > Save As...: Cmd Shift S
- Main Menu > Help > Find Action... : Cmd Shift p
- Main Menu > Tool Windows > Commit :
- Main Menu > Window > Active Tool Window > Resize > Stretch to Bottom : Cmd Shift ,
- Main Menu > Window > Active Tool Window > Resize > Stretch to Left : Cmd Shift ,
- Main Menu > Window > Active Tool Window > Resize > Stretch to Right : Cmd Shift ;
- Main Menu > Window > Active Tool Window > Resize > Stretch to Top : Cmd Shift ;
- Plug-ins > Git > Checkout Revision : Enter
- Plug-ins > Git > Checkout Selected : Enter
- Plug-ins > Python > Execute Selection in Python Console: Cmd Enter
- Plug-ins > Python > Split Cell : Ctrl Shift -
- Plug-ins > Terminal > Shift Focus To Editor : Shift+Escape
In Appearance & Behavior > Appearance, Select Darcula theme and select Ewka Nerd Font size 14
Using Cmd Shift A
or going to View > Appearance at the Top, enable Details in Tree Views, disable Tool Windows Bars and Navigation Bar
In MacOS System Preferences: Keyboard > Shortcuts > Services, uncheck Open man Page in Terminal (Cmd Shift M
) and Search man Page Index in Terminal (Cmd Shift A
)
In MacOS System Preferences: Keyboard > Shortcuts > Keyboard, uncheck Turn keyboard access on and off after making sure all of the other shortcuts are enabled
In MacOS System Preferences: Keyboard > Shortcuts > Keyboard, change ctrl function shortcuts to ctrl num shortcuts:
In Editor > Font, select Ewka Nerd Font size 16 as main and Jetbrains Mono as fallback and Enable font ligatures
In Editor > Code Style, set visual guides to 80 characters
Check Change font size (Zoom) with Command+Mouse Wheel in Editor > General
Check Show Whitespace in Editor > General > Appearance
In Build, Execution, Deployment > Console, select Use existing console for "Run with Python Console"
Disable Material UI to got back to Darcula theme, but keep Code Editor theme as Deep Ocean
Editor > Color Scheme : Material Deep Ocean
Appearance and Behavior > Appearance > Theme : Darcula
In Editor > General > Editor Tabs, Select None for Tab placement (current file is shown at the top)
Fix shortcut conflicts under Preferences > Vim emulation: Ctrl i/j/m/t
to IDE
When setting run configurations (Ctrl Alt r
), set working directory to project root under Environment and deselect Run with Python Console under Execution
iTerm: set up to automatically run tmux attach
alacritty: set up to automatically run tmux attach
kitty: need to manually run tmux attach
tabby: can't figure how to remap ctrl ; to ctrl q
hyper: can't figure how to remap ctrl ; to ctrl q
terminal: can't figure how to remap ctrl ; to ctrl q
The com.googlecode.iterm2.plist file makes it unnecessary to load iterm.json, which includes the settings below
In iterm2, select General > Preferences: Select load preferences from a local folder or URL
In iterm2, select Appearance > Theme: Minimal
In iterm2, select Profiles > Keys: Both option keys to Esc+
In iterm2, select Profiles > Terminal > Notifications: Silence bell
In iterm2, select Profiles > Text > Change Font: Ewka Nerdfont size 18, Use Ligatures
In iterm2, set Profiles > General > Command > Send text at start: tmux attach || tmux new ; split-window -v ; select-pane -t :.+
In iterm2, set Keys > Key Bindings > Send hex code 0x11 ^;
In iterm2, set Profiles > Keys > Key Mappings to send enter/return key codes:
Send ^[ [13;2u with Shift Return
Send ^[ [13;5u with Ctrl Return
Send ^[ [13;6u with Ctrl Shift Return
Send ^[ [13;3u with Cmd Return
Send ^[ [13;4u with Shift Cmd Return
Send ^[ with Ctrl Shift Cmd Return