How to Hide a Directory in Thunar and Nautilus Without a Dot

hidden-filesnautilusthunarxfcexubuntu

Usually Linux programs store user's settings in ~/.* directories. But unfortunately some developers (of some applications I need) do not follow this rule and don't start their settings storage folders names with a dot. This results in never-user-used folders cluttering (not the right word perhaps, as there are not many, but they annoy anyway) a home directory. Renaming them is not an option, as the applications won't find them in this case (and will create them again).

Is there a way to hide a folder having no dot starting its name from being displayed in common file system browsers (I actually use Thunar of XFCE, alongside with Midnight Commander and Krusader, but wouldn't mind to know about Nautilus too).

Best Answer

Nautilus (Update: This should also work with Thunar now) will hide any file or folder that is listed in the file .hidden located in the same directory.

There are two ways to hide a folder in Nautilus:

Nautilus script

  1. Save the following code in a new file in your home folder. Name it 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. Run the following command to install the script:

    cp Hide ~/.local/share/nautilus/scripts/ && chmod u+x ~/.local/share/nautilus/scripts/Hide
    
  3. In Nautilus, select one or more files/folders and right click. Select Hide from the Scripts menu:

    enter image description here

    Reload the current location ( F5 ) and the selected files/folders will be hidden.

Command line

Say you want to hide a folder called "Rick Astley's Greatest Hits", just run the following command:

echo "Rick Astley's Greatest Hits" >> .hidden