NautilusScriptsHowto

Differences between revisions 4 and 5
Revision 4 as of 2005-07-23 05:27:31
Size: 9570
Editor: S0106000000cc07fc
Comment: add category cleanup
Revision 5 as of 2006-06-16 21:22:10
Size: 10039
Editor: lan31-4-82-228-167-67
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#FFEFD5; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Contents'''[[BR]][[TableOfContents]]||
[[Anchor(Top)]]
Line 5: Line 7:
= Nautilus-scripts folder =
Line 6: Line 10:
Line 11: Line 14:
Place your scripts there and make them executable (chmod +x {script-name}). You should name the files something that make sense to you, as the filenames will be the script names that show up in your Nautilus menus. You do not need to add a .sh shell script extension. Once you have done that, your scripts will be available in all Nautilus windows under File->Script and in the right-click context menu. You will not see a File->Script menu in file manager until you add your first script to ~/.gnome2/nautilus-scripts . Place your scripts there and make them executable (`chmod +x my_script_name`)[[BR]]
You should name the files something that make sense to you, as the filenames will be the script names that show up in your Nautilus menus. You do not need to add a .sh shell script extension. Once you have done that, your scripts will be available in all Nautilus windows under File->Script and in the right-click context menu. You will not see a File->Script menu in file manager until you add your first script to `~/.gnome2/nautilus-scripts` .

= Sample scripts =
Line 14: Line 20:
[#Top Back to top]
Line 110: Line 117:
[#Top Back to top]
Line 129: Line 137:
[#Top Back to top]
Line 145: Line 154:
[#Top Back to top]
Line 155: Line 165:
[#Top Back to top]
Line 171: Line 182:
[#Top Back to top]
Line 194: Line 206:
[#Top Back to top]
Line 209: Line 222:
[#Top Back to top]
Line 225: Line 239:
[#Top Back to top]
Line 267: Line 282:
[#Top Back to top]
Line 287: Line 303:
----
[#Top Back to top]

Anchor(Top) Notes: These scripts may be out of date. Use at your own risk

The nautilus file-manager has limited support for scripting. The following files can be copied to the nautilus-scripts folder. Many of these scripts involve root privileges, which means you can seriously damage your system. Be careful.

Nautilus-scripts folder

Nautilus-scripts folder:

     ~/.gnome2/nautilus-scripts

Place your scripts there and make them executable (chmod +x my_script_name)BR You should name the files something that make sense to you, as the filenames will be the script names that show up in your Nautilus menus. You do not need to add a .sh shell script extension. Once you have done that, your scripts will be available in all Nautilus windows under File->Script and in the right-click context menu. You will not see a File->Script menu in file manager until you add your first script to ~/.gnome2/nautilus-scripts .

Sample scripts

Email the selected file

[#Top Back to top]

This one is really useful. How many times have you needed to find a file and then send it? And to be honest, from Evolution or mozilla-thunderbird this is not that simple. It is much easier to use Nautilus to find your file and then send it from there.

    #!/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);
    }

Added by Darrell: I found that the mailto: syntax in the above does not work with mozilla-thunderbird. I have created the following amended version which seems to work with 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);
    }

You will see there is also a shell script which is required, (~/scripts/thunderbird-email-attachments in my example above, don't put it in the nautilus-scripts directory, otherwise it will show up in the context menu):

    #!/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

Mount ISO

[#Top Back to top]

Mount an ISO image, from Nautilus. Note from carney1979 - this script will be updated to work with filenames containing spaces soon.

    #!/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

Unmount ISO

[#Top Back to top]

Unmount an iso image, from nautilus. Note from carney1979 - this script will be updated to work with filenames containing spaces soon.

    #!/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

Set file read-only

[#Top Back to top]

Change file-permission to read-only.

    #!/bin/bash

    chmod ugo-wx $*

Edit file with gedit with root-privileges

[#Top Back to top]

Note from carney1979 - this script will be updated to work with filenames containing spaces soon.

    #!/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

Open Nautilus with root-privileges here

[#Top Back to top]

    #!/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

Run file with root privileges

[#Top Back to top]

Note from carney1979 - this script will be updated to work with filenames containing spaces soon.

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

Open search window here

[#Top Back to top]

    #!/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

Open terminal here

[#Top Back to top]

    #!/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

Hide or Show Hidden Files

[#Top Back to top]

    #!/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

Note: You can do the same without a script by pressing CTRL+H under Nautilus


[#Top Back to top] CategoryDocumentation CategoryCleanup

NautilusScriptsHowto (last edited 2008-08-06 16:32:34 by localhost)