Como estender o Gnome Nautilus File Manager com scripts personalizados

Como estender o Gnome Nautilus File Manager com scripts personalizados

Embora Gnome, em seus 3.X iteração tem sido objeto de muitos debates, devido ao seu paradigma de desktop não tradicional, é provavelmente o desktop mais usado no Linux. O gerenciador de arquivos padrão incluído no Gnome é Nautilus (o novo nome do aplicativo é "arquivos"). Neste tutorial, veremos como podemos estender o gerenciador de arquivos com funcionalidades fornecidas por scripts personalizados.

Neste tutorial, você aprenderá:

  • Como usar scripts personalizados para estender as funcionalidades Nautilus


Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Independente da distribuição
Programas O gerenciador de arquivos Nautilus
Outro Não são necessários requisitos específicos para seguir este tutorial
Convenções # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando
$ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular

Criando o diretório de scripts

A primeira coisa que queremos fazer é criar o diretório que hospedará nossos scripts: ~/.Local/Share/Nautilus/Scripts. Uma vez colocado neste diretório, os scripts aparecerão automaticamente no menu de contexto Nautilus exibido quando selecionarmos um ou mais arquivos:

$ mkdir -p ~//.Local/Share/Nautilus/Scripts

No comando acima, usamos o -p Switch (abreviação de --pais) para ter certeza de que todos os diretórios no caminho especificado são criados conforme necessário, e nenhum erro é gerado se alguns deles já existirem. Com o nosso diretório em vigor, podemos começar a trabalhar em nossos scripts muito úteis: observe que eles serão incluídos corretamente no menu de contexto Nautilus somente se forem feitos executável. Antes de escrever código, devemos aprender a conhecer algumas variáveis ​​que podemos usar dentro dos scripts: são a principal maneira de interagir com o status do gerente de arquivos, acessando informações muito úteis.



Variáveis ​​de scripts de Nautilus

Para que nossos scripts sejam úteis de alguma forma, deve ser possível interagir com o status do gerenciador de arquivos e poder fazer referência, por exemplo, o caminho e os nomes dos arquivos selecionados ou o diretório de trabalho atual: podemos acessar essas informações por meio de algumas variáveis ​​definidas exatamente para esse fim. Vamos vê -los.

Primeiro de tudo, temos o Nautilus_script_selected_file_paths variável. Como sempre deve acontecer, o nome da variável é bastante auto-explicativo: esta variável contém o caminho completo do sistema de arquivos dos arquivos atualmente selecionados no gerenciador de arquivos. O valor variável é uma string; Os caminhos de arquivo são delimitados pelo uso de nova linha personagens.

Outra variável muito útil é Nautilus_script_selected_uris. Podemos usar essa variável, como a que acabamos de ver, para fazer referência a arquivos selecionados, com uma diferença: os arquivos não são referenciados por seus caminhos, mas por seus Uri, ou “identificador de recurso unificado”. O papel dessa variável se torna evidente ao trabalhar controlo remoto FileSystems: nesse caso, caminhos simples não funcionarão, e o Nautilus_script_select_file_paths A variável estará vazia. Em tais situações, para acessar os arquivos, também precisamos conhecer o tipo de protocolo em uso: um arquivo selecionado no gerenciador de arquivos por meio do sftp O protocolo, por exemplo, será referenciado como sftp: // caminho/para/arquivo.

Finalmente, temos o Nautilus_script_current_uri e a Nautilus_script_window_geometry variáveis. O primeiro contém o Uri do diretório foi aberto no manjerador do arquivo; as últimas informações sobre a geometria (largura e altura) e a posição da janela Gerenciador de arquivos (por exemplo: 631 × 642+26+23).

Um exemplo prático

Como exemplo, criaremos um script muito simples: seu objetivo será o de organizar imagens selecionadas no gerente de arquivos na base de sua data de criação. Nesse caso, o script será escrito em Pitão, um idioma suportado por padrão em todas as distribuições; Obviamente, podemos escrever scripts bash ou usar qualquer outra linguagem de script suportada.

Atualmente, quase todas as imagens digitais contêm metadados que podemos usar para recuperar todo tipo de informação, como o tipo de câmera ou dispositivo usado para criar a imagem e as configurações usadas. O que estamos falando são chamados exif Tags: o que nos interessa neste caso é o OriginalDateTime Campo (36867). O script poderá organizar apenas as imagens que incluem essa tag e as reorganizará em diretórios criados usando o padrão "Nome do ano/mês". Imagens que não contêm informações serão colocadas em um diretório chamado "não classificado". Aqui está o nosso roteiro, nós o salvaremos como “Organizar.py ”:

#!/usr/bin/Env Python3 "" Autor: Egidio Drocileza Organiza imagens selecionadas por sua data de criação, usando o EXIF ​​DateTimeoriginal Tag "" "Importar DateTime OS do PIL Import Image DateTime_original = 36867 Def Main (): Para caminho no OS no OS.getenv ('Nautilus_script_selected_file_paths', ").splitlines (): tente: exif_data = imagem.aberto (caminho)._getexif () Exceto OSERROR: Continue Try: Date = DateTime.data hora.strptime (exif_data [DateTime_original], '%y:%m:%d%h:%m:%s').caminho.data de afiliação.strftime ('%y'), data.strftime ('%b')), exceto (KeyError, ValueError, TypeError): Directory = "OS não classificado" OS.MAKEDIRS (diretório, exist_ok = true) OS.Renomear (Path, OS.caminho.ingressar (diretório, sistema operacional.caminho.nome de base (caminho))) se __name__ == '__main__': main ()
cópia de

