文件备注选项卡在 Nautilus 3.2.1 中消失了

Kaz*_*ark 5 nautilus files 11.10 gvfs

在 Nautilus 3.2.1/Ubuntu 11.10 中,“文件属性”对话框中的“注释”选项卡似乎消失了。你现在如何使用笔记功能?你如何处理你已经做的笔记?是否有针对此的补丁或扩展,或者是否计划在未来修复?(为什么删除了?)(关于笔记便携性的相关问题。

Kaz*_*ark 5

这是我与@fossfreedom 的答案一起使用的脚本。它使用 GIO 与 GVFS 和 Tkinter 的 GUI 接口,并用 Python 2.7 编写。它支持多行注释。GUI 如下所示:

脚本图形用户界面

先决条件 您需要安装 tkinter:

sudo apt-get install python-tk
Run Code Online (Sandbox Code Playgroud)

使用

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

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

python /home/[home-folder-name]/scripts/notesscript
Run Code Online (Sandbox Code Playgroud)

编码:

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])
Run Code Online (Sandbox Code Playgroud)


fos*_*dom 4

“标志和背景”中提出了与此类似的问题,恐怕它的答案也类似。

Gnome 开发人员认为这些功能很少被使用,为了简化代码库,他们将其作为核心 GUI 功能删除。

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

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

在此输入图像描述

至于“是否计划修复”-同样是类似的答案-例如“标志”-这被视为第三方支持-即不是核心鹦鹉螺功能。

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

在此输入图像描述

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

在此输入图像描述

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

#!/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"
Run Code Online (Sandbox Code Playgroud)

Zenity 不支持多行输入- 需要更强大的pythondialog类型实现...不过我的 python 技能无法胜任这项工作!