如何在文件管理器的右键菜单中集成“作为 Shell 脚本运行”?

如何在文件管理器的右键菜单中集成“作为 Shell 脚本运行”?

现在,当我想运行 shell 脚本(.sh 或 .csh 文件)时,我需要右键单击文件管理器,然后单击“在此处打开终端”,然后键入“./xxx.sh”来运行 shell 脚本文件。这对我来说非常不方便。但是,有没有办法集成“右键单击任何纯文本文件时作为 shell 脚本运行”?

以下是我最常用的文件管理器:Thunar(在 Xfce4 中)、PCManFM(在 LXDE 中)和 Nautilus(在 Gnome 中)。

答案1

在 Nautilus 中右键单击运行脚本

以下是我设置该脚本的方法:Nautilus 可以设置桌面壁纸。如何设置登录和锁屏壁纸?

使用 Nautilus 导航并查看适合用作登录屏幕和锁屏壁纸的 .png 或 .jpg 文件后,Nautilus 可以使用脚本为您设置此项。

要创建脚本,请使用:

cd ~/.local/share/nautilus/scripts/
gedit set-login-wallpaper

粘贴以下行:

#!/bin/bash

## Set login wallpaper

# strip new line char passed by Nautilus
FILENAME=$(echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | sed -e 's/\r//g')

# Multiple files can't be selected.
LINE_COUNT=$(wc -l <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
LINE_COUNT=$((LINE_COUNT-1))

if [[ $LINE_COUNT > 1 ]] ; then
    zenity --error --text "Ony one file can be selected at a time! "
    exit 1
fi

# Object type must be "file..." (ie no directories, etc.)
if [ -d "${FILENAME}" ] ; then
    zenity --error --text "$FILENAME is a directory!";
    exit 1
else
    if [ -f "${FILENAME}" ]; then
        : # Bash noop
    else
        zenity --error --text "${FILENAME} is not a file!";
        exit 2
    fi
fi

# Build working file in /tmp
echo "[com.canonical.unity-greeter]" > /tmp/set-login-wallpaper.tmp
echo "draw-user-backgrounds=false" >> /tmp/set-login-wallpaper.tmp
echo "background='$FILENAME'" >> /tmp/set-login-wallpaper.tmp

# Must run as sudo
if [ "$EUID" -ne 0 ] ; then

    # Get sudo password
    PASSWORD=$(zenity --password --title="Set Login Wallpaper" --timeout=20)

    # copy working file to real file using sudo
    echo $PASSWORD | sudo -S cp /tmp/set-login-wallpaper.tmp \
/usr/share/glib-2.0/schemas/10_unity_greeter_background.gschema.override

    # compile using sudo
    echo $PASSWORD | sudo -S glib-compile-schemas /usr/share/glib-2.0/schemas

else
    # Already sudo so simply copy and compile
    # copy working file to real file
    cp /tmp/set-login-wallpaper.tmp \
/usr/share/glib-2.0/schemas/10_unity_greeter_background.gschema.override

    # compile
    glib-compile-schemas /usr/share/glib-2.0/schemas
fi

exit 0

保存文件并退出gedit编辑器。

现在使用以下命令将脚本标记为可执行:

chmod +x set-login-wallpaper

打开 Nautilus 并导航到包含壁纸图片的目录。找到合适的图片并右键单击它。出现此下拉菜单:

Nautilus 右键单击​​下拉菜单

单击第三个选项Scripts。将出现另一个下拉菜单,其中包含所有脚本:

Nautilus 设置登录壁纸下拉菜单

选择set-login-wallpaper

当脚本运行时,您必须输入密码sudo

重新启动并享受您的新登录和锁屏壁纸。

相关内容