Como você pode ver, acessamos e lemos o Nautilus_script_selected_file_paths variável usando o OS.getenv Método, também fornecendo uma string vazia como o valor padrão, caso a variável não seja definida. Nós então usamos o Splitlines Método para "explodir" a sequência que é o valor da variável que acabamos de mencionar, em uma lista, usando o personagem Newline como delimitador. Finalmente processamos cada caminho de arquivo em um loop para.



É claro que o script pode ser melhorado, mas vamos verificar se funciona. Uma vez que o colocamos no ~/.Local/Share/Nautilus/Scripts Diretório, devemos torná -lo executável executando:

$ chmod +x ~//.Local/Share/Nautilus/Scripts/Organize.py

Uma nova entrada deve aparecer no menu de contexto do gerenciador de arquivos, quando os arquivos são selecionados:



A entrada de menu de contexto para o nosso script

E aqui está o nosso script em ação. Selecionamos as imagens que queremos classificar e clicar em “Script/Organize.py ”no menu de contexto:

Usando diálogos gráficos nos scripts

Pode haver alguns casos em que nossos scripts, para funcionar corretamente, devem ser capazes de interagir com o usuário, talvez para pedir confirmação antes de executar uma operação. Podemos criar esses diálogos em nossos scripts, dependendo da linguagem de programação que estamos usando. Ao escrever scripts bash, por exemplo, podemos usar Zenidade, um programa para criar Gtk Caixas de diálogo, que geralmente são incluídas na instalação do GNOME; Se não for, podemos instalá -lo usando nosso gerenciador de pacote de distribuição favorito. No Fedora, por exemplo, podemos executar:

$ sudo dnf install zenity

Nas distribuições baseadas em Debian, em vez disso, podemos usar o apt-get:

$ sudo apt-get install zenity

O pacote também está incluído nos repositórios de Archlinux "extras":

$ sudo pacman -s zenidade

Vamos ver um exemplo de como usar a zenidade. Desta vez, escreveremos um script de bash que, quando executado, diminuirá o nome de todos os arquivos selecionados, depois de pedir e receber a confirmação do usuário.

#!/Bin/Bash Set -e Set -U Set -o Pipefail Se Zenity --Question - -title = "confirmação" --text = "Devo executar o script?"; então echo" $ nautilus_script_selected_file_paths "| enquanto read -r selected_file; do file =" $ (nome da base "$ selected_file") "mv" $ file "" $ file ,, "FI FI
cópia de

No roteiro que invocamos Zenidade com o --pergunta, --título e --texto Opções:
Eles são usados ​​respectivamente, para exibir um diálogo de perguntas, para definir o título da janela pop -up que será exibida e definir o texto real do diálogo. Nesse caso, o código de saída da zenidade será 0 se o usuário clicar em "sim" e 1 se ele clicar no botão "não". Como sabemos, um código de saída de 0 significa que o comando foi executado com sucesso, portanto o código dentro da instrução IF será executado. Para baixar o arquivo, usamos o $ parâmetro ,, Expansão de parâmetros.



O diálogo da Zenidade

LoadPosition in-Article-Ads-Banner_31

Ao usar linguagens de programação mais sofisticadas, como o Python, podemos acessar vários tipos de bibliotecas gráficas, para gerar diálogos, como o Tinnter, que é o kit de ferramentas Python GUI padrão de Facto, ou PygoBject para usar o Gtk Kit de ferramentas e bibliotecas.

Conclusões

Neste tutorial, vimos como, em poucas etapas fáceis, podemos estender o gerenciador de arquivos Nautilus usando scripts feitos personalizados escritos em vários tipos de linguagens de programação. Vimos onde os scripts devem ser colocados no sistema de arquivos e quais são as variáveis ​​que podemos fazer referência a eles para obter os caminhos ou URI do arquivo selecionado, o URI do diretório aberto no gerenciador de arquivos e sua geometria. Finalmente, dois exemplo, um escrito em Python e o outro em Bash. Neste último, vimos também como gerar um diálogo gráfico usando Zenidade: Se você está curioso sobre esse utilitário, fique atento, falaremos sobre isso em breve, aqui no LinuxConfig.org.

Tutoriais do Linux relacionados:

  • Coisas para instalar no Ubuntu 20.04
  • Arquivos de configuração do Linux: os 30 primeiros mais importantes
  • Como escrever extensões de Nautilus com Nautilus-python
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Mastering Bash Script Loops
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
  • Como montar a imagem ISO no Linux
  • Linux pode obter vírus? Explorando a vulnerabilidade do Linux…
  • Coisas para fazer depois de instalar o Ubuntu 22.04 Jellyfish…