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".
Tip
Download Podcasts Export App and install it for sending podcasts to mp3 player.
- 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.