Dotfiles (Español)

Esta traducción de
Dotfiles
fue revisada el
2021-04-14
. Si existen
cambios
puede
actualizarla
o avisar al
equipo de traducción
.
Artículos relacionados
XDG Base Directory support
X resources
La configuración de aplicaciones específica del usuario es tradicionalmente almacenada en los llamados
dotfiles
(archivos en los que su nombre comienza con un punto). Es una práctica común seguir el rastro de los dotfiles con un
version control system (Español)
como podría ser
Git (Español)
para seguir el rastro de los cambios y sincronizar dotfiles a través de varios huéspedes (hosts). Hay varias maneras de gestionar sus dotfiles (por ejemplo rastrearlos del directorio home contra almacenarlos en un subdirectorio y hacer un enlace simbólico, copiar o generar archivos con un script de
shell
o
una herramienta dedicada
). Ademas de explicar como se gestionan los dotfiles, este artículo también contiene
una lista de repositorios dotfile
de los usuarios de Arch Linux.
Rastrear dotfiles directamente con Git
El beneficio de seguir la pista de los dotfiles directamente con Git es que solamente requiere
Git
y no requiere enlaces simbólicos. La desventaja es que las
configuraciones específicas del huésped
generalmente requieren fusionar los cambios en múltiples
ramas
.
La manera más sencilla de conseguir este método es inicializar un repositorio
Git
directamente en tu directorio home e ignorar todos los archivos por defecto con un patrón
gitignore(5)
de
*
.
Sin embargo este método tiene dos inconvenientes: se puede volver confuso cuando se tienen otros repositorios Git en el directorio home (por ejemplo si olvida inicializar un repositorio de repente opera en los dotfiles de su repositorio) y no se pueden ver fácilmente que archivos no están rastreados en el directorio actual (porque están siendo ignorados).
Un método alternativo que no tiene estos inconvenientes es el "bare repository and alias method" (Repositorio vacío y método de alias) popularizado por
este comentario de Hacker News
, que solo toma tres órdenes para configurar.
$ git init --bare ~/.dotfiles
$ alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
$ config config status.showUntrackedFiles no
Después puede gestionar sus dotfiles con el
alias
creado. Si está usando
Bash
y quisiera bash completion (Terminación de Bash) para este alias, simplemente instale
bash-complete-alias
AUR
, después añada el alias y la siguiente línea a su
~/.bashrc
.
$ complete -F _complete_alias config
Sugerencia
Para evitar accidentalmente hacer commit (consolidar) de información confidencial, véase
Git#Filtering confidential information
.
Configuraciones específicas del huésped
Un problema común con la sincronización de dotfiles a través de varias máquinas es la configuración específica del huésped.
Con
Git
se puede resolver manteniendo una rama maestra para todas las configuraciones compartidas, mientras cada máquina individual tenga una rama específica por máquina controlada. La configuración específica del huésped se puede hacer un commit a la rama específica de la máquina; cuando la configuración compartida es modificada en la rama maestra, las ramas de cada máquina necesitará establecer una nueva base (rebase) sobre la rama maestra actualizada.
En scripts de configuración como
archivos de configuración de shell
se pueden utilizar condicionales. Por ejemplo, un script de
Bash (Español)
(es decir
.bashrc
) puede aplicar distintas configuraciones dependiendo del nombre de la máquina (o tipo, variable personalizada, etc.):
if [[ "$(hostname)" == "archlaptop" ]]; then
    # mandatos específicos de laptop
else
    # mandatos para pc o servidor
