Nautilus 3.2.1中的文件备注选项卡已消失

似乎“文件属性”对话框中的“注释”选项卡在Nautilus 3.2.1 / Ubuntu 11.10中消失了。 你现在如何使用笔记function? 你对已经做过的笔记做了什么? 是否有补丁或扩展名,或计划在将来修复? (为什么删除了?)( 关于笔记可移植性的相关问题。 )

类似的问题是从“ 标志和背景 ”中提出的,我担心它的答案也是类似的。

Gnome Devs认为这些function很少被使用,并且为了简化他们将其作为核心GUIfunction删除的代码库。

幸运的是,由于保留了元数据function,因此可以使用相同的基于终端的命令 :

例如,这是一个v11.10 nautilus屏幕截图,通过命令行添加了注释。

在此处输入图像描述

至于“是否计划修复” – 再次类似的答案 – 如“标志” – 这被视为第三方支持 – 即不是核心鹦鹉螺function。

我不知道有人决定接受这个挑战 – 所以这是我可怜的替补:

在此处输入图像描述

选择右键单击菜单选项Notes显示可以修改的文件的注释。

在此处输入图像描述

为此,我使用我对此问答的答案来执行以下文件:

#!/bin/bash # basic - and I mean basic bash script to display & set notes # # feel free to enhance! # # fossfreedom (askubuntu) 27/12/11 notestext=`gvfs-info $1 | grep annotation | sed s/' metadata::annotation: '/''/g` newnotes=`zenity --entry --width=500 --title=$1 --text="current notes:" --entry-text="$notestext"` # handle the case where the user has pressed cancel if [ $? = 1 ]; then exit fi # ok - got this far - lets change the notes for the file selected gvfs-set-attribute -t string $1 metadata::annotation "$newnotes" 

Zenity不支持多行输入 – 需要更强大的pythondialog类型实现…虽然我的python技能不适合这项工作!

这是我与@ fossfreedom的答案一起使用的脚本。 它使用GIO连接到GVFS和Tkinter用于GUI,并使用Python 2.7编写。 它支持多行注释。 GUI看起来像这样:

用于脚本的GUI

先决条件您需要安装tkinter:

 sudo apt-get install python-tk 

使用

使用您喜欢的编辑器在已知的文件夹位置将代码保存为文件 – 例如/home/[home-folder-name]/scripts/notesscript

然后 – 如果您正在使用naultilus-actions ,请使用命令:

 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 actions extra”。 在下一个版本中,该软件包将命名为:nautilus-notes。