|
|
第1行: |
第1行: |
| {{From|https://help.ubuntu.com/community/NautilusScriptsHowto}} | | {{From|https://help.ubuntu.com/community/NautilusScriptsHowto}} |
| {{Languages|UbuntuHelp:NautilusScriptsHowto}} | | {{Languages|UbuntuHelp:NautilusScriptsHowto}} |
| + | #title Nautilus Scripts Howto |
| <<Include(Tag/ContentCleanup)>> | | <<Include(Tag/ContentCleanup)>> |
− | <<Include(Tag/TooLong)>>
| |
| <<Anchor(Top)>> | | <<Anchor(Top)>> |
| https://help.ubuntu.com/community/IconsPage?action=AttachFile&do=get&target=IconNautilus.png | | https://help.ubuntu.com/community/IconsPage?action=AttachFile&do=get&target=IconNautilus.png |
第54行: |
第54行: |
| position and size of current window | | position and size of current window |
| [[UbuntuHelp:[Top|Back to top]]] | | [[UbuntuHelp:[Top|Back to top]]] |
− | == Sample scripts ==
| |
− | '''Note: These scripts may be out of date. Use at your own risk.'''
| |
− | === Email the selected file ===
| |
− | [[UbuntuHelp:[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.
| |
− | <pre><nowiki>
| |
− | #!/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);
| |
− | }
| |
− | </nowiki></pre>
| |
− | 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:
| |
− | <pre><nowiki>
| |
− | #!/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);
| |
− | }
| |
− | </nowiki></pre>
| |
− | 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):
| |
− | <pre><nowiki>
| |
− | #!/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
| |
− | </nowiki></pre>
| |
− | === Mount ISO ===
| |
− | [[UbuntuHelp:[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.
| |
− | <pre><nowiki>
| |
− | #!/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
| |
− | </nowiki></pre>
| |
− | === Unmount ISO ===
| |
− | [[UbuntuHelp:[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.
| |
− | <pre><nowiki>
| |
− | #!/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
| |
− | </nowiki></pre>
| |
− | === Set file read-only ===
| |
− | [[UbuntuHelp:[Top|Back to top]]]
| |
− | Change file-permission to read-only.
| |
− | <pre><nowiki>
| |
− | #!/bin/bash
| |
− |
| |
− | chmod ugo-wx $*
| |
− | </nowiki></pre>
| |
− | === Edit file with gedit with root-privileges ===
| |
− | [[UbuntuHelp:[Top|Back to top]]]
| |
− | Note from carney1979 - this script will be updated to work with filenames containing spaces soon.
| |
− | <pre><nowiki>
| |
− | #!/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
| |
− | </nowiki></pre>
| |
− | Note from blazoner - A much simpler alternative that works with filenames containing spaces is:
| |
− | <pre><nowiki>
| |
− | #!/bin/sh
| |
− | gksudo "gedit $NAUTILUS_SCRIPT_SELECTED_URIS"
| |
− | </nowiki></pre>
| |
− | === Open Nautilus with root-privileges here ===
| |
− | [[UbuntuHelp:[Top|Back to top]]]
| |
− | <pre><nowiki>
| |
− | #!/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
| |
− | #
| |
− | | |
− | # 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
| |
− | </nowiki></pre>
| |
− | Note from blazoner - A much simpler alternative:
| |
− | <pre><nowiki>
| |
− | #!/bin/sh
| |
− | ### root-nautilus-here
| |
− | gksudo "nautilus --no-desktop $NAUTILUS_SCRIPT_CURRENT_URI"
| |
− | </nowiki></pre>
| |
− | === Run file with root privileges ===
| |
− | [[UbuntuHelp:[Top|Back to top]]]
| |
− | Note from carney1979 - this script will be updated to work with filenames containing spaces soon.
| |
− | <pre><nowiki>
| |
− | #!/bin/bash
| |
− | #
| |
− | for I in `echo $*`
| |
− | do
| |
− | /usr/bin/gksudo $I
| |
− | done
| |
− | done
| |
− | exit0
| |
− | </nowiki></pre>
| |
− | Note from blazoner - A much simpler alternative that works with filenames containing spaces and also opens folders (in nautilus) as root is:
| |
− | <pre><nowiki>
| |
− | #!/bin/sh
| |
− | gksudo "gnome-open $NAUTILUS_SCRIPT_SELECTED_URIS"
| |
− | </nowiki></pre>
| |
− | === Open search window here ===
| |
− | [[UbuntuHelp:[Top|Back to top]]]
| |
− | <pre><nowiki>
| |
− | #!/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
| |
− | </nowiki></pre>
| |
− | === Open terminal here ===
| |
− | [[UbuntuHelp:[Top|Back to top]]]
| |
− | <pre><nowiki>
| |
− | #!/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
| |
− | </nowiki></pre>
| |
− | === Hide or Show Hidden Files ===
| |
− | [[UbuntuHelp:[Top|Back to top]]]
| |
− | (doesn't work on Hardy Heron)
| |
− | <pre><nowiki>
| |
− | #!/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
| |
− | </nowiki></pre>
| |
− | Note: You can do the same without a script by pressing CTRL+H under Nautilus
| |
| ---- | | ---- |
− | [[UbuntuHelp:[Top|Back to top]]] | + | [[UbuntuHelp:NautilusScriptsHowto/SampleScripts|Sample Scripts]] |
| + | ---- |
| == Links == | | == Links == |
| * [[UbuntuHelp:Nautilus_Scripts|Nautilus_Scripts]] | | * [[UbuntuHelp:Nautilus_Scripts|Nautilus_Scripts]] |
That's it!
{i} You will not have a `File->Scripts` nor see a `Scripts` entry in the context menu until you first add files there
Simply remove them from the `nautilus-scripts` folder.
that is to say basically anything that can be run
[[UbuntuHelp:[Top|Back to top]]]
Whenever a script is called, Nautilus sets some variables that can be used in your scripts. These are: