web-dev-qa-db-ja.com

Nautilus 3.2.1でファイルノートタブが削除された

Nautilus 3.2.1/Ubuntu 11.10では、「ファイルのプロパティ」ダイアログの「メモ」タブがなくなったようです。現在、メモ機能をどのように使用できますか?すでに作成したメモについてはどうしますか?このためのパッチまたは拡張機能はありますか、または将来修正される予定ですか? (なぜ削除されたのですか?)( メモの移植性に関する関連質問

5
Kazark

これに似た質問が「 Emblems and Backgrounds 」から尋ねられましたが、私はその同じような答えを恐れています。

Gnome開発者は、これらの機能はほとんど使用されておらず、コアGUI機能としてこれを削除したコードベースを合理化するために順番に使用すると考えていました。

幸いなことに、メタデータ機能が保持されているため、同じ 端末ベースのコマンド を使用できます。

たとえば、コマンドラインからメモを追加したv11.10 nautilusのスクリーンショットです。

enter image description here

「修正される予定ですか」について-再び同様の答え-「エンブレム」のように-これはサードパーティがサポートしていると見なされます-つまり、コアnautilus機能ではありません。

私は誰もこの挑戦に取り組むことを知らない-だからここに私の貧しい代用品があります:

enter image description here

右クリックメニューオプションNotesを選択すると、修正可能なファイルのメモが表示されます。

enter image description here

これを行うには、 このQ&Aへの回答 を使用して次のファイルを実行しました。

#!/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タイプの実装が必要になります... my pythonスキルはこの仕事に対応していません!

4
fossfreedom

@fossfreedomの回答で使用するために一緒に投げたスクリプトを次に示します。 GIOを使用してGUIのGVFSおよびTkinterにインターフェイスし、Python 2.7で記述されています。複数行の注釈をサポートしています。GUIは次のようになります。

GUI for script

前提条件 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 __== '__main__':
    import sys
    main(sys.argv[1])
5
Kazark

ソリューションを少し変更しました。 「nautilus actions extra」に統合されました。次のリリースでは、パッケージの名前はnautilus-notesになります。

2
Roti

これは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
1
knezmej