Dotfiles (Português)

Status de tradução:
Esse artigo é uma tradução de
Dotfiles
. Data da última tradução: 2019-10-20. Você pode ajudar a sincronizar a tradução, se houver
alterações
na versão em inglês.
Artigos relacionados
Suporte a XDG Base Directory
Recursos do X
A configuração de aplicativos específica do usuário é tradicionalmente armazenada nos chamados
dotfiles
(arquivos cujo nome de arquivo começa com um ponto). É uma prática comum rastrear dotfiles com um
sistema de controle de versão
, como o
Git
, para acompanhar as mudanças e sincronizar os arquivos de pontos através de vários hosts. Existem várias abordagens para gerenciar seus dotfiles (por exemplo, rastreando diretamente os dotfiles no diretório inicial vs armazenando-os em um subdiretório e fazendo um link simbólico/copiando/gerando arquivos com um script
shell
ou
uma ferramenta dedicada
) . Além de explicar como gerenciar seus dotfiles, este artigo também contém
uma lista de repositórios de dotfiles
dos usuários do Arch Linux.
Rastreando dotfiles diretamente com Git
O benefício de rastrear dotfiles diretamente com o Git é que ele requer apenas
Git
e não envolve links simbólicos. A desvantagem é que
configuração específica por cada host
geralmente requer a mesclagem de alterações em vários
ramos
(
branches
).
A maneira mais simples de conseguir essa abordagem é inicializar um repositório
Git
diretamente em seu diretório inicial e ignorar todos os arquivos por padrão com um padrão de
gitignore(5)
de
*
. Este método, no entanto, vem com duas desvantagens: ele pode se tornar confuso quando você tiver outros repositórios Git em seu diretório inicial (por exemplo, se você esquecer de inicializar um repositório que você subitamente opera em seu repositório dotfile) e você não poderá mais ver facilmente quais arquivos o diretório atual não é rastreado (porque eles são ignorados).
Um método alternativo sem essas desvantagens é o "método repository seco e alias" popularizado por
este comentário no Hacker News
, que apenas usa três comandos para configurar:
$ git init --bare ~/.dotfiles
$ alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
$ config config status.showUntrackedFiles no
Você pode então gerenciar seus dotfiles com o
alias
criado.
Dica
Para evitar fazer commit acidental de informações confidenciais, veja
Git#Filtering confidential information
.
Configuração específica por host
Um problema comum com a sincronização de arquivos de pontos em várias máquinas é a configuração específica para cada host.
Com
Git
isso pode ser resolvido mantendo um ramo
master
para toda a configuração compartilhada, enquanto cada máquina individual possui um ramo específico da máquina com check-out. A configuração específica por host pode aplicada para um ramo específico da máquina; Quando a configuração compartilhada é modificada no ramo
master
, os ramos por máquina precisam ser
rebased
na parte superior do
master
atualizado.
Em scripts de configuração como
arquivos de configuração do shell
, a lógica condicional pode ser usada. Por exemplo, scripts
Bash
(por exemplo,
.bashrc
) podem aplicar configurações diferentes dependendo do nome da máquina (ou tipo, variável personalizada, etc.):
if [[ "$(hostname)" == "archlaptop" ]]; then
    # comandos específicos de laptop aqui
else
    # comandos de máquina desktop ou servidor
