Files
dotfiles/README.org
T
2026-09-29 22:31:51 +02:00

8.4 KiB

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

  1. Install and start BetterTouchTool, activate your licence separately, and grant the macOS permissions requested by BTT.
  2. If BTT already has configuration you want to keep, export those presets before importing anything from dotfiles.
  3. Open the Presets interface (top-right preset button) and import Default.bttpreset from ~/.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.
  4. Import clipboard.bttpreset, BTT Clipboard Manager.bttpreset and btt-mobile-example.bttpreset from the same directory. These exports do not include general settings.
  5. Select the imported Default as 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.
  6. 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 hello shell 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.png and ED4B7AB4-D7E6-474C-B4A4-7BDCA93F25DB-BTTMenuItemImage.png. Their BTT_PRESET_PATH references 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