fi
Algo similar se puede lograr con
.Xresources
.
[1]
Si encuentra que hacer rebase en las ramas Git es demasiado engorroso, probablemente quiera usar una
herramienta
que soporte
file grouping
(agrupamiento de archivos) o si desea todavía mayor flexibilidad, una herramienta que haga
procesing
(procesamiento).
Herramientas
Agrupamiento de archivos
Como los archivos de configuración se pueden agrupar en grupos de configuración (también llamados perfiles o paquetes)
Procesamiento
Algunas herramientas procesan archivos de configuración para permitir que se personalicen dependiendo del huésped.
Nombre
Paquete
Escrito en
Agrupamiento de archivos
Procesamiento
dot-templater
dot-templater-git
AUR
Rust
basado en directorio
sintaxis personalizada
dotter
dotter-rs
AUR
Rust
archivo de configuración
Handlebars
dotdrop
[
enlace roto
2024-01-13]
dotdrop
AUR
Python
archivo de configuración
Jinja2
dotfiles
dotfiles
AUR
Python
No
No
Dots
dots-manager
AUR
[
enlace roto
: package not found]
Python
basado en directorio
puntos de adición personalizados
chezmoi
chezmoi
Go
basado en directorio
Go templates
GNU Stow
stow
Perl
directory-based
[2]
No
Mackup
mackup
AUR
Python
automático por aplicación
No
mir.qualia
mir.qualia
AUR
Python
No
blocks personalizados
rcm
rcm
AUR
Perl
basado en directorio (por huésped o tag)
No
Programas que envuelven a Git
Si está incómodo con
Git (Español)
, ustede querrá usar una de estas herramientas, las cuales abstraen el sistema de control de versión (más o menos).
Nombre
Paquete
Escrito en
Agrupamiento de archivos
Procesamiento
dotbare
dotbare
AUR
Shell (
fzf
)
conforme repositorio
No
dotgit
dotgit
AUR
Python
basado en nombre de archivo
No
homeshick
homeshick-git
AUR
Bash
conforme repositorio
No
homesick
–
Ruby
conforme repositorio
No
Pearl
pearl-git
AUR
Python
conforme repositorio
No
vcsh
vcsh
Shell
conforme repositorio
No
yadm
(1)
yadm
Python, Shell
basado en nombre de archivo
(por clase, SO, hostname & usuario)
[3]
Jinja2, Shell
(opcional)
[4]
Soporta la encriptación confidencial de datos con
GPG (Español)
.
[5]
[
enlace roto
2024-11-05]
User repositories
Autor
Shell (Shell framework)
WM / DE
Editor
Terminal
Multiplexer
Audio
Monitor
Mail (Correo)
IRC
Gestor de Archivos
alfunx
zsh
awesome
vim
kitty
tmux
ncmpcpp/mpd
htop/lain
thunderbird
altaway
zsh
bspwm
neovim
alacritty
bspwm
mpv
ytop
gnus+message
rcirc
broot
Ambrevar
Eshell
EXWM
Emacs
Emacs (Eshell)
Emacs TRAMP + dtach
EMMS
conky/dzen
mu4e
Circe
ananthu
zsh
bspwm
neovim
alacritty
mpv
htop, polybar
neomutt
weechat
ranger
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
benmezger
zsh/bash/fish
i3-gaps
[
enlace roto
2025-01-19]
emacs
[
enlace roto
2025-01-19]
rxvt-unicode
[
enlace roto
2025-01-19]
tmux
[
enlace roto
2025-01-19]
i3status-rs
[
enlace roto
2025-01-19]
mu4e/neomutt
weechat
brisbin33
zsh
xmonad
vim
rxvt-unicode
screen
dzen
mutt
irssi
BVollmerhaus
fish
i3-gaps
kakoune
kitty
polybar
ranger
cinelli
zsh
dwm
vim
termite-git
pianobar
htop
mutt-kz
weechat
dikiaap
zsh
i3-gaps
neovim
alacritty
tmux
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
filiparag
fish
bspwm
vim
alacritty
tmux
mpv,
playerctl
htop, polybar
mail-notification
pcmanfm
[
enlace roto
2022-09-17]
gardenapple
fish
Sway
neovim
termite
htop
aerc
graysky
zsh
xfce4
vim
terminal
ncmpcpp
custom
thunderbird
hugdru
[
enlace roto
2025-11-16]
zsh
awesome
neovim
rxvt-unicode
tmux
thunderbird
weechat
insanum
bash
herbstluftwm
vim
evilvte
tmux
dzen
mutt-kz
jasonwryan
bash/zsh
dwm
vim
rxvt-unicode
tmux
ncmpcpp
custom
mutt
irssi
jdevlieghere
zsh
xmonad
vim
terminal
tmux
htop
mutt
weechat
jelly
zsh
i3
vim
termite
tmux
ncmpcpp
mutt-kz-git
weechat
JonasDe
[
enlace roto
2022-09-17]
zsh
i3
vim
rxvt-unicode
tmux
Jorengarenar
bash
i3
vim
xterm
mpv
i3blocks
aerc
weechat
LukeSmithxyz
zsh
dwm
neovim
st
ncmpcpp
dwmblocks
mutt
lf
MarkusZoppelt
zsh
gnome
vim
terminal
tmux
maximbaz
zsh
sway
kakoune
kitty
waybar
neomutt
nnn
mehalter
zsh
i3-gaps
neovim
termite
tmux
cmus
gotop
neomutt
weechat
ranger
meskarune
bash
herbstluftwm
vim
rxvt-unicode
screen
conky
weechat
neersighted
fish
i3
neovim
alacritty
tmux
ncmpcpp
oibind
fish
awesome
neovim
st
tmux
htop-vim
weechat
lf
OK100
bash
dwm
vim
rxvt-unicode
cmus
conky, dzen
mutt
weechat
pablox-cl
zsh (zplug)
gnome3
neovim
kitty
peterzuger
zsh
i3-gaps
emacs
rxvt-unicode
screen
moc
htop
potamides
bash
awesome
neovim
termite
tmux
ncmpcpp
conky,htop
mutt
weechat
ranger
reisub0
fish
qtile
neovim
kitty
mpd
conky
shubhamgupta2956
zsh
i3-gaps-rounded
vim
terminator
cmus
htop, i3blocks, gotop
ranger, nautilus
sistematico
zsh/fish/bash
i3-gaps
vim/nano
termite
tmux
ncmpcpp
polybar
mutt
weechat
sitilge
[
enlace roto
2024-01-13]
zsh
sway
neovim
alacritty
htop
thunderbird
thiagowfx
bash
i3
vim/emacs
tilix
i3blocks
vodik
zsh
xmonad
vim
termite-git
tmux
ncmpcpp
custom
mutt
weechat
w0ng
zsh
dwm
vim
rxvt-unicode
tmux
ncmpcpp
custom
mutt
irssi
whitelynx
fish
i3
neovim
kitty
i3pystatus
wolfcore
bash
dwm
vim
rxvt-unicode
tmux
cmus
custom
weechat
zendeavor
zsh
i3
vim
rxvt-unicode
tmux
ncmpcpp
i3status
weechat
Recursos adicionales
gregswiki:DotFiles
XMonad Config Archive
dotfiles.github.io
terminal.sexy
- Terminal color scheme designer