Un metodo semplice e privo di dipendenze esterne

Cosa sono i dots§

Forma contratta di dot files, cioè di quei file il cui nome inizia con un punto (dot). In GNU/Linux, si inizia così il nome di un file che si vuole tenere nascosto: per chi ha più familiarità con Windows è un po' come marcare il file come "nascosto" nelle proprietà, ma è un modo di agire più semplice ed elegante.

Perché conservare i dots§

Quando si parla di dots non ci si riferisce a tutti i file "dottati" del sistema, ma a quelli che albergano nella cartella $HOME o in $HOME/.config o simili, cioè tutti quei file che, come .bashrc conservano dei settaggi utili al sistema.

Come .bashrc contiene i settaggi della shell, così .conkyrc conterrà quelli di Conky (il famosissimo monitor di sistema per desktop), la cartella .fonts conterrà presumibilmente tutti i font aggiuntivi disponibili al sistema ecc.

I dots dicono poco ai novizi, anzi non sono che qualcosa contro cui scontrarsi, qualcosa su cui arrovellarsi per sistemare quell'unica problema da risolvere. Con il tempo ci si affeziona alle proprie soluzioni, si impara a governare questi file con più sicurezza, si compiono scelte di cui ci si pente ed i dots diventano i contenitori del nostro comfort domestico virtuale. In sistemi sconosciuti ci si sente a disagio, non si riconoscono le scorciatoie da tastiera, non ci si trova bene con desktop environments lontani da quello abituale e, sebbene sia bene cambiare di tanto in tanto, è fondamentale conservare la propria casa e la propria storia.

Feurbach diceva che siamo ciò che mangiamo e con ciò voleva sottolineare il legame profondo che c'è tra noi e la materia, alla chimica del nostro organismo. Per un uomo la cui corporeità si sposta spesso e volentieri nella virtualità di un ambiente desktop, probabilmente è corretto dire che siamo ciò che dottiamo. I dots dicono molto di noi: siamo più barocchi o minimalisti? In che ambiente scriviamo codice? Ne scriviamo davvero? Di notte, di giorno? Che palette prediligiamo? Usiamo la tastiera come complemento del mouse o non vogliamo mai lasciare i tasti? Tutto questo e molto altro emerge dai nostri dots.

GNU Stow§

Prima di spostare tutti i dots in una repo per poi impazzire dietro a symlink fatti a mano e gestiti a mano, ecco la soluzione: si chiama GNU Stow (link al manuale).

Cosa fa Stow?§

Prende i file contenuti nelle sue cartelle e genera dei symlink automaticamente nella home. Il tutto cercando di generare meno symlink possibile: per esempio, potendo scegliere tra la creazione di un singolo symlink per una directory e la creazione di tutti i symlink dei file contenuti in essa, Stow sceglierà sempre la prima alternativa. Meno symlink, meno possibilità di combinare guai.

Persone che ne parlano e da cui ho appreso le informazioni che riporto:

Un esempio§

Ammettiamo che la tua home directory abbia questo aspetto:

home/
    brandon/
        .config/

navigate t
            uzbl/
                [...some files]
        .local/
            share/
                uzbl/
                    [...some files]
        .vim/
            [...some files]
        .bashrc
        .bash_profile
        .bash_logout
        .vimrc

Cosa possiamo fare per gestire tutti questi file? Li prendiamo e li spostiamo in una cartella chiamata dotfiles:

home/
    /brandon/
        .config/
        .local/
            .share/
        dotfiles/
            bash/
                .bashrc
                .bash_profile
                .bash_logout
            uzbl/
                .config/
                    uzbl/
                        [...some files]
                .local/
                    share/
                        uzbl/
                            [...some files]
            vim/
                .vim/
                    [...some files]
                .vimrc

Ma così siamo rimasti senza dots dove ne avremmo bisogno! Problema che si risolve con pochi comandi.

Installare Stow§

Questo dipende dal sistema operativo.

  • Ubuntu? sudo apt-get install stow;
  • Fedora? sudo dnf install stow;
  • Arch? Manjaro? sudo pacman -S stow.

E così via: assolutamente in maniera prevedibile, Stow si chiama "stow" in tutte le repo principali, se non in tutte le repo in assoluto. È possibile anche clonarlo dalla fonte e buildarlo da sé.

Usare Stow§

Torniamo alla nostra home di poco fa. Noi abbiamo spostato dei file nella cartella dotfiles. Entriamo.

$ cd ~/dotfiles

Ora lanciamo Stow per generare i symlink nella home. Dapprima i sym di tutti i file contenenti nella cartella bash:

$ stow bash

Poi quelli contenuti in uzbl ed in vim:

$ stow uzbl
$ stow vim

Cosa abbiamo ottenuto? Una situazione funzionalmente identica a quella iniziale.

N.B. Se il contenuto di una cartella su cui lanciamo il comando stow è a sua volta dato da una cartella, allora il symlink verrà fatto sulla cartella che contiene e non sui file contenuti all'interno di quest'ultima.

Sfugge qualcosa? Niente paura, basta provare. Mal che vada annullare il comando precedente aggiungendo l'opzione -D. Esempio:

$ stow -D uzbl

Non c'è pericolo: Stow non eliminerà mai nulla che non abbia generato in prima istanza.

Altri comandi§

Crea symlink di tutti i file contenuti in una cartella ricorsivamente:

$ stow --target=[path/to/target_directory] [file1 directory1 file2 directory2]

Annulla l'operazione precedente:

$ stow --delete --target=[path/to/target_directory] [file1 directory1 file2 directory2]

Lancia una simulazioone per vedere cosa verrebbe fuori:

$ stow --simulate --target=[path/to/target_directory] [file1 directory1 file2 directory2]

Escludi i file che matchano su una regular expression (regex):

$ stow --ignore=[regex] --target=[path/to/target_directory] [file1 directory1 file2 directory2]

Spero tutto ciò possa tornare utile a qualcuno. Buon dotmaking.