fi
Similarmente, também podem ser alcançados com
.Xresources
.
[1]
Se você achar que fazer
rebase
de ramos do Git é trabalhoso demais, você pode querer usar uma
ferramenta
que possui suporte a
agrupamento de arquivos
, ou se uma flexibilidade ainda maior é desejada, uma ferramenta que faz
processamento
.
Ferramentas
Agrupamento de arquivos
Como arquivos de configuração podem ser agrupados para grupos de configuração (também chamados de perfis ou pacotes).
Processamento
Algumas ferramentas processam arquivos de configuração para permitir que eles sejam personalizados dependendo do host.
Nome
Pacote
Escrito em
Agrupamento de arquivos
Processamento
dot-templater
dot-templater-git
AUR
Rust
baseado em diretórios
sintaxe personalizada
dotdrop
[
link inativo
2024-01-13 ⓘ]
dotdrop
AUR
Python
arquivo de configuração
Jinja2
dotfiles
dotfiles
AUR
Python
Não
Não
Dots
dots-manager
AUR
[
link quebrado
: package not found]
Python
baseado em diretórios
pontos de acréscimos personalizados
chezmoi
chezmoi
Go
baseado em diretórios
modelos em Go
GNU Stow
stow
Perl
baseado em diretórios
[2]
Não
Mackup
mackup
AUR
Python
automático por aplicativo
Não
mir.qualia
mir.qualia
AUR
Python
Não
blocos personalizados
rcm
rcm
AUR
Perl
baseado em diretórios (por host ou tag)
Não
Ferramentas interfaceando Git
Se você não estiver confortável com o
Git
, você pode querer usar uma dessas ferramentas, que abstraem o sistema de controle de versão (mais ou menos).
Nome
Pacote
Escrito em
Agrupamento de arquivos
Processamento
dotgit
dotgit
AUR
Bash
baseado em nome de arquivo
Não
homeshick
homeshick-git
AUR
Bash
direcionado a repositório
Não
homesick
–
Ruby
direcionado a repositório
Não
Pearl
pearl-git
AUR
Bash
direcionado a repositório
Não
vcsh
vcsh
Shell
direcionado a repositório
Não
yadm
[
link inativo
2024-11-05 ⓘ]
(1)
yadm-git
AUR
Shell
baseado em nome de arquivo
(por classe, SO, hostname & usuário)
[3]
[
link inativo
2024-11-05 ⓘ]
Jinja2
(opcional)
[4]
[
link inativo
2024-11-05 ⓘ]
Possui suporte a criptografia de arquivos confidenciais com
GPG
.
[5]
[
link inativo
2024-11-05 ⓘ]
Repositórios de usuários
Autor
Shell
(Estrutura
de shell)
WM / DE
Editor
Terminal
Multiplexador
Áudio
Monitor
E-mail
IRC
alfunx
zsh
awesome
vim
kitty
tmux
ncmpcpp/mpd
htop/lain
thunderbird
peterzuger
zsh
i3-gaps
emacs
rxvt-unicode
screen
moc
htop
Ambrevar
Eshell
EXWM
Emacs
Emacs (Eshell)
Emacs TRAMP + dtach
EMMS
conky/dzen
mu4e
Circe
awal
fish
i3
vim
st
tmux
i3status
The Lounge
ayekat
zsh
karuiwm
vim
rxvt-unicode
tmux
ncmpcpp/mpd
karuibar
mutt
irssi
bamos
zsh
i3/xmonad
vim/emacs
rxvt-unicode
tmux
mpv/cmus
conky/xmobar
mutt
ERC
brisbin33
zsh
xmonad
vim
rxvt-unicode
screen
dzen
mutt
irssi
BVollmerhaus
fish
i3-gaps
kakoune
rxvt-unicode
polybar
thunderbird
cinelli
zsh
dwm
vim
termite-git
pianobar
htop
mutt-kz
weechat
dikiaap
zsh
i3-gaps
neovim
kitty
i3blocks
Earnestly
zsh
i3/orbment
vim/emacs
termite
tmux
mpd
conky
mutt
weechat
ErikBjare
zsh
xmonad/xfce4
vim
terminator
tmux
xfce4-panel
weechat
falconindy
bash
i3
vim
rxvt-unicode
ncmpcpp
conky
mutt
graysky
zsh
xfce4
vim
terminal
ncmpcpp
personalizado
thunderbird
insanum
bash
herbstluftwm
vim
evilvte
tmux
dzen
mutt-kz
jasonwryan
bash/zsh
dwm
vim
rxvt-unicode
tmux
ncmpcpp
personalizado
mutt
irssi
jdevlieghere
zsh
xmonad
vim
terminal
tmux
htop
mutt
weechat
jelly
zsh
i3
vim
termite
tmux
ncmpcpp
mutt-kz-git
weechat
Jorengarenar
bash
i3
vim
xterm
mpv
i3blocks
aerc
weechat
maximbaz
zsh
i3-gaps
neovim
alacritty
tmux
py3status
thunderbird
mehalter
zsh
i3-gaps
neovim
termite
tmux
gpymusic
i3blocks, gotop
neomutt
weechat
meskarune
bash
herbstluftwm
vim
rxvt-unicode
screen
conky
weechat
neersighted
fish
i3
neovim
alacritty
tmux
ncmpcpp
oibind
fish
awesome
neovim
termite
htop-vim
weechat
OK100
bash
dwm
vim
rxvt-unicode
cmus
conky, dzen
mutt
weechat
pablox-cl
zsh (zplug)
gnome3
neovim
kitty
reisub0
fish
qtile
neovim
kitty
mpd
conky
sistematico
zsh/fish/bash
i3-gaps
vim/nano
termite
tmux
ncmpcpp
polybar
mutt
weechat
sitilge
[
link inativo
2024-01-13 ⓘ]
zsh
awesome
neovim
termite
thunderbird
thiagowfx
bash
i3
vim/emacs
tilix
i3blocks
unexist
zsh
subtle
vim
rxvt-unicode
ncmpcpp
mutt
irssi
vodik
zsh
xmonad
vim
termite-git
tmux
ncmpcpp
personalizado
mutt
weechat
w0ng
zsh
dwm
vim
rxvt-unicode
tmux
ncmpcpp
personalizado
mutt
irssi
whitelynx
fish
i3
neovim
kitty
i3pystatus
wolfcore
bash
dwm
vim
rxvt-unicode
tmux
cmus
personalizado
weechat
zendeavor
zsh
i3
vim
rxvt-unicode
tmux
ncmpcpp
i3status
weechat
Veja também
gregswiki:DotFiles
XMonad Config Archive
dotfiles.github.io
terminal.sexy
- Designer de esquema de cores do terminal