Posso taggare i file con nautilus ma non ho trovato una soluzione per trovare i file per tag finora. Tracker-search-tool non offre la ricerca di tag, né Nautilus, né alcuna altra applicazione di cui sono a conoscenza. Appena aggiornato alla 11.04.
Si chiama tracker-tag:
http://manpages.ubuntu.com/manpages/natty/man1/tracker-tag.1.html
È fornito dal pacchetto tracker-utils, che è la versione a riga di comando del tracker.
-s -- lists all files associated with a tag -a -- Add a tag to a file
Esempio
Per aggiungere un tag:
tracker-tag -a TAG file
Per cercare per tag:
tracker-tag -s TAG Result: 1 /home/sean/file
Esempi del mondo reale dal mio sistema
tracker-tag -a TAG exten tracker-tag -a testing atreides master.ldif php_error.log TrainingUpdates.otl tracker-tag -s testing Results: 5 /home/sean/TrainingUpdates.otl /home/sean/atreides /home/sean/exten /home/sean/master.ldif /home/sean/php_error.log tracker-tag -a myTagExample TrainingUpdates.otl atreides exten master.ldif php_error.log tracker-tag -s myTagExample Results: 5 /home/sean/TrainingUpdates.otl /home/sean/atreides /home/sean/exten /home/sean/master.ldif /home/sean/php_error.log tracker-tag -s TAG Result: 1 /home/sean/exten
Nautilus in gnome-team ppa ha un plugin per i tag add-remove, bun nof per la ricerca. Quando ho chiesto una nuova vista del pannello al team nautilus ( https://bugzilla.gnome.org/show_bug.cgi?id=670163 ) ho ottenuto questa risposta.
- the interface that allows to add tracker tags from Nautilus is not part of Nautilus, but it's an extension - we will not add any additional side pane, since we intentionally trimmed them down to Places and Tree for Nautilus 3.0 - I think the best way to do what you want is from Tracker itself; if the UI utilities shipped with Tracker don't allow you to do this, you should file a bug against Tracker for it
Quindi ho creato un’estensione di nautilus-python solo per questo. Installa python-nautilus e inviata al tracker https://bugzilla.gnome.org/show_bug.cgi?id=670643
sudo apt-get install python nautilus
Quindi copia il prossimo codice e salva sotto .local / share / nautilus-python / extensions / [nomefile] .py
#[email protected] #nautilus etiketa bilatzaile #v 0.1 from gi.repository import Nautilus, GObject from gi.repository import Gtk as gtk from gi.repository.GdkPixbuf import Pixbuf from subprocess import Popen, PIPE, STDOUT,call from os import path,environ from sys import platform from urllib import unquote from mimetypes import guess_type import locale class TagsManager: def __init__(self): self.d={} self.dtag={} cmd='tracker-tag -t' p=Popen(cmd,shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT,close_fds=True) output = p.stdout.read() l=output.split('\n') while('' in l): l.remove('') if len(l)>3: for i in range(2,len(l),3): if i+20: cmd='tracker-tag -t -s' p=Popen(cmd,shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT,close_fds=True) output = p.stdout.read() l=output.split('\n') ll= [unquote(i.strip()).decode('utf-8') for i in l] ini=ll.index(tag) lkini=lk.index(unicode(tag)) if tag==lk[-1]: resp=ll[ini+1:] while('' in resp): resp.remove('') else: fin=ll.index(lk[lkini+1]) resp=[ll[i] for i in range(ini+1,fin)] self.dtag[tag]=resp class Ventana: def clic(self, widget, event, data=None): l=[] lista_nueva=[] for i in self.todas.get_selection().get_selected_rows()[1]: t= self.todas.get_model().get_value(self.todas.get_model().get_iter(i), 0) l.append(t) if len(l)==1: lista_nueva=[i for i in self.tm.dtag[l[0]]] elif len(l)>1: lista_nueva=[i for i in self.tm.dtag[l[0]]] for i in l[1:]: ll=[] for f in self.tm.dtag[i]: if f in lista_nueva: ll.append(f) lista_nueva=[f for f in ll] else:lista_nueva=[] self.files.get_model().clear() lista=[f.encode('utf-8')[7:] for f in lista_nueva] lf=[i for i in lista if path.isfile(i)] ld=[i for i in lista if not path.isfile(i)] lista_nueva=ld+lf for f in lista_nueva: mime_type= guess_type(path.basename(f)) if mime_type[0]<>None: icon= 'gnome-mime-'+mime_type[0].replace('/','-') else: print f.encode('utf-8'),path.isfile(f) if path.isfile(f):icon='gtk-file' else:icon='folder' pixbuf = gtk.IconTheme.get_default().load_icon(icon, 48, 0) self.files.get_model().append([pixbuf,path.basename(f),f]) return False def open_file(self, iconview, ipath): model = iconview.get_model() iter = model.get_iter(ipath) filename = model.get_value(iter, 2) if platform == 'linux2': call(["xdg-open", filename]) return def __init__(self): self.tm=TagsManager() self.paned = gtk.HPaned() self.existentags = gtk.ListStore(str) tags=[i for i in self.tm.d.keys()] tags.sort() for t in tags: self.existentags.append([t]) self.todas = gtk.TreeView(self.existentags) self.todas.get_selection().set_mode(gtk.SelectionMode.MULTIPLE) cell = gtk.CellRendererText() self.todas.connect("button_release_event", self.clic, None) column0=gtk.TreeViewColumn("Tags",cell, text=0) self.todas.append_column(column0) scrolled_window = gtk.ScrolledWindow() scrolled_window.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC) scrolled_window.add_with_viewport (self.todas) self.paned.add1(scrolled_window) self.listfiles = gtk.ListStore(Pixbuf,str,str) self.files = gtk.IconView.new() self.files.set_model(self.listfiles) self.files.set_pixbuf_column(0) self.files.set_text_column(1) self.files.connect('item-activated', self.open_file) scrolled_window2 = gtk.ScrolledWindow() scrolled_window2.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC) scrolled_window2.add_with_viewport (self.files) self.paned.add2(scrolled_window2) self.paned.set_position(150) self.paned.show_all() class PApplication(gtk.Application): def __init__(self,window): self.dialog = gtk.Dialog ("Etiketa iragazkia", window, gtk.DialogFlags.MODAL, (gtk.STOCK_CLOSE, gtk.ResponseType.CLOSE,)) self.dialog.set_icon_name (gtk.STOCK_EDIT) self.dialog.set_size_request(600, 400) TS=Ventana() self.dialog.vbox.pack_start (TS.paned,expand=True, fill=True, padding=0) class Pr(GObject.GObject, Nautilus.MenuProvider): def __init__(self): pass def ojo(self,menu,window): d=PApplication(window) r=d.dialog.run() d.dialog.destroy() return def get_background_items(self, window, files): return self.menuItem(window) def get_file_items(self, window, files): return self.menuItem(window) def menuItem(self, window): self.window=window P = Nautilus.MenuItem( name="Etiketa iragazkia::Etiketa iragazkia", label="Etiketa iragazkia", tip="Etiketa iragazkia" ) P.connect('activate', self.ojo, window) return [P]
E finalmente ricomincia il nautilus
nautilus -q
Quando si fa clic con il pulsante destro del mouse su qualsiasi file o sullo sfondo, viene visualizzata una nuova voce di menu “Etiketa iragazkia” (filtro tag in basco).
Cerca tag dalla riga di comando con tracker-tag. La syntax di ricerca sopra menzionata non funziona sul mio sistema (12.04). L’opzione “-s” è disponibile solo con “–list”:
tracker-tag --list -s [tag]
Questo è piuttosto un commento sulla prima risposta, ma mi mancano ancora alcuni rappresentanti per poter commentare 🙁