Comment cacher (dans Thunar et Nautilus) un répertoire sans mettre un point dans son nom?

14

Habituellement, les programmes Linux stockent les paramètres de l'utilisateur dans les répertoires ~ /.*. Mais malheureusement, certains développeurs (de certaines applications dont j'ai besoin) ne suivent pas cette règle et ne commencent pas leurs noms de dossiers de stockage de paramètres par un point. Il en résulte des dossiers jamais utilisés par l'utilisateur qui encombrent (pas le bon mot peut-être, car il n'y en a pas beaucoup, mais ils ennuient quand même) un répertoire personnel. Les renommer n'est pas une option, car les applications ne les trouveront pas dans ce cas (et les recréeront).

Existe-t-il un moyen de masquer un dossier sans point commençant par son nom dans les navigateurs du système de fichiers courants (j'utilise en fait Thunar de XFCE, avec Midnight Commander et Krusader, mais cela ne me dérangerait pas de connaître Nautilus aussi).

Ivan
la source

Réponses:

18

Nautilus (mise à jour: cela devrait également fonctionner avec Thunar maintenant) masquera tout fichier ou dossier répertorié dans le fichier .hiddensitué dans le même répertoire.

Il existe deux façons de masquer un dossier dans Nautilus:

Script Nautilus

  1. Enregistrez le code suivant dans un nouveau fichier dans votre dossier de départ. Nommez-le Hide.

    #!/usr/bin/env python
    
    import commands
    from os.path import join
    
    
    files = commands.getoutput("echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
    cwd = commands.getoutput("echo $NAUTILUS_SCRIPT_CURRENT_URI")
    cwd = cwd[7:]
    
    for f in files.split(" /"):
    
        f = f.split("/")[-1]
    
        commands.getoutput("echo "+f+" >> "+join(cwd, ".hidden"))
  2. Exécutez la commande suivante pour installer le script:

    cp Hide ~/.local/share/nautilus/scripts/ && chmod u+x ~/.local/share/nautilus/scripts/Hide
    
  3. Dans Nautilus, sélectionnez un ou plusieurs fichiers / dossiers et cliquez avec le bouton droit. Sélectionnez Masquer dans le menu Scripts :

    entrez la description de l'image ici

    Rechargez l'emplacement actuel ( F5) et les fichiers / dossiers sélectionnés seront masqués.

Ligne de commande

Supposons que vous souhaitiez masquer un dossier appelé "Rick Astley's Greatest Hits", exécutez simplement la commande suivante:

echo "Rick Astley's Greatest Hits" >> .hidden
Isaïe
la source
2
Exactement une sorte de réponse que je souhaitais obtenir. Mais, malheureusement, cela ne fonctionne pas pour Thunar.
Ivan
@Ivan, j'espère qu'ils l'ajouteront éventuellement, voir le rapport de bug auquel j'ai lié dans ma réponse.
Ésaïe
Pourquoi les guillemets doubles "ObnoxiousFolder" ??
karthick87
Pour info, le rapport de bogue a été fermé en tant que WONTFIX (plutôt grossièrement IMO, car il y avait déjà un correctif pour cela, et le responsable du projet a essentiellement dit "je m'en fiche"). Nous aurons besoin d'une autre solution ...
waldyrious
La version récente de Thunar prend en charge cela car ils utilisent GIO pour déterminer les répertoires cachés, et GIO implémente désormais la prise en charge du .hiddenfichier.
Brian Campbell
1

Ouvrez synaptique et recherchez "nautilus-hide" installez-le. Déconnexion et connexion. Maintenant, faites un clic droit sur n'importe quel fichier ou dossier. Vous verrez maintenant une option "Masquer" dans le menu contextuel.

Il ne modifiera pas le nom mais masquera le dossier.

Apprenti curieux
la source
0

J'ai modifié le bon script d'Alvin pour être (espérons-le) plus Pythonique (et potentiellement plus rapide si de nombreux fichiers sont ajoutés, car il .hiddenn'est ouvert qu'une seule fois):

#!/usr/bin/env python

import os

files = os.environ["NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"].split()
# According to https://help.ubuntu.com/community/NautilusScriptsHowto
# the list is newline-delimited, which is split()'s default separator

# No need for NAUTILUS_SCRIPT_CURRENT_URI
cwd = os.path.dirname(files[0])
# Assuming all selected files are in the same path, I cannot imagine why not

# Instead of relying on "echo ... >> ..." use Python's IO:
with open(os.path.join(cwd, ".hidden"), "a") as hidden:
    hidden.write("\n".join(
        [os.path.basename(f) for f in files.split()]))
Tobias Kienzler
la source