¿Cómo apago periódicamente la visualización de archivos ocultos?

10

Entonces, para ocultar algunos archivos y carpetas a ojos inexpertos, modifiqué sus nombres poniendo un punto al comienzo del nombre. Funciona y los archivos están ocultos. Las personas curiosas que no son hábiles no las verán. Y usando Nautilus, enciendo y apago "mostrar archivos ocultos" usando la combinación de teclas Ctrl- H. Multa. Pero nunca sé si dejo la función activada o desactivada.

Me gustaría escribir un script bash que se inicie automáticamente cada 10 minutos, por ejemplo, y desactivará la función "mostrar archivos ocultos". Así que estaría seguro de que los ojos curiosos nunca verán archivos ocultos. Ahora el problema es que:

  • No sé qué instrucciones bash usar, si las hay. Estoy bastante seguro de que los scripts de bash pueden hacer casi todo, así que, ¡ayuda!
  • No sé cómo iniciar automáticamente el script bash cada xx segundos o minutos.

¿Cómo lo hago?

Salrandazzo
fuente
Hola Sarandazzo, si alguna de las respuestas resolvió su problema (creo que hay varias respuestas que funcionan), ¿sería tan amable de aceptar la respuesta (marque la gran "V" debajo de las flechas arriba / abajo a la izquierda). Es la forma apropiada de indicar que la respuesta funcionó para usted.
Jacob Vlijm

Respuestas:

10

Puede usar gsettingspara acceder dconffácilmente a la configuración responsable en el registro desde la línea de comandos.

La configuración para mostrar archivos ocultos (con nombres que comienzan con .) se encuentra en el esquema org.gtk.Settings.FileChoosery se llama show-hidden.

Los valores permitidos son true(mostrar archivos ocultos) o false(no mostrarlos).

Aquí están los comandos para habilitar o deshabilitar la visualización de los archivos ocultos:

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

Para ejecutar automáticamente este comando cada x minutos, hay dos buenos recursos para aprender cómo lograr esto:

  • Uso cron(la resolución mínima es de 1 minuto): help.ubuntu.com: Cron How-to

    Tenga en cuenta que cronejecuta tareas con un conjunto muy limitado de envvariables que no incluye DBUS_SESSION_BUS_ADDRESS, pero que es necesario para gsettingstrabajar. Así que tenemos que ocuparnos de establecer esta variable nosotros mismos en el script que ejecutamos si lo necesitamos

    Preparé un script para usted (con la ayuda de @JacobVlijm, quien me vinculó esta respuesta en Stack Overflow de @Radu Rădeanu ) que se ocupa de este problema y puede ejecutarse directamente por 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
    
  • Sin usar cron: ¿Cómo ejecutar el comando cada 10 segundos (sin cron)?

Byte Commander
fuente
Ja, me
ganaste
Hola Byte, cuando se ejecuta desde cron, debe configurar la DBUS_SESSION_BUS_ADDRESSvariable de entorno para que funcione la edición de ajustes.
Jacob Vlijm
@JacobVlijm Gracias, pero no tengo experiencia en cron en absoluto. Es por eso que acabo de vincular el sitio de procedimientos. ¿Te importaría ayudarme?
Byte Commander
Absolutamente, cuando se ejecutan comandos desde cron, el conjunto de variables es (muy) limitado, como una vez encontré que intentaba ejecutar comandos desde cron. Esta es una buena publicación: stackoverflow.com/a/19666729/1391444 Las líneas de Radu, siempre las uso en scripts cuando edito gsettings desde cron.
Jacob Vlijm
@JacobVlijm Incluye la parte env. ¿es correcto?
Byte Commander
5

Tendré que buscar otras versiones, pero en 14.04 y 15.10, el gsettingscomando para verificar la visibilidad de los archivos ocultos es:

gsettings get org.gtk.Settings.FileChooser show-hidden
  • Para establecer el valor de false(no mostrar archivos ocultos):

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

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

1. Un script para (re) establecer el valor es:

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

Para ejecutarlo:

  • copie el script en un archivo vacío, guárdelo como reset_hidden.py
  • ejecútelo con el comando:

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

    donde el intervalo de tiempo es en segundos, p. ej.

    python3 /path/to/reset_hidden.py 600

Agregarlo a las aplicaciones de inicio

Para agregarlo a las Aplicaciones de inicio: Tablero> Aplicaciones de inicio> Agregar. Agrega el comando:

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

2. Ejecute el comando desde cron

Si prefiere ejecutar el comando desde cron en lugar de un script de fondo, no se establece una variable de entorno importante :

DBUS_SESSION_BUS_ADDRESS

editar / configurar gsettings desde cron solo funciona si primero configura la variable .

Si desea ejecutarlo desde cron, haga que cron ejecute el script a continuación:

#!/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. Más elegantemente, usando tiempo de inactividad

Si está trabajando en su computadora, probablemente no le gustaría que los archivos se oculten inesperadamente mientras trabaja.

Usando el siguiente script, los archivos se ocultarán después de un tiempo de inactividad arbitrario. La configuración es exactamente igual, [1]pero <interval>ahora es el tiempo <idle_time>(en segundos), antes de que los archivos se oculten (nuevamente).

El script necesita xprintidle:

sudo apt-get install xprintidle

La secuencia de comandos

#!/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
Jacob Vlijm
fuente
1
Puedo confirmar que su esquema / clave gsettings es correcto en 15.10. Y +1 :)
Byte Commander
0
  1. Uso gconftool-2para la página de nautilus-file-management-propertiesmanual: http://manpages.ubuntu.com/manpages/hardy/man1/gconftool-2.1.html
  2. Úselo crontab -epara su horario. página de manual: https://help.ubuntu.com/community/CronHowto
Ivan Temchenko
fuente
1
No puedo decirte exactamente desde cuándo, pero gconfestá en desuso y ya no es utilizado por al menos Nautilus. En mi sistema 15.10, su configuración ya no está disponible. También debe describir los pasos más claramente en lugar de solo dar pistas.
Byte Commander