Мне нужно изменить пункты меню, присутствующие в диспетчере файлов Nautilus. Я открыт для того, чтобы испачкать руки в Python или чем-то еще в этом отношении. Я хотел бы добавить или удалить пункты меню из контекстного меню в Nautilus. Любая помощь по этому поводу будет очень полезна.
Примечание:
Чтобы добавить пункты меню, можно написать расширение Nautilus, например
from gi.repository import Nautilus, GObject
class MyItemExtension(GObject.GObject, Nautilus.MenuProvider):
def get_file_items(self, window, files):
menuitem = Nautilus.MenuItem(name='MyItem::SomeItem',
label='My Item',
tip='my own item',
icon='')
menuitem.connect('activate', self.on_menu_item_clicked, files)
return menuitem,
def on_menu_item_clicked(self, item, files):
print [f.get_name() for f in files]
. Сохраните его в нечто вроде /usr/share/nautilus-python/extensions/myitem.py
, установите пакет python-nautilus
и перезапустите Nautilus, например, запустив nautilus -q; sleep 2; nautilus
. , Теперь вы должны увидеть новый элемент «My Item», если вы щелкнете правой кнопкой мыши по файлу.
Насколько я знаю, не существует документированного способа удаления пунктов меню.
см. Ссылку API для получения дополнительной информации.
Это относится только к Наутилусу 3.8 и новее.
Я знаю, что это не единственное место, где можно это сделать, но вы можете добавить контекстные опции в библиотеку: /usr/lib/nautilus/extensions-3.0
.
Библиотечные файлы должны быть .so
шестнадцатеричные библиотеки.
Я думаю, что другой способ сделать это - изменить исходный код Nautilus.
РЕДАКТИРОВАТЬ: Это больше не верно, по крайней мере, с того, что Gnome поставляется с Ubuntu 18.04. Исследования в Интернете показывают, что эта функция была полностью извлечена из Gnome, согласно этому обсуждению ошибки Redhat: https://bugzilla.redhat.com/show_bug.cgi?id=885088 Хотя кажется, что общий ресурс Пользовательский интерфейс диалога можно изменить с помощью /usr/share.nautilus-share/interfaces
.