Como faço para desativar periodicamente a exibição de arquivos ocultos?

10

Assim, para ocultar alguns arquivos e pastas para olhos não qualificados, modifiquei os nomes deles colocando um ponto no início do nome. Funciona e os arquivos estão ocultos. Pessoas intrometidas que não são habilidosas não as verão. E usando o Nautilus, eu ligo "mostrar arquivos ocultos", usando a combinação de teclas Ctrl - H . Bem. Mas então eu nunca sei se deixo o recurso ligado ou desligado.

Eu gostaria de escrever um script bash que inicie automaticamente a cada 10 minutos e desligue o recurso "show hidden files". Então, eu teria certeza de que os olhos intrometidos nunca verão arquivos ocultos. Agora o problema é que:

  • Eu não sei o que usar a instrução bash, se houver. Tenho certeza que os scripts do bash podem fazer quase tudo, então, por favor, ajude!
  • Eu não sei como iniciar automaticamente o script bash a cada xx segundos ou minutos.

Como faço isso?

    
por Salrandazzo 09.03.2016 / 09:56

3 respostas

10

Você pode usar gsettings para acessar facilmente a configuração responsável no registro dconf a partir da linha de comando.

A configuração de mostrar arquivos ocultos (com nomes começando com . ) está localizada no esquema org.gtk.Settings.FileChooser e chamada show-hidden .

Os valores permitidos são true (mostrar arquivos ocultos) ou false (não mostrar).

Então, aqui estão os comandos para ativar ou desativar a exibição dos arquivos ocultos:

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

Para executar este comando automaticamente a cada x minutos, existem dois bons recursos para aprender como conseguir isso:

  • Usando cron (a resolução mínima é 1 minuto): help.ubuntu.com: Cron How-to

    Observe que cron executa tarefas com um conjunto muito limitado de variáveis env que não incluem DBUS_SESSION_BUS_ADDRESS , mas isso é necessário para que gsettings funcione. Então, temos que nos encarregar de definir essa variável no script que corremos, se precisarmos

    Eu preparei um script para você (com a ajuda de @JacobVlijm que me conectou esta resposta na pilha Estouro por @Radu Rădeanu ) que cuida desse problema e pode ser executado diretamente 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
    
  • Sem usar cron : Como executar o comando a cada 10 segundos (sem cron)?

por Byte Commander 09.03.2016 / 10:13
5

Eu terei que verificar outras versões, mas em 14.04 e 15.10, o comando gsettings para verificar a visibilidade dos arquivos ocultos é:

gsettings get org.gtk.Settings.FileChooser show-hidden
  • Para definir o valor para false (não mostrar arquivos ocultos):

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

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

1. Um script para (re) definir o valor é:

#!/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 executá-lo:

  • copie o script em um arquivo vazio, salve-o como reset_hidden.py
  • execute-o pelo comando:

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

    em que o intervalo de tempo é em segundos, por exemplo,

    python3 /path/to/reset_hidden.py 600
    

Adicioná-lo aos aplicativos de inicialização

Para adicioná-lo a aplicativos de inicialização: Dash > Aplicativos de inicialização > Adicionar. Adicione o comando:

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

2. Execute o comando do cron

Se você preferir executar o comando do cron em vez de um script de segundo plano, uma variável de ambiente importante é não definida:

DBUS_SESSION_BUS_ADDRESS

editar / definir configurações do cron só funciona se você definir a variável .

Se você quiser executá-lo no cron, faça o cron executar o script abaixo:

#!/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. Mais elegantemente, usando o tempo ocioso

Se você está trabalhando em seu computador, provavelmente não gostaria de ter os arquivos ocultos inesperadamente enquanto trabalhava.

Usando o script abaixo, os arquivos ficarão ocultos após um tempo inativo arbitrário. A configuração é exatamente como [1] , mas o tempo <interval> é agora o <idle_time> (em segundos), antes que os arquivos sejam ocultados (novamente).

O script precisa de xprintidle :

sudo apt-get install xprintidle

O 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
    
por Jacob Vlijm 09.03.2016 / 10:20
0
  1. Use gconftool-2 para nautilus-file-management-properties manpage: link
  2. Use crontab -e para sua programação. manpage: link
por Ivan Temchenko 09.03.2016 / 10:10