Кажется, что вкладка «Заметки» в диалоговом окне «Свойства файла» отсутствует в Nautilus 3.2.1 / Ubuntu 11.10. Как вы можете использовать функцию заметок сейчас? Что вы делаете с заметками, которые вы уже сделали? Есть ли патч или расширение для этого, или он планирует установить в будущем? (Почему это было удалено?) (Связанный вопрос о переносимости заметок.)
Вот сценарий, который я собрал для использования с ответом @ fossfreedom. Он использует GIO для взаимодействия с GVFS и Tkinter для графического интерфейса пользователя и написан на Python 2.7. Он поддерживает многострочные аннотации. GUI выглядит следующим образом:
предпосылки Вам необходимо установить tkinter:
sudo apt-get install python-tk
предпосылки
Сохраните код как файл, используя ваш любимый редактор в известном местоположении папки - например /home/[home-folder-name]/scripts/notesscript
Затем - если вы используете naultilus-действия, используйте команду:
python /home/[home-folder-name]/scripts/notesscript
Код:
import gio
class GVFSNotes:
ATTRIBUTE_KEY = 'metadata::annotation'
def __init__(self, f):
self.__f = f
def _get_attribute(self, key):
return self.__f.query_info(key).get_attribute_string(key)
def _make_setter(self, key, val):
info = gio.FileInfo()
info.set_attribute_string(key, val)
return info
def _set_attribute(self, key, val):
self.__f.set_attributes_from_info(self._make_setter(key, val))
def get(self):
return self._get_attribute(self.ATTRIBUTE_KEY)
def set(self, val):
self._set_attribute(self.ATTRIBUTE_KEY, val)
import Tkinter as tk
class Dialog:
def __init__(self, title, initial):
self.root = tk.Tk()
self.text = None
self._mkGUI(title, initial)
def settext(self):
self.text = self.entry.get(1.0, tk.END).rstrip()
def onCancel(self):
self.root.destroy()
def onOkay(self):
self.settext()
self.root.destroy()
def _mkButtons(self):
(tk.Button(self.root, text="Cancel", width=10, command=self.onCancel)
.pack(side=tk.LEFT)
)
(tk.Button(self.root, text="Okay", width=10, command=self.onOkay)
.pack(side=tk.RIGHT)
)
def _mkEntry(self, initial):
self.entry = tk.Text(self.root, width=60)
if initial != '' and initial != None:
self.entry.insert(tk.END, initial)
self.entry.pack(fill=tk.X, expand=True)
self.entry.focus_set()
def _setTitle(self, title):
self.root.wm_title(title)
def _mkGUI(self, title, initial):
self._mkEntry(initial)
self._mkButtons()
self._setTitle(title)
def show(self):
self.root.mainloop()
return self.text
def main(path):
notes = GVFSNotes(gio.File(path))
oldtext = notes.get()
newtext = Dialog('Notes for ' + path, oldtext).show()
if newtext != None and newtext != oldtext:
notes.set(newtext)
if __name__ == '__main__':
import sys
main(sys.argv[1])
Вот мой скрипт для использования с nautilus-скриптами (довольно немного грубый - ограничен для 1000000 строк, я не программист).
Вам нужно создать файл ~ / .gnome2 / nautilus-scripts (например, nautilus-annotations) и сделать его исполняемым (по свойствам) с этим контентом:
#!/bin/bash
for arg do
if i=`gvfs-info "$arg" | grep -A 1000000 metadata::annotation: | sed s/\metadata::annotation:\// | grep -v metadata:: | zenity --text-info --editable --ok-label="ok" --cancel-label="cancel" --checkbox="change"`; then `gvfs-set-attribute -t string "$arg" metadata::annotation "$i"`; else exit
fi
done
Я немного изменил ваше решение. Он был объединен в «дополнительные действия Nautilus». В следующем выпуске пакет будет называться: nautilus-notes.