it-swarm-es.com

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

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 los 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, digamos, 10 minutos, y apague 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?

10
Salrandazzo

Puede usar gsettings para acceder fácilmente a la configuración responsable en el registro dconf 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.FileChooser y 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:

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

    Tenga en cuenta que cron ejecuta tareas con un conjunto muy limitado de env variables que no incluyen DBUS_SESSION_BUS_ADDRESS, pero eso es necesario para que gsettings funcione. 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 que me vinculó esta respuesta en Stack Overflow by @ 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)?

10
Byte Commander

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

gsettings get org.gtk.Settings.FileChooser show-hidden
  • Para establecer el valor en 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.

    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, una variable de entorno importante es no establecida:

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 como [1] pero el tiempo <interval> ahora es el <idle_time> (en segundos), antes de que los archivos se oculten (nuevamente).

El script necesita xprintidle:

Sudo apt-get install xprintidle

El 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. Use gconftool-2 para nautilus-file-management-properties página de manual: http://manpages.ubuntu.com/manpages/hardy/man1/gconftool-2.1.html
  2. Use crontab -e para su horario. página de manual: https://help.ubuntu.com/community/CronHowto
0
Ivan Temchenko