Nautilus 3.2.1 中的檔案註解標籤消失了

Nautilus 3.2.1 中的檔案註解標籤消失了

似乎「檔案屬性」對話方塊中的「註解」標籤在 Nautilus 3.2.1/Ubuntu 11.10 中消失了。現在如何使用筆記功能?對於已經做過的筆記,你會怎麼做?是否有補丁或擴展,或者是否計劃在將來修復? (為什麼被刪了?)(關於筆記可移植性的相關問題。

答案1

這是我整理的腳本,與 @fossfreedom 的答案一起使用。它使用 GIO 與 GVFS 和 Tkinter 進行 GUI 連接,並使用 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])

答案2

與此類似的問題被問到“標誌和背景「恐怕這是一個類似的答案。

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"

澤尼特不支持多行輸入- 更穩健蟒蛇對話框需要類型實作...不過我的 python 技能無法勝任這項工作!

答案3

我稍微修改了你的解決方案。它已被合併到“nautilus actions extra”中。在下一個版本中,該套件將被命名為:nautilus-notes。

答案4

這是我與 nautilus-scripts 一起使用的腳本(相當粗糙 - 僅限 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

相關內容