How to set up this configuration
Automated setup
bash -c "$(curl -fsSL https://git.meinlschmidt.org/jetpac/dotfiles/raw/branch/main/bootstrap.sh)"
manual setup
# for linux; ignore on other systems
sudo yum update
sudo yum install zsh tmux git
source .proxies
# enter username/password
git clone --bare https://git.meinlschmidt.org/jetpac/dotfiles.git ~/.cfg
alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'
config config --local status.showUntrackedFiles no
config checkout
source ~/.proxies
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh) --unattended --skip-chsh --keep-zshrc"
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
vim +PlugInstall +qall
zsh
# run tmux, prefix + I installs all plugins (needs to have proxies set)
# run vim, :PlugInstall
# download and unpack dotfiles from my git
iterm
defines dynamic profile for tmux keys usage
- profile sits in `Library/Application Support/iTerm2/DynamicProfiles/dynamic_profile.json`
- this profile inherits from Default profile
- automatically appears in profiles; set it as default and you should be going
- TODO - table of defined keys
BetterTouchTool
Presets are stored as uncompressed JSON exports in
~/.config/bettertouchtool/. Ansible installs BetterTouchTool and checks out
dotfiles on initial setup; it does not import or continuously synchronize BTT
settings. BTT continues to own its live configuration.
Restore on a new Mac
- Install and start BetterTouchTool, activate your licence separately, and grant the macOS permissions requested by BTT.
- If BTT already has configuration you want to keep, export those presets before importing anything from dotfiles.
- Open the Presets interface (top-right preset button) and import
Default.bttpresetfrom~/.config/bettertouchtool/. Use Cmd+Shift+G in the file picker to enter this hidden directory. This export includes BTT's exportable general settings, including window move/resize preferences. Allow importing these settings when prompted. - Import
clipboard.bttpreset,BTT Clipboard Manager.bttpresetandbtt-mobile-example.bttpresetfrom the same directory. These exports do not include general settings. - Select the imported
Defaultas the master preset and enable all four imported presets to reproduce the source setup. Avoid keeping duplicate copies enabled; if a preset with the same name already exists, review the import/replacement prompt rather than blindly adding another copy. - Check the window move/resize preferences and test them on an ordinary window. Test a configured browser gesture (for example, a Firefox TipTap gesture), and check the clipboard manager and mobile menus if you use them. Clipboard history is not restored.
The snapshot was exported from BTT 5.750 on 2026-09-25. The source master is
Default (activation state 2); clipboard, BTT Clipboard Manager and
btt-mobile-example have activation state 1. The clipboard preset currently
contains app scopes but no triggers; it is retained to preserve the setup.
Update the exports
After changing BTT settings, export the affected presets again from BTT's
Presets interface to the same filenames. Choose uncompressed JSON; include
general settings only in Default.bttpreset. Re-export Default when changing
general preferences, even if no shortcuts changed. Preserve the names above
and update this section if the master or enabled presets change.
Before adding exports to Git, review the diff for passwords, API keys, private
paths, typed-text actions and scripts. Remove BTTFloatingMenuRenderedPreview
fields from JSON exports: these are cached menu snapshots, not configuration.
Validate the resulting JSON, for example:
python3 -m json.tool ~/.config/bettertouchtool/Default.bttpreset >/dev/null
config diff -- .config/bettertouchtool README.org
New files must be added explicitly with the existing config Git alias.
Exports may receive new preset UUIDs, so inspect import prompts on subsequent
restores and ensure only one intended copy of each preset is enabled.
Do not add BTT's Application Support directory, preferences plist, clipboard
database, licences, automatic backups or user-variable stores to Git.
Portability notes
- App-specific bindings target iTerm2, Finder, Firefox and Microsoft Edge; install the relevant apps before testing those bindings. The mobile example also includes Safari actions. Hardware-specific gestures and window geometry may need adjustment for a different keyboard, pointing device or display.
- No user-specific absolute paths were found in these exports. The mobile
example contains JavaScript menu widgets and a
say helloshell action; import only trusted presets and review scripts before enabling them. - Two custom mobile-menu images are already absent from the source Mac:
AE909FCE-DACE-4774-823D-36F7C2864EB5-BTTMenuItemImage.pngandED4B7AB4-D7E6-474C-B4A4-7BDCA93F25DB-BTTMenuItemImage.png. TheirBTT_PRESET_PATHreferences remain in the export, but those icons cannot be restored from this snapshot. Re-select images in BTT if needed. - Cached rendered menu previews are intentionally omitted. The clipboard presets contain configuration only, not copied text or clipboard history.
See BTT's preset documentation for export/import behaviour.
fonts
For iTerm on mac, the preferred fonts are installed automatically. You can also download fonts like this:
wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf
wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf
wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf
wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf
Emacs
git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d
Run Emacs and wait ~10 mins to download all packages
tmux in User's home directory
If you want to build tmux independend of other parts of the system, cut&paste from the code snippet below should do the trick. run export PATH=$HOME/usr/local:$PATH to pick up correct libraries and binaries
#!/usr/bin/env bash
set -e
set -x
BUILD_DIR=$HOME/usr/local
mkdir -p $BUILD_DIR
cd $BUILD_DIR/src
curl https://ftp.acc.umu.se/mirror/gnu.org/gnu/m4/m4-1.4.19.tar.gz --output m4-1.4.19.tar.gz
tar xzvf m4-1.4.19.tar.gz; cd m4-1.4.19
./configure --prefix=$BUILD_DIR
make install
cd $BUILD_DIR
curl https://ftp.acc.umu.se/mirror/gnu.org/gnu/autoconf/autoconf-2.72.tar.gz --output autoconf-2.72.tar.gz
tar xvzf autoconf-2.72.tar.gz
cd $BUILD_DIR/src/autoconf-2.72
./configure --prefix=$BUILD_DIR
make install
curl https://ftp.acc.umu.se/mirror/gnu.org/gnu/automake/automake-1.16.5.tar.gz --output automake-1.16.5.tar.gz
tar xvzf automake-1.16.5.tar.gz
cd $BUILD_DIR/src/automake-1.16.5
./configure --prefix=$BUILD_DIR
make install
curl https://ftp.gnu.org/gnu/libtool/libtool-2.4.7.tar.gz -o libtool-2.4.7.tar.gz
tar xvzf libtool-2.4.7.tar.gz
cd $BUILD_DIR/src/libtool-2.4.7
./configure --prefix=$BUILD_DIR
make install
#pkg-config
curl https://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz -o pkg-config-0.29.2.tar.gz
tar xvzf pkg-config-0.29.2.tar.gz
cd $BUILD_DIR/src/pkg-config-0.29.2
./configure --prefix=$BUILD_DIR --with-internal-glib
cd $BUILD_DIR/src
git clone https://github.com/libevent/libevent.git -b master
cd libevent
./autogen.sh
./configure --prefix=$BUILD_DIR
# utf8proc
cd $BUILD_DIR/src
git clone --depth 1 https://github.com/JuliaStrings/utf8proc.git -b v2.9.0
cd utf8proc
sed -i '' 's/^prefix=\/usr\/local/prefix=\$(HOME)\/usr\/local/' Makefile
make prefix=$BUILD_DIR
cd $BUILD_DIR/src
git clone --depth 1 --branch 3.3a https://github.com/tmux/tmux.git
cd $BUILD_DIR/src/tmux
./autogen.sh
./configure --prefix=$BUILD_DIR --enable-utf8proc
make -j7
make install