Как сделать пользовательскую команду правой кнопки мыши для nautilus? [дубликат]

Возможный дубликат:
Как настроить контекстное меню в Nautilus?

Я пытаюсь сделать Mark as executable команду для правой кнопки мыши в nautilus для более быстрого рабочего процесса. Я пришел к такому сценарию:

#! /bin/bash
for file in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS; do
gksudo "chmod +x $file" &
done

Как мне заставить это работать. Сейчас у меня есть файл .sh, но я не знаю, куда его поместить.

10
задан 13 April 2017 в 15:23

1 ответ

Просто сохраните этот файл как «Пометить как исполняемый файл», сделайте его исполняемым и поместите его в ~/.gnome2/nautilus-scripts. Он будет отображаться в вашем меню правой кнопки мыши, под подменю Scripts

. Вы можете захотеть удалить gksudo оттуда, если вы планируете пометить как исполняемые файлы, которыми вы владеете (в вашем домашнем каталоге), в противном случае каждый раз, когда вы запускаете скрипт через меню, вызываемое правой кнопкой мыши, он запрашивает у вас пароль. ..

НО скрипт, который у вас там, не будет работать для файлов, которые содержат пробелы в имени файла. Чтобы заставить его работать на них, вы должны изменить сценарий следующим образом:

#!/bin/bash 

IFS_BAK=$IFS
IFS="
"

for line in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS; do
   if [[ "$line" = "" || "$line" = " " ]]; then
      exit
   else
      chmod +x "$line"
   fi
done

IFS=$IFS_BAK
IFS_BAK=

ТАКЖЕ , вы можете иметь свою собственную запись для «Отметить как исполняемый файл» штуковина. Но, чтобы включить это, вам нужно установить пакет python-nautilus:

sudo apt-get install python-nautilus

Затем сохраните этот файл как mark_as_executable.py в ~/.local/share/nautilus-python/extensions/:

#!/usr/bin/env python
# -*- coding: utf8 -*-

from gi.repository import Nautilus, GObject, Gio
from os import system
import urllib

class BackgroundImageExtension(GObject.GObject, Nautilus.MenuProvider):
    def __init__(self):
        print 'Mark as executable extensions is being initialized'

    def menu_activate_cb(self, menu, file):
        if file.is_gone():
            return
        system("chmod +x '"+urllib.unquote(file.get_uri()[7:])+"' &")

    def get_file_items(self, window, files):
        if len(files) != 1:
            return
        file = files[0]

        if file.get_uri_scheme() != 'file':
            return
        item = Nautilus.MenuItem(name='Nautilus::set_executable_bit', label='Mark as executable', tip='Add the executable bit to the selected file')
        item.connect('activate', self.menu_activate_cb, file)
        return item,

. выше, будет работать только для отдельных файлов, если вы хотите добавить поддержку нескольких файлов, вы должны вставить это в скрипт Python, хотя:

#!/usr/bin/env python
# -*- coding: utf8 -*-

from gi.repository import Nautilus, GObject, Gio
from os import system
import urllib

class BackgroundImageExtension(GObject.GObject, Nautilus.MenuProvider):
    def __init__(self):
        print 'Mark as executable extensions is being initialized'

    def menu_activate_cb(self, menu, file):
        if file.is_gone():
            return
        system("chmod +x '"+urllib.unquote(file.get_uri()[7:])+"' &")

    def get_file_items(self, window, files):

        item = Nautilus.MenuItem(name='Nautilus::set_executable_bit', label='Mark as executable', tip='Add the executable bit to the selected file')
        for yourfile in files:
            if yourfile.get_uri_scheme() != 'file':
                return
            item.connect('activate', self.menu_activate_cb, yourfile)

        return item,

, чтобы иметь возможность использовать функциональность , вам также потребуется перезапустить nautilus:

nautilus -q

и затем открыть окно nautilus.

0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: