Nautilus Scripts

De doc.ubuntu-es
(Diferencias entre revisiones)
Saltar a: navegación, buscar
(Enviar por correo el fichero seleccionado)
(Esconder o mostrar ficheros ocultos: corrijo formato texto)
Línea 333: Línea 333:
  
  
Se puede hacer lo mismo sin scripts presionando <tt>CTRL+H<7tt> en Nautilus
+
Se puede hacer lo mismo sin scripts presionando <tt>CTRL+H</tt> en Nautilus
 
+
  
 
== Enlaces útiles ==
 
== Enlaces útiles ==

Revisión de 23:38 10 mayo 2008

El administrador de archivos nautilus es extensible a través del uso de scripts.

Con scripts puedes hacer muchas cosas, como por ejemplo:

  • Crear una opción mejorada "Abrir con" (abre algunos ficheros que coincidan con tus aplicaciones preferidas
  • crear un zip de un directorio y enviarlo por correo
  • Abrir una terminal en el directorio seleccionado
  • ...

Todo esto con un simple clic en el botón derecho del ratón

Contenido

Gestionar Scripts de Nautilus

Todos tus scripts se almacenan en el directorio Nautilus-scripts - así que para añadir un nuevo script simplemente colócalo ahí. Puedes encontrar la carpeta Nautilus-scripts aquí :

~/.gnome2/nautilus-scripts

Añadir scripts

  • Abre un editor de textos, copia y pegalo en él y guarda el script en tu carpeta nautilus-scripts
  • nómbralo de acuerdo a la etiqueta que quieres que aparezca en el menú que aparece al hacer clic con el botón derecho
  • Dale permisos de ejecución
chmod +x nombre_de_script

O haz click con el botón derecho sobre el script y selecciona Propiedades, luego Permisos y dale permisos de ejecución.

¡Ya tienes tu script!

Eliminar scripts

  • simplemente eliminalo de tu carpeta de nautilus-scripts

Dar derechos a tus scripts

Advert.3.png Algunos scripts puede que necesiten ejecutarse como root; ésto generalmente es una mala idea, a menos que sepas qué estás haciendo. Se pueden configurar los permisos gracias al comando `chmod`.

CUIDADO- you might want to set the preferences in Nautilus/Gedit/Whatever_else_you_are_opening_as_root so as to let you know instantly whether or not you are currently in the root-application. i.e. a yellow background in root-gedit and nautilus, instead of the normal white....

Scripting

¿Qué es un script?

Puedes poner en nautilus una gran cantidad de "scripts", que pueden ser:

  • binarios (programas compilados)
  • shell scripts (bash, sh ...)
  • ...

Es decir, básicamente cualquier cosa que se pueda ejecutar

Variables de entorno

Cuando un script es llamado, nautilus configura ciertas varialbes que pueden ser usadas en tus scripts. Éstas son:

* `NAUTILUS_SCRIPT_SELECTED_FILE_PATHS`
   newline-delimited paths for selected files (only if local)
* `NAUTILUS_SCRIPT_SELECTED_URIS`
   newline-delimited URIs for selected files
* `NAUTILUS_SCRIPT_CURRENT_URI`
   current location
* `NAUTILUS_SCRIPT_WINDOW_GEOMETRY`
   position and size of current window 


Ejemplos de scripts

Notes: Estos scripts pueden están desactualizados, utilízalos bajo tu propia responsabilidad

Enviar por correo el fichero seleccionado

Este script es realmente útil. ¿Cuanto tiempo se necesita para encontrar el fichero y enviarlo con Evolution o Thunderbird?. Es mucho más fácil usar nautilus para encontrar tu fichero y enviarlo desde ahí.


   #!/usr/bin/perl -w
   # By John Russell

   # This script sends the selected file(s) with your email client.

   use strict;

   my $MAILTO_URL="mailto:?";
   my @files = split("\n", $ENV{NAUTILUS_SCRIPT_SELECTED_FILE_PATHS});
   my $count = 0;
   foreach my $file (@files)
   {
       if ( ! -f $file && ! -l $file )
       {
           my @dialog = ("gdialog","--title","Error","--msgbox", "\nError: Can not send $file.    \n\n    Only regular files can be mailed.    ","200", "300");
           system (@dialog);
   	}
   	else
   	{
   	   $MAILTO_URL = $MAILTO_URL . "attach=" . $file . "&";
              shift;
   	    $count += 1;
   	}
   }


   if ($count > 0)
   {
       my @command = ("gnome-open", $MAILTO_URL);
       system(@command);
   }


  • El mismo script para thunderbird:


   #!/usr/bin/perl -w
   # By John Russell
   # and hacked to work with thunderbird by Darrell

   # This script sends the selected file(s) with mozilla-thunderbird.

   use strict;

   my $attach_string="\"attachment='";
   my @files = split("\n", $ENV{NAUTILUS_SCRIPT_SELECTED_FILE_PATHS});
   my $count = 0;
   foreach my $file (@files)
   {
       if ( ! -f $file && ! -l $file )
       {
           my @dialog = ("gdialog","--title","Error","--msgbox", "\nError: Can not send $file. \n\n    Only regular files can be mailed.    ","200", "300");
           system (@dialog);
       }
       else
       {
          $attach_string = $attach_string . "file://" . $file . ",";
              shift;
           $count += 1;
       }
   }


   if ($count > 0)
   {
       $attach_string = $attach_string . "'\"";
   # replace spaces with '%20' as demanded by mozilla/thunderbird    
       $attach_string =~ s/\s/%20/g;
   # invoke shell script to call thunderbird differently depending on whether it's running already or not
       my $command = ("~/scripts/thunderbird-email-attachments " . $attach_string);
       system($command);
   }

Verás que hay un script que se requiere, (~/scripts/thunderbird-email-attachments en el ejemplo anterior, no lo pongas en el directorio de nautilus-scripts o sino se mostrará en el menú contextual):


   #!/bin/sh

   # if thunderbird is already running open a compose window in the running instance

	    if `ps xc | grep -q mozilla-thunder`; then 
		    exec mozilla-thunderbird -a Mozilla-Thunderbird -remote         "xfeDoCommand(ComposeMessage,$1)"

   # else start a new instance with the compose window only

	    else
		    exec mozilla-thunderbird -compose $1 
	    fi

Montar ISO

Montar una imagen ISO con nautilus. Nota para doc- este script se debe actualizar para que funcione con nombres de ficheros que contengan espacios (consultar fuente).

   #!/bin/bash
   #
   #By modprobing loop it makes sure that the module is loaded and ready for 
   #use.  If it is already loaded then nothing will happen.
   modprobe loop
   for I in `echo $*`
   do
      foo=`gksudo -u root -k -m "enter your password for root terminal access" /bin/echo "got r00t?"`
   sudo mount -o loop -t iso9660 $I /media/iso
      done
   done
   exit0


Desmontar ISO

Desmontar una imagen ISO desde nautilus, from nautilus. Nota para doc- este script se debe actualizar para que funcione con nombres de ficheros que contengan espacios (consultar fuente).

   #!/bin/bash
   #
   for I in `echo $*`
   do
      foo=`gksudo -u root -k -m "enter your password for root terminal access" /bin/echo "got r00t?"`
   sudo umount $I
     done
   done
   exit0

Configurar fichero de solo lectura

Cambiar permisos de fichero a solo lectura.

   #!/bin/bash

   chmod ugo-wx $*


Editar fichero con Gedit y privilegios de root

Nota para doc- este script se debe actualizar para que funcione con nombres de ficheros que contengan espacios (consultar fuente).

   #!/bin/bash
   #
   for I in `echo $*`
   do
      foo=`gksudo -u root -k -m "enter your password for root terminal access" /bin/echo "got r00t?"`
   sudo gedit $I
      done
   done
   exit0

Otra alternativa más simple que funciona con ficheros que contienen espacios en el nombre:


   #!/bin/sh
   gksudo "gedit $NAUTILUS_SCRIPT_SELECTED_URIS"


Abrir Nautilus con privilegios de root aquí

   #!/bin/bash
   # root-nautilus-here
   # opens a root-enabled instance of a nautilus window in selected location
   # requires sudo privileges and gksudo, which may involve security risks.
   #Install in your ~/Nautilus/scripts directory.
   #
   # Placed in the public domain by Shane T. Mueller 2001
   # Fixes provided by Doug Nordwall
   #
   # 2004.04.18 -- keith@penguingurus.com - Added gksudo usage to provide popup
   #               password window if sudo has expired.  Line only echos got
   #               root to std output.  But gksudo updates your sudo access
   #               privs, so running nautilus with sudo will succeed
   #               without asking for a password.
   
   
   foo=`gksudo -u root -k -m "enter your password for nautilus root access" /bin/echo "got r00t?"`
   sudo nautilus --no-desktop $NAUTILUS_SCRIPT_CURRENT_URI

Otra alternativa más simple:

   #!/bin/sh
   ### root-nautilus-here
   gksudo "nautilus --no-desktop $NAUTILUS_SCRIPT_CURRENT_URI"

Ejecutar ficheros con privilegios de root

Nota para doc- este script se debe actualizar para que funcione con nombres de ficheros que contengan espacios (consultar fuente).

   #!/bin/bash
   #
   for I in `echo $*`
   do
      /usr/bin/gksudo $I
      done
   done
   exit0

Otra alternativa más simple que funciona con ficheros que contienen espacios en el nombre y también abre directorios (en nautilus) como root:

   #!/bin/sh
   gksudo "gnome-open $NAUTILUS_SCRIPT_SELECTED_URIS"

Abrir ventana de búsqueda aquí

   #!/bin/sh
   # From Johnathan Bailes
   # This script opens a gnome-search-tool in the directory you select.
   #
   # Distributed under the terms of GNU GPL version 2 or later
   #
   # Install in your ~/Nautilus/scripts directory.
   # You need to be running Nautilus 1.0.3+ to use scripts.
   
   cd $NAUTILUS_SCRIPT_CURRENT_URI
   exec gnome-search-tool

Abrir terminal aquí

   #!/bin/bash
   #
   # This script opens a gnome-terminal in the directory you select.
   #
   # Distributed under the terms of GNU GPL version 2 or later
   #
   # Install in ~/.gnome2/nautilus-scripts or ~/Nautilus/scripts
   # You need to be running Nautilus 1.0.3+ to use scripts.
   
   # When a directory is selected, go there. Otherwise go to current
   # directory. If more than one directory is selected, show error.
   if [ -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ]; then
       set $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
       if [ $# -eq 1 ]; then
           destination="$1"
           # Go to file's directory if it's a file
           if [ ! -d "$destination" ]; then
               destination="`dirname "$destination"`"
           fi
       else
           zenity --error --title="Error - Open terminal here" \
              --text="You can only select one directory."
           exit 1
       fi
   else
       destination="`echo "$NAUTILUS_SCRIPT_CURRENT_URI" | sed 's/^file:\/\///'`"
   fi
   
   # It's only possible to go to local directories
   if [ -n "`echo "$destination" | grep '^[a-zA-Z0-9]\+:'`" ]; then
       zenity --error --title="Error - Open terminal here" \
          --text="Only local directories can be used."
       exit 1
   fi
   
   cd "$destination"
   exec x-terminal-emulator

Esconder o mostrar ficheros ocultos

   #!/bin/sh
   # When hidden files (.emacs, etc) are hidden, shows "Show Hidden Files" option.
   # When hidden files are shown, shows "Hide Hidden Files" option.
   # Uses gconf to toggle between the two Nautilus options.
   # Should be placed in ~/.gnome2/nautilus-scripts/ with executable permission.
   OLDSTATE=$(gconftool-2 --get "/desktop/gnome/file_views/show_hidden_files")
   if [ "$OLDSTATE" == "false" ] ; then
     NEWSTATE="True"
     mv ~/.gnome2/nautilus-scripts/Show\ Dot\ Files ~/.gnome2/nautilus-scripts/Hide\ Dot\ Files
   else
     NEWSTATE="False"
     mv ~/.gnome2/nautilus-scripts/Hide\ Dot\ Files ~/.gnome2/nautilus-scripts/Show\ Dot\ Files
   fi
   gconftool-2 --set "/desktop/gnome/file_views/show_hidden_files" --type boolean $NEWSTATE


Se puede hacer lo mismo sin scripts presionando CTRL+H en Nautilus

Enlaces útiles

Ver también

Fuente

Herramientas personales