Come disattivare periodicamente la visualizzazione dei file nascosti?


10

Quindi, al fine di nascondere alcuni file e cartelle a occhi non qualificati, ho modificato i loro nomi mettendo un punto all'inizio del nome. Funziona e i file sono nascosti. Le persone ficcanaso che non sono abili non le vedranno. E usando Nautilus accendo e spegne "mostra file nascosti" usando la combinazione di tasti Ctrl- H. Belle. Ma poi non so mai se lascio attiva o disattiva la funzione.

Vorrei scrivere uno script bash che avvii automaticamente ogni, diciamo, 10 minuti e disattiverà la funzione "mostra file nascosti". Quindi sarei sicuro che gli occhi ficcanaso non vedranno mai file nascosti. Ora il problema è che:

  • Non so quali istruzioni bash usare, se ce ne sono. Sono abbastanza sicuro che gli script bash possano fare quasi tutto, quindi per favore aiutatemi!
  • Non so come avviare automaticamente lo script bash ogni xx secondi o minuti.

Come lo faccio?


Ciao Sarandazzo, se una delle risposte risolve il tuo problema (penso che ci siano più risposte che funzionano), saresti così gentile da accettare la risposta (spunta la grande "V" sotto le frecce su / giù a sinistra). È il modo appropriato per indicare la risposta che ha funzionato per te.
Jacob Vlijm,

Risposte:


10

È possibile utilizzare gsettingsper accedere dconffacilmente alle impostazioni responsabili nel registro dalla riga di comando.

L'impostazione per mostrare i file nascosti (con nomi che iniziano con .) si trova nello schema org.gtk.Settings.FileChoosere viene chiamata show-hidden.

I valori consentiti sono true(mostra i file nascosti) o false(non li mostrano).

Ecco quindi i comandi per abilitare o disabilitare la visualizzazione dei file nascosti:

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

Per eseguire automaticamente questo comando ogni x minuti, ci sono due buone risorse per imparare come raggiungere questo obiettivo:

  • Utilizzo cron(la risoluzione minima è di 1 minuto): help.ubuntu.com: Cron How-to

    Si noti che cronesegue attività con un set molto limitato di envvariabili che non includono DBUS_SESSION_BUS_ADDRESS, ma è necessario per gsettingsfunzionare. Quindi dobbiamo occuparci di impostare noi stessi questa variabile nello script che eseguiamo se ne abbiamo bisogno

    Ho preparato uno script per te (con l'aiuto di @JacobVlijm che mi ha collegato questa risposta su Stack Overflow di @Radu Rădeanu ) che si occupa di questo problema e può essere eseguito direttamente da 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
  • Senza usare cron: come eseguire il comando ogni 10 secondi (senza cron)?


Ah, mi hai battuto 9 secondi :)
Jacob Vlijm

Ciao byte, quando eseguito da cron, è necessario impostare la DBUS_SESSION_BUS_ADDRESSvariabile di ambiente per far funzionare la modifica delle impostazioni.
Jacob Vlijm,

@JacobVlijm Grazie, ma non ho esperienza con cron. Ecco perché ho appena collegato il sito di istruzioni. Ti dispiacerebbe aiutarmi?
Byte Commander

Assolutamente, quando si eseguono comandi da cron, l'insieme di env vars è (molto) limitato, come ho scoperto una volta provando a eseguire comandi da cron. Bel post è questo: stackoverflow.com/a/19666729/1391444 Le linee di Radu, lo uso sempre negli script quando modifico gsettings da cron.
Jacob Vlijm,

@JacobVlijm Inclusa la parte env. è corretto?
Byte Commander

5

Dovrò controllare altre versioni, ma su 14.04 e 15.10, il gsettingscomando per verificare la visibilità dei file nascosti è:

gsettings get org.gtk.Settings.FileChooser show-hidden
  • Per impostare il valore su false(non mostrare i file nascosti):

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

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

1. Uno script per (ri) impostare il valore è quindi:

#!/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"])

Per eseguirlo:

  • copia lo script in un file vuoto, salvalo come reset_hidden.py
  • eseguirlo dal comando:

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

    dove l'intervallo di tempo è espresso in secondi, ad es

    python3 /path/to/reset_hidden.py 600

Aggiungilo alle applicazioni di avvio

Per aggiungerlo alle applicazioni di avvio: Dash> Applicazioni di avvio> Aggiungi. Aggiungi il comando:

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

2. Esegui il comando da cron

Se si preferisce eseguire il comando da cron anziché da uno script in background, non viene impostata un'importante variabile di ambiente :

DBUS_SESSION_BUS_ADDRESS

la modifica / impostazione di gsettings da cron funziona solo se si imposta prima la variabile .

Se desideri eseguirlo da cron, fai eseguire a cron lo script seguente:

#!/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. Più elegantemente, utilizzando il tempo di inattività

Se stai lavorando sul tuo computer, probabilmente non ti piacerebbe nascondere i file in modo imprevisto mentre lavori.

Utilizzando lo script seguente, i file verranno nascosti dopo un tempo di inattività arbitrario. L'installazione è esattamente come, [1]ma <interval>ora è il <idle_time>(in secondi), prima che i file si nascondano (di nuovo).

La sceneggiatura ha bisogno di xprintidle:

sudo apt-get install xprintidle

Il copione

#!/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

1
Posso confermare che il tuo schema / chiave gsettings è corretto il 15.10. E +1 :)
Byte Commander

0
  1. Utilizzare gconftool-2per nautilus-file-management-propertiesmanpage: http://manpages.ubuntu.com/manpages/hardy/man1/gconftool-2.1.html
  2. Usa crontab -eper il tuo programma. manpage: https://help.ubuntu.com/community/CronHowto

1
Non posso dirti esattamente da quando, ma gconfè deprecato e non è più utilizzato da almeno Nautilus. Sul mio sistema 15.10, l'impostazione non è più disponibile. Inoltre, dovresti descrivere i passaggi in modo più chiaro invece di dare solo suggerimenti.
Byte Commander
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.