web-dev-qa-db-fra.com

Comment désactiver périodiquement l'affichage des fichiers cachés?

Donc, afin de cacher certains fichiers et dossiers aux yeux non qualifiés, j'ai modifié leurs noms en mettant un point au début du nom. Cela fonctionne et les fichiers sont cachés. Nosy qui ne sont pas qualifiés ne les verront pas. Et en utilisant Nautilus, j’allume et éteint "afficher les fichiers cachés" en utilisant la combinaison de touches Ctrl-H. Bien. Mais alors je ne sais jamais si je laisse la fonctionnalité activée ou désactivée.

J'aimerais écrire un script bash qui démarre automatiquement toutes les 10 minutes, par exemple, et désactive la fonctionnalité "Afficher les fichiers cachés". Donc, je serais sûr que les yeux curieux ne verront jamais les fichiers cachés. Maintenant le problème est que:

  • Je ne sais pas quelle instruction bash utiliser, le cas échéant. Je suis à peu près sûr que les scripts bash peuvent faire presque tout, alors, aidez-moi!
  • Je ne sais pas comment démarrer automatiquement le script bash toutes les xx secondes ou minutes.

Comment fait-on ça?

10
Salrandazzo

Vous pouvez utiliser gsettings pour accéder facilement au paramètre responsable dans le registre dconf à partir de la ligne de commande.

Le paramètre permettant d'afficher ou non les fichiers cachés (dont le nom commence par .) se trouve dans le schéma org.gtk.Settings.FileChooser et est appelé show-hidden.

Les valeurs autorisées sont true (afficher les fichiers cachés) ou false (ne pas les afficher).

Donc, voici les commandes pour activer ou désactiver l'affichage des fichiers cachés:

gsettings set org.gtk.Settings.FileChooser show-hidden true
gsettings set org.gtk.Settings.FileChooser show-hidden false

Pour exécuter automatiquement cette commande toutes les x minutes, il existe deux bonnes ressources pour savoir comment y parvenir:

  • Utilisation de cron (résolution minimale de 1 minute): help.ubuntu.com: Cron How-to

    Notez que cron exécute des tâches avec un ensemble très limité de env variables qui n'incluent pas DBUS_SESSION_BUS_ADDRESS, mais cela est nécessaire pour que gsettings fonctionne. Nous devons donc régler cette variable nous-mêmes dans le script que nous exécutons si nous en avons besoin.

    J'ai préparé un script pour vous (avec l'aide de @ JacobVlijm qui m'a lié cette réponse sur Stack Overflow par @ Radu Rădeanu ) qui s’occupe de ce problème et peut être exécuté directement par cron:

    #!/bin/bash
    
    # --> Script to disable showing hidden files - to be run as cron job <--
    
    # export DBUS_SESSION_BUS_ADDRESS environment variable
    PID=$(pgrep gnome-session)
    export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
    
    gsettings set org.gtk.Settings.FileChooser show-hidden false
    
  • Sans utiliser cron: Comment exécuter une commande toutes les 10 secondes (sans le cron)?

10
Byte Commander

Je devrai vérifier d'autres versions, mais le 14.04 et le 15.10, la commande gsettings pour vérifier la visibilité des fichiers cachés est la suivante:

gsettings get org.gtk.Settings.FileChooser show-hidden
  • Pour définir la valeur sur false (ne pas afficher les fichiers cachés):

    gsettings set org.gtk.Settings.FileChooser show-hidden false
    
  • ou true:

    gsettings set org.gtk.Settings.FileChooser show-hidden true
    

1. Un script pour (re) définir la valeur est alors:

#!/usr/bin/env python3
import subprocess
import sys
import time

interval = int(sys.argv[1])

key = "org.gtk.Settings.FileChooser"
val = "show-hidden"

while True:
    time.sleep(interval)
    subprocess.Popen(["gsettings", "set", key, val, "false"])

Pour l'exécuter:

  • copiez le script dans un fichier vide, enregistrez-le sous le nom reset_hidden.py
  • lancez le par la commande:

    python3 /path/to/reset_hidden.py <interval>
    

    où l'intervalle de temps est en secondes, par ex.

    python3 /path/to/reset_hidden.py 600
    

Ajoutez-le aux applications de démarrage

Pour l'ajouter aux applications de démarrage: Dash> Applications de démarrage> Ajouter. Ajoutez la commande:

python3 /path/to/reset_hidden.py <interval>

2. Exécutez la commande depuis cron

Si vous préférez exécuter la commande à partir de cron au lieu d’un script d’arrière-plan, une variable d’environnement importante est et non :

DBUS_SESSION_BUS_ADDRESS

() modifier/configurer les paramètres de cron ne fonctionne que si vous définissez d'abord la variable .

Si vous voulez l'exécuter à partir de cron, demandez à cron d'exécuter le script ci-dessous:

#!/bin/bash

PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)

gsettings set org.gtk.Settings.FileChooser show-hidden false

3. Plus élégamment, en utilisant le temps d'inactivité

Si vous travaillez sur votre ordinateur, vous ne voudriez probablement pas que les fichiers se cachent de manière inattendue pendant que vous travaillez.

En utilisant le script ci-dessous, les fichiers seront cachés après un temps d'inactivité arbitraire. La configuration est identique à [1] mais le temps <interval> est maintenant le <idle_time> (en secondes), avant que les fichiers ne se cachent (à nouveau).

Le script a besoin de xprintidle:

Sudo apt-get install xprintidle

Le script

#!/usr/bin/env python3
import subprocess
import sys
import time

interval = int(sys.argv[1])

key = "org.gtk.Settings.FileChooser"
val = "show-hidden"

idle1 = 0

while True:
    time.sleep(2)
    idle2 = int(subprocess.check_output(["xprintidle"]).decode("utf-8").strip())/1000
    if all([idle1 <= interval, idle2 >= interval]):
        subprocess.Popen(["gsettings", "set", key, val, "false"])
    idle1 = idle2
5
Jacob Vlijm
  1. Utilisez gconftool-2 pour nautilus-file-management-properties page de manuel: http://manpages.ubuntu.com/manpages/hardy/man1/gconftool-2.1.html
  2. Utilisez crontab -e pour votre emploi du temps. page de manuel: https://help.ubuntu.com/community/CronHowto
0
Ivan Temchenko