This .dotfiles
repository contains my macOS, Arch Linux and Windows system configurations.
Features include:
Common
- Catppuccin theme
- chezmoi to manage dotfiles across systems
- Neovim a cross-platform editor
- Starship prompt
- WezTerm a cross-platform terminal emulator
- Yazi terminal file manager. Plugins can be updated with
ya pack -u
. - A configured
zsh
shell for macOS and Linux, andPowerShell
for Windows with autocompletion, history, and syntax highlighting - Fuzzy finding with fzf
MacOS
- Yabai window manager
- skhd keyboard shortcuts
- SketchyBar bar
- JankyBorders border styling
- Raycast launcher
- Homebrew package management
Windows
- Komorebi window manager
- Zebar bar
- Microsoft PowerToys for launcher, keyboard shortcuts and various extras
- Scoop package management
Arch Linux
- Hyprland window manager
- Aylur's GTK Shell for bar, launcher and notifications
- Paru AUR helper (package management)
Warning
Change the git username, email, and ssh keygen email in setup_arch.sh
, setup_mac.sh
and setup_win.ps1
to your own.
Change banner.zsh
and the banner in setup_win.ps1
to your own banner image.
If you have existing ssh keys, ensure to copy them to the $HOME/.ssh directory.
Important
Move key.txt
encryption key to the $HOME/.config
directory to decrypt encrypted files.
-
Disable system integrity protection. Yabai instructions
- Turn off system. Hold power button until "Loading startup options" appears. Click "Options" then click "Continue"
- In the menu bar, choose
Utilities
, thenTerminal
# If you're on Apple Silicon macOS 13.x.x # Requires Filesystem Protections, Debugging Restrictions and NVRAM Protection to be disabled # (printed warning can be safely ignored) csrutil enable --without fs --without debug --without nvram
- Reboot. For Apple Silicon, need to enable non-Apple-signed arm64e binaries.
# Open a terminal and run the below command, then reboot sudo nvram boot-args=-arm64e_preview_abi
-
Create 5 workspaces. Open
System Settings
->Keyboard
->Keyboard Shortcuts
. Enable theMission Control
shortcuts, including⌘
+#
and⌃
+<-
/->
to to switch between workspaces. -
Open
System Settings
->Privacy & Security
->Accessibility
. Click the + button at the bottom left of the list view and enter your password to allow changes to the list. -
Give
Terminal
full disk access throughSecurity & Privacy
->Privacy
->Full Disk Access
. -
Download and run the setup_mac.sh shell script.
curl -L https://raw.githubusercontent.com/joncrangle/.dotfiles/main/setup_mac.sh | sh
Tip
If needed, make the script executable with
chmod +x setup_mac.sh
-
The macOS setup process will begin by installing Homebrew, chezmoi, and Git.
-
Setup will walk you through authenticating with Github. It will then install the dotfiles and apps.
-
Give
WezTerm
full disk access throughSecurity & Privacy
->Privacy
->Full Disk Access
. Hide the menu bar inSystem Settings
->Control Center
-> Automatically hide and show the menu bar -> Always. -
Give
Yabai
,Wezterm
,skhd
accessibility permissions inSystem Preferences
->Security & Privacy
->Accessibility
. -
Launch the
Shortcuts
app. Create a shortcut called "playpause" with "Play/Pause" from the "Media" category. This shortcut will be used by the bar for playback control. -
Launch the
Stats
app. Configure the Disk, RAM and CPU monitors widgets to be Center aligned with color "Second yellow".
- Download and run the setup_win.ps1 PowerShell script.
iwr -useb https://raw.githubusercontent.com/joncrangle/.dotfiles/main/setup_win.ps1 | iex
Tip
You might need to change the execution policy to RemoteSigned
before running the script.
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
-
The Windows setup process will begin by trying to install PowerShell, Windows Terminal and PowerToys.
-
Setup will then proceed to install Scoop, chezmoi, Git and terminal apps.
-
After you authenticate with GitHub, it will install the dotfiles, configure PowerShell, and install apps.
Tip
Some useful PowerToys settings that can be configured:
- Enable FancyZones
- File Explorer add-ons for previews
- Enable Keyboard Manager and remap
Ctrl
+F
toF4
withinoutlook
RemapCtrl
+Shift
+O
andCtrl
+Shift
+M
to camera and microphone toggle buttons inms-teams
- Enable Paste as Plain Text
- Enable PowerToys Run (adds Spotlight capability for Windows)
- Enable Quick Accent for a desired language (e.g. French or Spanish)
Within Taskbar Settings, automatically hide the taskbar in Desktop mode.
Tip
To update the Komorebi application rules, run komorebic fetch-asc
.
Install Arch using archinstall
with a Minimal profile. To connect to wifi, use iwctl
:
iwctl
device list
station wlan0 scan
station wlan0 get-networks
station wlan0 connect SSID
exit
archinstall
Once installed, connect to wifi and run the setup script:
nmcli device wifi list
nmcli device wifi connect SSID password PASSWORD
bash <(curl -s https://raw.githubusercontent.com/joncrangle/.dotfiles/main/setup_arch.sh)
Tip
KDE Plasma and Hyprland configs can clash. A workaround is to initiate sessions with different XDG_CONFIG_HOME
variables.
This script uses the .kdeconfig
directory for KDE Plasma, and the .config
directory for Hyprland.
Requires sudo permissions
- Create a
launch.sh
script in/usr/share/wayland-sessions
and make it executable withchmod +x launch.sh
:
#!/bin/sh
if [ -z "$1" ]; then
echo "Usage: $0 <config_directory> <command>"
exit 1
fi
export XDG_CONFIG_HOME="$HOME/$1"
shift
exec "$@"
- Edit
plasma.desktop
in/usr/share/wayland-sessions
:
# Comment out existing Exec and TryExec lines and add:
Exec=/usr/share/wayland-sessions/launch.sh .kdeconfig /usr/lib/plasma-dbus-run-session-if-needed /usr/bin/startplasma-wayland
- Edit
hyprland.desktop
in/usr/share/wayland-sessions
:
# Comment out existing Exec line and add:
Exec=/usr/share/wayland-sessions/launch.sh .config Hyprland
Install a package
paru -S <package>
Clean package cache
paru -Scd
Remove orphaned packages
paru -Qdtq | paru -Rns
See Keymapping.