Про dotfiles

· 2 min read

В мире есть два типа людей: те, которые пользуются настройками по умолчанию и те, кто всё настраивают под себя. Первый подход имеет под собой мысль о том, что не важно на каком компьютере ты окажешься - всё для тебя будет привычно, но при этом запоминать всю фантазию авторов приложений. С другой стороны, можно организовать окружение так, чтобы максимально быстро сделать его привычным.

Можете начать с того, чтобы пойти в поиск на github и посмотреть сколько вообще есть таких репозиториев. Стоит на них посмотреть потому, что это хорошая отправная точка для того, чтобы начать писать свои. Почему это называется dotfiles? Всё просто - большинство настроек консольных (и не только) утилит делается с помощью скрытых файлов, которые начинаются с точки. Дальше кратко, что можно настроить с кратким описанием.

Консоль

Первое надо определиться с шеллом, благо выбора теперь много: bash, zsh, fish и прочая эзотерика. Мой выбор остановился на zsh и долго время использовал с oh-my-zsh, потом перешёл на presto, но понял что это всё дико замедляет старт консоли. В итоге, всё выкинул и просто написал с нуля. Из полезных мыслей:

  • Перекрашивать цвет консоли в зависимости по hostname.
  • Иметь source .zshrc_local, чтобы иметь локальные настройки с приватными данными.

Git

Git из довольно простой утилиты превратился в комбайн на любой случай. Вероятно из-за этого появляется куча обёрток (например, tig) или пользуются встроенным в IDE плагином (иногда не зная как оно работает). Какие проблемы можно выделить? Многословность команд по буковкам, и ещё хуже многословность по смыслам: checkout - и переключение между ветками, и по коммитам, и по рефлогам (не встречались с рефлогами? счастливый человек!). Соответственно, чтобы избежать этих проблем можно настроить себе алиасы в .gitconfig. Из полезных мыслей:

  • В gitconfig есть include, то есть тоже можно сделать .gitconfig_local.
  • И что более важно есть includeIf, и можно по пути репозитория подменять ssh-ключи и email.
  • Можно настроить .gitignore_global, чтобы не добавлять всякие *.swp в каждый репозиторий.

.config

GUI приложения начали по аналоги с консольными складывать свои настройки, но так как их может быть много, то вместо одного файла используют папку .config/SOFTNAME/. Туда можно положить настройки шрифтов, настройки текстового редактора (например, VS Code вместо settings sync который они выкатывали полгода) или используемого window managers.

Итого

Последняя полезная команда на сегодня, который подсказал коллега на работе ссылаясь на статью, это как устанавливать на новый компьютер:

git --git-dir=$HOME/.myconf/ --work-tree=$HOME

На этом всё. (: